Projektowanie relacyjnej bazy danych - Kaskadowe usuwanie i aktualizowanie danych
Efekty modyfikacji klucza podstawowego w powi膮zanych tabelach s膮 odzwierciedlane przez zdefiniowanie kaskadowego usuwania i aktualizowania danych.
Aktualizowanie klucza podstawowego wymaga aktualizacji warto艣ci w powi膮zanym
z nim kluczu obcym. W relacyjnej bazie danych klucze podstawowe nie powinny by膰 w og贸le modyfikowane, wi臋c kaskadowe aktualizowanie definiujemy tylko
w wyj膮tkowych przypadkach.
Usuni臋cie wiersza w tabeli nadrz臋dnej lub warto艣ci klucza podstawowego wymaga usuni臋cia lub zaktualizowania warto艣ci w powi膮zanym z nim kluczu obcym. Kaskadowe usuwanie mo偶e doprowadzi膰 do usuni臋cia wielu wierszy z r贸偶nych tabel, a w konsekwencji do usuni臋cia istotnych danych, zatem nale偶y je definiowa膰 wy艂膮cznie dla tabel pomocniczych opisuj膮cych zwi膮zki „wiele do wielu”. Aktualizowanie warto艣ci klucza obcego jest bezpieczniejsze. Je偶eli kolumna klucza obcego zezwala na wpisywanie warto艣ci NULL, nale偶y warto艣ci usuni臋tego klucza podstawowego zast膮pi膰 t膮 warto艣ci膮. Je偶eli jest to niemo偶liwe, trzeba zast膮pi膰 warto艣ci NULL specjalnie zdefiniowan膮 warto艣ci膮 domy艣ln膮.
Kaskadowe usuwanie i aktualizowanie danych definiuje si臋 w klauzulach ON UPDATE
i ON DELETE z warto艣ciami:
NO ACTION - dane w powi膮zanych tabelach nie b臋d膮 automatycznie modyfikowane. Jest to domy艣lna warto艣膰.
CASCADE - modyfikacja ma zosta膰 automatycznie powt贸rzona we wszystkich powi膮zanych tabelach.
SET NULL - zmodyfikowane warto艣ci klucza podstawowego maj膮 zosta膰 zast膮pione warto艣ci膮 NULL w powi膮zanych kolumnach klucza obcego.
SET DEFAULT - zmodyfikowane warto艣ci klucza podstawowego maj膮 zosta膰 zast膮pione w powi膮zanych kolumnach klucza obcego warto艣ci膮 domy艣ln膮.
Zaprojektuj dwie tabele zgodnie z parametrami podanymi poni偶ej:
Tabela o nazwie Lekarz
Nazwa pola (atrybut) |
Typ danych |
W艂a艣ciwo艣ci |
Numer |
Ca艂kowity |
Warto艣膰 wymagana |
Imie |
Tekst (20) znak贸w |
Warto艣膰 wymagana |
Nazwisko |
Tekst (25) znak贸w |
Warto艣膰 wymagana |
Specjalizacja |
Tekst (30) znak贸w |
Warto艣膰 wymagana |
Klucz podstawowy ustal dla pola Numer |
Tabela o nazwie Pacjent
Nazwa pola (atrybut) |
Typ danych |
W艂a艣ciwo艣ci |
Numer |
Ca艂kowity |
Warto艣膰 wymagana |
Imie_p |
Tekst (20) znak贸w |
Warto艣膰 wymagana |
Nazwisko_p |
Tekst (25) znak贸w |
Warto艣膰 wymagana |
Rozpoznana_choroba |
Tekst (30) znak贸w |
Warto艣膰 wymagana |
Klucz obcy ustal dla pola Numer oraz utw贸rz relacj臋 z tabel膮 nadrz臋dn膮 Lekarz wykorzystuj膮c pole Numer |
Uzupe艂nij obie tabele wykorzystuj膮c poni偶sze dane:
Lekarz
Numer |
Imie |
Nazwisko |
Specjalizacja |
1 |
Marcin |
Kowal |
Chirurg |
2 |
Kacper |
Groch |
Stomatolog |
3 |
Malwina |
Nowak |
Pediatra |
Pacjent
Numer |
Imie_p |
Nazwisko_p |
Rozpoznana_choroba |
1 |
Dorota |
Fudali |
Kamica |
2 |
Robert |
Fic |
Szkorbut |
3 |
Krzysztof |
Lonc |
Grypa |
膯wiczenie 1:
Pos艂uguj膮c si臋 poleceniem DELETE usu艅 z tabeli Lekarz lekarza o nazwisku Groch. Sprawd藕 w tabeli Pacjent, czy przypisany mu pacjent Robert Fic zosta艂 usuni臋ty. Jak zinterpretujesz otrzymany wynik.
膯wiczenie 2:
Projektowanie relacyjnej bazy danych z uwzgl臋dnieniem kaskadowego usuwania
i aktualizowania danych - do zadania wykorzystaj powy偶sze informacje zawarte w historii polece艅.