teoria, klucz obcy jako glowny oraz hibernate
RoB - 21-12-2005 12:14
teoria, klucz obcy jako glowny oraz hibernate
witam
szukalem w sieci, w ksiazkach i nie potrafie znalezc wyczerpujacych materialow:
zalozmy, ze mam 2 tabele
tabela_a (idA int PK, ...) w relacji 1 do N dla tabeli tabela_b (idB int PK, idA int FK, ...)
czy spotkaliscie sie z tym, zeby w tabeli_b kluczem glownym zrobic oba klucze, tj. primary key (idB, idA) ? jesli tak, to w jakich sytuacjach sie tak robi? jak to ma sie do modelowania obiektowego oraz do hibernate'a ? jakie sa zalety takiego rozwiazania?
moim zdaniem takie rozwiazanie jest dziwne, bo zalozmy, ze mam N tabel: tabA (1) do (N) tabB tabB (1) do (N) tabC .... to w tabB jeszcze spoko, mam primary key (idB, idA) w tabC juz jest (idC, idB, idA), gdzie idB, idC sa FK z tabeliB, itd... nie mowiac o tym, ze w N-tej tabeli mam kilka kluczy, ktore nijak sie maja do konkretnej tabeli, po prostu schodza jako PK z innych tabel... prosze o wyczerpujaca pomoc ;-)
pozdrawiam RoB
RoB - 21-12-2005 12:14
> w tabC juz jest (idC, idB, idA), gdzie idB, idC sa FK z tabeliB, itd... sorki, idB, idA sa FK z tabeliB :)
pozdrawiam RoB
Noel - 21-12-2005 12:14
Użytkownik RoB napisał: > witam > > szukalem w sieci, w ksiazkach i nie potrafie znalezc wyczerpujacych > materialow: > > zalozmy, ze mam 2 tabele > > tabela_a (idA int PK, ...) > w relacji 1 do N dla tabeli > tabela_b (idB int PK, idA int FK, ...) > > czy spotkaliscie sie z tym, zeby w tabeli_b kluczem glownym zrobic oba > klucze, tj. primary key (idB, idA) ? jesli tak, to w jakich sytuacjach sie > tak robi?
ale to jest w sprzeczności z teorią, a dokładnie z definicją PK w przypadku tabeli_b. W tabeli może występować jeden PK.
podobne rozwiązania stosować można w przypadku, gdy nie można rozszerzyć tabeli_a o dodatkowe kolumny. Tworzy się tabele_b w relacji 1:1 z tabela_a, w tym przypadku PK na tabeli_b byłby idA.
-- Tomek "Noel" B.
Andrzej Dąbrowski - 21-12-2005 12:14
> > czy spotkaliscie sie z tym, zeby w tabeli_b kluczem glownym zrobic oba > klucze, tj. primary key (idB, idA) ? jesli tak, to w jakich sytuacjach sie > tak robi? > jak to ma sie do modelowania obiektowego oraz do hibernate'a ? jakie sa > zalety takiego rozwiazania? > > moim zdaniem takie rozwiazanie jest dziwne, bo zalozmy, ze mam N tabel: > tabA (1) do (N) tabB > tabB (1) do (N) tabC
Z tego co pamiętam z teorii wolno stosować klucze wielopolowe (używałem nawet gdzieś), więc nie ma problemu aby założyć klucz na iluś tam kolumnach. Co składa się na poszczególne kolumny nie jest istotne.(czy są w nich klucze obce, czy "zwykłe" pola) Nie wiem, czy się da założyć jeden klucz jako PRIMARY, a potem drugi zawierający i pierwszy i inne pole. Andrzej Dąbrowski
RoB - 21-12-2005 12:14
> Nie wiem, czy się da założyć jeden klucz jako PRIMARY, a potem drugi > zawierający i pierwszy i inne pole. nieprecyzyjnie sie wyrazilem, chodzilo mi o to, ze tworze dodatkowo kolumne idB, ale primary key daje na (idB, idA) gdzie idA jest FK przepraszam, mea culpa :) chodzilo mi tylko o przechodzenie FK i wlaczanie go do kolum tworzacych PK w innej tabeli
pozdrawiam RoB
Marcin Mańk - 21-12-2005 12:14
> zalozmy, ze mam 2 tabele > > tabela_a (idA int PK, ...) > w relacji 1 do N dla tabeli > tabela_b (idB int PK, idA int FK, ...) > > czy spotkaliscie sie z tym, zeby w tabeli_b kluczem glownym zrobic oba > klucze, tj. primary key (idB, idA) ? jesli tak, to w jakich sytuacjach sie > tak robi?
Jak rozumiem, idB to serial, auto_increment itp.. (auto generowany) ?
wobec tego (idB, idA) nie jest kluczem w rozumieniu teorii baz danych, gdyż nie jest minimalnym zbiorem identyfikującym. Patrz: http://galaxy.uci.agh.edu.pl/~chwast...b/dbnormd.html
Pozdrawiam Marcin Mańk
RoB - 21-12-2005 12:14
> Jak rozumiem, idB to serial, auto_increment itp.. (auto generowany) ? dokladnie sekwencja w postgresie
> wobec tego (idB, idA) nie jest kluczem w rozumieniu teorii baz danych, gdyż > nie jest minimalnym zbiorem identyfikującym. Patrz: > http://galaxy.uci.agh.edu.pl/~chwast...b/dbnormd.html dzieki za pomoc
pozdrawiam RoB
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[pgsql] Zmienna jako pole NEW w trigger pl/pgSQL.
=?iso-8859-2?q?[Mysql_5=2E0]_Wywo=B3ywanie_procedury_jako_parametr_funkcji?=
=?ISO-8859-2?Q?wynik_podzapytania_jako_pojedy=F1cza_warto=B6= E6?=
=?iso-8859-2?q?Nazwa_Tabeli_jako_parametr_w_procedurze_sk=B3a dowanej?=
Kasa fiskalna OPTIMUS spark 482g - czy moze pracowac jako zwykladrukarka? (niefiskalna)
=?iso-8859-2?q?Papier_firmowy_o_nieco_lepszej_jako=B6ci_ni=BF _zwykle?=
Re: [MySQL] wyswietlenie NIPu jako ciąg cyfr bez spacji i myślników
=?iso-8859-2?q?Jak_u=BFy=E6_tablet_X41_jako_"secondary_screen "_=3F?=
katalog lost+found figuruje jako baza danych MySQL
zanotowane.pldoc.pisz.plpdf.pisz.plmisida.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|