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

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 – cd.

Klucz obcy – cd.


Metodę utrzymywania spójności bazy danych ze względu na ograniczenie integralnościowe „klucz obcy” można zmienić, dodając do definicji ograniczenia słowa kluczowe:

- ON DELETE SET NULL – usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy wartości NULL,

- ON DELETE CASCADE. – usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje usunięcie wszystkich krotek, które zawierają klucz obcy wskazujący na usuwaną krotkę,

- ON DELETE SET DEFAULT – usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy ich wartości domyślnych,

- ON UPDATE SET NULL – modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy wartości NULL,

- ON UPDATE CASCADE – modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy nowej wartości klucza podstawowego/wartości unikalnej,

- ON UPDATE SET DEFAULT - modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy ich wartości domyślnych.

Dla każdego ograniczenia „klucz obcy” można zdefiniować jedno zachowanie dotyczące usuwania (ON DELETE) i jedno dotyczące modyfikacji (ON UPDATE) (w dowolnej kolejności). W SZBD Oracle zaimplementowano jak na razie jedynie ON DELETE SET NULL i ON DELETE CASCADE.

Rozważmy przykłady przedstawione na slajdzie. W przykładzie (1) zdefiniowano klucz obcy ID_SZEFA wskazujący na klucz podstawowy relacji pracownicy (ID_PRAC) i zmodyfikowano zachowanie tego ograniczenia dodając słowa kluczowe ON DELETE SET NULL. Dzięki temu możliwe będzie usunięcie z relacji PRACOWNICY szefa projektu. Jeżeli usuniemy szefa, to we wszystkich jego projektach atrybutowi ID_SZEFA zostanie przypisane NULL. W przykładzie (2) zdefiniowano klucz obcy ID_SZEFA wskazujący na klucz podstawowy relacji pracownicy (ID_PRAC) i zmodyfikowano zachowanie tego ograniczenia dodając słowa kluczowe ON DELETE CASCADE. Tutaj, usunięcie szefa spowoduje również usunięcie wszystkich jego projektów.


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