Autor | Zpráva | ||
---|---|---|---|
JanMatoušek Profil |
Ahoj,
Chci se spíše zeptat, co si myslíte o mém řešení, jestli je rozumné. Jde o to, že v DB máme určité stavy objednávek. (některé stavy objednávek se mění automaticky a některé přes selectbox) Například první stav objednáno, je vytvořen automaticky. Tento stav má id = 1. Takže do objednávka potřebuji uložit stav id 1. Ale přemýšlel jsem nad tím, co kdyby se někdo hrabal v db a jako id 1 dal třeba "zrušeno". Proto mě napadlo to řešit tak, že budu mít v tabulce orders_status i sloupec key, typu string a podle toho budu hledat stav. Ve scriptu bych pak měl např: const ORDER_STATUS_ORDERED = 'ordered'; zde bych si získal id statusu ordered nebo vyhodil vyjímku, že je něco špatně a uložil objednávku Dle mého názoru je to více intuitivní a dotaz navíc v tomto případě není až takové zatížení. Co si o tom myslíte? Nebo je nějaké lepší řešení? |
||
jenikkozak Profil |
#2 · Zasláno: 5. 3. 2014, 13:26:01
„Ale přemýšlel jsem nad tím, co kdyby se někdo hrabal v db a jako id 1 dal třeba "zrušeno".“
Tomu nerozumím. Jak konkrétně by to udělal? |
||
aDAm Profil |
#3 · Zasláno: 5. 3. 2014, 13:39:34
jako nějaký hacker? Tak buď pojedeš stavy dynamicky z jiné tabulky přes IDčka a nebo si udělej pevnou množinu ze které budeš vybírat ne?
|
||
JanMatoušek Profil |
#4 · Zasláno: 5. 3. 2014, 13:53:26
jenikkozak:
Tak např.: No třeba by se dohodlo, že se změní stavy objednávek a někdo by to udělal tak, že by vše smazal a nasypal by tam ty data znovu, ale zpřeházeně. No, ale to by mu to vlastně nedovolilo, protože je tam FK:-) No ale teď mě napadlo lepší vysvětlení. Dejme tomu, že by se prostě rozhodlo, že jeden status se prostě předělá a bude mít úplně jiný význam. Pokud by zůstalo stejné id, tak by s tím script stále pracoval a chyba by se neukázala. Ale v tomto případě je pravděpodobné, že by se přepsal i key vystihující status. Tím pádem by potom script začal házet vyjímku, že původní key mu chybí a že s ním počítal a byl oby jasné, že je script potřeba poupravit. |
||
jenikkozak Profil |
#5 · Zasláno: 5. 3. 2014, 14:06:29
Podobná recyklace je z principu špatná a bude mít stejný efekt, pokud použiješ identifikátory nebo slovní popis.
|
||
aDAm Profil |
#6 · Zasláno: 5. 3. 2014, 14:09:36
a proč by se to mělo takto blbě dělat? Pokud se status nepoužívá tak se odstraní, nebo nějak disabluje a přidá se nový ne?
|
||
JanMatoušek Profil |
#7 · Zasláno: 5. 3. 2014, 14:36:32
jenikkozak:
ok, takže nevymýšlet složitosti a prostě si do těch konstant rovnou dát id podle db jo? :-) |
||
jenikkozak Profil |
#8 · Zasláno: 5. 3. 2014, 14:53:03
V MySQL můžeš využít typ enum, který je nositelem informace o významu hodnoty. Není to ale řešení nastíněného problému, který považuji za nestandardní.
|
||
JanMatoušek Profil |
ano enum znám a osobně bych viděl ty stavy radši v configu, ale strukturu db mám víceméně zadanou a mohu jí pouze poupravovat a on tam není pouze stav, ale i poznámky a další informace, takže by to ten config také hezky nevyřešil
|
||
Časová prodleva: 12 let
|
0