Bazy danych. Plan wykáadu. Powtórzenie BCNF i 3NF. Nowa forma redundancji. Wykáad 6: Postaci normalne. SQL - zapytania záo*one.

Podobne dokumenty
Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

Technologie baz danych

Bazy danych. Plan wykáadu. Zale*noci funkcyjne. Wykáad 4: Relacyjny model danych - zale*noci funkcyjne. A B

Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

Materiały szkoleniowe. Podstawy jzyka SQL. Prowadzcy Anna Pijanowska - Kunierz Paweł ołnierczyk

Bazy danych. Plan wykładu. Dekompozycja relacji. Anomalie. Wykład 5: Projektowanie relacyjnych schematów baz danych. SQL - funkcje grupujce

Bazy danych. Plan wykáadu. Proces modelowania i implementacji bazy danych. Elementy ERD

Bazy danych. Plan wykładu. Pierwsza posta normalna. Druga posta normalna. Wykład 7: Sprowadzanie do postaci normalnych. DDL, DML

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Materiały szkoleniowe. Podstawy języka SQL

Bazy danych. Plan wykładu. Operacje w algebrze relacji. Pojcie algebry relacji. Wykład 8: Algebra relacji. SQL - cd

Bazy danych. Plan wykładu. Podstawy modeli relacyjnych. Diagramy ER. Wykład 3: Relacyjny model danych. SQL

3. Podzapytania, łączenie tabel i zapytań

PODZAPYTANIE (SUBSELECT)

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

BAZY DANYCH. Anomalie. Rozkład relacji i normalizacja. Wady redundancji

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Technologie baz danych

TECHNOLOGIE BAZ DANYCH

Bazy danych. Plan wykładu. Przetwarzanie zapyta. Etapy przetwarzania zapytania. Wykład 12: Optymalizacja zapyta. Etapy przetwarzanie zapytania

SQL (ang. Structured Query Language)

Bazy danych Podstawy teoretyczne

