Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 10. 11. 2008, 03:39:38 · Upravil/a: joe
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 |
#2 · Zasláno: 10. 11. 2008, 07:14:09
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 |
#3 · Zasláno: 10. 11. 2008, 07:29:47
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 |
#4 · Zasláno: 10. 11. 2008, 12:15:20
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 |
#5 · Zasláno: 10. 11. 2008, 13:21:01 · Upravil/a: srigi
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 |
#6 · Zasláno: 10. 11. 2008, 13:25:56
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 |
#7 · Zasláno: 10. 11. 2008, 13:43:29
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 |
#8 · Zasláno: 10. 11. 2008, 13:47:24
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 * |
#9 · Zasláno: 10. 11. 2008, 14:10:14
srigi
Je to O.K.? Jistě. Je to jeden primární klíč na dvou sloupcích. |
||
Časová prodleva: 15 let
|
0