ullman203 (2)

ullman203 (2)



6 WIĘZY 1 WYZWALACZE W JĘZYKU SQL

6.6.4. Ćwiczenia do podrozdziału 6.6

Ćwiczenie 6.6.1. Należy napisać w SQL3 wyzwalacze podobne do deklaracji z rys. 6.5, określone dla zdarzeń wstawiania i usuwania w relacji FiłmDyr.

Ćwiczenie 6.6.2. Napisać w SQL3 następujące wyzwalacze i asercje dla schematu z przykładu „PC” z ćwiczenia 4.1.1:

Produkt(producent, model, typ)

?C(model, szybkość, ram, hd, cd, cena)

Laptop(model, szybkość, ram, hd, ekran, cena)

Drukarka(mebel, kolor, typ, cena)

*a) Przy zmianie ceny PC sprawdzać, że nie ma żadnego PC o takiej samej częstotliwości zegara, ale o niższej cenie.

b) Przy wstawianiu nowej drukarki sprawdzać, 2e numer modelu istnieje w tabeli Produkt.

!c) Przy każdej zmianie w relacji Laptop sprawdzać, czy średnia cena laptopów każdego producenta nie jest wyższa niż 2000 S.

!d) Przy zmianie RAM lub twardego dysku w PC należy sprawdzić, czy ten modyfikowany PC ma co najmniej 100 razy więcej pamięci zewnętrznej niż operacyjnej.

!e) Przy wstawianiu nowego PC, laptopa lub nowej drukarki należy sprawdzić, że numer modelu nie występuje wśród istniejących produktów odpowiedniego typu.

Ćwiczenie 6.6.3. Dla schematu bazy danych:

Klasy (klasa, typ, kraj, liczbaDziął, działo, wyporność) Okręt (nazwa, klasa, wodowanie)

Bitwa (nazwa, data)

Rezultat (okręt, bitwa, wynik)

z ćwiczenia 4.1.3 należy w SQL3 zapisać wyzwalacze i ascrcje, które są określone w sposób następujący: 1

IĆwiczenie 6.6.4. Następujące warunki zapisać w SQL3 albo wr postaci wyzwalaczy albo w postaci asercji. Zadania dotyczą przykładu filmowego:

Film (tytuł, rok, długość, czyKolor, nazwaStudia, producentC#)

GwiazdyW (cytułFilmu, rokFilmu, nazwiskoGwiazdy)

GwiazdaFilmowa(nazwisko, adres, płeć, dataUrodzenie)

FilmDyr(nazwisko, adres, cert#, cenaSieci)

Studio(nazwisko, adres prczC#)

Można założyć, że przed zmianami bazy warunki są spełnione. Należy raczej stara się, aby dopuścić wykonanie polecenia, nawet kosztem wstawienia krotek z warto ściami NULI lub domniemanymi, niż odrzucać żądanie modyfikacji.

a)    Każda gwiazda z relacji GwiazdyW musi występować w relacji Gwiazda-Filmowa.

b)    Każdy dyrektor produkcji jest albo prezesem studia, albo producentem filmu albo jednym i drugim.

c)    W każdym filmie występuje co najmniej jedna aktorka i jeden aktor.

d)    Żadne studio w jednym roku nie wyprodukowało w ięcej niż. 100 filmów.

c) Średnia długość wszystkich filmów' wyprodukowanych w ciągu jednego roki nie przekracza 120.

IĆwiczcnie 6.6.5. W przykładzie 6.17 błędy modyfikacji byty obsługiwane w tci sposób, że najpierw był sprawdzany warunek i. jeśli więzy nic były naruszone, t< dopiero wtedy następowała modyfikacja. Inne podejście polega na tym, że dopuszczs się modyfikacje, a potem, jeśli okaże się, że narusza to w'ięz.y, anuluje się tę modyfikację. Należy napisać takie wyzwalacze.

6.7. Podsumowanie rozdziału 6

♦    Więzy klucza (key comtraints): Słowa kluczowe PR!MARY KEY lut UN1QUE określają w deklaracji schematu bazy danych ten atrybut lut zbiór atrybutów, które stanowią klucz relacji.

♦    Więzy integralności referencyjnej (referential integrily comtraints) Korzystając ze słowa kluczowego REFERENCES lub FOREIGN key można zadeklarować, że pewna wartość (lub zbiór wartości) z jednej relacji występuje jako wartość (wartości) klucza głównego pewne krotki innej relacji.

♦    Więzy typu CHECK dla wartości (yalue-based check comtraints) Można sprawdzać warunki określane dla wartości atrybutów prze1 umieszczenie w definicji schematu relacji przy tym atrybucie słows CHECK oraz warunku, który ma być sprawdzany. Drugi sposób sprawdzania warunków dla wartości atrybutów polega na wpisaniu tego warunku w definicję dziedziny atrybutu.

1

a) Przy wstawianiu nowej krotki do relacji Klasy wstawiać jednocześnie okręt o nazwie klasy, z datą wodowania równą NULL. b) Jeśli atry but Wyporność we wstawianej klasie ma wartość ponad 35 000, to należy do bazy wstawić krotkę z wartością 35 000.

!c) Jeśli do relacji Rezultat wstawia się krotkę, to należy sprawdzać, czy okręt i bitwa są wstawione do odpowiednich relacji Okręt i Bitwa, a jeśli nie, to wstawić brakujące krotki. W przypadkach koniecznych skorzystać z wartości NULL.

!d) Przy wstawianiu krotek do relacji Okręt oraz przy zmianach wartości atrybutu klasa w relacji okręt sprawdzać, czy żaden kraj nie ma więcej niż 20 okrętów, a jeśli ma, to nie dopuścić do wstawienia nowej krotki.

!!e) Sprawdzić, czy w okolicznościach mogących naruszać więzy, że żaden statek, który uczestniczył w bitwie, nic zatonął wcześniej. Jeśli tak. to nie dopuścić do modyfikacji, która może naruszyć ten warunek.


Wyszukiwarka

Podobne podstrony:
53198 ullman186 (2) a__________Więzy i wyzwalacze w języku SQL W bieżącym rozdziale opiszemy te aspe
43500 ullman192 (2) -> 7U 6 WIĘZY 1 WYZWALAĆ/.!- W JĘZYK U SQL6.3.2. Więzy CHECK W deklaracji atr
ullman195 (2) 396 6. WIĘZY l WYZWALACZE W JEŻYKU SQl. nyrni”. Podczas gdy pozostałe typy więzów są t
ullman197 (2) 4UU 6 WIĘZY I WYZWALACZE W JĘZYKU SOL  GwiazdyW(tytułFilmu, rokFilmu,
ullman201 (2) 408 6. WIĘZY I WYZWALACZE W JĘZYKU SQL 1 1)    CREATE TRIGGER Cena
ullman204 (2) 414 6. WIĘZY 1 WYZWALACZE W JĘZYKU SQL ♦    Więzy kratkowe typu CIIEC.K
52682 ullman256 (2) 518 S ZORIENTOWANE OBIEKTOWO JI-ZYKI ZAPYTAŃ8.6.4. Ćwiczenia do podrozdziału 8.6
65226 ullman199 (2) 404 6. WIĘZY r wyzwalacze w języku soi. 404 6. WIĘZY r wyzwalacze w języku soi.
55786 ullman196 (2) 398 6. WIĘZY l WYZWALACZE W JĘZYKU SOL Mimo że ascrcja obejmuje dwie relacje, to

więcej podobnych podstron