1 Język definicji danych (Data Definition Language)SQL – JDD (DDL) Język definicji danych (Data Definition Language)
2 SQL - język definicji danychElementy bazy danych Dziedziny Tabele, perspektywy Indeksy Więzy ogólne (asercje) Wyzwalacze i procedury użytkownika Użytkownicy, role, uprawnienia Zbiory znaków, zestawienia, translacje 18 marzec 2004 SQL - język definicji danych
3 Dziedzina standardowaLogiczna (TRUE, FALSE, UNKNOWN); Znakowe: char(n) lub character(n), varchar(n) lub character varying(n); Bitowe: bit(n), bit varying(n); Liczowe dokładne: int lub integer, shortint, numeric(n,p), decimal(n,p); Liczbowe zmiennopozycyjne: float(p), real, double; Daty i czasu: date, time, timestamp [WITH TIME ZONE] Przedziały czasu: interval p to k; Inne: text lub clob, blob. 18 marzec 2004 SQL - język definicji danych
4 Dziedzina użytkownikaCREATE DOMAIN
5 SQL - język definicji danychTabela CREATE TABLE
6 SQL - język definicji danychWięzy kolumny [CONSTRAINT
7 SQL - język definicji danychAkcja referencyjna ON { DELETE | UPDATE } { RESTRICT | NO ACTION | CASCADE | SET NULL | SET DEFAULT } 18 marzec 2004 SQL - język definicji danych
8 Integralność referencyjnaDomyślnie – jeżeli jakaś kolumna klucza obcego jest pusta, to integralność referencyjna nie jest kontrolowana; MATCH FULL – jeśli wszystkie kolumny klucza obcego są puste, to integralność referencyjna nie jest kontrolowana; przeciwnie – musi istnieć odpowiedni rekord w tabeli nadrzędnej; MATCH PARTIAL – rekord podrzędny pasuje do rekordu nadrzędnego, jeśli zgadza się z nim na niepustych polach klucza obcego. 18 marzec 2004 SQL - język definicji danych
9 SQL - język definicji danychWięzy relacji [CONSTRAINT
10 Więzy – moment kontroliSpełnienie więzu może być kontrolowane natychmiast po wprowadzeniu, aktualizacji rekordu z tabeli (IMMEDIATE) Może być jednak odroczone do momentu wypełnienia transakcji (DEFERRED) 18 marzec 2004 SQL - język definicji danych
11 Perspektywa (tabela wirtualna)CREATE VIEW
12 Perspektywa - implementacjaPerspektywa materializowana – zapytanie definiujące perspektywę jest wyliczane i przechowywane jako tabela przez SZBD. Zapytania do perspektywy są realizowane przez wgląd w tę tabelę. Modyfikacje perspektywy mogą być przeprowadzane przez: ponowne obliczenie zapytania; aktualizację tylko tych rekordów, które dotknęła modyfikacja. 18 marzec 2004 SQL - język definicji danych
13 Perspektywa – implementacjaRozkład – jest metodą polegającą na przekształceniu zapytania dotyczącego perspektywy tak, by dotyczyło tabel bazowych, a warunki wyboru pochodzące z definicji perspektywy zostały włączone w definicję tabeli. 18 marzec 2004 SQL - język definicji danych
14 Perspektywa - modyfikacjePerspektywa jest modyfikowalna, gdy dotyczy jednej tabeli i występują w niej wszystkie kolumny niepuste (z nałożonym warunkiem NOT NULL lub PRIMARY KEY) z tej tabeli. Własność modyfikowalności można rozciągnąć na perspektywy powstałe z kilku tabel, o ile w tabeli wynikowej występują kolumny kluczy i kolumny niepuste z wszystkich tabel, które są złączane w celu utworzenia perspektywy. 18 marzec 2004 SQL - język definicji danych
15 Perspektywa - modyfikacjePerspektywa nie może być modyfikowalna, gdy: zawiera operator DISTINCT; zwraca kolumnę wyliczaną; jest definiowana przez zapytanie grupujące; jest definiowana przez zapytanie zawierające UNION, EXCEPT lub INTERSECT; w warunku WHERE zapytania definiującego występuje odwołanie do tabeli występującej w klauzuli FROM. 18 marzec 2004 SQL - język definicji danych
16 Perspektywa – WITH CHECK OPTIONrekord wstawiony poprzez perspektywę musi należeć do perspektywy; rekord zmodyfikowany poprzez perspektywę nadal musi należeć do perspektywy. CASCADED – wstawienie lub modyfikacja rekordu do perspektywy lub perspektywy na jej podstawie zdefiniowanej, nie może spowodować zniknięcia rekordu z danej perspektywy; LOCAL – rekord może zniknąć po modyfikacji z perspektywy, o ile zniknie z tabeli, na podstawie której jest zdefiniowana perspektywa. 18 marzec 2004 SQL - język definicji danych
17 SQL - język definicji danychIndeks CREATE [UNIQUE] INDEX
18 SQL - język definicji danychZmiany w schemacie BD DROP – usunięcie danego obiektu (DOMAIN, TABLE, VIEW, INDEX) z opcją RESTRICT lub CASCADE ALTER – modyfikacja definicji; możliwe operacje, to: [DROP | ADD ] COLUMN] [DROP | ADD ] CONSTRAINT [DROP | SET ] [DEFAULT...][CHECK...] 18 marzec 2004 SQL - język definicji danych
19 SQL - język definicji danychWięzy ogólne – asercje CREATE ASSERTION
20 SQL - język definicji danychPrzykład CREATE DOMAIN TNazwa AS VARCHAR(20) DEFAULT ‘???’; CREATE DOMAIN TPłeć AS CHAR DEFAULT ‘?’ CHECK VALUE IN (‘K’, ‘M’); 18 marzec 2004 SQL - język definicji danych
21 SQL - język definicji danychPrzykład cd. CREATE TABLE Osoba ( nazwisko Tnazwa NOT NULL, imię Tnazwa, KM Tpłeć, PESEL CHAR(11) UNIQUE NOT NULL, PRIMARY KEY (nazwisko, imię)); 18 marzec 2004 SQL - język definicji danych
22 SQL - język definicji danychPrzykład cd.2 CREATE TABLE Samochód (nrRej VARCHAR(10) PRIMARY KEY, marka Tnazwa, właściciel CHAR(11) REFERENCES Osoba(pesel) ON DELETE SET NULL ON UPDATE CASCADE); 18 marzec 2004 SQL - język definicji danych
23 SQL - język definicji danychPrzykład cd.3 CREATE VIEW WW AS SELECT nazwisko, imię FROM Osoba JOIN Samochód ON pesel=właściciel; CREATE VIEW WX AS FROM WW WHERE marka IN (‘BMW’,’Opel’); CREATE INDEX samWgWłaściciel ON Samochód(Właściciel) 18 marzec 2004 SQL - język definicji danych