SQL developer relacja i klucz obcy

0

Witam, mam bazę z tabelami lekarz, pielegniarka oraz pracownik. Chcę aby id_pracownik było kluczem obcym z id_pielegniarka oraz id_lekarz, bo później tworzę personel zabiegu gdzie mam pole id_pracownik.

Tutaj pojawia się drugie pytanie. Czy coś takiego jest ok?
id_personel id_prac rola
5 101 operator
5 106 asysta
2 101 instrumentariusz
2 103 operator

Czy może lepiej jest stworzyć tabelę pracownik a w niej kolumnę id_pracownik, a wartości id_lekarz i id_pieleganiarka dać jako klucz obcy id_pracownik?

0

Jeden pracownik może być zatrudniony na wielu stanowiskach ( pewnie też owe stanowisko może być zajmowane przez kilku ludzi ) Zatem
Pracownicy ---<Pracownicy_Stanowiska>--Stanowiska

1.Nazwy tabel w liczbie mnogiej.
2.Rysuj schematy relacyjne, nie rób z głowy
3.Poczytaj o hierarchii encji.

0

Dobra, ale ja chcę jakby dwa oddzielne klucze (id_lekarz, id_pieleganiarka) złączyć w jeden w postaci klucza obcego id_pracownik.
Oto schemat: user image

0

No to robisz primary key clustered(value1, value 2).

Edit:

W efekcie dwa klucze obce złożyć w klucz główny, złożony.

0

No ale tutaj value1 i value2 muszą być podane, a ja chcę poprzez id_prac odnosić się do id_lekarza lub do id_pielęgniarki, nie do obydwu naraz, a i tak w przypadku clustered tworzony jest chyba całkiem nowy klucz, przez który nie dostanę się do innych kluczy

0

Nie wiesz czego chcesz bo:

"Dobra, ale ja chcę jakby dwa oddzielne klucze (id_lekarz, id_pieleganiarka) złączyć w jeden w postaci klucza obcego id_pracownik"

Więc Ci napisałem jak to zrobić. A jak nie ma być to główny to postępujesz podobnie do FK.

" a ja chcę poprzez id_prac odnosić się do id_lekarza lub do id_pielęgniarki, nie do obydwu naraz"

Pracownik jest uogólnieniem lekarza czy innego specjalisty. U Ciebie takiej tabeli nie widzę, więc przestań mieszać pojęcia i ustal jednoznaczną konwencje nazewniczą.

Zresztą z tyłka jest tabela Pielęgniarka i lekarz, ale to Twoja baza. Z niej wynika ( ze środkowej tabeli ), że na pracownika składa się i lekarz i pielęgniarka? ( wtf ).

Sory, ale albo zmień jakoś tą tabele ( FK z pielęgniarki oraz FK z lekarza ) albo nie wiem.

0

Czyli lepiej zrobić po prostu tabelę pracownicy i tam dać wszystkie pola z lekarza, tyle że dla pielęgniarki konsultacje i specjalizacja będzie puste?

1

Twój problem widnieje pod hasłem: hierarchia encji. Możesz to też rozwiązać jak piszesz, zgeneralizować atrybuty obu encji, a tam gdzie dany atrybut nie będzie wymagany dla kogoś , to po prostu NULL.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.