Kde ukladat a spravovat `staticke` typy hodnot
- westrem
- Člen | 398
Zdravim,
uz dlhsiu dobu nosim v hlave otazku (problem) kde efektivne udrziavat urcite
(viac ci menej) staticke vycty hodnot.
Jedna sa mi napriklad o situacie ked mame:
- kategorie clankov
- typ nejakeho produktu
- tagy
- …
Vsetko zamyslane v mini aplikaciach kde su tieto moznosti obmedzovane kvoli jednoduchosti a nefunguje tam nic ako sprava kategorii clankov/typov produktu atd. Proste sa jedna o vycet (enum) urciteho typu, ktory sa zmeni (rozsiri) mozno raz za rok.
Co mi robi najvecsi myslienkovy problem je, ci taketo udaje ukladat v DB v separatnej tabulke (Cathegories, Product_types ..) alebo si ich drzat len interne v aplikacii v PHP v zdrojovych kodoch ako uz preddefinovane.
1. sposob
- Vyhoda je v tom, ze semanticky je vsetko pokope, tzn. ak mam tabulku napr Articles a v nej stlpec cathegory_id tak vedla je tabulka Cathegories a viem si spravit napr. view a mat pekne vsetko prehladne, tak isto pri exporte dat sa exportuju aj kategorie. Je to ucelene.
- Nevyhoda vsak je, ze zakazdym musim tahat informacie o dostupnych typoch z DB co vzdy stoji cas, pamet a najme treba k tomu napisat potom nejaky obsluzny kod.
2. sposob
- Vyhoda je, ze mam dane data vzdy instantne k dispozicii v kode, lahsie sa da s nimi narabat, setria sa prostriedky.
- Nevyhoda je pre mna zase opak toho, ze data nie su ucelene v jednom ulozisti a napr to cathegory_id zavysi od toho co je v kode a ked exportujem DB neviem co jednotlive hodnoty znamenaju, nemam si to v pripade potreby kde pozriet.
Ako tento problem riesite vy?
Vdaka za akekolvek rady alebo napady :)
- Panda
- Člen | 569
Určitě databáze, nutnost neustálého tahání obejdeš pomocí cache a obslužného kódu zas tolik nebude. Krom toho časem může třeba vzniknout potřeba, aby si seznam výrobců spravoval klient sám. A dělat administrační rozhraní k datům v databázi je jednodušší, než k datům v PHP souborech.
Druhý způsob bych používal jen u interních dat aplikace, která se opravdu nemění, napříkad stavy objednávky (přijato, zrušeno, expedováno…).
PS: kategorie se anglicky řekne category, ne „cathegory“.