Autor Zpráva
H13
Profil
Ahoj,

jaký by jste zvolili systém ukládání dat, pokud může být položka vedená ve více kategoriích

a) existují dvě tabulky - polozka, kategorie
TABULKA POLOZKA
ID (INT), JMENO (TEXT)
TABULKA KATEGORIE
ID (INT), CATID (TEXT), JMENO (TEXT)

seznam kategorií se bude ukládat do pole CATID oddělené čárkou, tedy např.
KATEGORIE: ID = 1, JMENO = Prvni Kategorie
KATEGORIE: ID = 2, JMENO = Druha Kategorie
KATEGORIE: ID = 3, JMENO = Treti Kategorie

POLOZKA: ID = 1, CATID = 2,3, JMENO = Prvni Polozka
POLOZKA: ID = 2, CATID = 3, JMENO = Druha Polozka

S tím, že např. pro výpis položek v kategorii použiju:
SELECT p.*, k.text as kategorie_jmeno , k.id as kategorie_id
FROM `kategorie` AS k
LEFT JOIN `polozka` AS p ON p.catid IN (k.id)
WHERE k.id = 2


b) existují tři tabulky - polozka, kategorie, polozka_vs_kategorie
TABULKA POLOZKA
ID (INT), JMENO (TEXT)
TABULKA KATEGORIE
ID (INT), JMENO (TEXT)
TABULKA POLOZKA_VS_KATEGORIE
ID_POLOZKA, ID_KATEGORIE

s tím že se vztahy mez kategorií a položkou ukládají do poslední tabulky:

ID_POLOZKA = 1, ID_KATEGORIE = 2
ID_POLOZKA = 1, ID_KATEGORIE = 3



Jde mi o to jaký typ uložení se bude lépe spravovat, který typ má omezení v něčem, atd. (při testování jednoduchých SELECT, INSERT nebo UPDATE jsem na žádný omezení u obou nenarazil)

Děkuji
Kajman_
Profil *
b
__construct
Profil
Jednoznačne b s tým, že v tabuľke polozka_vs_kategorie by som ukladal ID_POLOZKA a ID_KATEGORIE ako dvojicu primárnych kľúčov
Mastodont
Profil
Ne, jako jeden primární klíč složený ze svou polí.
H13
Profil
Díky, pokud to dobře chápu:

PRIMARY_KEY('id_polozka', 'id_kategorie') - je "jeden primární klíč složený ze dvou polí"
Mastodont
Profil
Ano

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