Az adatbázis bővítése

iDevice ikon
Beszerzés

Legelőször az ANYAG tábla karbantartása tűnik felületesnek. Eddig nyom nélkül bővült a tábla.

Tehát általában kell egy BESZERZÉS tábla, ami a "mikor-miből-mennyit-mennyiért" információt tárolná:

BESZERZÉS{akód, dátum, beár, menny}

De ezzel együtt felveszünk az ANYAGba egy aktuális készlet tulajdonságot, amelyhez beszerzéskor hozzáadjuk a menny-t a konkrét anyag esetén, rendeléskor pedig levonjuk a rendmennyszüksmenny szorzatot a recept által előírt összes hozzávaló esetén.

ANYAG{akód, név, egysár, mértegys, készlet}

Figyelem: a készlet módosítása előtt súlyozott átlagárat kell számolni, hogy az anyag aktuális készlete mellett mindig annak a „mibekerülési" ára szerepeljen.

Javasolt funkció: a megrendelő bizonyára ilyenkor minden olyan ételnek megváltoztatná az árát, amibe az éppen megváltozott egységárú anyag beépül.

 

Az ANYAG - BESZERZÉS kapcsolat 1:N.

 
12. ábra

 

Megjegyzés: ebben az esetben is bizonylatolhatnánk, mint a „számlaadás"-t.

(Ekkor a bejövő számlák fejét és tételeit tartjuk 2 táblában. A BESZERZÉS dátuma a fejbe, a többi adata pedig a tételek közé kerülne. A bejövő számlák számlaszáma nem biztos, hogy egyedi, ezért belső generált azonosítóval látjuk el.)

 

Személyzet

Igény lehet a személyzet nyilvántartására, hiszen amint róluk is tud a rendszer, azon nyomban lehetőség nyílik a forgalom pincérekre való lebontására, vagy az árbevételtől főggő szakács-bérezésre.

Az normalizálás lépései szerint haladva jutunk az alábbi relációkhoz:

SZEMÉLY{kódszám, neve, poszt}
BEOSZTÁS{poszt, jelentés}

A kapcsolat:1 beosztáshoz több személy tartozhat.

A személyek (beosztásukat tekintve pincérek, szakácsok, kukták, zenészek stb.) közül csapatok alakulnak, akik egy adott napon együtt dolgoznak, és mivel egy személy több napon dolgozik, a SZEMÉLY - CSAPAT kapcsolat 1:N.

CSAPAT{dátum, kódszám}

Ekkor már a napi árbevétel előírt százaléka kiosztható például egyformán a kukták között, további százalék a szakácsnak stb. Ha a pincéreket viszont nem egyformán díjaznák, akkor rögzíteni kell naponta, mennyit dolgoztak (mely tételeket hordták ki ténylegesen).

A forgalom pincérhez kötése az „asztalon keresztül" történik, ui. naponta a felszolgáló pincérekhez rendeljük a sorszámozott asztalokat. Ám ne felejtsük el, hogy ebben az esetben a számlán az asztalt fel kell tüntetni. Ennek oka az alábbi funkcionális függőség:

{dátum, sorszám}{kódszám}, ahol a sorszám az asztal egyedi azonosítója.

Megjegyzés: nem igaz viszont, hogy a dátum és kódszám meghatározná a sorszámot (ui. adott napon egy pincér több asztalt kap).

 

Az új egyedek a következők:

ASZTAL{sorszám, hányfős}
KISZOLGÁL{dátum, sorszám, kódszám}

A CSAPATból csak bizonyos kódszámok kerülnek a KISZOLGÁLba (most a pincérek), és ott többször szerepelhetnek, mivel 1 személyhez több asztal is tartozhat egy bizonyos napon. A kapcsolat tehát 1:N.

Számla - pincér kapcsolatot létesít a sorszám felkerülése a számlára:

SZÁMLAFEJ{szlaszám, dátum, végösszeg, sorszám}

Így egy kiszolgáláshoz több számla tartozhat (adott napon adott asztalnál több számla születik).

Ha valaki felhasználói oldalról közelíti ezt a kérdést, akkor gondoljon arra, hogy egy nyitott számla tételeinek folytatása esetén mit tesz a pincér: lekéri az ő kódszámához tartozó ki nem fizetett számlákat? Nem, mert több olyan is lehet. Asztal-sorszámot kér, melyhez csak egy nyitott számla van.

 

További kapcsolat: 1 asztalnál több számla készül.

 
13. ábra

 

 

 

A végleges adatbázis ábrázolása:

 

 
14. ábra

 

 

(tulajdonságok nélkül és minden felállítható kapcsolattal)

 

Fontos: A hivatkozási épség megőrzése azt jelenti, hogy a 1 KISZOLG-sor 1 CSAPAT-tagra mutat, ami majd 1 SZEMÉLY-re. Ezt a külső kulcsok felállításával érjük el. Itt nem elég egy létező személyre hivatkozni a kiszolgálásban, annak ellenére, hogy a KISZOLG:SZEMÉLY kapcsolat él, és valamely lekérdezés esetén akár kihagyható lesz a CSAPAT.

Továbbá másik szabályt is be kell állítani, miszerint csak olyan csapattagokra mutathat bármelyik kiszolgál-sor, amelyhez tartozó személy beosztása pincér. Csak ők kapnak asztalokat. Az erről való gondoskodást (megszorítás megadásával) a későbbiekben tanuljuk meg.

Ugyanígy egy SZFEJ a KISZOLG-soron keresztül mutasson egy ASZTALra. Vagyis a SZFEJ-sor adott dátuma mellett nem akármelyik asztal állhat az ASZTAL sorai közül, hanem csak olyan, amit egy pincérhez hozzárendeltek aznap a KISZOLGban. Csak valamely lekérdezés során hagyható el a KISZOLG a SZFEJ és ASZTAL mellől; mert a kapcsolat eredeti definíciója szerint ez megtehető.