Restorani veebilehestik ja selle andmebaas Osapooled/rollid: Klient - tuleb restorani sööma, valib toidud, näeb, kui kaugel on valmistamine, sööb, tasub arve ja lahkub. Soovi korral kommenteerib/hindab toite ja teenindust Köök - näeb tellimusi, pikemate toitude korral märgib nende valmistamise alguse, valmisoleku lauale kandmiseks Ettekandja - viib lauale valmispandud tellimused. Tegeleb arvete tasumisega. Isikute haldur - kasutajanimed, paroolid ja rollid/õigused Asjade haldur - lauad, kohad, menüü Tabelid toidutyybid(id, toidutyybinimi) toidud(id, toidunimi, hind, valmimisaeg, toidutyybi_id) lauad(id, kohtadearv) rollid(id, rollinimi) isikud(kasutajanimi, rolli_id, paroolir2si) tellimuse_staatused(id, tellimusestaatus) tellimused(id, laua_id, ettekandja_id, algusaeg, staatuse_id, kommentaar) tellimused_toidud(id, tellimuse_id, toidu_id, valmimisstaatus, hinnang) SQL laused tabelite loomiseks CREATE TABLE toidutyybid( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, toidutyybinimi VARCHAR(20) ); CREATE TABLE toidud( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, toidunimi VARCHAR(30), hind DECIMAL(8,2), valmimisaeg INT DEFAULT 0, /*minutites*/ toidutyybi_id INT, staatus INT, /*1 olemas, 0 puudu*/ FOREIGN KEY(toidutyybi_id) REFERENCES toidutyybid(id) ); CREATE TABLE lauad( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, kohtadearv INT ); CREATE TABLE rollid( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, rollinimi VARCHAR(30) ); CREATE TABLE isikud( kasutajanimi VARCHAR(20) PRIMARY KEY, rolli_id INT, paroolir2si CHAR(41), FOREIGN KEY(rolli_id) REFERENCES rollid(id) ); CREATE TABLE tellimusestaatused( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, tellimusestaatus VARCHAR(30) ); CREATE TABLE tellimused( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, laua_id INT, ettekandja_kasutajanimi VARCHAR(20), algusaeg DATETIME, staatuse_id INT, kommentaar VARCHAR(255), FOREIGN KEY(ettekandja_kasutajanimi) REFERENCES isikud(kasutajanimi), FOREIGN KEY(laua_id) REFERENCES lauad(id), FOREIGN KEY(staatuse_id) REFERENCES tellimusestaatused(id) ); CREATE TABLE tellimused_toidud( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, tellimuse_id INT, toidu_id INT, valmimisstaatus INT, /*0 tellitud, 1 k88gis valmis*/ hinnang INT, /*1..5*/ FOREIGN KEY(tellimuse_id) REFERENCES tellimused(id), FOREIGN KEY(toidu_id) REFERENCES toidud(id) ); ___ INSERT INTO toidutyybid VALUES (1, 'eelroog'); INSERT INTO toidutyybid VALUES (2, 'supp'); INSERT INTO toidutyybid VALUES (3, 'praad'); INSERT INTO toidutyybid VALUES (4, 'magustoit'); INSERT INTO toidutyybid VALUES (5, 'jook'); INSERT INTO toidud (id, toidunimi, hind, valmimisaeg, toidutyybi_id, staatus ) VALUES (1, 'Hernesupp', 2.15, 0, 2, 1); INSERT INTO toidud (id, toidunimi, hind, valmimisaeg, toidutyybi_id, staatus ) VALUES(2, 'Seapraad', 4.45, 10, 3, 1); INSERT INTO lauad (id, kohtadearv) VALUES (1, 4); INSERT INTO lauad (id, kohtadearv) VALUES (2, 8); INSERT INTO rollid(id, rollinimi) VALUES (1, 'kokk'); INSERT INTO rollid(id, rollinimi) VALUES (2, 'ettekandja'); INSERT INTO rollid(id, rollinimi) VALUES (3, 'inimhaldur'); INSERT INTO rollid(id, rollinimi) VALUES (4, 'asjahaldur'); INSERT INTO isikud(kasutajanimi, rolli_id, paroolir2si) VALUES ('martin', 1, PASSWORD('pirukas')); INSERT INTO isikud(kasutajanimi, rolli_id, paroolir2si) VALUES ('malle', 1, PASSWORD('kapsataim')); INSERT INTO isikud(kasutajanimi, rolli_id, paroolir2si) VALUES ('mari', 2, PASSWORD('klaas')); INSERT INTO isikud(kasutajanimi, rolli_id, paroolir2si) VALUES ('tiiu1', 3, PASSWORD('tiiu')); INSERT INTO isikud(kasutajanimi, rolli_id, paroolir2si) VALUES ('tiiu2', 4, PASSWORD('tiiu')); INSERT INTO tellimusestaatused (id, tellimusestaatus) VALUES (1, 'tellitud'); INSERT INTO tellimusestaatused (id, tellimusestaatus) VALUES (2, 'komplekteeritud'); INSERT INTO tellimusestaatused (id, tellimusestaatus) VALUES (3, 'lauale kantud'); INSERT INTO tellimusestaatused (id, tellimusestaatus) VALUES (4, 'makstud'); INSERT INTO tellimused (id, laua_id, ettekandja_kasutajanimi, algusaeg, staatuse_id, kommentaar) VALUES (1, 2, 'mari', NOW(), 1, ''); INSERT INTO tellimused (id, laua_id, ettekandja_kasutajanimi, algusaeg, staatuse_id, kommentaar) VALUES (2, 1, 'mari', NOW(), 1, ''); INSERT INTO tellimused_toidud (id, tellimuse_id, toidu_id, valmimisstaatus, hinnang) VALUES (1, 1, 1, 0, NULL); INSERT INTO tellimused_toidud (id, tellimuse_id, toidu_id, valmimisstaatus, hinnang) VALUES (2, 1, 2, 1, NULL); INSERT INTO tellimused_toidud (id, tellimuse_id, toidu_id, valmimisstaatus, hinnang) VALUES (3, 2, 1, 0, 4); Päringud Kõik toidud koos tüüpide nimedega SELECT toidunimi, toidutyybinimi, hind FROM toidud, toidutyybid WHERE toidud.toidutyybi_id = toidutyybid.id; +-----------+----------------+------+ | toidunimi | toidutyybinimi | hind | +-----------+----------------+------+ | Hernesupp | supp | 2.15 | | Seapraad | praad | 4.45 | +-----------+----------------+------+ Tellimuse nr. 1 laud ja toidud SELECT laua_id, toidunimi FROM tellimused, tellimused_toidud, toidud WHERE tellimused_toidud.tellimuse_id=tellimused.id AND tellimused_toidud.toidu_id=toidud.id AND tellimused.id=1; +---------+-----------+ | laua_id | toidunimi | +---------+-----------+ | 2 | Hernesupp | | 2 | Seapraad | +---------+-----------+