Autor Zpráva
joe
Profil
Ahoj,

mám spíš takovou teoretickou otázku, snad mi s ní někdo pomůže.

Jsou dvě tabulky A, B. V každé tabulce je sloupec id (primární klíč, autoincrement). A teď je potřebuju "spojit" pomocí nějakého sloupce. Takže třeba v tabulce B vytvořím další sloupce - id_A, kde budou logicky id z tabulky A.

A teď otázka :) Za jakých okolností je lepší použít právě tento způsob nebo vytvořit třetí tabulku s názvem třeba "Spojeni", která bude obsahovat jen sloupce dva - id_A a id_B. A přes ně to spojím, napadá mě snad jen v případě, že v nějaké tabulce mám hodně sloupců, ale i tak si nejsem jistý, jestli to má nějaký smysl... Ale asi jo, tak kdyby mi to někdo trošku vysvětlil...

Já bych totiž použil snad pokaždý tu první variantu.

Díky
Mastodont
Profil
Záleží na tom, v jakém vztahu (relaci) ty dvě tabulky jsou. Jestliže to je relace 1:N tabulek A a B, tak do tabulky B se přidá sloupec obsahující hodnoty id z A. Pokud je to relace M:N, tak se vytváří ta třetí tabulka s klíči z obou tabulek.
ninja
Profil
joe: Napriklad si vem ze v tabulce A je seznam aut ve firme, v tabulce B seznam zamestnanu. A ty chces ukladat informace, kdo kdy s jakym autem jezdi. Jeden clovek muze jezdit s vicero auty, stejne tak obracene. To popises prave tou vazebni tabulkou.
joe
Profil
Mastodont
ninja
Už vidim, díky. Myslel jsem si, že tvořim relaci 1:N a právě jsem nechápal k čemu by tam byla ta třetí tabulka (Měl jsem z té druhé strany raleci N:1, takže tam musela být, nedošlo mi to).
srigi
Profil
Tak ma zaujima, preco sa v tej vazobnej tabulke definuju oba stlpce ako PRIMARY KEY. Som mal za to, ze primarny kluc moze byt v tabulke iba jeden.

Vid tento priklad alebo aj tento.
nightfish
Profil
srigi
ve skutečnosti jsou ve vazební tabulce odkazy na primární klíče v těch ostatních tabulkách, tedy jedná se o cizí klíče (což je v tom obrázku napsáno uprostřed nahoře - ten obláček "primární klíč" tamtéž vyjadřuje pravděpodobně to, že jako primární klíč ve vazební tabulce je složený právě z těch dvou cizích klíčů)
srigi
Profil
nightfish
nj, lenze v tom ZendFW tutoriali na schema vazobnej tabulky:
CREATE TABLE bugs_products (
  bug_id            INTEGER NOT NULL REFERENCES bugs,
  product_id        INTEGER NOT NULL REFERENCES products,
  PRIMARY KEY       (bug_id, product_id)
);

Je to O.K.?
AlešD
Profil
Joe
Obě dvě pole ve vazební tabulce jsou skutečně cizí klíče pro typ vazby M:N, nicméně nic nebrání přidat třetí pole s autoinkrementem jako primární klíč vazební tabulky. A dokonce nic nebrání dodat i další pole, které nějak blíže popisují popisují vazební vztah tabulek A a B.

nightfish
obláček "primární klíč" tamtéž vyjadřuje pravděpodobně to, že jako primární klíč ve vazební tabulce je složený právě z těch dvou cizích klíčů
nejsem si jistý zda jen tento předpoklad správný, tj je-li kombinace MxN za všech okolností unikátní.
Kajman_
Profil *
srigi
Je to O.K.?

Jistě. Je to jeden primární klíč na dvou sloupcích.

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