Thread View: pl.comp.bazy-danych
9 messages
9 total messages
Started by Roman Tyczka
Wed, 08 May 2019 10:41
Podwójna relacja - jak?
Author: Roman Tyczka
Date: Wed, 08 May 2019 10:41
Date: Wed, 08 May 2019 10:41
25 lines
1761 bytes
1761 bytes
Wyobraźmy sobie, że mam zaprojektować strukturę bazy w której będzie tabela przyborów biurowych (PRZYBORY), tabela pracowników (PRACOWNICY) oraz działów, w których pracują pracownicy (DZIALY). Przybory mogą należeć do pracownika konkretnego lub do całego działu. Jak to najzgrabniej zaprojektować? Mam dwa pomysły: 1. tabela wiążąca PRZYBORY_OWNER, która ma klucz obcy OWNERID (będący kluczem do tabeli PRACOWNICY lub DZIALY) oraz kolumnę dodatkową OWNERKIND, wskazującą której tabeli dotyczy konkretna wartość w OWNERID. Stąd powstają wiązania po kluczach: OWNERID -> PRACOWNIKID lub OWNERID -> DZIALID 2. tworzę dwie tabele wiążące, osobno dla pracowników i działów, odpowiednio: PRACOWNICY_PRZYBORY i DZIALY_PRZYBORY, obie z kluczami do odpowiadających im kolumn w tabelach powiązanych. Czy można to zrobić jeszcze inaczej? I które rozwiązanie jest powszechniejsze? -- pozdrawiam Roman Tyczka
Re: Podwójna relacja - jak?
Author: Szyk Cech
Date: Wed, 08 May 2019 11:15
Date: Wed, 08 May 2019 11:15
7 lines
1491 bytes
1491 bytes
> 2. tworzę dwie tabele wiążące, osobno dla pracowników i działów, > odpowiednio: PRACOWNICY_PRZYBORY i DZIALY_PRZYBORY, obie z kluczami do > odpowiadających im kolumn w tabelach powiązanych. Ta wersja jest poprawna z tego powodu, że możesz założyć klucze obce (chodzi o FOREIGN KEY) między tabelami i wymuszać ich prawidłowe wartości (więzy integralności) na poziomie motoru bazy danych (Sql-a).
Re: Podwójna relacja - jak?
Author: geos
Date: Wed, 08 May 2019 13:11
Date: Wed, 08 May 2019 13:11
23 lines
2052 bytes
2052 bytes
On 08.05.2019 12:41, Roman Tyczka wrote: > > Wyobraźmy sobie, że mam zaprojektować strukturę bazy w której będzie tabela > przyborów biurowych (PRZYBORY), tabela pracowników (PRACOWNICY) oraz > działów, w których pracują pracownicy (DZIALY). > Przybory mogą należeć do pracownika konkretnego lub do całego działu. > Jak to najzgrabniej zaprojektować? Mam dwa pomysły: zrobiłbym tabelę "pracowników" i "działów", i do tego odpowiedni widok "właścicieli" jako union all powyższych (w wymaganym zakresie kolumn). z widoku połączenie do tabeli przejściowej "narzędzia_właściciele". minusem, ale stosunkowo niewielkim, jest to, że klucze w obu tabelach (działy, pracownicy) musiałyby być generowane np. z jednej sekwencji (lub w inny sposób trzeba byłoby dbać o ich unikalność w ramach widoku). teoretycznie nie ma przeszkód, aby wartość klucza jakiegoś działu = 1 i 1 byłaby wartością klucza dla jakiegoś pracownika, ale widok komplikuje tę teoretyczną możliwość. z drugiej strony generowanie jakichkolwiek kluczy z jednej sekwencji nie jest rzadkim rozwiązaniem. jest może po prostu trochę mało "oczywiste". pozdrawiam geos
Re: Podwójna relacja - jak?
Author: Cezary Grądys
Date: Thu, 09 May 2019 12:05
Date: Thu, 09 May 2019 12:05
16 lines
1762 bytes
1762 bytes
W dniu 08.05.2019 o 12:41, Roman Tyczka pisze: > Wyobraźmy sobie, że mam zaprojektować strukturę bazy w której będzie tabela > przyborów biurowych (PRZYBORY), tabela pracowników (PRACOWNICY) oraz > działów, w których pracują pracownicy (DZIALY). > Przybory mogą należeć do pracownika konkretnego lub do całego działu. Jeśli do działu, to musi być powiązanie z tym działem, bo może to być bez indywidualnego właściciela. Przykład drukarka, może nikt nie mieć na stanie. Natomiast wszelkie ołówki, długopisy powiązane z pracownikiem i pośrednio przez pracownika z działem. Biurokracja górą!!!! -- Cezary Grądys czarekgr@wa.onet.pl
Re: Podwójna relacja - jak?
Author: Andrzej P. Wozniak
Date: Thu, 09 May 2019 15:49
Date: Thu, 09 May 2019 15:49
26 lines
2268 bytes
2268 bytes
Osoba podpisana jako Roman Tyczka <noemail@because.no> w artykule <news:uyjp7tf73q3d.dlg@tyczka.com> pisze: > Wyobraźmy sobie, że mam zaprojektować strukturę bazy w której będzie > tabela przyborów biurowych (PRZYBORY), tabela pracowników (PRACOWNICY) > oraz działów, w których pracują pracownicy (DZIALY). > Przybory mogą należeć do pracownika konkretnego lub do całego działu. Organizacja baz może zależeć od tego, co jest ważniejsze bądź częściej wykonywane: 1. Przypisanie do działu ułatwia inwentaryzację. 2. Przypisanie do pracownika ułatwia jego rozliczenie. > Czy można to zrobić jeszcze inaczej? Jest co najmniej jedna inna możliwość: Kiedy pracowników w dziale jest dużo, dobrym pomysłem dla przyborów (a raczej urządzeń) przypisanych do działu może być przypisanie pracownika odpowiedzialnego. W tym przypadku wypadałoby zrobić tabelę, gdzie jest i pracownik_id, i dzial_id, i dodatkowo status przypisania. Taka tabela załatwia też przypadki, kiedy pracownik może być przypisany do kilku działów lub kiedy odpowiedzialny jest pracownik z innego działu. -- Andrzej P. Woźniak uszer@pochta.onet.pl (zamień miejscami z<->h w adresie)
Re: Podwójna relacja - jak?
Author: Cezary Grądys
Date: Fri, 10 May 2019 17:26
Date: Fri, 10 May 2019 17:26
19 lines
2113 bytes
2113 bytes
W dniu 09.05.2019 o 17:49, Andrzej P. Wozniak pisze: > Jest co najmniej jedna inna możliwość: > Kiedy pracowników w dziale jest dużo, dobrym pomysłem dla przyborów (a > raczej urządzeń) przypisanych do działu może być przypisanie pracownika > odpowiedzialnego. W tym przypadku wypadałoby zrobić tabelę, gdzie jest i > pracownik_id, i dzial_id, i dodatkowo status przypisania. Taka tabela > załatwia też przypadki, kiedy > pracownik może być przypisany do kilku działów lub kiedy odpowiedzialny > jest pracownik z innego działu. To jest dobry pomysł, bo tym samym zapytaniem można przynależność ołówka co drukarki ustalić. Ale ja bym zrobił pracownika wirtualnego - takiego ducha działu, raz na zawsze przypisanego do działu i mającego te przedmioty. -- Cezary Grądys czarekgr@wa.onet.pl
Re: Podwójna relacja - jak?
Author: Andrzej P. Wozniak
Date: Sat, 11 May 2019 12:03
Date: Sat, 11 May 2019 12:03
23 lines
2402 bytes
2402 bytes
Osoba podpisana jako Cezary Grądys <czarekgr@wa.onet.pl> w artykule <news:5cd5b453$0$17342$65785112@news.neostrada.pl> pisze: > W dniu 09.05.2019 o 17:49, Andrzej P. Wozniak pisze: >> Jest co najmniej jedna inna możliwość: >> Kiedy pracowników w dziale jest dużo, dobrym pomysłem dla przyborów (a >> raczej urządzeń) przypisanych do działu może być przypisanie pracownika >> odpowiedzialnego. W tym przypadku wypadałoby zrobić tabelę, gdzie jest i >> pracownik_id, i dzial_id, i dodatkowo status przypisania. Taka tabela >> załatwia też przypadki, kiedy pracownik może być przypisany do kilku >> działów lub kiedy odpowiedzialny jest pracownik z innego działu. > > To jest dobry pomysł, bo tym samym zapytaniem można przynależność ołówka > co drukarki ustalić. Ale ja bym zrobił pracownika wirtualnego - takiego > ducha działu, raz na zawsze przypisanego do działu i mającego te > przedmioty. Lepiej funkcjonalny, według realnego stanowiska, domyślnie kierownik działu. W takim rozwiązaniu prac_id w zależności od statusu oznaczać może nazwisko pracownika, stanowisko w firmie, a nawet wskazanie na zewnętrzny serwis. -- Andrzej P. Woźniak uszer@pochta.onet.pl (zamień miejscami z<->h w adresie)
Re: Podwójna relacja - jak?
Author: Cezary Grądys
Date: Sun, 12 May 2019 19:20
Date: Sun, 12 May 2019 19:20
13 lines
1879 bytes
1879 bytes
W dniu 11.05.2019 o 14:03, Andrzej P. Wozniak pisze: > Lepiej funkcjonalny, według realnego stanowiska, domyślnie kierownik > działu. W takim rozwiązaniu prac_id w zależności od statusu oznaczać > może nazwisko pracownika, stanowisko w firmie, a nawet wskazanie na > zewnętrzny serwis. A skąd pewność, że kierownik działu nie będzie kilkoma działami kierował? Albo problem jak zostanie przeniesiony, zwolni się, awansuje, zostanie zdegradowany itp. -- Cezary Grądys czarekgr@wa.onet.pl
Re: Podwójna relacja - jak?
Author: Andrzej P. Wozniak
Date: Sun, 12 May 2019 20:08
Date: Sun, 12 May 2019 20:08
19 lines
2374 bytes
2374 bytes
Osoba podpisana jako Cezary Grądys <czarekgr@wa.onet.pl> w artykule <news:5cd871fa$0$17358$65785112@news.neostrada.pl> pisze: > W dniu 11.05.2019 o 14:03, Andrzej P. Wozniak pisze: >> Lepiej funkcjonalny, według realnego stanowiska, domyślnie kierownik >> działu. W takim rozwiązaniu prac_id w zależności od statusu oznaczać może >> nazwisko pracownika, stanowisko w firmie, a nawet wskazanie na zewnętrzny >> serwis. > > A skąd pewność, że kierownik działu nie będzie kilkoma działami kierował? > Albo problem jak zostanie przeniesiony, zwolni się, > awansuje, zostanie zdegradowany itp. Napisałem wyraźnie - albo nazwisko, albo stanowisko. Awansuje nazwisko, nie stanowisko. Jesteś zbyt leniwy, aby przeczytać dwa krótkie zdania i powiązać jedno z drugim? -- Andrzej P. Woźniak uszer@pochta.onet.pl (zamień miejscami z<->h w adresie)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads