Bazy danych 1 - opracowania wykładów 1. Sześć podstawowych wymagań stawianych bazie danych a. Spójność bazy danych i. poprawność danych z punktu widzenia przyjętych kryteriów ii. wierne odzwierciedlenie danych rzeczywistych iii. spełnienie ograniczeń nałożone przez użytkowników iv. odporność na anomalie będące wynikiem współbieżności dostępu do danych v. odporność na błędy, awarie i inne anormalne sytuacje wynikające z zawodności środowiska sprzętowo-programowego vi. odporność na błędy użytkowników b. Efektywne przetwarzanie danych i. efektywne metody dostępu do danych ii. optymalizacja metod dostępu do danych iii. niezależność aplikacji od fizycznych metod dostępu do danych c. Poprawne modelowanie świata rzeczywistego i. wspomaganie procesu projektowania i utrzymania bazy danych ii. różne poziomy modelowania danych iii. transformacje między modelami danych d. Autoryzacja dostępu do danych i. użytkownicy z indywidualnymi hasłami dostępu ii. użytkownicy i ich uprawnienia e. Współbieżność dostępu do danych i. równoczesny dostęp do tych samych danych przez wielu użytkowników ii. konflikt odczyt-zapis, zapis-zapis f. Metadane i. dane o danych, strukturach dostępu, użytkownikach i ich prawach 2. Technologia baz danych a. Fizyczne struktury danych i metody dostępu i. pliki uporządkowane, haszowane, zgrupowane, indeksy drzewiaste i bitmapowe ii. metoda połowienia binarnego, haszowanie statyczne i dynamiczne, metody połączenia, sortowanie, grupowanie iii. składniowe i kosztowe metody optymalizacji dostępu iv. fizyczna niezależność danych b. Przetwarzanie transakcyjne (spójność bazy danych) OLTP - On-Line Transaction Processing) i. dostęp do bazy danych za pomocą transakcji o własnościach ACID1 ii. metody synchronizacji transakcji (2PL, znaczniki czasowe, wielo-wersyjność danych) iii. metody odtwarzania spójności bazy danych (plik logu, odtwarzanie i wycofywanie operacji, punkty kontrolne iv. archiwizacja bazy danych i odtwarzanie po awarii 1 ACID - zbiór właściwości, które gwarantują poprawne przetwarzanie transakcji w bazach danych. ACID jest skrótem od angielskich słów: atomicity – atomowość, consistency – spójność, isolation – izolacja, durability – trwałość Strona 1 z 5 Bazy danych 1 - opracowania wykładów c. Modele danych - każdy model danych definiuje trzy podstawowe elementy. tj. struktury danych (reprezentowanie w bazie danych obiektów ze świata rzeczywistego), operacje na danych inaczej manipulacje (operatory modelu danych) i ograniczenia integralnościowe, reguły poprawności danych (np. data rozpoczęciadata zakończenia) nakładane na dane. i. modele pojęciowe (model związków-encji, UML2) ii. modele logiczne (relacyjny, obiektowy, obiektowo-relacyjny, semistrukturalny, hierarchiczny, sieciowy 1. Relacyjny model danych: a. relacje b. selekcja, projekcja, połączenie, operacje na zbiorach c. klucz podstawowy, klucz obcy, zawężenie dziedziny, unikalność, null 2. Obiektowy model danych (język UML): a. obiekt: stan i funkcjonalność b. cechy obiektów: atrybuty i związki c. funkcjonalność obiektu: metody d. tożsamość obiektu e. hermetyczność obiektów f. klasa: typ danych i moduł programowy g. dziedziczenie: współdzielenie implementacji i relacja podtypu h. przeciążenie i dynamiczne wiązanie funkcjonalności obiektów d. Narzędzia programistyczne i. języki budowy aplikacji ii. narzędzia modelowania i projektowania 1. Modelowanie - odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym (bazie danych). Modele: a. konceptualne (model związków-encji ER, model UML) reprezentacja obiektów w uniwersalnym modelu niezależnym od modelu implementacyjnego b. implementacyjne modele wykorzystywane do implementacji modeli konceptualnych; modele danych (relacyjne obiektowe, itp.) 2. Cykl projektowania Systemu Informatycznego a. analiza b. projektowanie c. implementacja d. wdrożenie e. utrzymanie iii. metodyki projektowania 3. System zarządzania bazą danych 2 UML - język formalny wykorzystywany do modelowania różnego rodzaju systemów Strona 2 z 5 Bazy danych 1 - opracowania wykładów a. Oprogramowanie zarządzające całą bazą danych b. Funkcjonalność i. język bazy danych - tworzenie, definiowanie, wyszukiwanie i pielęgnacja danych w bazie danych ii. struktury danych - efektywne składowanie i przetwarzanie dużych wolumenów danych iii. optymalizacja dostępu do danych iv. współbieżny dostęp do danych v. zapewnienie bezpieczeństwa danych zagrożonego awaryjnością środowiska sprzętowo-programowego vi. autoryzacja dostępu do danych vii. wielość interfejsów dostępu do baz danych 4. Pojęcia a. SBD - system bazy danych b. SZBD - system zarządzania bazą danych (komercyjne: Oracle, IBM, Microsoft, Sybase; Niekomercyjne: MySQL, PostgreSQL, Firebird) c. Język deklaratywny - język za pomocą którego specyfikujemy tylko to co chcemy otrzymać, nie specyfikujemy sposobu (algorytmu) w jaki ma być zrealizowane. d. Baza danych - zbiór relacji e. Schemat bazy danych - zbiór schematów relacji f. Schemat relacji - zbiór {atrybut, dziedzina, [ograniczenia integralnościowe]} g. Relacja - zbiór krotek, cechy: i. każdy atrybut relacji ma unikalną nazwę ii. porządek atrybutów w relacji nie jest istotny iii. porządek krotek w relacji nie jest istotny i nie jest elementem definicji relacji iv. wartości atrybutów są atomowe (elementarne) v. relacja nie zawiera rekordów powtarzających się (z definicji zbiorów) h. Krotka - lista wartości atomowych i. Wyróżniony klucz - klucz podstawowy (primary key) j. Pozostałe klucze - klucze wtórne lub kandydujące (foreign key) k. Klucz potencjalny - jest wybierany spośród zbiorów identyfikujących. Jest to taki zbiór kolumn (atrybutów), w których wartości (w kluczu prostym) lub kombinacje wartości (w kluczu złożonym) jednoznacznie identyfikują każdy wiersz (krotkę) tej relacji. Jednocześnie kluczem potencjalnym jest taki zbiór kolumn, którego żaden podzbiór nie jest zbiorem identyfikującym relacji (minimalny, zredukowany zbiór identyfikujący). Klucz nie może zawierać wartości nieokreślonych (NULL). Klucz relacji = klucz kandydujący = klucz potencjalny. Klucz może być prosty (jedna kolumna) lub złożony (co najmniej dwie kolumny). l. Ograniczenia integralnościowe - mechanizm (reguła), który gwarantuje ze dane wpisane do relacji spełnią nałożone na nie warunki. Definiuje sie na poziomie pojedynczego atrybutu lub całej relacji. Rodzaje: i. klucz podstawowy (primary key) - atrybut (lub zbiór atrybutów), którego wartość jednoznacznie identyfikuje krotkę, wartość ta jest unikalna w obrębie całej relacji i jest niepusta Strona 3 z 5 Bazy danych 1 - opracowania wykładów m. n. o. p. q. r. s. 3 ii. klucz obcy (foreign key) - atrybut (lub zbiór atrybutów), który wskazuje na klucz podstawowy, służy do reprezentowania powiązań między danymi (łączenia relacji), podzbiór FK jest nazywany kluczem obcym jeżeli: 1. atrybuty FK mają taką samą domenę jak atrybuty klucza podstawowego 2. dla każdej krotki w relacji R1 istnieje dokładnie jedna krotka z R2 lub null iii. unikalność (unique) iv. zawężenie domeny/dziedziny (check) - ograniczenie dozwolonych wartości do pewnego podzbioru przez wyrażenie logiczne określające przedział lub za pomocą wyliczeniowej listy wartości np. płeć K, M, nieznana, N/A v. wartość pusta/niepusta (NULL/NOT NULL) Operatory algebry relacyjnej - działają w trybie odczytu, mogą być stosowane do wszystkich możliwych relacji, bez INSERT, DELETE, UPDATE - ponieważ modyfikują zawartość zmiennej relacyjnej. i. σ <warunek selekcji> (<nazwa relacji>) wyodrębnienie podzbioru krotek relacji, które spełniają warunek selekcji . Jest komutatywna3. (normalny select z wherem) ii. π <atrybuty> (<nazwa relacji>) - wyodrębnienie wybranych atrybutów relacji. Nie jest komutatywna. (select z podaniem kolumn) Encja - reprezentuje zbiór obiektów opisany tymi samymi cechami (atrybutami, własnościami); informacje o obiektach będą przechowywane w BD; konkretny obiekt świata rzeczywistego jest reprezentowany jako wystąpienie encji (instancję encji). Każda encja posiada: unikalną nazwę oraz zbiór cech (atrybutów). Nazwa encji powinna być rzeczownikiem w liczbie pojedynczej. Złączenie naturalne - NATURAL JOIN - dwóch relacji np. A i B względem (wyszczególnionych) kolumn a i b (przy czym a jest jedną z kolumn relacji A, a b jest jedną z kolumn relacji B) jest zapisywane jako A (+) B (a=b) => R. Relacja wynikowa R jest zbiorem wszystkich możliwych kombinacji krotek należących do obu relacji (ale) spełniających warunek równości wartości w obu (wskazanych) kolumnach a i b, ale z wyłączeniem kolumny b (gdyż wartości w kolumnie b są identyczne z wartościami kolumny a, więc nie ma sensu ich dublować) Język proceduralny - użytkownik poza sformułowaniem samego zadania musi pamiętać o dodatkowych czynnościach pomocniczych (nie będących główną treścią samego zadania). Użytkownik musi zwracać uwagę na deklarację typów danych, błędy w samych danych lub błędy kompilacji. Język deklaratywny - charakteryzuje się tym, że użytkownik musi jedynie sformułować zadanie a następnie komputer sam przekształca zadania sformułowane przez użytkownika do postaci języka proceduralnego. Zapytania agregujące - MAX(), MIN(), AVG(), SUM(), COUNT() Funkcja warunkowa - DECODE(kol1, war_do_kol1, rezultat_kol1) as 'alias' komutatywna - przemienna Strona 4 z 5 Bazy danych 1 - opracowania wykładów t. Operatory algebraiczne i. UNION - suma zbiorów, ii. UNION ALL - suma zbiorów bez eliminacji powtórzeń, iii. EXCEPT (MINUS) - różnica, iv. NTERSECT - przecięcie zbiorów u. PL/SQL - autorskie rozwiązanie firmy ORACLe. Polega na rozszerzeniu języka SQL o elementy proceduralne (nie wchodzące w skład standardu). Są to: instrukcje warunkowe: IF ... THEN ... ELSE oraz pętle LOOP ... END LOOP, FOR ... IN ... LOOP, WHILE ... LOOP. W skład rozszerzenia wchodzi także możliwość definiowania i używania zmiennych. v. Normalizacja i. Warunki: 1. własność zachowania atrybutów - żaden atrybut nie zostanie zagubiony w trakcie procesu normalizacji 2. własność zachowania informacji - dekompozycja relacji nie prowadzi do utraty informacji 3. własność zachowania zależności - wszystkie zależności funkcyjne są reprezentowane w pojedynczych schematach relacji ii. Proces normalizacji: 1. UNF - zapewnij, aby wszystkie encje były jednoznacznie identyfikowane przez kombinacje atrybutów i/lub ich związki 2. 1NF - Relacja R jest w pierwszej postaci normalnej (1NF) wtedy i tylko wtedy, gdy wszystkie użyte dziedziny zawierają tylko atomowe wartości - usuń powtarzające się atrybuty lub grupy atrybutów i rozłóż atrybuty 3. 2NF - Relacja R jest w drugiej postaci normalnej (2NF) wtedy i tylko wtedy gdy jest w postaci 1NF oraz każdy niekluczowy atrybut jest w pełni funkcyjnie zależny od klucza głównego - usuń wszystkie atrybuty, które zależą tylko od części jednoznacznego identyfikatora 4. 3NF - Relacja R jest w trzeciej postaci normalnej (3NF) wtedy i tylko wtedy, gdy jest w 2NF oraz każdy niekluczowy atrybut jest nietranzytywnie (tylko bezpośrednio) zależny od klucza głównego usuń atrybuty zależne od atrybutów, które nie są częścią jednoznacznego identyfikatora 5. 4NF - Relacja R jest w czwartej postaci normalnej (4NF) względem zbioru zależności wielowartościowych MVD wtedy i tylko wtedy gdy jest w 3NF i dla każdej zależności wielowartościowej 𝑋 →→ 𝑌 ∈ 𝑀𝑉𝐷 zależność ta jest trywialna (zbiór Y jest podzbiorem X lub X U Y = R) lub X jest nadkluczem schematu. Strona 5 z 5