1
Vývoj / Cizí klíč v relační DB z více různých tabulek
« kdy: 04. 04. 2010, 13:48:55 »
Mám v relační databázi několik různých tabulek se zápisy různých typů (např. A, B, C... v jedné, a, b, c... v druhé, 1, 2, 3... v třetí tabulce). Potřeboval bych udělat seznam (tedy tabulku v DB), který by obsahoval položky z těchto různých tabulek (např. A, B, a, c, 2, 3...).
Jak tabulku pro takový seznam navrhnout?
Napadají mě prozatím dvě možnosti:
1) Tabulka by obsahovala sloupeček s cizím klíčem a sloupeček, který by určoval, do které tabulky cizí klíč odkazuje.
2) Tabulka by obsahovala tolik sloupečků s cizími klíči, z kolika tabulek chci, aby byly použity záznamy, tedy pro každou z tabulek svůj vlastní klíč.
V prvním případě není tabulka ani v druhé normální formě, takže by se asi špatně zajišťovala referenční integrita – nešly by definovat cizí klíče a jejich omezení na úrovni DB.
V druhém případě by tabulka byla zase poměrně špatně rozšiřitelná, navíc by byla řídká, ale nebyl by problém udržet referenční integritu.
K jakému řešení byste se přiklonili, případně napadá vás nějaké jiné?
Jak tabulku pro takový seznam navrhnout?
Napadají mě prozatím dvě možnosti:
1) Tabulka by obsahovala sloupeček s cizím klíčem a sloupeček, který by určoval, do které tabulky cizí klíč odkazuje.
2) Tabulka by obsahovala tolik sloupečků s cizími klíči, z kolika tabulek chci, aby byly použity záznamy, tedy pro každou z tabulek svůj vlastní klíč.
V prvním případě není tabulka ani v druhé normální formě, takže by se asi špatně zajišťovala referenční integrita – nešly by definovat cizí klíče a jejich omezení na úrovni DB.
V druhém případě by tabulka byla zase poměrně špatně rozšiřitelná, navíc by byla řídká, ale nebyl by problém udržet referenční integritu.
K jakému řešení byste se přiklonili, případně napadá vás nějaké jiné?