404 6. WIĘZY r wyzwalacze w języku soi.
404 6. WIĘZY r wyzwalacze w języku soi.
Więzy należy określać nazwami
Pamiętajmy o tym, iż nazywanie więzów jest sensowne, nawet gdy nie przewiduje się, że będzie to kiedykolwiek potrzebne. Jeśli więzy zostaną zdefiniowane bez nazwy, to już nigdy nie uda się ich zmienić i gdyby się okazało, że są na przykład niepotrzebne, wówczas trzeba definiować na now'o schemat.
Dołączanie i usuwanie więzów dziedziny polega na tym samym co modyfikowanie więzów krotkowych typu CHECK. Aby usunąć więzy dziedziny, stosuje się instrukcje ALTER i słowo kluczowe DROP, po którym podaje się nazwę więzów. Przy dołączaniu nowych więzów za słowem ALT ER występuje słowo kluczowe ADD, nazwa więzów oraz warunek CH2CK określający więzy.
PRZYKŁAD 6.14
Więzy dziedziny, które ograniczają numery' certyfikatów' do liczb sześciocyfrowych, można usunąć w sposób następujący:
ALTER DOMAIN DziedzinaCort DROP CONSTRAINT sześćCyfr;
Przywraca je natomiast następująca instrukcja:
ALTER DOMAIN DziedzinaCert ADD CONS7RAINT szcśćCyfr CHECK (VALUE >= 100000);
Asercję można usunąć, stosując instrukcję złożona ze słowra kluczowego drop ASSERTION, po którym podaje się nazwę asercji.
PRZYKŁAD 6.15
Asercję z przykładu 6.15 można usunąć, podając następujące polecenie:
DROP ASSERTION BogatyPrezes;
Aby przywrócić tę asercję, deklaruje się ją ponownie, tak jak to zrobiono w' przy kładzie 6.10.
□
Ćwiczenie 6.5.1. Dla pnrykładu filmowego:
Film (tytuł, rok, długość, czyKolor, nazwaStudia, producentem
GwiazdyW (tytuiFilmu, rokFilmu, nazwiskoGwiazdy) GwiazdaFilmowa (nazwisko, adres, płeć, dataUrodzenie) FilmDyr(nazwisko, adres, cert#, cenaSieci)
Studio(nazwisko, adres prezC#)
należy pokazać, w jaki sposób do schematu wprowadzić następujące zmiany:
*a) Atrybuty tytuł i rok mają stać się kluczem relacji Film.
b) Nałożyć więzy integralności referencyjnej, które polegają na tym. że każdy producent jest zapisany w relacji Fi lmDyr.
c) Nałożyć więzy, które polegają na tym, że żaden film nie może trwać krócej niż 60 minut ani dłużej niż 250 minut.
*!d) Narzucić warunek polegający na tym, żeby żadne nazwisko nie było równocześnie nazwiskiem gwiazdy filmowej i dyrektora produkcji (te więzy nie powinny być sprawdzane w przypadku usuwania krotek).
!e) Dwa różne studia nie mogą mieć tego samego adresu.
Ćwiczenie 6.5.2. Dla przykładu „okręty”:
Klasy (klasa, typ, kraj, liczbaDział, działo, wyporność) Okręt (nazwa, klasa, wodowanie)
Bitwa (nazwa, data}
Rezultat (okręt, bitwa, wynik)
należy określić następujące krolkowc więzy typu CH5CK:
a) Klasa i kraj tworzą klucz w relacji Klasy.
b) Każdy okręt, który występuje w relacji Bitwa, występuje także w relacji
Okręt.
c) Każdy okręt, który występuje w relacji Rezultat, występuje także w relacji Okręt.
d) Żaden okręt nic ma więcej niż 14 dział.
!c) Nie dopuszczać okrętów, które uczestniczą w bitwach, zanim zostaną zwodowane.
Rozmaite więzy opisane w bieżącym rozdziale są zawarte w standardzie SQL2. Z modelu realizacji tych więzów wynika, że są one wykonywane zawsze wtedy, kiedy ma nastąpić zmiana wartości elementu, który jest przez, nie