ďťż
 
Jak zaprojektowac taka relacje? ďťż
 
Jak zaprojektowac taka relacje?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Jak zaprojektowac taka relacje?



pachura - 19-07-2006 00:44
Jak zaprojektowac taka relacje?
  Czesc

Natknalem sie na problem w zaprojektowaniu relacji gdy rekord z tabeli "detail"
wskazuje na krotke z tabeli "master_1" lub "master_2" (tylko z jednej z tych
tabel, nigdy z dwoch na raz). Chyba przyklad bedzie bardziej zrozumialy:

Od razu zaznaczam, ze przyklad moze nie miec duzo wspolnego z rzeczywistoscia.
Są uczelnie (to jest powiedzmy poziom 1). Uczelnia ma katedry i grupy badawcze
(zupełnie rozdzielne byty) - to są dwie tabele na poziomie 2. Kazda katedra i
kazda grupa badawcza ma pracowników (jedna tabela z pracownikami na poziomie 3).
Tutaj widać problem - każdy pracownik moze nalezec albo do katedry albo do
grupy badawczej, ale nigdy do obu na raz.

Robienie w tabeli pracownikow dwoch FK (z jakims check'iem sprawdzajacym, czy
na pewno jest tylko jeden wybrany) wydaje mi sie "badziewne" - jak mozna to
zaprojektowac bardziej elegancko?

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 19-07-2006 00:44

  Dnia 17 Jul 2006 22:52:31 +0200, "pachura" <pachuraWYTNIJTO@poczta.onet.pl>
wklepał(-a):

>Od razu zaznaczam, ze przyklad moze nie miec duzo wspolnego z rzeczywistoscia.
>Są uczelnie (to jest powiedzmy poziom 1). Uczelnia ma katedry i grupy badawcze
>(zupełnie rozdzielne byty) - to są dwie tabele na poziomie 2. Kazda katedra i
>kazda grupa badawcza ma pracowników (jedna tabela z pracownikami na poziomie 3).
>Tutaj widać problem - każdy pracownik moze nalezec albo do katedry albo do
>grupy badawczej, ale nigdy do obu na raz.

A czym się różni katedra od grupy w sensie zbioru atrybutów?
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych




pachura - 19-07-2006 00:44

 
> A czym się różni katedra od grupy w sensie zbioru atrybutów?

Powiedzmy, ze te dwie tabele maja jakies 20% wspolnych pol. Dodatkowo katedra
ma tabele podrzedne, ktorych nie ma grupa badawcza (np. zajecia dla studentow
prowadzone przez ta katedre)

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 19-07-2006 00:44

  Dnia 17 Jul 2006 23:32:06 +0200, "pachura" <pachuraWYTNIJTO@poczta.onet.pl>
wklepał(-a):

>Powiedzmy, ze te dwie tabele maja jakies 20% wspolnych pol. Dodatkowo katedra
>ma tabele podrzedne, ktorych nie ma grupa badawcza (np. zajecia dla studentow
>prowadzone przez ta katedre)

No to skoro relacje do masterów są w łuku, to nie pozostaje nic innego jak
zrobić te 2 klucze. A sprawdzenie zrobić w aplikacji np. radiogroup z 2
buttonami "katedra" i "grupa badawcza"; dodatkowo może być prosty trigger before
insert:

if (:new.klucz_katedra is null and :new.klucz_grupa is null)
or (:new.klucz_katedra is not null and :new.klucz_grupa is not null)
then
raise error;
end if;
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych





pachura - 19-07-2006 00:44

 
> No to skoro relacje do masterów są w łuku, to nie pozostaje nic innego jak
> zrobić te 2 klucze. A sprawdzenie zrobić w aplikacji np. radiogroup z 2
> buttonami "katedra" i "grupa badawcza";

Co to znaczy "są w łuku" ???

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 19-07-2006 00:44

  Dnia 17 Jul 2006 23:59:25 +0200, "pachura" <pachuraWYTNIJTO@poczta.onet.pl>
wklepał(-a):