Bazy danych. Plan wykładu. Definicja zalenoci funkcyjnych. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne.

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Bazy danych SQL. Wstp. SQL (Structured( Query Language) strukturalny jzyk zapyta

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Podstawy języka SQL cz. 2

Funkcje analityczne SQL CUBE (1)

Bazy danych. Plan wykáadu. Diagramy ER. Podstawy modeli relacyjnych. Wykáad 3: Relacyjny model danych. SQL - zmienne podstawienia, funkcje

Wprowadzenie do języka SQL

Hurtownie danych - przegląd technologii

Technologie baz danych

Laboratorium Bazy danych SQL 3 1

Podstawowe zapytania SELECT (na jednej tabeli)

JPS Duży przykład ewaluacji zapytania. Michał Lentner Polsko-Japońska Wyższa Szkoła Technik Komputerowych

Plan wykładu. Problemy w bazie danych. Problemy w bazie danych BAZY DANYCH

Konstruowanie Baz Danych Wprowadzenie do projektowania. Normalizacja

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Oracle 12c: Nowości w SQL i PL/SQL

Grupowanie i funkcje agregujące

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykáad 1: Wprowadzenie do baz danych

Wymagania: Konstrukcja prostych zapytań w języku SQL, umiejętność wykorzystania funkcji wierszowych i agregujących.

Język SQL. Rozdział 2. Proste zapytania

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Podzapytania do tabel W miejscu w którym możemy użyć nazwy tabeli, możemy użyć podzapytania

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

Autor: Joanna Karwowska

Autor: Joanna Karwowska

Oracle11g: Wprowadzenie do SQL

JPS. cwiczenia 3. Stosy, proste zapytania. Michał Lentner Polsko-Japońska Wyższa Szkoła Technik Komputerowych

sqlplus [ użytkownik [ / hasło ] ]

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Plan wykładu. Problemy w bazie danych. Problemy w bazie danych BAZY DANYCH. Problemy w bazie danych Przykład sprowadzenia nieznormalizowanej SQL

Lista zadań nr 1. Bazy danych laboratorium. dr inż. Grzegorz Bazydło, dr inż. Jacek Tkacz

Postać normalna Boyce-Codd (BCNF)

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Podzapytania. Podzapytania nieskorelowane i skorelowane

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Standard SQL/XML. Wprowadzenie do XQuery

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Relacyjne bazy danych. Podstawy SQL

Przycisk pracy. Przycisk stopu/kasowanie

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Przestrzenne bazy danych Podstawy języka SQL

Zależności funkcyjne

Normalizacja relacyjnych baz danych. Sebastian Ernst

Grupowanie i funkcje agregacji

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykáad 1: Wprowadzenie do baz danych

Bazy danych 3. Normalizacja baz danych (c.d.)

Przykłady wyrae uywanych w kwerendach i filtrach

Fazy przetwarzania zapytania zapytanie SQL. Optymalizacja zapytań. Klasyfikacja technik optymalizacji zapytań. Proces optymalizacji zapytań.

Bazy Danych i Usługi Sieciowe

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Bazy Danych i Usługi Sieciowe

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

Laboratorium Bazy danych SQL 2

Języki i środowiska przetwarzania danych rozproszonych

Lista zadań nr Wyświetlić imię i nazwisko dla każdego pracownika z departamentu DEP T NO o numerze 000.

Wprowadzenie do baz danych

Bazy danych i usługi sieciowe

Autor: Joanna Karwowska

Normalizacja. Pojęcie klucza. Cel normalizacji

Paweł Rajba

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Relacyjne bazy danych. Podstawy SQL

Transkrypt:

Plan wykáadu Bazy danych Wykáad 6: Postaci normalne. SQL - zapytania záo*one. Maágorzata Krtowska Katedra Oprogramowania e-mail: mmac@ii.pb.bialystok.pl Zale*noci wielowartociowe Czwarta postaü normalna Dekompozycja do 4NF SQL podzapytania podzapytania skorelowane operator EXISTS Bazy danych 2 Powtórzenie BCNF i 3NF Nowa forma redundancji Relacja R jest w postaci normalnej BCNF wtedy i tylko wtedy, gdy dla ka*dej nietrywialnej zale*noci A 1, A 2,..., A n B, zbiór {A 1, A 2,..., A n } jest nadkluczem R Mówimy, *e relacja jest w trzeciej postaci normalnej (3NF) wtedy i tylko wtedy, gdy jest speániony nastpujcy warunek: jeli A 1, A 2,..., A n B jest zale*noci nietrywaln, to albo {A 1, A 2,..., A n } jest nadkluczem albo B jest elementem pewnego klucza. Mo*e si okazaü, *e schemat relacji ma postaü BCNF, ale wystpuje w nim redundancja Najpowszechniejszym *ródáem redundancji s tzw zale*noci wielowartociowe (ZW), które wyra*aj zale*noü pomidzy krotkami istniejcej relacji, która to relacja stara si reprezentowaü wicej ni* jeden zwizek wiele do wielu. W takich sytuacjach niektóre atrybuty s od siebie niezale*ne i ich wartoci musz powtórzyü si w relacji we wszystkich mo*liwych kombinacjach. Bazy danych 3 Bazy danych 4

Przykáad Relacja: Jzyki (nazwisko, jzyk_programowania, jzyk_obcy) Czy znajomoü jzyka programowania jest zale*na od znajomoci jzyka obcego? W jaki sposób mo*na przedstawiü to w relacji? Wyra*enie zwizku wystpujcego w tej relacji prowadzi do umieszczenia w niej wszystkich kombinacji jzyka_programowania i jzyka_obcego dla poszczególnych osób. Zale*noci wielowartociowe definicja Zale*noü wielowartociowa A 1 A 2...A n ->->B 1 B 2...B m zachodzi w relacji R wówczas, gdy wybierajc z relacji R te krotki, które s zgodne dla atrybutów typu A, zbiór wartoci atrybutów typu B nie zale*y od *adnych wartoci tych atrybutów z R, których nie ma ani w zbiorze A, ani w B. Dla ka*dej pary krotek t i u z relacji R, które maj takie same wartoci atrybutów typu A, mo*na znale(ü w R tak krotk v, której skáadowe maj wartoci równe: wartociom atrybutów typu A w krotkach t i u wartociom atrybutów typu B krotki t wartociom tych skáadowych krotki u, które nie s ani typu A, ani typu B. Bazy danych 5 Bazy danych 6 Zale*noci wielowartociowe A->->B A B pozostaáe t u v Wnioskowanie z zale*noci wielowartociowych Reguáa zale*noci trywialnych jeli w pewnej relacji zachodzi zale*noü A 1 A 2...A n ->->B 1 B 2...B m to wówczas, gdy C 1 C 2...C k s wszystkimi atrybutami B oraz czü z nich jest typu A, zachodzi równie* A 1 A 2...A n ->-> C 1 C 2...C k Reguáa przechodnioci jeli zachodz zale*noci A 1 A 2...A n ->->B 1 B 2...B m i B 1 B 2...B m ->-> C 1 C 2...C k to zachodzi równie* zale*noü A 1 A 2...A n ->-> C 1 C 2...C k Zale*noci wielowartociowe nie speániaj reguáy podziaáu i áczenia. Bazy danych 7 Bazy danych 8

Przykáad cd Nazwisko Ulica Miasto Tytuá Rok Jerzy Stuhr Lipowa 14 Kraków Kingsajz 1987 Jerzy Stuhr Mickiewicza 24 Warszawa Kingsajz 1987 Nazwisko Ulica Miasto Tytuá Rok Jerzy Stuhr Lipowa 14 Warszawa Kingsajz 1987 Jerzy Stuhr Mickiewicza 24 Kraków Kingsajz 1987 Wnioskowanie z zale*noci wielowartociowych cd Ka*da zale*noü funkcyjna jest zale*noci wielowartociow, czyli jeli A 1 A 2...A n ->B 1 B 2...B m to A 1 A 2...A n ->->B 1 B 2...B m Reguáa dopeánienia jeli A 1 A 2...A n ->->B 1 B 2...B m zachodzi dla relacji R, to w R zachodzi równie* A 1 A 2...A n ->-> C 1 C 2...C k, gdzie atrybuty typu C s wszystkimi tymi atrybutami R, które nie s ani typu A, ani typu B. Przykáad: Relacja Aktorzy (nazwisko, ulica, miasto, tytuá, rok) Zale*noci wielofunkcyjne nazwisko->-> ulica miasto, z reguáy dopeánienia mamy te* zale*noü nazwisko ->-> tytuá rok, która jest równie* speániona Bazy danych 9 Bazy danych 10 Czwarta postaü normalna Zale*noü wielowartociow w relacji R: A 1 A 2...A n ->->B 1 B 2...B m okrelamy jako nietrywialn, jeli: )aden atrybut typu B nie jest typu A Ka*dy atrybut R jest albo typu A, albo typu B. Relacja R jest w czwartej postaci normalnej (4NF), wtedy i tylko wtedy, gdy: A 1 A 2...A n ->->B 1 B 2...B m jest nietrywialn zale*noci wielowartociow; {A 1 A 2...A n } jest nadkluczem w R. Dekompozycja do czwartej postaci normalnej Znajdujemy zale*noü, która nie speánia 4NF np. A 1 A 2...A n ->->B 1 B 2...B m, gdzie {A 1 A 2...A n } nie jest nadkluczem (mo*e byü to zale*noü np. wyprowadzona z pewnej zale*noci funkcyjnej). Wówczas schemat relacji R dzielimy na dwa schematy: pierwszy schemat zawiera wszystkie atrybuty typu A i typu B. Drugi schemat zawiera wszystkie atrybuty typu A oraz te wszystkie atrybuty z R, które nie s atrybutami ani typu A, ani typu B Bazy danych 11 Bazy danych 12

Zale*noci pomidzy postaciami normalnymi Relacje w 3PN Relacje w BCNF Relacje w 4NF Podzapytania Podzapytania skorelowane Opearator EXISTS SQL WáDFLZRü 3NF BCNF 4NF Eliminowanie redundancji przez zale*qrflixqnf\mqh WiNV]Rü Tak Tak Eliminowanie redundancji przez Nie Nie Tak zale*qrflzlhorzduwr FLRZH Zachowanie zale*qrfl Tak Mo*OLZH Mo*OLZH funkcyjnych Zachowanie zale*qrfl wielowartoflrz\fk Mo*OLZH Mo*OLZH Mo*OLZH Bazy danych 13 Bazy danych 14 Podzapytania Podzapytanie - polecenie SELECT zagnie*d*one w innym poleceniu SELECT. Umo*liwia konstruowanie zapytania odwoáujcego si do wartoci wybranych przez inne polecenie SELECT. Przykáad: SELECT kolumna1, kolumna2,... FROM tabela WHERE kolumna = (SELECT kolumna FROM tabela WHERE warunek) Podzapytania zwracajce jeden wiersz Wynikiem jest pojedynczy wiersz. Przykáad: Znale(ü pracowników z pensj równ minimalnemu zarobkowi w firmie. Co nale*y robiü po kolei? 1. Znajdujemy minimaln pensj: SQL> select min(sal) from emp; MIN(SAL) ---------- 800 2. Znajdujemy pracowników o pensji równej wartoci obliczonej w pierwszym kroku: select ename, job, sal from emp where sal =<wynik poprzedniego zapytania> Bazy danych 15 Bazy danych 16

Podzapytania zwracajce jeden wiersz Wstawiajc zapytanie 1 do 2, otrzymujemy: SQL> select ename, job, sal from emp where sal =(select min(sal) from emp); ENAME JOB SAL ---------- --------- ---------- SMITH CLERK 800 Przebieg wykonania zapytania: realizacja zapytania wewntrznego na podstawie wartoci zwróconej przez blok wewntrzny przetwarzany jest blok gáówny zapytania W przypadku zapyta zwracajcych jeden wiersz mog byü stosowane zwykáe operatory porównania: =, >, <=,... Podzapytania zwracajce jeden wiersz Znale(ü wszystkich pracowników zatrudnionych na tym samym stanowisku, co BLAKE. SQL> select ename, job from emp where job=(select job from emp where ename='blake'); ENAME JOB ---------- --------- JONES MANAGER BLAKE MANAGER CLARK MANAGER Czy jestemy pewni czy zapytanie zwróci jeden wiersz? Bazy danych 17 Bazy danych 18 Podzapytania zwracajce wiele wierszy Znale(ü pracowników o pensjach z listy najni*szych zarobków osiganych w departamentach. SQL> select ename, sal, deptno from emp where sal in (select min(sal) from emp group by deptno); ENAME SAL DEPTNO ---------- ---------- ---------- SMITH 800 20 JAMES 950 30 MILLER 1300 10 W jaki sposób mo*na uzyskaü informacje o pracownikach zarabiajcych najmniej w ich departamentach? (Metoda 1) SQL> select ename, sal, deptno from emp where (sal,deptno) in (select min(sal), deptno from emp group by deptno); ENAME SAL DEPTNO ---------- ---------- ---------- SMITH 800 20 JAMES 950 30 MILLER 1300 10 Bazy danych 19 Uwagi WHERE (kolumna1, kolumna 2...) = (SELECT kol1, kol2...) kolumny w bloku zewntrznym powinny byü ujte w nawiasy i oddzielone przecinkami powinna byü zgodnoü co do liczby i typu kolumn wybieranych w bloku wewntrznym i kolumn bloku zewntrznego porównywanych z nimi Bazy danych 20

Podzapytania skorelowane W jaki sposób mo*na uzyskaü informacje o pracownikach zarabiajcych najmniej w ich departamentach? (Metoda 2) SQL> select ename, sal, deptno from emp e where sal = (select min(sal) from emp where e.deptno=emp.deptno group by deptno); ENAME SAL DEPTNO ---------- ---------- ---------- SMITH 800 20 JAMES 950 30 MILLER 1300 10 Podzapytania skorelowane uwagi Ka*dy wiersz proponowany przez zapytanie gáówne przechodzi prób warunku wyra*onego za pomoc zapytania skorelowanego, w którym wystpuje odwoáanie do wartoci kolumn tego wiersza. Wykonanie SELECT z podzapytaniem skorelowanym: pobranie wiersza przez zewntrzne zapytanie wykonanie wewntrzngo zapytania na podstawie wartoci z pobranego w pkt 1. wiersza zaakceptowanie bd( odrzucenie wiersza na podstawie wyniku zapytania z pkt 2. Powtórzenie akcji opisanych wy*ej, a* do wyczerpania wszystkich wierszy proponowanych przez zapytanie zewntrzne. Bazy danych 21 Bazy danych 22 Sygnalizacja bádów Co si stanie, je*eli podzapytanie zwraca wicej ni* jeden wiersz a w warunku zostanie u*yty operator do porównywania jednego wyniku? SQL> select ename, sal, deptno from emp where sal = (select min(sal) from emp group by deptno); where sal = (select min(sal) from emp group by deptno) * BàD w linii 2: ORA-01427: jednowierszowe podzapytanie zwraca wicej ni* jeden wiersz Podobnie je*eli podzapytanie nie zwróci *adnego wiersza. Operatory ANY i ALL Opearatory ANY i ALL mo*na stosowaü w podzapytaniach zwracajcych wicej ni* jeden wiersz. Wykorzystuje si je w klauzulach WHERE I HAVING ácznie z operatorami porównywania (=;!=; <; >; <=; >=) Operator ANY powoduje akceptacj (speánienie warunku) po stwierdzeniu zgodnoci wyra*enia z którkolwiek z wartoci zwracanych przez podzapytanie Operator ALL sáu*y do porównania z wszystkimi wartociami zwracanymi przez podzapytanie Przed operatorami ANY i ALL mo*na stosowaü zaprzeczenie - NOT Bazy danych 23 Bazy danych 24

Podzapytania w klauzuli HAVING Podzapytania - wskazówki Wybraü te departamenty, których rednie zarobki przekraczaj redni zarobek departamentu 30. 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. Select job, avg(sal) from emp group by job having avg(sal) =(select max(avg(sal)) from emp group by job); Wewntrzne zapytanie musi byü ujte w nawiasy i musi wystpowaü po prawej stronie warunku W podzapytaniu nie wolno stosowaü klauzuli ORDER BY. Obowizuje zasada jednej klauzuli ORDER BY dla caáego polecenia SELECT. Jeli jest potrzebna umieszczamy j jako ostatni Kolumny wystepujce na licie wyboru wewntrznego zapytania musz wystpowaü w klejnoci zgodnej z kolejnoci kolumn ujtych w nawiasy warunku zapytania gáównego. Musi równie* wystpowaü zgodnoü co do liczby i typu kolumn wybieranych w bloku wewntrznym i kolumn bloku zewntrznego porównywanych z nimi. Bazy danych 25 Bazy danych 26 Podzapytania po FROM Przykáad cd Podzapytania mog wystpowaü po WHERE, HAVING i FROM: 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 X -------------- ---------- ACCOUNTING 3 RESEARCH 5 SALES 6 OPERATIONS 0 Bazy danych 27 Liczba wszystkich pracowników SQL> select count(*) y from emp; Y ---------- 14 Caáe zapytanie: SQL> select A.dname, (A.x/B.y)*100 procent from (select dname, count(empno) x from emp, dept where emp.deptno (+) = dept.deptno group by dname, dept.deptno) A, (select count(*) y from emp) B; DNAME PROCENT -------------- ---------- ACCOUNTING 21,4285714 RESEARCH 35,7142857 SALES 42,8571429 OPERATIONS 0 Bazy danych 28

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 29