LukPG
12.05.2009, 13:46:58
Witam
Chciałbym wykonać bazę danych, opisującą zarządzanie urlopami pracowników. Istnieją trzy tabele:
Pracownicy - zawierająca informacje o pracownikach, np. id_pracownika, imie, nazwisko, adres, telefon, id_karty
Karty - zapisane są na niej informacje dotyczące urlopów, (każdy użytkownik posiada dokładnie jedną kartę) np. id_karty, data_wydania, data_wygasniecia, ...
Urlopy - informacje dotyczące urlopów, zapisane na karcie, id_urlopu, id_karty ,rodzaj_urlopu, data_rozpoczecia, data_zakonczenia, rodzaj
Zastanawiam się, czy takie połączenie tabel urlopy i karty jest poprawne? Czy jako klucz główny tabeli urlopy lepiej wybrać pojedynczą wartość id_urlopu, czy lepiej wybrać klucz złożony id_urlopu+id_karty. Prosiłbym o wskazówki. Za pomoc z góry dziękuję.
Pozdrawiam
patryczakowy
12.05.2009, 13:51:56
moim zdaniem powinno być tak id_urlopu- klucz główny id_karty- klucz obcy z karty
a do tabeli karty dodać klucz obcy id_pracownik żeby było wiadomo która karta do którego pracownika
LukPG
12.05.2009, 13:58:31
Dzięki za szybką odpowiedź. Napisałeś, żeby do tabeli karty dodać klucz obcy id_pracownika. W tym projekcie zrobiłem trochę inaczej: do tabeli pracownicy dodałem klucz obcy id_karty z tabeli karty. Zastanawiam się, która z tych dwóch możliwości byłaby lepsza?
patryczakowy
12.05.2009, 14:22:52
to w tym wypadku jak masz w tabeli pracownicy id_karty to w tabeli urlopy kluczem obcym powinno być id_pracownika a nie id karty
LukPG
12.05.2009, 15:10:17
Ale dlaczego w tabeli urlopy nie może być również klucza obcego id_karty? W takim wypadku, istniałyby dwa takie same klucze obce: w tabeli pracownicy oraz w tabeli urlopy. Czy obecność dwóch identycznych kluczy obcych jest błędem? Cały czas jestem w stanie wydobyć z bazy wszystkie potrzebne informacje - istnieje połączenie pomiędzy wszystkimi tabelami.
kaminskp
12.05.2009, 21:34:18
Moim zdanie w tabeli Pracownicy nie powinno być id_karty
Id... może ulec zmianie. Można stworzyć oddzielną tabelę
w której będą id, id_pracownika, id_karty.
Tak bym to zrobił.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.