8. Egyszerű adatbázis tervezése

Feladat: Autókölcsönző tervezése

Olyan adatbázist tervezzünk, amely egy autókölcsönzőt ki tud szolgálni. Az autókölcsönzőben korlátos számú autó van. Az autókkal események történhetnek: beállítják az autót, kölcsönzik, visszahozzák, leselejtezik. Temrészetesen ezen kívül még lehet bármennyi egyéb esemény is.

Modellezés

Autókölcsönző feladat szükséges halmazai:

  • Autók amiket kikölcsönzünk
  • Személyek, akik k9ölcsönzik az autókat
  • Események: Üzembe állítottak egy autót, elvittek autót, visszahoztak autót, leselejtezték az autót.

A fentiek alapján három táblát kell létrehozni, a szükséges adatokkal. Alapadatokat tartalmaz és törölni sohasem lehet belőlük (a táblák elsődleges kulcsait aláhúzással jelölöm)

  • Autók ( Rendszam, Gyarto, Tipus, Alvazszam, Kobcenti, Szin, Allapot, Dij...)  - minden egyéb adat csak a táblát finomítja
    • A Rendszám az elsődleges kulcs
    • Minden más adat csak leíró
    • A gyártó ilyen adatokat tartalmaz, mint Ford, Toyota, ...
    • Típus: Mondeo, Yaris, GTX, stb..
    • Dij - A kölcsönzés napi díja egy bizonyos valutában számolva (pl. Ft) - Lehet több féle valuta is, de az értéket egy összegben kell megállapítani
    • Az állapot, szín... általában szöveges információ
  • Szemelyek (Azonosito, Nev, Lakcim, Szulhely, Szulido, AnyjaNeve, Telefonszam, BankkartyaSzam, ...)
    • Azonosító: olyan dokumentum (útlevél, Személyi igazolvány, stb...) amely egyértelműen azonosítja a személyt.
    • BankkartyaSzam - mivel kártyával fizetnek, ezért szükséges
    • A többit nem kell részleteznem,,,
  • Esemenyek(ID, Idopont, Rendszam, Azonosito, Esemenykod, Osszeg, VisszaDatum, Km, Kep, Megjegyzes, ...)
    • ID - elsődleges kulcs, automatikusan növekvő érték,
    • Rendszam - Idegen kulcs, melyik autóról van szó
    • Azonosító - Idegen kulcs, melyik személyről van szó (Ebben az esetben a cég dolgozói is szerepelnek a nyilvántartásban)
    • Esemenykod - Megszokott, hogy amikor csak néhány féle esemény van, akkor azokat számokkal vagy rövidítéssel jelölik az adatbázisokban és adatrögzítéskor egy listából lehet választani (KO - Kölcsönzés, Vi - Visszahozatal, SE - Selejtezés, Be - Beszerzés, ....)
    • Osszeg - Minden eseményhez tartozhat egy Összeg, amit fizet valaki, a cég pénztárába.
    • VisszaDatum - Ezt akkor használjuk, ha kölcsönzés esemény volt. Ekkor a visszahozatal ígért dátumát is rögzítjük..
    • Km - Egy szám, a kilométerszámláló állását mutatja
    • Kep - Ilyet akkor használunk, ha az eseményhez tartozik fénykép (sérülésekről, állapotról, stb...)
    • Megjegyés mezőt használunk mindig, ha lehetnek olyan adatok, amit nem láttunk előre és nincsen meghatározott szerkezetük.

A fenti három táblás adatbázis már sok minden kérdésre tud választ adni, de természetesen a végtelenségig lehet bővíteni...

A feltehető kérdések típusai

  • Melyik autóban hány km van?
  • Melyik a legnépszerűbb autó (legtöbbször vitték el)
  • Mennyi az autók átlagos kihasználtsága napokban
  • Melyik fajta autó a legnépszerűbb

Feladat: Zöldséges bolt adatbázis tervezése

A feladat egy képzeletbeli zöldséggel és gyümölcsökkel foglalkozó bolt adatbázisának megtervezése. A lehetséges események: Egy beszállító hoz árut, egy vásárló vesz árut, ki kell dobni néha  valamennyi árut. A szállítók általában ugyanazok, a vásárlók között sok olyan van, aki nem kér számlát, csak nyugtát.

Modellezés

A szállítók, a vevők és az áruk halmaza alapadatnak számít, tehát ezeket külön-külön táblákban tároljuk. Az események a fent felsoroltak. Az események fajtája korlátos, tehát vagy kódokkal jelöljük, vagy rövidítéssel.

Aruk(AID, Nev, Fajta, Osztaly, Egysegar, Egyseg, Megjegyzes,...)

Szallitok(SZID, Nev, Cim, Adoszam, Telefonszam, Megjegyzes,...)

Vevok(VID, Nev, Cím, Adoszam, Megjegyzes, ...)

Esemenyek(EID, AID, SZID, VID, Idopont, Kod, Mennyiseg, Egyseg, Pénz, Megjegyzes, ...)

A fenti táblákban mindenhol egy AutoIncrement és Primary Key tulajdonságú ID jellegű mezőt vettünk fel, amelyekre természetesen indexelni kell a táblákat.

Az AID, SZID és VID idegen kulcs (Foreign Key), a megfelelő táblákra hivatkozik.

Ebben az adatbázisban a Szallitok és a Vevok táblában nem lenne kötelező az xID jellegű mező használata, hiszen főleg a szállítók esetén a név + cím + adószám egyértelműen azonosítja a rekordot, de programozási szempontból egyszerűbb és gyorsabb, ha ID jellegű azonosítókat használunk. Ez a denormalizálás tipikus esete.

A megjegyzés táblában olyan információkat tárolhatunk, amelyek előre nem kitalálhatók és ráadásul lehetnek ebben a táblában többéertékű információk is. ebben az esetben az adatbázis nincsen 3NF-ben. Ezzel csak akkor kell foglalkoznunk, amikor további igényeket akarunk támasztani az adatbázissal szemben.

Események

  • Ha szállítási esemény van, akkor a kasszában csökken a Penz, az áru mennyisége növekszik, az SZID ki van töltve, a VID üres.
  • Abban az esetben, ha vevő esemény van, akkor a kasszában növekszik a pénz és az áru mennyisége csökken. Ekkor a SZID nincsen kitöltve
  • Ha selejtezés van, akkor a Pénz marad nulla, az áru mennyisége csökken, nincsen VID és SZID sem.

A feltehető kérdések típusai

  • Mennyi pénz van jelenleg a kasszában?
  • Egy termékből jelenleg mennyi van?
  • Mennyi a jelenlegi áru össz értéke
  • Ki a legnagyobb beszállító?
  • Ki a legnagyobb értékben vásárló?
  • Mennyi a havi forgalom?
  • stb...