Bazy danych
Transkrypt
Bazy danych
Plan wykładu • Proces dobrego projektowania relacyjnego schematu bazy danych: Bazy danych – szczegółowy opis problemów, które wynikaj przy tworzeniu schematu – przedstawienie metody dekompozycji, która polega na podziale schematu relacji (zbioru atrybutów) na dwa mniejsze schematy – opis „postaci normalnej Boyce’a-Codda” (BCNF) czyli taki warunek nało ony na schemat, dzi ki któremu mo na wyeliminowa jego niedoskonało ci – informacja o tym, w jaki sposób zapewni spełnienie warunków BCNF przez dekompozycj schematów relacyjnych Wykład 5: Postaci normalne. SQL cd Małgorzata Kr towska Katedra Oprogramowania e-mail: [email protected] • SQL cd Bazy danych (studia zaoczne) Anomalie Dekompozycja relacji • Anomalie - problemy, jakie powstaj , gdy próbujemy do pojedynczej relacji wł czy zbyt wiele danych • Dekompozycja relacji - sposób eliminowania wymienionych anomalii przez podział atrybutów relacji R mi dzy dwa schematy nowych relacji. • Relacj R o schemacie {A1, A2,..., An} dekomponujemy mi dzy dwie relacji S i T o schematach odpowiednio {B1, B2,..., Bm} i {C1, C2,..., Ck} według nast puj cych zasad: – redundancja - dane niepotrzebnie powtarzaj si w kilku krotkach – anomalie modyfikacji - sytuacje, w których warto zmodyfikowana w jednej krotce, a w innej nie zostaje – {A1, A2,..., An} = {B1, B2,..., Bm} ∪ {C1, C2,..., Ck} – Krotki relacji S powstaj przez rzutowanie wszystkich krotek relacji R na zbiór atrybutów {B1, B2,..., Bm}, tzn. z ka dej krotki t bie cej instancji relacji R pobieramy warto ci atrybutów {B1, B2,..., Bm} i tworzymy w ten sposób krotk relacji S. Je eli z relacji R otrzymamy kilka jednakowych krotek w relacji S, w S umieszczamy tylko jedn kopi . – W podobny sposób uzyskuje si krotki relacji T. – anomalie usuni - usuni cie krotki mo e powodowa usuni cie wa nej informacji z bazy danych Bazy danych (studia zaoczne) 2 3 Bazy danych (studia zaoczne) 4 Posta normalna Boyce’a-Codda Dekompozycja do postaci BCNF • Posta normalna Boyce’a-Codda (BCNF) - warunek, którego spełnienie zapewnia, e w schemacie nie wyst puj omówione wcze niej anomalie. • Je li proces dekompozycji b dziemy powtarza dostatecznie długo, to ka da otrzymana relacja b dzie si składała z kolekcji podzbiorów atrybutów, które: – b d schematami relacji w postaci BCNF – dane z pierwotnej relacji b d wiernie reprezentowane w relacjach powstałych w wyniku dekompozycji => b dzie istniała mo liwo dokładnego odtworzenia pierwotnej relacji, na podstawie relacji utworzonych przez wielokrotne dekompozycje. • Relacja R jest w postaci normalnej BCNF wtedy i tylko wtedy, gdy dla ka dej nietrywialnej zale no ci A1, A2,..., An →B, zbiór {A1, A2,..., An} jest nadkluczem R • Strategia dekompozycji: – Dane: relacja R z zale no ciami funkcyjnymi ZF – Znalezienie pewnej nietrywialnej zale no ci funkcyjnej {A1, A2,..., An} → {B1, B2,..., Bm} , która narusza warunek BCNF (tzn. {A1, A2,..., An} nie jest nadkluczem). – Wyliczenie dopełnienia zbioru atrybutów {A1, A2,..., An}+. • Dopełnienie zawiera wszystkie atrybuty, gdy {A1, A2,..., An} jest nadkluczem. Bazy danych (studia zaoczne) 5 Dekompozycja R do postaci BCNF R-X+ • Zało enia: – w wyniku dekompozycji relacji R powstaje relacja S oraz jeszcze inna relacja. – F - zbiór zale no ci funkcyjnych prawdziwych w R – Aby wyznaczy zbiór zale no ci funkcyjnych prawdziwych w S, nale y • rozwa y wszystkie podzbiory X atrybutów S i dla ka dego wyznaczy X+. Je li atrybut B spełnia nast puj ce warunki – B nale y do S – B nale y do X+ – B nie nale y do X, to zale no funkcyjna X→ B jest spełniona w relacji S R1 X 6 Projektowanie zale no ci funkcyjnych – Zamie relacj R na relacje o schematach: • R1= {A1, A2,..., An}+ • R2 = (R-{A1, A2,..., An}+) ∪ {A1, A2,..., An} R2 Bazy danych (studia zaoczne) X+-X R Bazy danych (studia zaoczne) 7 Bazy danych (studia zaoczne) 8 Problem Problem cd • Wyst puje jedna struktura zale no ci funkcyjnych, która mo e powodowa problem w trakcie dekompozycji. AB →C i C → B • Dekompozycja relacji Zamówienia do postaci BCNF • Zale no funkcyjna: kino → miasto nie spełnia warunku BCNF – Dopełnienie {kino}+: • {kino}+={kino, miasto} – Otrzymujemy relacje: • {kino, miasto} • {kino, tytuł} – Przykład: Relacja Zamówienia • A - tytuł filmu; • B - miasto, gdzie znajduje si kino; • C - nazwa kina, w którym wy wietlany jest film; – Wyodr bniamy tutaj nast puj ce zale no ci funkcyjne: • kino → miasto • tytuł miasto → kino – Klucze • {tytuł, miasto} • {kino, tytuł} Bazy danych (studia zaoczne) • Problem: spełnienie zale no ci funkcyjnej: tytuł miasto → kino 9 Bazy danych (studia zaoczne) Trzecia posta normalna 10 Operatory ANY i ALL • Opearatory ANY i ALL mo na stosowa w podzapytaniach zwracaj cych wi cej ni jeden wiersz. Wykorzystuje si je w klauzulach WHERE I HAVING ł cznie z operatorami porównywania (=; !=; <; >; <=; >=) Mówimy, e relacja jest w trzeciej postaci normalnej (3NF) wtedy i tylko wtedy, gdy jest spełniony nast puj cy warunek: je li A1, A2,..., An→ B jest zale no ci nietrywaln , to albo {A1, A2,..., An} jest nadkluczem albo B jest elementem pewnego klucza. • Operator ANY powoduje akceptacj (spełnienie warunku) po stwierdzeniu zgodno ci wyra enia z któr kolwiek z warto ci zwracanych przez podzapytanie W przykładzie: – Klucze: {tytuł, miasto} i {kino, tytuł} – Relacje: kino → miasto i tytuł miasto → kino • Operator ALL słu y do porównania z wszystkimi warto ciami zwracanymi przez podzapytanie • Czy relacja jest w 3NF? • zale no funkcyjna kino → miasto nie spełnia postaci normalnej BCNF ale spełnia 3NF, poniewa miasto jest elementem klucza. Bazy danych (studia zaoczne) • Przed operatorami ANY i ALL mo na stosowa zaprzeczenie NOT 11 Bazy danych (studia zaoczne) 12 Podzapytania w klauzuli HAVING Zagnie d anie zapyta • Wybra te departamenty, których rednie zarobki przekraczaj redni zarobek departamentu 30. • Znale pracowników, których zarobki przekraczaj najwy sz pensj z departamentu SALES. • Select deptno, avg(sal) from emp group by deptno having avg(sal) >(select avg(sal) from emp where deptno=30); • Znale stanowisko pracy, na którym s najwy sze rednie zarobki. SQL> select ename, job, hiredate, sal from emp where sal> (select max(sal) from emp where deptno= (select deptno from dept where dname=' SALES' )); ENAME JOB HIREDATE ---------- --------- -------- ---------JONES MANAGER 81/04/02 SCOTT ANALYST 87/04/19 KING PRESIDENT 81/11/17 FORD ANALYST 81/12/03 Select job, avg(sal) from emp group by job having avg(sal) =(select max(avg(sal)) from emp group by job); SAL 2975 3000 5000 3000 Nie istnieje ograniczenie poziomów zagnie d enia. Bazy danych (studia zaoczne) 13 Bazy danych (studia zaoczne) 14 Podzapytania - wskazówki Podzapytania po FROM • Wewn trzne zapytanie musi by uj te w nawiasy i musi wyst powa po prawej stronie warunku • W podzapytaniu nie wolno stosowa klauzuli ORDER BY. Obowi zuje zasada jednej klauzuli ORDER BY dla całego polecenia SELECT. Je li jest potrzebna umieszczamy j jako ostatni • Kolumny wystepuj ce na li cie wyboru wewn trznego zapytania musz wyst powa w klejno ci zgodnej z kolejno ci kolumn uj tych w nawiasy warunku zapytania głównego. Musi równie wyst powa zgodno co do liczby i typu kolumn wybieranych w bloku wewn trznym i kolumn bloku zewn trznego porównywanych z nimi. • Podzapytania mog wyst powa po WHERE , HAVING i FROM: Bazy danych (studia zaoczne) FROM tabela1, (podzapytanie1) alias1, (podzapytanie2) alias2... • Policzy jaki procent pracowników pracuje w poszczególnych działach firmy.Poda nazw działu i procent pracowników. – Liczba pracowników w poszczególnych dział ch • SQL> select dname, count(empno) x from emp, dept where emp.deptno (+) = dept.deptno group by dname, dept.deptno; DNAME -------------ACCOUNTING RESEARCH SALES OPERATIONS 15 Bazy danych (studia zaoczne) X ---------3 5 6 0 16 Operator EXISTS • W przypadku zapyta skorelowanych czasami nie interesuje nas wynik zapytania, ale jedynie czy wiersz o zadanych przez nas warunkach istnieje. Wówczas wykorzystujemy operator EXISTS. – EXISTS (podzapytanie) - zwraca „true” je eli podzapytanie zwróci przynajmniej jeden wiersz – NOT EXISTS(podzapytanie) zwraca „true” je eli podzapytanie nie zwróci adnego wiersza Bazy danych (studia zaoczne) 17