Autor Zpráva
Tori
Profil
Mám tabulku např. druhů rostlin. Každá vlastnost rostliny (barva květu, květenství, využitelnost,...) může mít jednu z více hodnot, přičemž tyto hodnoty chci mít vícejazyčně. K vlastnostem musí jít doplňovat další možné hodnoty+jejich překlady. Jelikož se v každém sloupci vlastnosti bude řada hodnot opakovat, vytknu je do samostatných tabulek.
Otázka zní: pokud mírně denormalizuji tabulky vlastností, může to způsobit nějaké potíže při práci s DB? Napadnou vás nějaké nevýhody takového řešení?

Typický (imho) návrh:
tabulka rostlin:
- ID (PK, auto incr.), barva květu (FK), tvar listů (FK), květenství (FK), ...

tabulka možných tvarů listů:
- ID (PK, auto incr.), případně nějaké další sloupečky

tabulka překladů pro možné tvary listů:
- ID listu (FK), ID jazyka (FK) (PK přes oba sloupce), text

+ další páry tabulek pro ostatní vlastnosti

Denormalizovaný návrh má pro každou vlastnost jen jednu tabulku. Pro zajištění jedinečnosti ID vlastností přidám další tabulku jen se sloupcem ID (auto incr.) jako číselník pro všechny vlastnosti a jejich hodnoty dohromady:
tabulka rostlin:
- ID (auto incr.), barva květu (FK), tvar listů (FK), květenství (FK), ...

tabulka možných tvarů listů:
- ID (z číselníku, není FK), ID jazyka (FK) (PK přes oba sloupce), text

Třetí možnost, tedy tabulka tvarů listů: ID (PK, auto inc.), název česky, název angl., název něm., ... jsem vyloučila. Jednak se mi principiálně nelíbí, protože se nedá propojit požadovaný sloupec s řádkem z tabulky dostupných jazyk.mutací, a taky se chci vyhnout tomu, aby administrace musela mít oprávnění měnit tabulky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0