BAZY DANYCH WYKŁAD 5 Normalizacja relacji. Zapytania zagnieżdżone cd. Wady redundancji Konieczność utrzymania spójności kopii, Marnowanie miejsca, Anomalie. (Wybrane materiały) Dr inż. E. Busłowska Copyright 2014-2015 E. Busłowska. 1 Copyright 2014-2015 E. Busłowska. 2 Anomalie Związane z aktualizacją, Związane z istnieniem, Związane z wprowadzaniem, Związane z usuwaniem. Podział relacji Twierdzenie Jeżeli w relacji R={X, Y, Z} istnieją zależności funkcyjne X Y, to relacja R jest relacją rozkładalną, możemy więc zapisać: R=R1[X, Y]*R2[X, Z] Copyright 2014-2015 E. Busłowska. 3 Copyright 2014-2015 E. Busłowska. 4 Rozkład relacji i normalizacja redundancję usuwa się przez rozkład relacji, rozkład odwracalny: można odwrócić przez naturalne złączenie, rozkład relacji powinien doprowadzić do tzw. postaci normalnej, rozkład relacji nie powinien powodować utraty zależności istniejących w relacji pierwotnej. PROCES NORMALIZACJI RELACYJNEJ BAZY DANYCH Postać normalna pozwala minimalizować koszty przechowywania i aktualizowania oraz zwiększać wiarygodność danych. Wszystkie relacje znormalizowane i nieznormalizowane Relacja w 1NF wszystkie atrybuty mają wartości proste Relacja w 2NF nie ma zależności części klucza Relacja w 3NF nie ma zależność tranzytywnych Relacja w 4NF wiąże się z zależnościami wielowartościowymi Copyright 2014-2015 E. Busłowska. 5 Copyright 2014-2015 E. Busłowska. 6 1
Pierwsza postać normalna Relacja jest w 1NF gdy wszystkie atrybuty są atomowe (prostych typów). 1NF jest wymogiem dla rachunku relacyjnego, a więc i języków zapytań. Wady relacji w pierwszej postaci normalnej Dublowanie się danych prowadzi do niepotrzebnego zajmowania pamięci i przedłużania wykonywania operacji relacyjnych. Może również wystąpić niespójność danych problemy przy aktualizacji. Usuwając informacje możemy utracić dane. Copyright 2014-2015 E. Busłowska. 7 Copyright 2014-2015 E. Busłowska. 8 Druga postać normalna Dana relacja jest w drugiej postaci normalnej, jeśli każdy jej atrybut nie wchodzący w skład klucza potencjalnego jest w pełni funkcjonalnie zależny od wszystkich kluczy potencjalnych. Przyczyną braku 2NF jest błędne połączenie danych. Relacja ZAMÓWIENIA w 2PN 1. DOSTAWCA NA ZAMÓWIENIU <, Nr_ dostawcy, Nazwa_dostawcy, Adres_dostawcy> 2. CZĘŚCI W MAGAZYNIE <, Nazwa_części, Magazyn, Adres_magazynu> 3. DOSTAWY CZĘŚCI < Nr_ zamówienia, Nr_ części, Ilość> Copyright 2014-2015 E. Busłowska. 9 Copyright 2014-2015 E. Busłowska. 10 Pełna zależność funkcjonalna Definicja Atrybut Y relacji R jest w pełni funkcjonalnie zależny od zbioru atrybutów X tej relacji, jeśli jest funkcjonalnie zależny od niego, ale nie jest funkcjonalnie zależny od żadnego podzbioru zbioru X. Diagramy zależności funkcyjnych Nr_ dostawcy Nazwa_części Nazwa_dostawcy Adres_dostawcy Magazyn Adres_magazyny Ilość Copyright 2014-2015 E. Busłowska. 11 Copyright 2014-2015 E. Busłowska. 12 2
Relacja w 3PN Jeśli jest w 1PN, Każdy atrybut niekluczowy jest bezpośrednio zależny funkcyjnie od całego klucza głównego, 3PN jest zazwyczaj wystarczająca Każdą relację można doprowadzić do 3PN zachowując: zależności odwracalność rozkładu Zależności tranzytywne Jeśli A B, B C, oraz A nie jest funkcyjnie zależne od B lub C wtedy C jest zależny tranzytywnie od A. Zależność tranzytywna zawiera zależności funkcyjne pomiędzy atrybutami, które nie wszystkie są kluczami. Copyright 2014-2015 E. Busłowska. 13 Copyright 2014-2015 E. Busłowska. 14 Nr_ dostawcy Nazwa_dostawcy Adres_dostawcy Diagramy zależności funkcyjnych i przechodnich Ilość Nazwa_części Magazyn Adres_magazyny Copyright 2014-2015 E. Busłowska. 15 Czwarta postać normalna Schemat relacji R ze zbiorem zależności F jest w Czwartej postaci normalnej jeśli dla każdej zależności wielowartościowej (przy czym Y jest zbiorem niepustym lub podzbiorem X, a XY nie zawiera wszystkich atrybutów R), to X jest nadkluczem do R. Jeśli F nie zawiera zależności wielowartościowych to czwarta postać normalna pokrywa się z postacią normalną Boyce'a- Codda. Copyright 2014-2015 E. Busłowska. 16 Zależność wielowartościowa Oznacza, że mając wartość jednego atrybutu, można określić wartości zbioru innego atrybutu. Oznacza się: X ->>Y, i odczytuje jako: X określa wiele Y". Przykładowo: Znając numer wykładowcy, można określić listę prowadzonych przez niego przedmiotów, Nrwykładowcy ->> Przedmiot Znając numer dostawcy można określić części, które dostarcza, Nrdostawcy ->> Część. Postać normalna Boyce'a-Codda Mówimy, że schemat relacji R ze zbiorem zależności F jest w postaci normalnej Boyce'a-Codda, jeśli zawsze, gdy w R zachodzi zależność i atrybut A nie jest zawarty w X, to X jest nadkluczem do R; oznacza to, że X jest kluczem lub że zawiera klucz. Mówiąc inaczej, jest to postać normalna, która rzeczywiście usuwa wszystkie zależności przechodnie Związki między postaciami normalnymi 4NF => BCNF => 3NF => 2NF => 1NF Copyright 2014-2015 E. Busłowska. 17 Copyright 2014-2015 E. Busłowska. 18 3
Wielowartościowe operatory porównania IN - równy dowolnej wartości podawanej Not IN - różny od wszystkich wartości podawanych przez wewnętrzną instrukcję SELECT =ANY działa tak jak IN odpowiednik logicznego or > ANY, >= ANY większy bądź większy-równy dowolnej wartości podawanej < ANY, <= ANY - mniejszy bądź mniejszy-równy dowolnej wartości podawanej = ALL - równy wszystkich wartości podawanych przez wewnętrzną instrukcję SELECT > ALL, >= ALL - większy bądź większy-równy wszystkim wartościom podawanym < ALL, <= ALL - mniejszy bądź mniejszy-równy wszystkim wartościom podawanym Zapytania proste zwracające wiele wartości WHERE IdDealera In (Select IdDealera FROM Dealerzy WHERE miasto='warszawa'); Zapytanie zewnętrzne uruchamiane na końcu Wielowartościowy operator porównania Zapytanie wewnętrzne uruchamiane na początku Copyright 2014-2015 E. Busłowska. 19 Copyright 2014-2015 E. Busłowska. 20 Słowo kluczowe ANY WHERE CenaJednostkowa >ANY (SELECT CenaJednostkowa FROM SAMOCHODY S, DEALERZY D WHERE S.IdDealera=D.IdDealera AND NazwaFirmy= Honda ); Słowo kluczowe ALL WHERE CenaJednostkowa <ALL (SELECT CenaJednostkowa FROM SAMOCHODY S, DEALERZY D WHERE S.IdDealera=D.IdDealera AND NazwaFirmy= Honda ); Copyright 2014-2015 E. Busłowska. 21 Copyright 2014-2015 E. Busłowska. 22 Słowo kluczowe ALL w klauzuli HAVING SELECT Nazwisko, Count(*) liczba, Stanowisko FROM Pracownicy p, Umowy U WHERE P.IDpracownika = U.IDpracownika GROUP BY Nazwisko, Stanowisko HAVING Count(*) >= ALL (SELECT Count(*) FROM Pracownicy pr,umowy Um WHERE Pr.IDpracownika = Um.IDpracownika AND stanowisko= Przedstawiciel handlowy GROUP BY Pr.IdPracownika, Nazwisko); Copyright 2014-2015 E. Busłowska. 23 Zapytania wielokrotne SELECT Nazwisko, Count(*) Ile FROM Pracownicy P, Umowy U WHERE P.IDpracownika = U.IDpracownika GROUP BY P.Idpracownika, Nazwisko HAVING COUNT(*) >=ALL (SELECT Count(*) FROM Umowy WHERE idpracownika IN (SELECT IdPracownika FROM Pracownicy WHERE kraj = Francja ) GROUP BY idpracownika); Copyright 2014-2015 E. Busłowska. 24 4
Zapytania skorelowane (współzależne) SELECT Nazwisko, Imię, Stanowisko, Wynagrodzenie FROM Pracownicy P1 WHERE Wynagrodzenie >= (SELECT Avg(Wynagrodzenie) FROM Pracownicy P2 WHERE P2.Stanowisko=P1.Stanowisko) ORDER BY Stanowisko; Copyright 2014-2015 E. Busłowska. 25 Zapytania z predykatem EXISTS EXISTS czy zapytanie podrzędne przekazało chociażby jedną wartość NOT EXISTS czy zapytanie podrzędne nie przekazało żadnej wartość SELECT NazwaFirmy FROM Dealerzy D WHERE EXISTS (SELECT * S WHERE D.IdDealera =S.IdDealera AND PojSilnika=2500); Copyright 2014-2015 E. Busłowska. 26 Zapytania parametrycze SELECT Nazwisko FROM Klienci WHERE Kraj = &&KR AND Miasto = &MT ; && - przy ponownym uruchomieniu następuje podstawienie wcześniejszych wartości zmiennych & - nie zapamiętuje wcześniej podanych wartości Copyright 2014-2015 E. Busłowska. 27 5