Rendszertervezés (H4) - KKrisztofer/SWTECH-CodeRiders GitHub Wiki
Rendszertervezés
Bevezetés
Adatmodellek
Adatbázis kezelő kiválasztása
Szemantikai adatmodell
Relációs adatmodell
Felhasznalok
- id: A felhasználó egyedi azonosítója. [ INT PRIMARY_KEY ]
- nev: A felhasználó teljes polgári neve. [ VARCHAR(30) ]
- email: A felhasználó email címe. [ VARCHAR(30) ]
- jelszo: A felhasználó kódolt jelszava.(md5) [ VARCHAR(300) ]
- rogzitesDatum: A felhasználó regisztrálásának az ideje. [ DATETIME ]
- jogosulstag: A felhasználó jogosultságát határozza meg. [ FOREIGN_KEY ]
Jogosultsagok
Megjegyzés: A különböző jogosultságok logikai változóként vannak eltárolva. A rendszer bejelentkezéskor kiolvassa ezeket az értékeket az adatbázisból és ennek függvényében jeleníti meg a felhasználónak az ő jogosultságának megfelelő funkciókat.
- id: A jogosultság egyedi azonosítója. [ INT PRIMARY_KEY ]
- elnevezes: A jogpsultság elnevezése. [ VARCHAR(30) ]
- rendelesKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- alapanyagKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- termekKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- menuKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- raktarKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- vendegKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- felhasznaloKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- jogosultsagKezeles: Jogosultságot határoz meg. [ BOOLEAN ]
- rendelesSzallitas: Jogosultságot határoz meg. [ BOOLEAN ]
Vendegek
Megjegyzés: Csak szállításos rendelésnél történik meg az adatok rögzítése.
- id: A vendég egyedi azonosítója. [ INT PRIMARY_KEY ]
- nev: A vendég teljes polgári neve. [ VARCHAR(30) ]
- irSzam: A vendég irányítószáma. [ FOREIGN_KEY ]
- cim: A vendég címe. (utca,házszám,pontosítás) [ VARCHAR(40) ]
- telefon: A vendég telefonszáma. [ VARCHAR(11) ]
- email: A vendég email címe. [ VARCHAR(30) ]
- rogzitesDatum: A vendég adatainak rendszerbe való felvitelének ideje. [ DATETIME ]
Varosok
Megjegyzés: A városok neveit külön táblában rögzítjük a redundancia csökkentésének érdekében.
- id: A település irányítószáma. [ INT PRIMARY_KEY ]
- varos: A település elnevezése. [ VARCHAR(40) ]
Alapanyagok
Megjegyzés: Az alapanyagok nevét és azoknak mértékegységét tárolja el, melyekből később termék lesz.
- id: Az alapanyag egyedi azonosítója. [ INT PRIMARY_KEY ]
- elnevezes: Az alapanyag elnevezése. [ VARCHAR(20) ]
- mertekegyseg: Az alapanyag mértékegysége. [ VARCHAR(2) ]
- rogzitesDatum: Az alapanyag rögzítésének ideje. [ DATETIME ]
Termekek
- id: A termék egyedi azonosítója [ INT PRIMARY_KEY ]
- elnevezes: A termék elnevezése. [ VARCHAR(30) ]
- tipus: A termék típusa, a 'false' a viszonteladói, a 'true' a saját. [ BOOLEAN ]
- kategoria: A termék kategóriája. [ FOREIGN_KEY ]
- ar: A termék ára. [ INT ]
- rogzitesDatum: A termék rögzítésének ideje. [ DATETIME ]
Menuk
Megjegyzés: A termékekből egy menüt lehet létrehozni, ami új árat kap.
- id: A menü egyedi azonosítója [ INT PRIMARY_KEY ]
- elnevezes: A menü elnevezése. [ VARCHAR(30) ]
- ar: A menü ára. [ INT ]
- rogzitesDatum: A menü rögzítésének ideje. [ DATETIME ]
AlapanyagTartalmazas
Megjegyzés: Ez egy kapcsolótábla. Meghatározza hogy az egyes termékek milyen alapanyagokból állnak és azoknak mennyiségeit.
- alapanyagID: Az alapanyagot azonosítja. [ FOREIGN_KEY ]
- termekID: A terméket azonosítja. [ FOREIGN_KEY ]
- mennyiseg: Meghatározza, hogy az adott alapanyagból mennyit tartalmaz. [ INT ]
TermekTartalmazas
Megjegyzés: Ez egy kapcsolótábla. Meghatározza hogy az egyes menük milyen termékekből állnak és azoknak mennyiségeit.
- termekID: A terméket azonosítja. [ FOREIGN_KEY ]
- menuID: A menüt azonosítja. [ FOREIGN_KEY ]
- mennyiseg: Meghatározza, hogy az adott termékből mennyit tartalmaz. [ INT ]
Kategoriak
Megjegyzés: A termékek kategóriáit tárolja. Előre definiált kategóriák: étel, ital
- id: A kategória egyedi azonosítója. [ INT PRIMARY_KEY ]
- elnevezes: A kategória elnevezése. [ VARCHAR(20) ]
AlapanyagRaktar
Megjegyzés: Ebben a táblában tárolódik el az alapanyagnak a nyilvántartásban szereplő mennyisége.
- alapanyagID: Az alapanyagot azonosítja. [ FOREIGN_KEY ]
- mennyiseg: Az alapanyag nyilvántartott mennyiségét tárolja. [ INT ]
- minimum: Az alapanyag minimum értéke.(opcionális) [ INT ]
- utolsoBovites: Az alapanyag nyilvántartásának utolsó módosításának ideje. [ DATETIME ]
TermekRaktar
Megjegyzés: Ebben a táblában a viszonteladói termékeknek a nyilvántartásban szereplő mennyisége tárolódik.
- termekID: A terméket azonosítja. [ FOREIGN_KEY ]
- mennyiseg: A termék nyilvántartott mennyiségét tárolja. [ INT ]
- minimum: A termék minimum értéke.(opcionális) [ INT ]
- utolsoBovites: A termék nyilvántartásának utolsó módosításának ideje. [ DATETIME ]
Rendelesek
- id: A rendelés egyedi azonosítója. [ PRIMARY_KEY ]
- vendeg: A vendéget azonosítja.(opcionális, csak szállításos rendelésnél) [ FOREIGN_KEY ]
- kiszolgalo: A rendelést rögzítő alkalmazottat azonosítja.(opcionális, online rendelés esetén null) [ FOREIGN_KEY ]
- osszeg: A rendelés összege. [ INT ]
- datum: A rendelés rögzítésének ideje. [ DATETIME ]
- tipus: A rendelés típusa, a 'false' a személyes, a 'true' a szállításos. [ BOOLEAN ]
- aktiv: Alapértelmezetten 'true', fizetés megtörténtekor 'false'-ra változik. [ BOOLEAN ]
TermekKeszites
- termekID: A terméket azonosítja. [ FOREIGN_KEY ]
- rendelesID: A rendelést azonosítja [ FOREIGNT_KEY ]
- szakacs: A szakácsot azonosítja, aki elkészíti a rendelést. [ FOREIGN_KEY ]
RendeltTermekek
Megjegyzés: Ez egy kapcsolótábla. Meghatározza hogy a rendeléshez milyen termékek tartoznak és azok mennyiségeit.
- rendelesID: A rendelést azonosítja. [ FOREIGN_KEY ]
- termekID: A terméket azonosítja. [ FOREIGN_KEY ]
- mennyiseg: A termék rendelésben szereplő mennyiségét határozza meg. [ FOREIGN_KEY ]
RendeltMenuk
Megjegyzés: Ez egy kapcsolótábla. Meghatározza hogy a rendeléshez milyen menük tartoznak és azok mennyiségeit.
- rendelesID: A rendelést azonosítja. [ FOREIGN_KEY ]
- menuID: A menüt azonosítja. [ FOREIGN_KEY ]
- mennyiseg: A menü rendelésben szereplő mennyiségét határozza meg. [ FOREIGN_KEY ]
Szallitas
Megjegyzés: Meghatározza, hogy melyik rendelést, melyik futár fogja kézbesíteni.
- rendelesID: A rendelést azonosítja. [ FOREIGN_KEY ]
- futarID: A futárt azonosítja, aki kiszállítja a rendelést. [ FOREIGN_KEY ]
- kezbesitveDatum: A rendelés kézbesítésének ideje. [ DATETIME ]
CREATE TABLE Jogosultsagok
(
id INT NOT NULL,
elnevezes VARCHAR(30) NOT NULL,
rendelesKezeles BOOLEAN NOT NULL,
alapanyagKezeles BOOLEAN NOT NULL,
termekKezeles BOOLEAN NOT NULL,
menuKezeles BOOLEAN NOT NULL,
raktarKezeles BOOLEAN NOT NULL,
vendegKezeles BOOLEAN NOT NULL,
felhasznaloKezeles BOOLEAN NOT NULL,
jogosultsagKezeles BOOLEAN NOT NULL,
rendelesSzallitas BOOLEAN NOT NULL,
naploMegtekintes BOOLEAN NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Kategoriak
(
id INT NOT NULL,
elnevezes VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Alapanyagok
(
id INT NOT NULL,
elnevezes VARCHAR(20) NOT NULL,
mertekegyseg VARCHAR(2) NOT NULL,
rogzitesDatum DATETIME NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Termekek
(
id INT NOT NULL,
elnevezes VARCHAR(30) NOT NULL,
tipus BOOLEAN NOT NULL,
ar INT NOT NULL,
rogzitesDatum DATETIME NOT NULL,
kategoria INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (kategoria) REFERENCES Kategoriak(id)
);
CREATE TABLE AlapanyagTartalmazas
(
mennyiseg INT NOT NULL,
alapanyagID INT NOT NULL,
termekID INT NOT NULL,
FOREIGN KEY (alapanyagID) REFERENCES Alapanyagok(id),
FOREIGN KEY (termekID) REFERENCES Termekek(id)
);
CREATE TABLE Menuk
(
id INT NOT NULL,
elnevezes VARCHAR(30) NOT NULL,
ar INT NOT NULL,
rogzitesDatum DATETIME NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE TermekTartalmazas
(
mennyiseg INT NOT NULL,
termekID INT NOT NULL,
menuID INT NOT NULL,
FOREIGN KEY (termekID) REFERENCES Termekek(id),
FOREIGN KEY (menuID) REFERENCES Menuk(id)
);
CREATE TABLE AlapanyagRaktar
(
mennyiseg INT NOT NULL,
utolsoBovites DATETIME NOT NULL,
minimum INT,
alapanyagID INT NOT NULL,
FOREIGN KEY (alapanyagID) REFERENCES Alapanyagok(id)
);
CREATE TABLE TermekRaktar
(
mennyiseg INT NOT NULL,
utolsoBovites DATETIME NOT NULL,
minimum INT,
termekID INT NOT NULL,
FOREIGN KEY (termekID) REFERENCES Termekek(id)
);
CREATE TABLE Varosok
(
irSzam VARCHAR(4) NOT NULL,
varos VARCHAR(40) NOT NULL,
PRIMARY KEY (irSzam)
);
CREATE TABLE Felhasznalok
(
id INT NOT NULL,
nev VARCHAR(30) NOT NULL,
email VARCHAR(30) NOT NULL,
jelszo VARCHAR(300) NOT NULL,
rogzitesDatum DATETIME NOT NULL,
jogosultsag INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (jogosultsag) REFERENCES Jogosultsagok(id)
);
CREATE TABLE Vendegek
(
id INT NOT NULL,
nev VARCHAR(30) NOT NULL,
telefon VARCHAR(11) NOT NULL,
cim VARCHAR(40) NOT NULL,
rogzitesDatum DATETIME NOT NULL,
email VARCHAR(30) NOT NULL,
irSzam VARCHAR(4) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (irSzam) REFERENCES Varosok(irSzam)
);
CREATE TABLE Rendelesek
(
id INT NOT NULL,
datum DATETIME NOT NULL,
osszeg INT NOT NULL,
tipus BOOLEAN NOT NULL,
aktiv BOOLEAN NOT NULL,
vendeg INT,
kiszolgalo INT,
PRIMARY KEY (id),
FOREIGN KEY (vendeg) REFERENCES Vendegek(id),
FOREIGN KEY (kiszolgalo) REFERENCES Felhasznalok(id)
);
CREATE TABLE RendeltTermekek
(
mennyiseg INT NOT NULL,
rendelesID INT NOT NULL,
termekID INT NOT NULL,
FOREIGN KEY (rendelesID) REFERENCES Rendelesek(id),
FOREIGN KEY (termekID) REFERENCES Termekek(id)
);
CREATE TABLE RendeltMenuk
(
mennyiseg INT NOT NULL,
rendelesID INT NOT NULL,
menuID INT NOT NULL,
FOREIGN KEY (rendelesID) REFERENCES Rendelesek(id),
FOREIGN KEY (menuID) REFERENCES Menuk(id)
);
CREATE TABLE Szallitas
(
kezbesitveDatum DATETIME NOT NULL,
rendelesID INT NOT NULL,
futarID INT NOT NULL,
FOREIGN KEY (rendelesID) REFERENCES Rendelesek(id),
FOREIGN KEY (futarID) REFERENCES Felhasznalok(id)
);
CREATE TABLE TermekKeszites
(
termekID INT NOT NULL,
rendelesID INT NOT NULL,
szakacs INT NOT NULL,
FOREIGN KEY (termekID) REFERENCES Termekek(id),
FOREIGN KEY (rendelesID) REFERENCES Rendelesek(id),
FOREIGN KEY (szakacs) REFERENCES Felhasznalok(id)
);
Az adatbázis kezelővel kapcsolatot tartó osztályok
Az adatbázissal való kapcsolatfelvételre azok az osztályok lesznek képesek, amik adatokat is kezelnek. Erre a feladatra nem dedikálunk külön osztályokat. Minden osztálynak külön része felelős az adatbázisból való adatok lekérdezése, illetve feltöltése.