>Co to znaczy "są w łuku" ???

No właśnie to co napisałeś na początku - pracownik może być albo w katedrze albo
w grupie:
http://pszwed.ia.agh.edu.pl/labsp98/....html#Wzajemne
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych




pachura - 19-07-2006 00:44

  > >Co to znaczy "są w łuku" ???
>
> No właśnie to co napisałeś na początku - pracownik może być albo w katedrze
albo
> w grupie:
> http://pszwed.ia.agh.edu.pl/labsp98/....html#Wzajemne

Wlasnie o taka relacje jak jest pokazana na tej stronie chodzi, tylko szkoda,
ze nie pisza jak przelozyc taką relacje na schemat bazy - zwyczajne
zastosowanie dwoch FK nie jest jedynym sposobem.
Zastanawiam sie czy nie lepiej zrobic tak: pracownik mialby jednego FK na
tabele powiedzmy "byty grupujace pracownikow". Rowniez na tą tabelę
wskazywałyby poprzez FK zarówno katedry jak i grupy badawcze (a moze w
przyszłości i inne tabele) - na obu tych tabelach mozna zalozyc unique na FK
zeby zapewnic powiazanie jeden do jeden.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




Piotr =?ISO-8859-2?Q?Kuli=F1ski?= - 19-07-2006 00:44

  pachura wrote:

>> >Co to znaczy "są w łuku" ???
>>
>> No właśnie to co napisałeś na początku - pracownik może być albo w
>> katedrze
> albo
>> w grupie:
>> http://pszwed.ia.agh.edu.pl/labsp98/....html#Wzajemne
>
> Wlasnie o taka relacje jak jest pokazana na tej stronie chodzi, tylko
> szkoda, ze nie pisza jak przelozyc taką relacje na schemat bazy -
> zwyczajne zastosowanie dwoch FK nie jest jedynym sposobem.
> Zastanawiam sie czy nie lepiej zrobic tak: pracownik mialby jednego FK na
> tabele powiedzmy "byty grupujace pracownikow". Rowniez na tą tabelę
> wskazywałyby poprzez FK zarówno katedry jak i grupy badawcze (a moze w
> przyszłości i inne tabele) - na obu tych tabelach mozna zalozyc unique na
> FK zeby zapewnic powiazanie jeden do jeden.
>
a nie możesz po prostu założyć - tutaj w uproszczeniu, tabele nazwij jak
chcesz -
users,group,grpusr,katedra, itd

tworzysz użytkowników, następnie grupy użytkowników, a w tabeli grpusr
wiążesz użytkowników z grupami, i oczywiście możesz w tej tabeli dać
wskazanie do działu,wydziału,katedry czy czegokolwiek. Od interface
zewnętrznego należy pilnowanie dodawania użytkowników do grupy, np. jesli
już jakiś user znajduje się w grpusr to go nie dodajesz, ew. możesz zrobić
w tej tabeli pole przechowujące id użytkownika unikalnym.
--
pozdrawiam, GG i SkyPe w X-nagłówku posta, e-mail: zmień "wpw" na "wp"
piotr "Nic się nie martw, zawsze może być gorzej"
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MySQL] Jak =?ISO-8859-2?Q?zaprojektowa=E6_tabele=3F_Wyniki_?==?ISO-8859-2?Q?pojedynk=F3w=2C_meczy_-_tenis?= =?iso-8859-2?q?Relacje_uwzgl=EAdniaj=B1ce_czas_(jak=3F)?= =?iso-8859-2?q?Zachowanie_integralno=B6ci_relacji_=22wiele_do _wiele=22?= =?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?= Lista =?ISO-8859-2?Q?uporz=B1dkowana?= w relacji 2 tabele w relacji 1 do wielu - tylko jeden wiersz [MySQL 4.1] relacja 1:n jako tekst oddzielony przecinkami Czy stosuje sie relacje bez wymuszania wiezow integralnosci? [TEORIA BD] Wyznaczanie kluczy relacji . Inkrementacja rekordów
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shanti.opx.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com