Bazy Danych II prowadzący: mgr inż. Leszek Siwik

advertisement
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
Download