Bazy Danych II prowadzący: mgr inż. Leszek Siwik Temat referatu: Integralność danych Magdalena Kwiatkowska Małgorzata Strycharz Integralność danych Zbiór reguł określających, które stany bazy danych są poprawne, a więc zarazem jakie operacje prowadzące do modyfikacji danych są dozwolone Zagadnienia: Deklaracje kluczy Zakresy wartości atrybutów Więzy referencyjne Asercje Triggery Relacje Relacja jest zbiorem krotek posiadających taką samą strukturę, lecz różne wartości. Każda krotka odpowiada jednemu wierszowi tablicy. Każda krotka posiada co najmniej jeden atrybut odpowiadający pojedynczej kolumnie tablicy. Relacje Każda relacja (tablica) posiada następujące własności: - krotki (wiersze) – są unikalne - atrybuty (kolumny) – są unikalne - kolejność krotek (wierszy) – nie ma znaczenia - kolejność atrybutów (kolumn) – nie ma znaczenia - wartości atrybutów (pól) – są atomowe Dziedzina (domain) Definiujemy dziedzinę jako nazwany zbiór wartości skalarnych. Wszystkie te wartości muszą być tego samego typu. Dziedziny są więc zestawami wartości, z których są wybierane faktyczne wartości atrybutów. CREATE DOMAIN nazwa-dziedziny typ-danych; DESTROY DOMAIN nazwa-dziedziny; Klucze Klucze kandydujące Klucze główne Klucze alternatywne Klucze obce Klucze kandydujące Klucz kandydujący w relacji R jest podzbiorem K zbioru atrybutów relacji R, mającym: - Własność jednoznaczności: (Żadne dwie różne krotki R nie mają tej samej wartości dla K) - Własność nieredukowalności: (Żaden właściwy podzbiór K nie ma własności jednoznaczności) Klucze główne i alternatywne Jeśli dana relacja może mieć więcej niż jeden klucz kandydujący model relacyjny wymaga, aby jeden z nich został wybrany jako klucz główny Pozostałe klucze nazwane są kluczami alternatywnymi Przykład tworzenia klucza głównego i kandydującego CREATE TABLE Aktorzy ( id_aktora INT nazwisko CHAR (30), imie CHAR (20) ); CREATE TABLE Aktorzy ( id_aktora INT, nazwisko CHAR (30), imie CHAR (20), UNIQUE (id_aktora) ); PRIMARY KEY, Klucze obce Aby można było uznać bazę za zintegrowaną wprowadza się klucze obce. Dana wartość atrybutu jednej z relacji jest wartością klucza głównego w innej. Klucze obce, podobnie jak klucze kandydujące zdefiniowane są jako zbiory atrybutów Reguły klucza obcego Na etapie projektowania projektant musi dla każdego klucza obcego określić nie tylko atrybut, czy kombinację atrybutów, składającą się na ten klucz i na powiązaną z nim relację docelową, ale także reguły klucza obcego, które należy stosować w tym przypadku. Opcje klucza obcego Opcje: RESTRICTED – operacja aktualizacji (usuwania) jest „ograniczona” dla przypadków, w których nie istnieją powiązania (w przeciwnym razie operacja jest odrzucana) CASCADES – operacja aktualizacji (usuwania) „kaskadowo” propaguje aktualizację (usuwanie) także powiązanych atrybutów. Więzy referencyjne Problemem zapewnienia, by baza danych nie zawierała żadnych niedopuszczalnych wartości klucza obcego, nazywa się problemem integralności referencyjnej Więzy referencyjne określają warunek, aby wartości danego klucza obcego zgadzały się z wartościami odpowiadającego mu klucza kandydującego Integralność referencyjna – w bazie danych nie mogą występować żadne niedopasowane wartości kluczy obcych Diagram referencyjny Więzy referencyjne można przedstawić za pomocą diagramu referencyjnego: R1 R0 R2 Każda strzałka oznacza, że w relacji, z której strzałka wychodzi jest, istnieje klucz obcy, który odwołuje się do klucza głównego relacji, na którą strzałka wskazuje. Każdą strzałkę diagramu można oznaczyć nazwą atrybutu (lub atrybutów) tworzącego dany klucz obcy. Przykład więzów integralności referencyjnej CREATE TABLE Aktorzy ( id_aktora INT nazwisko CHAR (30), imie CHAR (20) ); CREATE TABLE Role ( id_roli nazwa id_aktora ); PRIMARY KEY, INT PRIMARY KEY, CHAR(20), INT REFERENCES Aktorzy (id_aktora), ON DELETE SET NULL, ON UPDATE CASCADE Problem brakującej informacji - null Pojęcie znacznika null jest podstawą rozwiązania problemu brakującej informacji Reguła integralności encji Żaden składnik klucza głównego relacji podstawowej nie może akceptować null Klasyfikacja reguł integralności SQL dzieli reguły integralności na trzy kategorie: Reguły dziedzin Reguły tabel bazowych Ogólne reguły („asercje”) Więzy dziedziny Polegają na zadeklarowaniu ograniczeń dla dziedziny atrybutu, a następnie przypisaniu tej dziedziny typowi atrybutu CREATE DOMAIN DziedzinaPłci CHAR(1) CHECK (VALUE IN (‘K’, ‘M’)); Reguły tabel bazowych Kategoria ta obejmuje różne specyfikacje klucza kandydującego, klucza głównego i klucza obcego, a także „więzy CHECK” Więzy typu CHECK nakładają bardzo proste warunki na wartości atrybutów np. zawierają listę poprawnych lub niepoprawnych wartości Asercje Do schematu bazy danych można dołączyć asercje jako element schematu, korzystając ze słowa kluczowego CHECK oraz określenia warunku CREATE ASSERTION <nazwa> CHECK (<warunek>) Asercje są sprawdzane zawsze wtedy, kiedy następuje jakakolwiek modyfikacja relacji, która może naruszać warunek asercji. Wyzwalacze (triggers) Procedura wyzwalana, to taka, która ma być wywołana, kiedy zostanie spełniony określony warunek wyzwalacza np. naruszenie więzów integralności m.in. podczas aktualizacji danych Celem procedury wyzwalanej jest przeprowadzenie pewnego działania mającego z powrotem przywrócić bazę do stanu spójności. Literatura J.D. Ullman J. Widom „Podstawowy wykład z systemów baz danych C.J.Date „Wprowadzenie do systemów baz danych” Pytania Własności relacji Rodzaje kluczy i związane z nimi reguły integralności Problem brakującej informacji – znacznik „null” Więzy typu CHECK Asercje Triggery student.uci.agh.edu.pl/~strychar/referat