W bieżącym rozdziale opiszemy te aspekt) języka SQL. które umożliwiają tworzenie elementów „aktywnych”. Elementy aktywne są to takie wyrażenia lub instrukcje, które raz zapisane w bazie danych są automatycznie uruchamiane w odpowiedniej chwili. Czas wykonania zależy od zajścia pewnego zdarzenia, na przykład próby wstawienia rekordu do określonej tabeli, lub od takiego stanu bazy danych, kiedy określony warunek logiczny zaczyna być spełniony.
Programiści, tworzący oprogramowanie modyfikujące stan bazy danych, muszą uporać się z tym, że nowe dane mogą się okazać niewłaściwe w bardzo różny sposób. Najprostszą metodą uniknięcia wstawienia do bazy danych błędnego rekordu jest taka konstrukcja programu, która każdą operację wpisywania danych do bazy, usuwania lub modyfikacji wiąże z warunkami opisującymi ich poprawność. Niestety warunki poprawności często są skomplikowane, a ich sprawdzanie musi być powtarzane - program użytkowy musi przetwarzać tc same testy przy każdej modyfikacji.
Na szczęście język SQL2 jest wyposażony w narzędzia pozwalające dołączać wiązy integralności do schematu bazy danych. W tym rozdziale omówimy podstawowe metody. Najpierw opiszemy więzy kluczy - czyli więzy określone na atrybutach lub zbiorach atrybutów pełniących funkcje kluczy tabeli. Następnie rozważymy więzy integralności referencyjnej, tzn. wymagania polegające na tym, żeby wartości atrybutu lub zbioru atrybutów jednej tabeli (np. prezC# w tabeli Studio) występowały również w innej tabeli (np. cert? w tiirr.Dyr). Potem przyjrzymy się więzom, które można nakładać na domeny, włączając w to niepowtarzalność pewnych wartości („jednoznaczność”), ograniczenia zakresu domen do zadanych wartości oraz ochronę przed występowaniem wartości pustych NULL. Rozważymy również więzy dla rekordów lub tabel oraz związki między tabelami, nazywane a.tercjami. Zachowanie więzów jest zawsze testowane, gdy modyfikacja dotyczy tabeli, na której są one określone.
W końcu zostaną omówione „wy/walacze”, stanowiące taką formę elementów aktywnych, która umożliwia inicjowanie wykonania szeregu czyn-
ności na skutek zajścia określonego zdarzenia, na przykład wprowadź nowych danych do określonej tabeli. W standardzie SQL2 nie ma wyzv czy, ale następna wersja $QL3 już je zawiera. Mimo żc definicja stand SQL3 w czasie pisania tej książki jeszcze nie istnieje, to kilka komercyji systemów baz danych już wyposażono w pewne wersje wyzwalaczy.
Prawdopodobnie najważniejszym rodzajem więzów w bazach danych określenie, który atrybut albo które atrybuty tworzą klucz relacji. Oznacza t. żadne dwie krotki tej samej relacji nie mogą mieć takiej samej wartości atry określonego jako klucz lub identycznych wartości atrybutów tworzących zł ny klucz. Więzy klucza, tak jak wiele innych więzów, są określane w instn języka SQL - CREATE TABLE. Klucz można zadeklarować na dwa spos przez utycie słowa kluczowego primary key łub słowa kluczowego UNT Jednak w tabeli może wystąpić tylko jeden klucz główny, natomiast kol mających tę cechę, że wartości w nich zawarte są różne, może być wiele.
Klucz główny może składać się z jednego lub kilku atry butów rei Klucz główny tabeli opisującej przechowywaną relację można deklarc w instrukcji CREATE TABLE na dwa różne sposoby.
1. Można zadeklarować, że dany atrybut jest kluczem głównym opisie tego atrybutu w schemacie relacji.
2. Do zbioru atrybutów zadeklarowanych w schemacie relacji (któr tylko zwykłymi atry butami) możemy dodać deklarację, która okr że uprzednio zdefiniowany atrybut lub zbiór atrybutów tworzy k główny.
Korzystając z pierwszego sposobu, dopisujemy słowo kluczowe PRT RY key po nazwie atrybutu i jego typu. Postępując według drugiego spos wprowadzamy do listy atrybutów nowy atrybut, złożony ze słowa prip key oraz ujętej w nawiasy nazwy atrybutu lub listy nazw atrybutów, [ tworzą klucz główmy. Należy dostrzec, że jeśli klucz składa się z w ięce jednego atrybutu, to należy skorzystać z drugiego sposobu.
PRZYKŁAD 6.1
Rozważmy ponownie schemat relacji Gwiazda* i 1 mowa, opisany w pr/.Ą dzic 5.32. Kluczem głównym tej relacji jest nazwisko. Możemy ten