BD-1st-2.4-lab7.tresc-1.1-Slajd22

Z Studia Informatyczne
Wersja z dnia 09:12, 9 sie 2006 autorstwa PKrzyzagorski (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Klucz obcy

Klucz obcy


Dotychczas omówione ograniczenia integralnościowe dotyczyły tylko jednej relacji. Istnieje również ograniczenie integralnościowe pozwalające na definiowanie związków pomiędzy relacjami. Ograniczenie to nazywane jest „kluczem obcym”. Przypomnijmy sobie relacje ZESPOLY i PRACOWNICY. Obie relacje posiadają atrybut ID_ZESP. Atrybut ten, w relacji ZESPOLY, pozwala na jednoznaczną identyfikację zespołu. Jak się zapewne już Państwo domyślacie, jest to atrybut, który jest kluczem podstawowym tej relacji. W relacji PRACOWNICY, atrybut ID_ZESP określa jedynie numer zespołu, w którym zatrudniony jest pracownik. Zwróćcie Państwo uwagę na fakt, iż atrybut ten powinien przyjmować jedynie wartości, które występują w atrybucie ID_ZESP relacji ZESPOLY. Ponieważ atrybut ID_ZESP relacji PRACOWNICY powinien przyjmować jedynie wartości klucza podstawowego z innej relacji, nazywa się go kluczem obcym. W ogólności, możliwe jest powiązanie klucza obcego nie tylko z kluczem podstawowym innej relacji, ale także z atrybutami wchodzącymi w skład ograniczenia „wartość unikalna”. Zdefiniowanie ograniczenia integralnościowego „klucz obcy” dla jakiegoś zestawu atrybutów wiąże się wskazaniem klucza podstawowego/wartości unikalnych innej relacji, z którymi dany klucz obcy jest powiązany. Ograniczenie pilnuje, aby nigdy w atrybucie/atrybutach wchodzących w skład klucza obcego nie pojawiła się kombinacja wartości nie występująca w relacji z kluczem głównym/wartościami unikalnymi. Jedynym wyjątkiem jest sytuacja, kiedy dla jednego lub więcej atrybutów wchodzących w skład klucza obcego poda się wartości NULL. Taka kombinacja wartości nie musi występować w relacji z kluczem głównym/wartościami unikalnymi. W przykładowych relacjach PRACOWNICY i ZESPOLY, nie będzie możliwe wstawienie pracownika przydzielonego do zespołu, który nie istnieje (nie został wstawiony wcześniej do relacji ZESPOLY).

Ograniczenie atrybutu „klucz obcy” definiuje się podając za definicją atrybutu, którego dotyczy ograniczenie, słowo kluczowe REFERENCES, a następnie nazwę relacji z kluczem podstawowym/wartością unikalną i w nawiasie listę atrybutów tej relacji, która wchodzi w skład klucza podstawowego/wartości unikalnej. Ograniczenie relacji „klucz obcy” definiuje się podając słowa kluczowe FOREIGN KEY, następnie, w nawiasie, listę atrybutów wchodzących w skład klucza obcego, słowo kluczowe REFERENCES oraz nazwę relacji z kluczem podstawowym/wartościami unikalnymi i w nawiasie listę atrybutów tej relacji, która wchodzi w skład klucza podstawowego/wartości unikalnych. Ponieważ wartości atrybutów klucza obcego są porównywane z wartościami atrybutów klucza podstawowego/wartości unikalnej w takiej kolejności, jak podano je w definicji klucza obcego, należy zwrócić szczególną uwagę na odpowiednią kolejność.

Przykład (1) przedstawiony na slajdzie definiuje ograniczenie atrybutu „klucz obcy” dla atrybutu ID_SZEFA wskazując na odpowiadający mu klucz podstawowy ID_PRAC w relacji PRACOWNICY. Przykład (2) definiuje taki sam klucz obcy, ale robi to definiując go jako ograniczenie relacji. W przykładzie tym na klucz obcy składa się tylko jeden atrybut, ale w ogólności można by podać większą ich liczbę.

Ograniczenia „klucz obcy” definiowane tak, jak przedstawiono na slajdzie, spowodują, że:

- nie będzie możliwe wstawienie projektu z szefem, który nie został wcześniej wprowadzony do relacji PRACOWNICY,

- nie będzie możliwe usunięcie pracownika, który jest szefem jakiegoś projektu,

- nie będzie możliwa zmiana identyfikatora pracownika, który jest szefem jakiegoś projektu.

Zachowanie to można jednak zmienić. Odpowiednia składnia polecenia CREATE TABLE została opisana na kolejnym slajdzie.



<< Poprzedni slajd | Spis treści | Następny slajd >>