Kde ukladat a spravovat `staticke` typy hodnot

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
westrem
Člen | 398
+
0
-

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
+
0
-

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“.