Krotki wiszące oraz strategie modyfikacji
Krotkę z wartością klucza obcego, którego nie ma już w macierzystej relacji, nazywamy krotką wiszącą. Krotkę, która nic spełnia warunku złączenia, także nazywamy krotką wiszącą. Te dwa przypadki są sobie bardzo bliskie. Zauważmy bowiem, że jeśli nic ma krotki definiującej klucz, to krotka zawierająca tę wartość jako klucz obcy nie może uczestniczyć w złączeniu.
Krotki wiszące w oczywisty sposób naruszają więzy klucza obcego.
• Standardowa strategia usuwania i modyfikacji polega na tym, żc polecenie nie zostaje wykonane wtedy i tylko wtedy, gdy jego wykonanie spowodowałoby powstanie jednej lub kilku krotek wiszących.
• Strategia kaskadowa w tym przypadku polega na usuwaniu lub modyfikacji wszystkich powstających krotek wiszących (w zależności od typu polecenia, a więc w zależności od tego czy jest to polecenie usunięcia, czy modyfikacji).
• Strategia wstaw-null polega tu na wstawieniu w krotkach wiszących zamiast klucza obcego wartości NULL.
Ćwiczenie 6.2.3. Dla bazy danych okrętów wojennych o podanym niżej schemacie:
Klasy (klasa, typ, kraj, iiczbaDział, działo, wyporność) Okręt (nazwa, klasa, wodowanie)
Bitwa (nazwa, data)
Rezultat (okręt, bitwa, wynik)
Należy zdefiniować następujące więzy integralności referencyjnej. Należy przyjąć naturalne założenia na temat kluczy, a naruszenie warunku obsługiwać przez wstawienie wartości nui.i..
*a) Każda klasa, która została zapisana w relacji Okręty musi występować w relacji Klasy.
b) Jeśli bitwa występuje w relacji Rezultat, to musi być zapisana w relacji Bitwa.
c) Każdy okręt wymieniony w relacji Rezultat musi być zapisany w relacji Okręty.
Do tej pory mieliśmy do czynienia z więzami klucza, które polegają na jednoznaczności pewnych atrybutów w poszczególnych krotkach relacji, oraz z więzami klucza obcego, które powodują wymuszenie więzów integralności między atrybutami dwóch relacji. Teraz zajmiemy się jeszcze innymi ważn mi więzami, tymi które mogą być określone dla składowych atrybutów. Tak więzy można określić albo:
1) w definicji schematu relacji jako warunek nałożony na atrybut, alł jako
2) ograniczenie dziedziny, która zostaje następnie określona jako dzi dżina atrybutu.
W punkcie 6.3.1 zostaną wprowadzone proste więzy wartości atrybutó\ więzy polegające na tym, że atrybut nie może przyjmować wartości nu:, Następnie, w p. 6.3.2, przedstawimy podstawowe więzy tego typu, a miam wicie więzy typu CHECK. Natomiast więzy ograniczające dziedzinę zostai przedstawione w p. 6.3.3. Poza tym istnieją jeszcze inne rodzaje więzó\ będzie o nich mowa w podrozdziale 6.4. Właśnie one służą do rozszerzeń ograniczeń na całą krotkę, relację, a nawet na kilka relacji, ale mogą być uży także do ograniczania wartości pojedynczego atrybutu.
Najprostsze więzy nakładane na atrybuty nazywają się NOT nul: W ich wyniku w żadnej krotce w miejscu ograniczonego atrybutu nie moi pojawić sic wartość NULL. Deklaracja tych więzów występuje w instrukc CREATE TABLE, w której po słowie kluczowym NOT NULL podaje się lisi atrybutów.
PRZYKŁAD 6.5
Załóżmy, żc atrybut prezCr w relacji Studio nie może mieć wartości nulj Można takie więzy zdefiniować zmieniając na rys. 6.3 wiersz 4). który- przy; mie postać następującą:
4) prezC# INT REFERENCES FilmDyr{cert#} NOT NULL Taka zmiana powoduje szereg następstw:
• Wartość składowej prezes w żadnej krotce nie może być zmienion
na NULL.
• Do relacji Studio nie można wstawić krotki zawierającej tylko wa: tości atrybutów nazwisko i adres, ponieważ wówczas w składowe prezC# musiałaby wystąpić wartość NULL.
• W sytuacji takiej jak w wierszu 5) na rys. 6.3 nie można stosowa strategii NOT NULL, która powoduje, że przy naruszeniu więzów kii cza obcego atrybut prezC# powinien mieć nadaną wartość NULL.