Adatbázis alapú rendszerek BookIt projekt dokumentáció Kotosz Tibor, Krajcsovszki Gergely, Seres Regina 2011
Tartalomjegyzék Jelenlegi rendszer... 2 Jelenlegi rendszer fizikai AFD-je... 2 Jelenlegi rendszer adatbázissémái... 3 Tervezett rendszer... 3 A tervezett rendszer logikai AFD-je... 4 1. szint... 4 2.szint... 5 3.szint... 8 Szöveges követelménykatalógus... 10 A tervezett rendszer EK-modellje... 10 A tervezett rendszer normalizált adatbázissémái... 11 Szerep-funkció mátrix... 14 1
BookIt Project Jelenlegi rendszer A jelenlegi rendszer lehetőséget nyújt az egyes boltokban lévő könyvek tárolására. Természetesen a tárolt adatok módosíthatók (vásárlás történik), illetve törölhetők (elfogyott a könyv és többé már nem lesz olyan). Ebben a rendszerben az egyes könyvek esetén tárolásra kerülnek a következő adatok: cím, kiadó, szerző, valamint hogy hány darab áll rendelkezésre belőle. Ez alapján a funkciók a következők: új könyv felvétele könyv adatainak lekérdezése könyv adatainak módosítása (pl.: darabszám) könyv törlése az adatbázisból Jelenlegi rendszer fizikai AFD-je 2
Jelenlegi rendszer adatbázissémái KÖNYVEK( azonosító, cím, kiadó, szerző, darab ) Tervezett rendszer Mostanra a jelenlegi rendszer kényelmetlenné vált, mivel a rendszer nincs felkészítve több könyvesbolt egy rendszerben való kezelésére, ezzel együtt több eladó kezelésére sem. Továbbá a bolt kínálata is bővült zenei CD-kkel, filmekkel, illetve e-könyvekkel. Sőt igény támadt arra is, hogy a vásárlók saját maguk is be tudjanak lépni a rendszerbe, hogy megtekinthessék a kínálatot, illetve vásárolhassanak. Éppen ezért a tervezett rendszerrel szembeni elvárások a következők: felhasználók kezelése (regisztráció, beléptetés, jogosultságok kezelés) könyvek kezelése (hozzáadás, módosítás, törlés, darabszám, ár, melyik boltban elérhető, stb) rendelési, számlázási funkció (számlák megfelelő rendszerezettségével) kosár funkció (hozzáadás, törlés belőle, listázás) boltok kezelése (melyik boltban mi elérhető, bolt hozzáadása, törlése, módosítása) műfajok kezelése (termékek rendszerezése) 3
A tervezett rendszer logikai AFD-je 1. szint 4
2.szint 5
6
7
3.szint 8
9
Szöveges követelménykatalógus Könyvek felvétele és kezelése az adatbázisban (kiadás, kiadó, szerző, oldalszám, kötés, méret, ár). Műfajok és alműfajok kezelése, könyvek műfajokba sorolása. Műfajok mellé kigyűjteni, hogy hány könyv található az adatbázisban. Könyv vásárlása (kiszállítással). Keresés címre, szerzőre, találatok számának kigyűjtése. A legújabb könyvek megjelenítése a kezdő oldalon. Áruházak kezelése. Mely könyvek kaphatók egy áruházban? Egy adott könyv mely áruházban kapható? Készlet nyilvántartása boltonként. Könyv vásárlása, ahol megadható, hogy kiszállítással vagy üzletben kívánja átvenni a vásárló a könyvet. Számla készítése a vásárlásról. Felhasználók kezelése, csak regisztrált felhasználó tud vásárolni. Zene, filmek, elektronikus könyvek kezelése az adatbázisban. Olcsó könyvek kilistázása árkategóriánként. Törzsvásárlók nyilvántartása, törzsvásárlói kedvezmények. Egy könyv adatlapjánál azon könyveket is kilistázni, amelyeket megvettek azok a vásárlók, amelyek az aktuális könyvet megvették. A legnépszerűbb könyvek műfajonként. Heti/havi toplista a vásárlások alapján (mindegy, hogy interneten vagy boltban vásárolták meg a könyvet). A tervezett rendszer EK-modellje 10
A tervezett rendszer normalizált adatbázissémái Az alábbi séma-rendszer 3. normálformában van, mivel a sémák nem tartalmaznak összetett vagy többértékű attribútumot (1. nf felétele), minden másodlagos adattag teljesen függ bármely kulcstól, azaz nincs részleges függés (2. nf feltétele), valamint nem tartalmaznak tranzitív függést sem, azaz minden másodlagos adattag közvetlenül függ bármely kulcstól (3. nf feltétele). Bár a szerzők és a kiadók táblák beolvaszthatóak lennének a termékek táblába, mégis külön táblaként szerepelnek a megvalósításban, mivel egyrészt így a szerzők/kiadók listázása sokkal könnyebb, másrészt gondolni kell a rendszer bővíthetőségére is (ha a későbbiekben a kiadók/szerzők más adatait is szeretnék tárolni nem csupán a nevüket). Séma: FELHASZNÁLÓK( felhasználói_azonosító, felhasználónév, jelszó, email, valódi_név, lakcím, telefonszám, jogosultság ) Megjegyzés: Felhasználó adatait tárolja. felhasználói_azonosító integer a felh. egyedi azonosítója felhasználónév varchar2(25) a felhasználó neve jelszó varchar2(40) jelszó (sha1 -> 40 karakter) email varchar2(30) e-mail valódi_név varchar2(40) valódi név lakcím varchar2(40) lakcím telefonszám varchar2(20) telefonszám jogosultság integer jogosultság (pl.: 0-felhasználó, 1-eladó) Séma: ÁRUHÁZAK( áruház_azonosító, cím, telefonszám ) Megjegyzés: Áruházak adatait tárolja. áruház_azonosító integer az áruház egyedi azonosítója cím varchar2(200) cím telefonszám varchar2(40) telefonszám Séma: TERMÉKEK( termék_azonosító, szerző_azonosító, kiadó_azonosító, kiadás_éve, cím, leírás, ár ) Megjegyzés: Arra szolgál, hogy a termékeknek (könyv, film, zene, e-book) egyedi azonosítójuk legyen, még akkor is, ha külön táblában vannak. A termékek közös adatai is itt találhatóak meg. termék_azonosító integer a termék egyedi azonosítója szerző_azonosító integer a szerző egyedi azonosítója, feltételezve hogy egy könyvnek egyetlen szerzője van kiadó_azonosító integer a kiadó egyedi azonosítója kiadás_éve integer kiadás éve cím varchar2(30) cím leírás varchar2(500) leírás ár integer ár Séma: NYILVÁNTARTÁS( áruház_azonosító, termék_azonosító, db ) 11
Megjegyzés: A termékek áruházakkal történő összerendelésére szolgál. Ezen tábla alapján állapítható meg, hogy az egyes termékek mely boltokban található meg, illetve hány darab van belőlük az egyes boltokban. A darabszámokat összegezve kapható meg a teljes készlet az adott termékből. áruház_azonosító integer az áruház egyedi azonosítója termék_azonosító integer a termék egyedi azonosítója db integer a termék lokális darabszáma Séma: MŰFAJOK( műfaj_azonosító, műfaj_neve, szülő_műfaj_azonosító, mélységi_szint ) Megjegyzés: A műfajok tárolására szolgál. műfaj_azonosító integer a műfaj egyedi azonosítója műfaj_neve varchar(30) a műfaj neve szülő_műfaj_azonosító integer ha al-műfajról van szó, akkor ez a mező azonosítja a szülőjét mélységi_szint integer 0 gyökér műfaj 1 al-műfaj 2 al-al-műfaj stb. Séma: TERMÉKMŰFAJ( termék_azonosító, műfaj_azonosító ) Megjegyzés: Mivel egy termék több műfajba is tartozhat és egy műfajba több termék is tartozhat, így ez a tábla végzi az összerendelést. termék_azonosító integer a termék egyedi azonosítója műfaj_azonosító integer a műfaj egyedi azonosítója Séma: SZERZŐ( szerző_azonosító, szerző_neve ) Megjegyzés: A szerzők adatait tárolja. szerző_azonosító integer a szerző egyedi azonosítója szerző_neve varchar(30) a szerző neve Séma: KIADÓ( kiadó_azonosító, kiadó_neve, kiadó_címe ) Megjegyzés: A kiadók adatait tárolja. kiadó_azonosító integer a kiadó egyedi azonosítója kiadó_neve varchar(30) a kiadó neve kiadó_címe varchar(40) a kiadó címe Séma: SZÁMLÁK( számla_azonosító, felhasználói_azonosító, áruház_azonosító, kiszállítással, dátum) Megjegyzés: Az egyes vásárlásokhoz hozzárendel egy egyedi számla-azonosítót, ezzel egyértelműen azonosítva azt. Tárolásra kerül, hogy mely felhasználó, mely áruházból vásárolt és mikor, valamint hogy kiszállítással kérte a terméket vagy sem. számla_azonosító integer a számla egyedi azonosítója felhasználói_azonosító integer a felh. egyedi azonosítója áruház_azonosító integer az áruház egyedi azonosítója kiszállítással integer kiszállítással vagy sem? 12
dátum date rendelés dátuma Séma: SZÁMLATÉTELEK( számla_azonosító, termék_azonosító, db ) Megjegyzés: Ez a tábla adja meg, hogy az egyes számlákon milyen termék(ek) vannak, illetve azokból hány darab. számla_azonosító integer a számla egyedi azonosítója termék_azonosító integer a termék egyedi azonosítója db integer darabszám Séma: KÖNYVEK( termék_azonosító, méret, oldalszám, kötés ) Megjegyzés: A könyvek kiegészítő adatait tárolja, amelyek nem tárolódhatnak a termékek táblában, mivel nem vonatkoznak minden termékre. termék_azonosító integer a termék egyedi azonosítója méret integer a könyv fizikai mérete oldalszám integer oldalszám kötés varchar(20) kötés típusa Séma: E-KÖNYV( termék_azonosító, méret, oldalszám, kiterjesztés ) Megjegyzés: Az e-könyvek kiegészítő adatait tárolja, amelyek nem tárolódhatnak a termékek táblában, mivel nem vonatkoznak minden termékre. termék_azonosító integer a termék egyedi azonosítója méret integer az e-könyv mérete (MB) oldalszám integer oldalszám kiterjesztés varchar(20) kiterjesztés Séma: FILM( termék_azonosító, időtartam ) Megjegyzés: A filmek kiegészítő adatait tárolja, amelyek nem tárolódhatnak a termékek táblában, mivel nem vonatkoznak minden termékre. termék_azonosító integer a termék egyedi azonosítója időtartam integer a film hossza (perc) Séma: ZENE( termék_azonosító, időtartam ) Megjegyzés: A zenei cd-k kiegészítő adatait tárolja, amelyek nem tárolódhatnak a termékek táblában, mivel nem vonatkoznak minden termékre. termék_azonosító integer a termék egyedi azonosítója időtartam integer a cd hossza (perc) 13
Bejelentkezés Kijelentkezés Regisztráció Boltok kezelése Felhasználó kezelése Műfajok kezelése Áruk kezelése Vásárlás Szerep-funkció mátrix Eladó X X X X X Admin X X X X X X X 14