🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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?
#195669
Author: Roman Tyczka
Date: Wed, 08 May 2019 10:41
25 lines
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?
#195671
Author: Szyk Cech
Date: Wed, 08 May 2019 11:15
7 lines
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?
#195670
Author: geos
Date: Wed, 08 May 2019 13:11
23 lines
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?
#195672
Author: Cezary Grądys
Date: Thu, 09 May 2019 12:05
16 lines
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?
#195673
Author: Andrzej P. Wozniak
Date: Thu, 09 May 2019 15:49
26 lines
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?
#195674
Author: Cezary Grądys
Date: Fri, 10 May 2019 17:26
19 lines
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?
#195675
Author: Andrzej P. Wozniak
Date: Sat, 11 May 2019 12:03
23 lines
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?
#195676
Author: Cezary Grądys
Date: Sun, 12 May 2019 19:20
13 lines
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?
#195677
Author: Andrzej P. Wozniak
Date: Sun, 12 May 2019 20:08
19 lines
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