Autor Zpráva
MaK
Profil
Taková filozofická otázka. V aplikaci mohou uživatele komentovat buď psy nebo kočky. Psy a kočky jsou jen příklad, ale jedna se o objekty, která jsou v samostatných tabulkách (tabulka psy, tabulka kočky). Teď mám možnost:

1. vytvořit jednu tabulku komentare, která obsahuje:
typ ENUM('pes',kocka'),
id INTEGER, -- identifikator psa/kocky v zavislosti na sloupci typ

nebo:

2. vytvořit dvě tabulky komentare_psy, komentare_kocky:
id INTEGER, -- identifikator psa/kocky v zavislosti jmenu tabulky

Možná jsou na komentáře psů kladeny trochu jiné požadavky (ale ne o moc).
Nikdy nepřibude "další zvíře".
Nikdy není třeba číst komentáře psů a zaroveń koček v jednom dotaze.

Zakladní otázka. Snažit se dostat komentáře do jedné tabulky (alá švýcarský nožík), nebo dvou specializovaných (byť velmi podobných)?

MaK
Kajman
Profil
To bude podobné dilema, jak v tématu SQL antipattern?

Tedy můžete ještě navíc zvážit variantu 1b
typ ENUM('pes',kocka'),
id_psa INTEGER,
id_kocky INTEGER,
aby se daly použít cizí klíče i pro jednotabulkové řešení.
peta
Profil
id_komentar, text
id_kocky, id_komentar - propojeni
id_psi, id_komentar - propojeni

id_komentar, id_clanek, text
id_clanek, id_kategorie (pes, kocka), text
Delit to ma smysl, pokud by to prineslo vyraznejsi usporu v rychlosti, coz do 1.000.000 zaznamu ani nepostrehnes a navic to budes mit univerzalni.

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: