Materiały od profesora
Transkrypt
Materiały od profesora
Implementacyjne modele danych Definicja bazy danych Okre laj technologi transformacji modelu koncepcyjnego do konkretnego systemu SZBD. W ród modeli implementacyjnych wyró nia si modele: Hierarchiczne Baza danych jest zbiorem powi zanych danych. Baza danych jest abstrakcyjnym, informatycznym odzwierciedleniem wybranego fragmentu rzeczywisto ci nazywanego mini wiatem. Zmiany w tym mini wiecie s odzwierciedlane w bazie danych. Rafał Kowalski Transformacja modelu konceptualnego do modelu relacyjnego. RELACYJNE obiektowe PRACOWNICY PRACOWNIK_ID 1 2 3 4 5 NAZWISKO IMIE Kudłaty Pryszczaty Pij cy Ponury Kulawy Stanisław Mieczysław Gustaw Bolesław Franciszek 1 KIEROWNIK_ID WYDZIAL_ID 3 4 4 2 3 2 3 1 2 Rafał Kowalski 2 RELACYJNE BAZY DANYCH i Strukturalny J zyk Zapyta SQL. Metodyka tworzenia baz danych Analiza mini wiata – konstrukcja modelu konceptualnego mini wiata sieciowe 1970r. dr E.F.Codd opublikował artykuł: Diagramy koncepcyjne „Relacyjny model danych dla du ych banków danych współu ywanych” Relacje Proces normalizacji Iinterfejs dost pu do relacyjnych baz danych: SEQUEL Relacje znormalizowane SQL Standardy j zyka: SQL-89, SQL-92 (SQL2), SQL-99. Wybór struktur fizycznych i okre lenie cie ek dost pu Fizyczne struktury danych SQL - jedyny j zyk obsługi relacyjnych baz danych Strojenie systemu Rafał Kowalski 3 Rafał Kowalski Dr. E. F. Codd Dr. E. F. Codd 12 Postulatów 1. 12 Postulatów Systemów Relacyjnych 1. Informacyjny. 2. Gwarantowanego dost pu. 3. Systemowej obsługi warto ci NULL. 4. Dynamicznego słownika danych. Modyfikowania BD przez perspektywy. Postulat Informacyjny. Postulat gwarantowanego dost pu. Dost p do ka dej atomowej jednostki informacji (datum) jest realizowany przy pomocy okre lenia nazwy tabeli, warto ci klucza głównego i nazwy kolumny. 3. Pełnego j zyka danych. 6. Systemów Relacyjnych Cała informacja z relacyjnej bazy danych jest reprezentowana jedynie na poziomie logicznym, tylko przy pomocy warto ci umieszczonych w tabelach. 2. 5. 4 Postulat systemowej obsługi warto ci NULL. System Relacyjnej Bazy Danych przechowuje warto ci NULL, które reprezentuj informacj brakuj c . Obsługa warto ci NULL jest realizowana w sposób niezale ny od typów danych. 7. Modyfikowania danych na wysokim poziomie abstrakcji. 8. Fizycznej niezale no ci danych. 4. 9. Logicznej niezale no ci danych. Struktura bazy danych jest reprezentowana na poziomie logicznym w ten sam sposób, co przechowywane dane i obsługiwana przez ten sam j zyk relacyjny. 1923 - 2003 10. Niezale no ci wi zów spójno ci. Postulat dynamicznego słownika danych. 11. Niezale no ci dystrybucyjnej. 12. Bezpiecznych operacji niskiego poziomu. Rafał Kowalski 5 Rafał Kowalski 6 1 Dr. E. F. Codd 12 Postulatów 5. Dr. E. F. Codd 12 Postulatów Systemów Relacyjnych Postulat pełnego j zyka danych. 8. W systemie relacyjnym musi by okre lony j zyk, którego wyra enia podlegaj dokładnie okre lonej składni i umo liwiaj definiowanie, modyfikowanie i przegl danie danych, ogranicze i realizacj transakcji. J zyk ten jest niezale ny od obsługiwanych j zyków narodowych, j zyków programowania i rodzajów interakcji z klientami systemu (SQL). 6. Postulat modyfikowania BD przez perspektywy. Wszystkie perspektywy danych, które teoretycznie umo liwiaj modyfikowanie danych, musz umo liwia te modyfikacje w praktyce. 7. Postulat modyfikowania danych na wysokim poziomie abstrakcji. Systemów Relacyjnych Postulat fizycznej niezale no ci danych. Praca klientów przy terminalach interaktywnych oraz działanie programów i aplikacji s niezale ne od istniej cych fizycznych struktur danych i zmian dokonywanych w strukturach fizycznego przechowywania i/lub metod dost pu do danych fizycznych. 9. Postulat logicznej niezale no ci danych. Praca klientów przy terminalach interaktywnych oraz działanie programów i aplikacji s niezale ne od zawarto ci i zmian dokonywanych w tre ci przechowywanej informacji, je eli te zmiany nie wpływaj na struktury tabel bazowych. Wszystkie operacje dost pu do danych (przegl danie, wprowadzanie, modyfikowanie i usuwanie) musz umo liwia jednorodne przetwarzanie relacji bazowych(base) i wyliczanych(derived) . Rafał Kowalski Dr. E. F. Codd 12 Postulatów 7 Rafał Kowalski Dr. E. F. Codd 12 Postulatów Systemów Relacyjnych 8 Systemów Relacyjnych 10. Postulat niezale no ci wi zów spójno ci. 12. Postulat bezpiecznych operacji niskiego poziomu. Wi zy spójno ci danych (ograniczenia integralno ci) musz by w pełni definiowane przy pomocy j zyka relacyjnej bazy danych i przechowywane w słowniku danych w sposób niezale ny od oprogramowania u ytkowego. System musi obsługiwa co najmniej dwa rodzaje wi zów spójno ci: Je eli system relacyjnej bazy danych udost pnia j zyk niskiego poziomu (przetwarzania pojedynczych rekordów danych), to jego u ycie nie mo e umo liwia łamania lub czasowego ograniczania wi zów spójno ci, zdefiniowanych w j zyku wysokiego poziomu. 1. Integralno encji (klucz główny nie mo e przyjmowa warto ci NULL). 2. Integralno referencyjna (ka da okre lona (nie NULL) warto musi pochodzi z domeny odpowiadaj cego klucza głównego). klucza obcego 11. Postulat niezale no ci dystrybucyjnej. Postulat Zero: „Ka dy system, który uznaje si za Relacyjn Baz Danych, musi realizowa wszystkie operacje przetwarzania danych tylko i wył cznie przy pomocy operatorów relacyjnych.” System Relacyjnej Bazy Danych jest niezale ny od rozmieszczenia i rozproszenia bazy danych. U ytkownicy systemu nie musz by wiadomi i uzale nia swoich działa od rozproszenia danych. Na Napodstawie podstawiezdefiniowanych zdefiniowanychpostulatów postulatów mo mo na napowiedzie powiedzie , , ee aden adenwspółczesny współczesnysystem system RDBMS RDBMS nie niejest jestsystemem systememwwpełni pełnirelacyjnym. relacyjnym. (6,9,10,11,12) (6,9,10,11,12) Rafał Kowalski Podstawy j zyka SQL 9 Grupy polece SQL92 Rafał Kowalski Podstawy j zyka SQL KLASA DML DDL Definiowanie danych. Modyfikacje danych. DCL Sterowanie serwerem danych DQL Rafał Kowalski Wyszukiwanie danych. 11 10 Klasy polece SQL99 Opis Obsługa poł czenia. Sterowanie sesj - poł czeniem klienta z serwerem. Strukturalne Sterowanie wykonywaniem zbiorów polece . Przetwarzanie danych Wyszukiwanie danych poł czone z modyfikowaniem nietrwałym lub modyfikowanie trwałe. Diagnostyka systemu Wy wietlanie informacji o kondycji i stanie pracy serwera, bł dach i sytuacjach wyj tkowych. Obsługa schematów Modyfikowanie struktur przechowuj cych dane w serwerze. Obsługa sesji Modyfikowanie parametrów steruj cych procesem przetwarzania informacji w sesji klienta Obsługa transakcji Synchronizowanie współpracy wielu u ytkowników i dzielenie procesów przetwarzania danych na jednostki elementarne. Rafał Kowalski Przykłady 12 2 Hierarchiczno modelu relacyjnego Zapytania proste SELECT KLASTER Zbiór katalogów sesji SQL (cały system RDBMS). Standard ANSI nakłada na klaster obowi zek kontroli dost pu u ytkowników ?. KATALOG Inaczej: instancja bazy danych. SCHEMAT Zbiór obiektów u ytkownika (baza danych). SELECT Tabele, perspektywy, moduły, procedury składowane. OBIEKT Unikatowy zbiór warto ci, atrybutu encji informacji. KOLUMNA TYP STANDARDOWY TYP U YTKOWNIKA Definicja zbioru prawidłowych warto ci kolumny REGUŁA i ASERCJA Reguły prawidłowego przetwarzania informacji: PK, FK, U, NN, . . . , wyzwalacze Rafał Kowalski { } DISTINCT UNIQUE ALL FROM lista ródłowa WHERE GROUP BY HAVING ORDER BY warunek S wyboru lista grupowania warunek G wyboru 13 Rafał Kowalski CROSS JOIN INNER JOIN Selekcja wyników zapytania PROBLEMY stop tabela , Du a liczba odmiennych rodzajów warunków dla ró nych typów danych. ON Mo liwo ) kolumna Brak pierwsze stwa spełniania - kolejno struktury zagł bionych nawiasów. INNER JOIN Rafał Kowalski OUTER wzajemnego uzupełniania i zast powania si ró nych warunków. Pomieszanie warunków selekcji ze zł czeniami Theta. Warunek zł czenia Zale no LEFT RIGHT FULL 15 Rafał Kowalski Prosty warunek logiczny < = > wewn trzne <= <> >= lewostronne zewn trzne (wszystkie wydziały) NOT Pensja>1300 AND wydzial_id = 3 AND OR <=> NOT AND/OR Sprawdzenie warto ci NULL Sprawdzenie wyst powania pustej warto ci atrybutu. UWAGA: 0 i „” nie s warto ciami pustymi. WHERE (2) THETA Pracownicy.wydzial_id = wydzialy.wydzial_id Pracownicy.wydzial_id (+)= wydzialy.wydzial_id Pracownicy.wydzial_id =* wydzialy.wydzial_id Oracle PostgreSQL Porównywanie tekstów ze wzorcem Zło ony warunek logiczny Warunki proste, poł czone operatorami zł cze i nawiasami zmieniaj cymi kolejno ich analizy. 16 Rodzaje warunków Obsługa zł cze tabel pensja=1300 okre lana wył cznie przez od producentów serwerów i konfiguracji oprogramowania. Rodzaje warunków WHERE(1) Wyra enie logiczne zło one z dwóch argumentów poł czonych operatorem porównania, ewentualnie poprzedzone kwalifikatorem negacji NOT. WHERE Opanowanie umiej tno ci stosowania warunków klauzuli WHERE jest podstaw sukcesu stosowania j zyka SQL. NATURAL LEFT RIGHT FULL OUTER tabela 14 Klauzula WHERE słu y do okre lania listy warunków logicznych, które musz spełnia wiersze wygenerowane przez polecenie SELECT lub DELETE. , USING ( ; lista kolejno ci Składnia klauzuli FROM start lista wyboru numer_telefonu IS NULL imie IS NOT NULL Rafał Kowalski IS NULL IS NOT NULL 17 Porównywanie tekstów, wyszukiwanie ła cuchów ze znakami wieloznacznymi. UWAGA: W zale no ci od kontekstu, serwer mo e dokona niejawnej konwersji typu atrybutu. imie nazwisko nazwisko pensja NOT LIKE ′%a′′ LIKE ′K_owal%′′ LIKE ′ _ _ _ _′′ LIKE ′3__0′′ % dowolny ła cuch znaków _ dowolny jeden znak Sprawdzenie zakresu Poszukiwanie atrybutów mieszcz cych si w DOMKNI TYM zakresie warto ci. pensja BETWEEN 1000 and 3000 pensja NOT BETWEEN 2000 and 3000 imie BETWEEN 'Adam' and ‘Bartek' Rafał Kowalski BETWEEN x and y NOT BETWEEN . . . 18 3 Rodzaje warunków WHERE (3) Sprawdzenie zbioru warto ci Poszukiwanie atrybutów mieszcz cych si w wymienionym zbiorze warto ci. Podzapytania Sprawdzanie zło onych warunków istnienia nazwa IN ( ‘spedycja’ , ‘transport’ ) IN ( a,b,c) imie NOT IN (′′Anna ′ , ′Ewa ′ ) pensja IN (1000, 1500, 2000) NOT IN . . . WHERE (4) PODZAPYTANIA !!! Poszukiwanie atrybutów, zwi zanych ze zbiorem warto ci generowanych przez podzapytania SQL (zwykle skorelowane). Przykład zapytania Wy wietl pracowników, którzy posiadaj podwładnych. pracownik_id, imie, nazwisko pracownicy p EXISTS (SELECT empno FROM emp WHERE p.mgr = emp.empno) ORDER BY ename; SELECT FROM WHERE Wspomagane IN ANY ALL EXISTS < <= przez Rafał Kowalski 19 Agregowanie wyników 1 2 3 4 5 6 NAZWISKO IMIE Kudłaty Pryszczaty Pij cy Ponury Kulawy Samotny Stanisław Mieczysław Gustaw Bolesław Franciszek Jan 2 7 PRACOWNIK_ID 3 2 3 1 1 2 3 4 5 5 Policz rekordy w tabeli PRACOWNICY ! "#$ 6 " %" & ! "#$ 6 !#'(") *" ' ! "#$ 5 Rafał Kowalski NAZWISKO IMIE Kudłaty Pryszczaty Pij cy Ponury Kulawy Stanisław Mieczysław Gustaw Bolesław Franciszek Liczy rekordy, w których chocia jedna kolumna nie jest pusta. GROUP BY WYDZIALY KIEROWNIK_ID WYDZIAL_ID 3 4 4 2 3 2 3 1 2 WYDZIAL_ID 1 2 3 4 Poj cie agregowania danych wi NAZWA KIEROWNIK_ID SIEDZIBA_ID spedycja magazyn transport kadry 4 2 3 10 20 10 30 e si z wykorzystaniem klauzuli grupowania: GROUP BY . . . poł czonej z zastosowaniem specjalnych funkcji agreguj cych: MIN() MAX() AVG() SUM() COUNT() . . . Agregowanie pozwala odpowiedzie na pytania postaci: Pogrupuj rekordy wg wskazanego kryterium a nast pnie wykonaj operacje typu: Pomija rekordy z pustym wpisem w kolumnie. policz rekordy, wyznacz warto ci minimalne/maksymalne/ rednie, oblicz sumy warto ci liczbowych. 21 Składnia GROUP Rafał Kowalski =ANY jest równowa ne IN 20 Agregowanie wyników PRACOWNICY KIEROWNIK_ID WYDZIAL_ID 3 4 4 UWAGA Rafał Kowalski PRACOWNICY PRACOWNIK_ID = != => > <> 23 Rafał Kowalski BY 22 PODZAPYTANIA Rafał Kowalski 24 4 PODZAPYTANIA „WHERE” zwracaj ce wiele wierszy PRACOWNICY PRACOWNIK_ID 1 2 3 4 5 NAZWISKO Kudłaty Pryszczaty Pij cy Ponury Kulawy IMIE STANOWISKO Stanisław kierownik Mieczysław kierowca Gustaw magazynier Bolesław kierownik Franciszek goniec +++ +++ ++ WARUNEK PODZAPYTANIA w klauzuli „HAVING” PRACOWNICY WYDZIALY PLACA WYDZIAL_ID WYDZIAL_ID NAZWA KIEROWNIK_ID SIEDZIBA_ID 1 spedycja 4 2100 3 2 magazyn 2 1850 2 3 transport 3 300 3 4 kadry 2300 1 Wy 3100 3 nazwiska, Wy wietl wietl nazwiska,stanowiska stanowiskai i 10 20 10 30 pensje pensjepracowników pracownikówzarabiaj zarabiaj cych cych najmniej najmniejwwswoich swoichwydziałach. wydziałach. PRACOWNIK_ID 1 2 3 4 5 NAZWISKO Kudłaty Pryszczaty Pij cy Ponury Kulawy =ANY jest równowa ne IN IMIE WYDZIALY STANOWISKO Stanisław kierownik Mieczysław kierowca Gustaw magazynier Bolesław kierownik Franciszek goniec PLACA WYDZIAL_ID WYDZIAL_ID NAZWA KIEROWNIK_ID SIEDZIBA_ID 1 spedycja 4 10 2100 3 2 magazyn 2 20 1850 2 3 transport 3 10 300 Wy 3wietl nazwy i rednie płace Wy wietl nazwy i rednie płace 30 4 kadry 2300 tych1wydziałów, które przekraczaj 3100 tych3 wydziałów, które przekraczaj redni redni płac płac wydziału wydziału‘magazyn’ ‘magazyn’ +++ +++ Etap PIERWSZY. +++ +++ + + + WARUNEK Etap TRZECI. IN, ANY, ALL, EXISTS (PODZAPYTANIE ) (PODZAPYTANIE ) =, !=, <,>,>=,<=. Rafał Kowalski 25 Etap DRUGI. Rafał Kowalski PODZAPYTANIA skorelowane { } {wskazówka} lista referencyjna tabel { warunki S wyboru lista wy wietlania PODZAPYTANIA skorelowane ? ? 26 Stosowane w przypadkach, gdy interesuj ca jest tylko odpowied na pytanie, czy wiersz o zadanych warunkach istnieje (lub nie istnieje). EXISTS } Nale y do najbardziej wydajnych sposobów wykonywania zło onych zapyta do bazy danych. lista grupowania { { warunki G wyboru lista kolejno ci } } Tabele tymczasowe generowane podczas wykonywania W klauzuli warunkowej zapytania wewn trznego wyst puje odwołanie do kolumny z zapytania zewn trznego. IN ANY ALL zapyta nie posiadaj indeksów, co znakomicie je spowalnia. ; Rafał Kowalski 27 Rafał Kowalski 28 TRANSAKCYJNO MODYFIKOWANIE DANYCH Jawne rozpocz cie transakcji. Niejawne rozpocz cie transakcji. SET TRANSACTION . . . BEGIN . . . Polecenie DML (INSERT, UPDATE) Dowolne polecenia SQL rodowisko izolowanych modyfikacji, które s niewidoczne dla pozostałych u ytkowników systemu. Wycofanie dokonanych zmian z bazy danych. DML COMMIT INSERT UPDATE DELETE TRUNCATE Rafał Kowalski 29 Trwałe zapisanie dokonanych zmian w bazie danych i pokazanie pozostałym u ytkownikom systemu. ROLLBACK Rafał Kowalski Jawne zako czenie transakcji 30 5 Składnia UPDATE START UPDATE SET tabela Składnia DELETE STOP kolumna wyra enie = TRUNCATE TABLE tabela DELETE FROM tabela , START WHERE STOP warunek S wyboru warunek S wyboru WHERE Rafał Kowalski 31 Rafał Kowalski 32 CREATE TABLE Przykład 1,2 , '& " %&* ) -% ./ 2/ (!" ,0 " %" & 3/ ' * '(& " ) & . " .5 MODYFIKOWANIE SCHEMATÓW $ DDL , '& " %&* ) -% ./ (!" ,0 1 2/ " %" & 3/ ' * '(& " ) & . " .5 CREATE ALTER DROP ) & 444 4 $ Rafał Kowalski 33 CREATE TABLE Przykład 3,4 , '& " %&* ) -% ./ (!" ,0 1 2/ " %" & 3/ ' * '(& " ) & . " .5 ,* ) -* 0 ,* (* ,* ) & ,* "* 6 6 CREATE TABLE nazwa tabeli ,* 6 6 444 4 ) & 7 nazwa kolumny typ danych (* out-of-line . .5 0 ) STOP 444 4 wył cznie inline ! ./ 2/ 3/ ( 7 $ , '& " %&* ) -% (!" ,0 1 " %" & ' * '(& " ) & " ,* ) -* ,* ) & ,* "* 34 CREATE TABLE Składnia START ) & inline Rafał Kowalski CONSTRAINT nazwa ograniczenia Ograniczenie integralno ci kolumny Ograniczenie integralno ci tabeli , %&* ) -% " $ Rafał Kowalski 35 Rafał Kowalski 36 6 CREATE TABLE Składnia warunek integralno ci kolumny START DEFAULT warto CONSTRAINT nazwa ograniczenia CHECK ( domniemana STOP CONSTRAINT START PRIMARY KEY warunek logiczny kolumny CREATE TABLE Składnia warunek integralno ci tabeli nazwa ograniczenia ( STOP nazwa kolumny ) PRIMARY KEY ) , UNIQUE CHECK ( FOREIGN KEY ( warunek logiczny kilku kolumn jednego wiersza ) UNIQUE NOT NULL REFERENCES nazwa kolumny ( REFERENCES ) nazwa kolumny Rafał Kowalski nazwa tabeli 37 ( nazwa kolumny 38 ALTER TABLE Składnia 1 nazwa tabeli nazwa schematu . CASCADE CONSTRAINTS ALTER TABLE nazwa tabeli nazwa schematu SIEDZIBY SIEDZIBA_ID ULICA KOD_POCZTOWY MIASTO STAN_PROWINCJA KRAJ_ID ) , Rafał Kowalski DROP TABLE Składnia DROP TABLE ) , nazwa tabeli <pk> NUMBER(4) VARCHAR2(40) VARCHAR2(12) VARCHAR2(30) VARCHAR2(25) <fk> CHAR(2) . { WYDZIALY SIEDZIBA_ID WYDZIAL_ID <pk> NUMBER(4) NAZWA VARCHAR2(30) KIEROWNIK_ID <fk> NUMBER(6) SIEDZIBA_ID <fk> NUMBER(4) Nieograniczona ilo opcji zmian } KRAJ_ID Rafał Kowalski 39 Rafał Kowalski ALTER TABLE Składnia 2 warunki integralno ci tabeli Typy danych SQL 99 1 Oracle CONSTRAINT lista przecinkowa nazw kolumn ) Warunek logiczny zawieraj cy nazwy kilku kolumn tego samego rekordu CHECK ( lista przecinkowa nazw kolumn REFERENCES Nazwa tabeli . MySQL ANSI ZNAKOWE lista przecinkowa nazw kolumn klucza UNIQUE ( nazwa schematu MS SQL nazwa PRIMARY KEY ( FOREIGN KEY ( 40 CHAR(n)255 NCHAR(n)4/8000 VARCHAR(n)255 NVARCHAR(n)4/80 SET(w1,w2,...,wn)64 00 LONGTEXT4GB TEXT2GB MEDIUMTEXT65kB .UNICODE DECIMAL(m,d) NUMBER(p1..38,s-84..127) NUMERIC(p1..38,s) DOUBLE(p,s) DECIMAL(p1..38,s) NUMERIC(p,s) DECIMAL(p,s) NUMBER(38) INT, BIGINT TINYINT SMALLINT BIGINTbardzo du o SMALLINT-32768..32767 TINYINT -128..127 INTEGER INT SMALLINT NUMBER FLOAT REAL FLOAT(p ..24..53) REAL(p,s) FLOAT float 126 bit DOUBLE PRECISION REAL float 64 bit ) PRIMARY KEY PRIMARY KEY UNIQUE NATIONAL CHAR CHARACTER VARYING (n) LICZBOWE ( lista przecinkowa nazw kolumn Rafał Kowalski NCHAR(n)2000 NVARCHAR2(n)4000 CLOB4GB 41 ) Rafał Kowalski 42 7 Typy danych SQL 99 2 Oracle MS SQL MySQL Typy danych SQL 99 3 ANSI Oracle MS SQL MySQL BINARNE BLOB4GB BFILE outside database IMAGE2GB BINARY8KB VARBINARRAY8KB LONGBLOB, MEDIUMBLOB DATE DATETIME „Binary Large Object” TIMESTAMP BIT, BOOL=tinyint(1) BEZ INDEKSOWANIA ! Zajmuj bajt pami ci 8B, dokładno 1-01-4712BC .. 31-12-9999AD LOGICZNE DATETIME 3,33 ms. SMALLDATETIME 1/1/1900 .. 6/6/2079 4B, dokładno 1 m. Warto ci logiki Łukasiewicza: TRUE, FALSE, UNKNOWN (NULL). Rafał Kowalski 1000-01-01 .. 9999-12-31 1/1/1753 .. 12/31/9999 DATE BIT(0,1,NULL) TIMESTAMP 1000-01-01 00:00:00 9999-12-31 23:59:59 TIMESTAMP YEAR 43 Rafał Kowalski 0 (0" 8 1 38 , ) (%" & $ MS SQL 0 (0"1 Pozwala na przechowywanie prawie ka dego innego podstawowego typu SQL_VARIANT danych SQL Server. Wyj tki stanowi ! " (!$ ! ) &!' ! #$%&!' ! . Jest podobny do typu danych RowGUID ; = = = = = = = = ENUM('value1','value2',...) TYP IMIENNY Kolumna typu tekstowego, która mo e przybiera warto ci wył cznie z wylistowanego zbioru, zawieraj cego maksymalnie 65535 ró nych warto ci. SET('value1','value2',...) Kolumna typu tekstowego, która mo e zawiera od 0 do 64 elementów zbioru. TYP ZBIOROWY Rafał Kowalski 4 44 44 9 9 , )9 9 44: ; : 44 9 9 (%" & 0 (0" $ Budowanie identyfikatorów w bazach rozproszonych. MySQL 44 UWAGA NA POLA TEKSTOWE !!! ORACLE PSEUDOKOLUMNA - Unikalny adres wiersza tabeli w bazie danych (typu: tekstowego). DATE TIMESTAMP TIME Wybrane typy danych serwerów SQL 1 ROWID ANSI DATA I CZAS 4$ 9 9 44:< ; : < ; = = = = = = = = 45 Rafał Kowalski Numerowanie automatyczne (AUTONUMEROWANIE) 1 46 Numerowanie automatyczne (AUTONUMEROWANIE) 2 MS SQL MySQL ! " 0*" ' (!" ,0 1 6 @ # $ ? ? ! "# ! "# ./ ! " 0*" ' (!" ,0 1 3/ 3/ SET IDENTITY_INSERT pracownicy ON pozwala na wprowadzanie bezpo rednie warto ci ! "# (!" ,0 ! "#$ ! "#$ 1 > ( 4$ ! "# ? ? TYLKO JEDNA taka kolumna w tabeli. SUBINDEKSOWANIE zło onego klucza głównego. ZEROWANIE po usuni ciu wszystkich wierszy. 1 > ( 4$ NIE ZERUJE LICZNIKA!!! > ! "#4 TYLKO JEDNA taka kolumna w tabeli. AA" '& "# Rafał Kowalski ! "# " '& * & (!" ,0 ! "# 47 BC!#D& & ! Rafał Kowalski ! , " % ",& " & 48 8 CREATE CREATE INDEX Składnia 1 {} ON INDEX nazwa indeksu nazwa schematu PRZETWARZANIE TRANSAKCYJNE . nazwa tabeli nazwa schematu nazwa aliasu . ! nazwa kolumny ( funkcja kolumn {} BEGIN . . . COMMIT . . . ROLLBACK . . . ) , Rafał Kowalski 49 Rafał Kowalski Przetwarzanie Transakcji Spójny ci g powi zanych ze sob logicznie operacji przetwarzania danych w bazie. SZBD automatycznie synchronizuje i szereguje transakcje tak, aby nie powstały konflikty i niespójno ci danych: a) metod porz dkowania według etykiet czasowych, b) metod walidacji, c) metod blokowania – w praktyce komercyjnych baz danych stosuje si wył cznie blokowanie . Transakcje zatwierdza si poleceniem COMMIT a wycofuje poleceniem ROLLBACK. UWAGA: Polecenia takie jak CREATE/ALTER/DROP, GRANT i REVOKE ko cz si niejawnym poleceniem COMMIT. Rafał Kowalski Własno ci transakcji ATOMOWO Transakcja mo e by zatwierdzona lub wycofana przez u ytkownika. Wycofanie transakcji wi e si z odtworzeniem pierwotnego stanu wszystkich zmienionych atrybutów. Zatwierdzona przez u ytkownika transakcja mo e zosta wycofana przez SZBD w przypadku niemo liwo ci jej wypełnienia. 51 (ang. consistency) Rafał Kowalski Niepo 52 dane zjawiska współdzielenia danych Standardy SQL (ang. i SQL92 laj Bł dne ANSI/ISO odczyty dirty okre reads) integralno Zatwierdzona transakcja przeprowadza baz z jednego stanu spójnego do innego stanu spójnego ( adne z ogranicze integralno ciowych nie jest naruszone). 3 niepo dane zjawiska zakłócaj ce danych i 4 poziomy izolacji dla ochrony przed nimi. Transakcja odczytuje dane cz ciowo nadpisane przez inny proces ale jeszcze nie zatwierdzone (commited). Niepowtarzalne odczyty (ang. fuzzy reads) IZOLACJA (ang. Isolation) Zmiany dokonywane w bazie danych podczas trwania transakcji jednego u ytkownika b d widoczne przez innych u ytkowników dopiero po zatwierdzeniu transakcji. TRWAŁO (ang. atomicity) Wszystkie akcje tworz ce transakcj musz zosta wykonane w cało ci. Własno ci transakcji SPÓJNO 50 Złudne odczyty (ang. phantom read) (ang. Durability) Po zatwierdzeniu transakcji, zmodyfikowane informacje pozostaj trwale zapami tane w bazie danych. Rafał Kowalski Transakcja odczytuje ponownie dane i stwierdza ich ró nice, spowodowane przez inny proces, który zatwierdził swoj transakcj . 53 Ponowne wykonanie zapytania (query) oddaje inny zestaw wierszy, uzupełniony o wykonane i zatwierdzone w mi dzyczasie transakcje. Rafał Kowalski 54 9 Normalizacja - Wst Poziomy izolowania transakcji p Technika działania, stosowana podczas tworzenia relacyjnych baz danych. Poziom Bł dne odczyty Niepowtarzalne odczyty Złudne odczyty TAK TAK TAK NIE TAK TAK NIE NIE TAK NIE NIE NIE Read uncommitted Read committed Repeatable read Serializable Teoria normalizacji jest oparta na zestawie Postaci Normalnych. Relacja jest w okre lonej postaci normalnej gdy spełnia odpowiedni zestaw ogranicze . Aktualnie rozró nia si pi postaci normalnych, z których pierwsze trzy wprowadził E.F. Codd i zastosował do nich okre lenia: 1NF, 2NF i 3NF. Proces normalizacji jest (zazwyczaj) ko czony po osi gni ciu 3NF, która w wi kszo ci praktycznych zastosowa uznawana jest za wystarczaj c . Przekształcanie relacji do zaawansowanych postaci normalnych dotyczy tabel, które posiadaj wi cej ni 3 atrybuty i ka dy z nich pełni funkcj klucza. Rafał Kowalski 55 Rafał Kowalski Przykład złego projektu ? Eliminowanie istnienia wielu (ró nych) kopii tej samej informacji. Nazwisko Imie Nadmiarowo Nazwa wydziału 1 Kudłaty Stanisław transport Pij cy Gustaw Pryszczaty Mieczysław magazyn Pryszczaty Mieczysław 3 Pij cy Gustaw transport Pij cy Gustaw 4 Ponura Mariola spedycja Ponura Mariola 5 Kulawy Franciszek spedycja Ponura Mariola 6 Samotny Jan kadry Samotny Jan Co b dzie, je li usuniemy rekord pracownika z identyfikatorem 6 ?: Stracimy informacje o istnieniu wydziału kadry. Efekt uboczny modyfikacji: Je eli „Ponura Mariola” wyjdzie za m i zmieni nazwisko na „Wesoła”, to trzeba b dzie dokona licznych modyfikacji w ró nych atrybutach wielu rekordów bazy danych. Problemy spójno ci informacji w sytuacji potrzeby wprowadzenia informacji o istnieniu działu „produkcja”, w którym aktualnie nikt nie pracuje. Rafał Kowalski danych. Efekt uboczny usuni cia: Kierownik 2 Sztuczne zale no ci funkcjonalne „obcych” no ci atrybutów,Eliminowanie które musz zale by wprowadzane i funkcjonalnej ró nych atrybutów. modyfikowane wspólnie. Po co normalizowa ? Unikni cie problemów i potencjalnych przyczyn bł dów, zwi zanych z: PRACOWNICY Id_pracownika 56 Efekt uboczny wstawienia: Jak (bez naruszenia spójno ci informacyjnej bazy danych) wprowadzi informacj o istnieniu działu „produkcja”, w którym aktualnie nikt nie pracuje. 57 Rafał Kowalski NORMALIZACJA – INTUICYJNA - definicja Zale no 58 Funkcjonalna - DEFINICJA Przygl daj si modelowi danych i zadawaj sobie (w my lach) pytania. Je eli sytuacja tego wymaga – zmieniaj posta modelu danych. Prac zako cz dopiero wtedy, gdy nie b dziesz potrzebował niczego zmienia . Czy na pewno zidentyfikowałem ka d informacj maj c znaczenie dla systemu ? Przed wprowadzeniem definicji postaci normalnych nale y sformułowa dwie niezb dne definicje zale no ci funkcjonalnej atrybutów relacji. Koncepcja zale no ci funkcjonalnej le y u podstaw pierwszych trzech kroków normalizacyjnych. Czy nie istniej atrybuty, które powinny (przypadkiem) nale e do innych relacjii ? Atrybut Y relacji R pozostaje w Zale no ci Czy atrybut nie ma czasem oddzielnego znaczenia jako pewna cało lepiej modelowa go jako osobn relacj ? Funkcjonalnej od atrybutu X relacji R wtedy i tylko i by mo e DEFINICJA Czy ka dy zwi zek jest naprawd istotny a nie np. potrzebny tylko podczas wykonywania pewnej funkcji ? (#'!" & &) E &( ' - #%"(-" %" #- F! " &,G FH #%"", E%"&E, %&E E &' &E &) E "I Rafał Kowalski wtedy, gdy z ka d warto ci atrybutu X jest zawsze skojarzona ta sama warto notacja: (# '0" &% 59 atrybutu Y. R.x —>; R.y Rafał Kowalski 60 10 Pełna Zale no Dotyczy relacji, posiadaj cych klucze główne zło one z kilku atrybutów. Atrybut Y relacji R pozostaje w Pełnej Zale no ci Funkcjonalnej od klucza K relacji R wtedy i tylko wtedy, DEFINICJA NORMALIZACJA Funkcjonalna - DEFINICJA gdy jest zale ny funkcjonalnie od X i nie jest zale ny funkcjonalnie od adnej kombinacji atrybutów tworz cych klucz K. Rafał Kowalski DATA 99-11-10 99-09-26 99-10-24 99-10-25 99-09-16 99-08-23 STAN1 kapitan kapitan kapitan kapitan kapitan kapitan 00:00 00:00 00:00 00:00 00:00 00:00 NAZWA_LINI SWISAIR PACANOW-AI PLL LOT PLL LOT PANAM TWA IMIE1 MAŁGORZATA JOLANTA ZBIGNIEW JAN LUCYNA EWA LOTNISKO_Z LOTNISKO_DO TORU WARSZAWA PIASECZNO WARSZAWA GARWOLIN WARSZAWA GÓRA KALWARIA W-WA WARSZAWA WESOŁA SOCHACZEW W-WA NAZW1 CISZEWSKA KISZAKIEWICZ SŁOMSKA PIASECKI KR CIK REBKOWSKA STAN2 2-gi pilot 2-gi pilot 2-gi pilot IMIE2 DONATA EL BIETA URSZULA 2-gi pilot EDYTA 2-gi pilot ANNA 61 PRODUCENT JAK MIG PZL IL SU SU NAZW2 SOKÓŁ KALINOWSKA PIETKIEWICZ PAWLUCZUK J DRZEJEWSKA MODEL 25 21 27 82 17 17 STAN3 naw igator naw igator naw igator naw igator naw igator naw igator POJEMNOSC 56 2 28 150 1 1 IMIE3 WANDA AGNIESZKA KASIA MONIKA BEATA JANINA NAZW3 MICHALSKA WINNICKA ANNA ROMAN BIELSKA PIETRASZEWSKI Rafał Kowalski Pierwsza Posta Normalna (1NF) 62 Druga Posta Normalna (2NF) LOT NUMER_LOTU DATA NAZWA_PRZEWOZNIKA NAZWA_LOTNISKA_POCZATKOWEGO NAZWA_LOTNISKA_DOCELOWEGO TYP_SAMOLOTU MODEL_SAMOLOTU LICZBA_PASAZEROW STANOWISKO1 NAZWISKO1 IMIE1 STANOWISKO2 NAZWISKO2 IMIE2 STANOWISKO3 NAZWISKO3 IMIE3 CZLONEK_ZALOGI IDENTYFIKATOR_ZALOGI STANOWISKO NAZWISKO IMIE 1NF Tabela (encja) jest w 1NF: Posiada okre lony klucz główny. Nie posiada powtarzaj cych si atrybutów. Je li atrybut posiada kilka warto ci w jednej krotce, to definiujemy now tabel (encj ), opisan przez ten atrybut. Tablela (encja) jest w 2NF: Je eli encja posiada klucz główny zło ony z kilku atrybutów, to wszystkie atrybuty zale tylko od całego klucza głównego. Je eli atrybut zale y tylko od cz ci klucza głównego, to ten atrybut i ta cz identyfikatora tworz podstaw nowej encji. CZLONEK_ZALOGI IDENTYFIKATOR_ZALOGI STANOWISKO NAZWISKO IMIE 2 NF LOT Obslugiwany przez Przydzielony do Przydzielony do NUMER_LOTU DATA NAZWA_PRZEWOZNIKA NAZWA_LOTNISKA_POCZATKOWEGO NAZWA_LOTNISKA_DOCELOWEGO TYP_SAMOLOTU MODEL_SAMOLOTU LICZBA_PASAZEROW Rafał Kowalski 63 Obslugiwany przez TRASA_LOTU stanowi podstawe LOT DATA zgodny z NUMER_LOTU NAZWA_PRZEWOZNIKA NAZWA_LOTNISKA_POCZATKOWEGO NAZWA_LOTNISKA_DOCELOWEGO TYP_SAMOLOTU MODEL_SAMOLOTU LICZBA_PASAZEROW Rafał Kowalski 64 Trzecia Posta Normalna (3NF) Tabela (encja) jest w 3NF: STANOWISKO ID_STANOWISKA NAZWA PRACOWNIK IDENTYFIKATOR_PRACOWNIKA NAZWISKO IMIE jest podstawa na Wszystkie atrybuty encji zale bezpo rednio od klucza głównego. Je eli jaki atrybut zale y od innego atrybutu, który nie jest cz ci klucza głównego, to atrybuty te tworz podstaw nowej encji. otrzymuje dotyczy FIRMA_PRZEWOZOWA PRZYDZIAL_ZALOGI ID_PRZEWOZNIKA NAZWA_PRZEWOZNIKA SAMOLOT ID_SAMOLOTU TYP MODEL LICZBA_PASAZEROW wykonuje obslugiwana przez 3 NF wykorzystany do do odbycia obslugiwany przez stanowi podstawe LOT TRASA_LOTU NUMER_LOTU na pokladzie z DATA zgodny z jest poczatkiem do Rafał Kowalski jest koncem LOTNISKO ID_LOTNISKA NAZWA 65 11