Üdvözlet!
Van egy mysql-5 szerver. Nekiláttam egy webes aplikáció adatbázis tervezésének. Egy ponton elakadtam és ebben kérném a segítségeteket. Van egy tábla, ami kész ételekbe való alapanyagok adatait tartalmazza (id, nev, mertekegyseg, megjegyzes). A lényeg az lenne, hogy egy php alapú adminisztrációs felületen felveszik az alapanyagokat, melyek ebben a táblában lennének letárolva. Kellene még egy tábla, amiben tárolnám az étel nevét és a hozzá tartozó alapanyagok nevét és mennyiségét. Tudnátok erre egy szép megoldást javasolni, nem kell a komplett kivitelezés, inkább ötlet, hogy hogy alakítsam ki az etel táblát, hogy azt könnyen lehessen kezelni.
- 3365 megtekintés
Hozzászólások
Mivel ma már elég jól a betermeltem a "Félédes Vörös" névre hallgató "asztali" minőségű borból, amit felütöttem egy kis Coca Cola light-tal, annyit tudok bölcsen javasolni, hogy hozd minimum második normálformára az adatbázist, de ha van türelmed, akkor próbáld meg harmadikra hozni :)
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
etel:
id - autoincrement
etelneve - varchar
kaloria - int
alapanyag:
id - autoincrement
anyagnev - varchar
mertegys - enum(g,ml,ek,...)
mennyiseg:
id - autoincrement
etelid - int
anyagid - int
mennyi - float
igy peldaul:
etel: 1,kenyer,230
alapanyag: 1,liszt,g | 5,viz,ml | 8,so,g | 67,eleszto,g
mennyiseg: 1,1,1,1000 | 2,1,5,200 | 3,1,8,50 | 4,1,67,20
remelem ertheto :) [nagyon ne fikazzatok, nem ertek ehhez sem]
- A hozzászóláshoz be kell jelentkezni
Ez egy "darabjegyzék" (dbj) típusú tábla, aminek a lényege:
Van szülő tétel és van beépülő tétel. A szülő tétel+beépülő tétel határoz meg egy egyedi kulcsot, (unique index).
Lehet pl. ilyen:
Szülő, beépülő, mennyiség
leves1, víz, 1
leves1, krumpli, 0.5
leves1, hagyma, 0.2
leves2, víz, 1.2
leves2, krumpli, 0.52
leves2, hagyma, 0.18
leves2, kolbász1, 0.4
-------, -----, ----
Kell még egy anyagtörzs tábla is amiben szerepel az összes előforduló anyag, beleértve a szülő tételt is. Itt szerepel a megnevezés, mennyiségi egység, raktárkészlet, beszerzési idő, stb...
De mi van akkor ha egy beépülő tétel kell hogy szerepeljen mint szülő?
Semmi probléma, mert ez is szerepelhet a dbj táblában:
kolbász1, hús, 1.1
kolbász1, paprika, 0.2
A feldolgozással gondok lehetnek, mert a beépülés többszintű, emiatt rekurzív eljárás kell. A levesbe beépülő kolbász lehet beszerzett anyag is, de előállított is. Ezt szintén jelölni kell az anyagtörzsben.
ELaci
- A hozzászóláshoz be kell jelentkezni
Valami hasonló fele mozdultam el, annyi különbséggel, hogy egy beépülő tétel soha nem fog szerepelni, mint szülő és nem szükséges sok információ tárolása az alapanyagokról sem.
De valami még nem kerek. Így festenek a táblák:
CREATE TABLE `food_component_map`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`food_id` INTEGER NOT NULL,
`component_id` INTEGER NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `map_index` (`food_id`, `component_id`),
CONSTRAINT `food_component_map_FK_1`
FOREIGN KEY (`food_id`)
REFERENCES `food` (`id`),
INDEX `food_component_map_FI_2` (`component_id`),
CONSTRAINT `food_component_map_FK_2`
FOREIGN KEY (`component_id`)
REFERENCES `component` (`id`)
)Type=MyISAM;
CREATE TABLE `food`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`categories_id` INTEGER NOT NULL,
`nev` VARCHAR(100),
`leiras` LONGTEXT,
PRIMARY KEY (`id`),
INDEX `food_FI_1` (`categories_id`),
CONSTRAINT `food_FK_1`
FOREIGN KEY (`categories_id`)
REFERENCES `categories` (`id`)
)Type=MyISAM;
REATE TABLE `component`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`nev` VARCHAR(200),
`mertekegyseg` VARCHAR(20),
`leiras` LONGTEXT,
PRIMARY KEY (`id`)
)Type=MyISAM;
CREATE TABLE `categories`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`nev` VARCHAR(100),
`leiras` LONGTEXT,
PRIMARY KEY (`id`)
)Type=MyISAM;
Egy dologgal még nem boldogulok. A mennyiségre, szóval azzal, hogy egy ételbe egy adott összetevőből mennyi kell. Ezt a food_component_map táblába kellene felvennem?
A programot a symfony keretrendszerrel csinálom, ami a propel -t használja az adatbázis séma kezeléséhez, ha ez számít.
Kaphatnék még egy kis segítséget?
_____________________________________________________________
Lógnak a pálmafán a kókuszok .... :)
http://laszlo.co.hu/
- A hozzászóláshoz be kell jelentkezni
A beépülő mennyiséget mindig a szülő 1 egységnyi állapotához kell viszonyítani.
Tehát pl. így:
1 liter leveshez kell 0.3 kg hús,
1 szelet sütihez kell 0.03 g kakaó
De úgy látom hogy a javaslatomat nem fogadtad el a dbj táblát illetően, pedig ez egy több évtizedes tapasztalat és nem az én ötletem.
- A hozzászóláshoz be kell jelentkezni
Szerintem próbáld meg inkább egyed-kapcsolat modellel leírni az adatbázist. Abból már könnyen létrehozható az adatbázis séma.
--
maszili
- A hozzászóláshoz be kell jelentkezni
Nem direkt valasz a kerdesre, de letezik egy krecipies nevu program, ami mysqlben tarol pontosan ilyen jellegu infokat (Receptek, hozzavalok, hozzavalok osszetevoi vitaminokig, nyomelemekig lebontva, energiatartalom stb.) Lehet, hogy erdemes lenne belenezned. Egyreszt az adatbazis strukturara adhat otletet, masreszt fel van toltve millio adattal (nem kesz receptekkel, hanem elsosorban az osszetevok adataival), ami esetleg hasznos lehet.
Csaba
- A hozzászóláshoz be kell jelentkezni
Köszönöm mindenkinek az infot! Holnap belemélyedet a projektbe rendesen!
___________________________________________________________________
Lógnak a pálmafán a kókuszok .... :)
http://laszlo.co.hu/
- A hozzászóláshoz be kell jelentkezni