Bazy danych - Politechnika Białostocka
Transkrypt
Bazy danych - Politechnika Białostocka
Plan wykáadu • • • • • Bazy danych Wykáad 4: Relacyjny model danych zale*noci funkcyjne. Deficja zale*noci funkcyjnych Klucze relacji Reguáy dotyczce zale*noci funkcyjnych Domkni cie zbioru atrybutów Proces dobrego projektowania relacyjnego schematu bazy danych: – szczegóáowy opis problemów, które wynikaj przy tworzenu 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áoci – informacja o tym, w jaki sposób zapewniü speánienie warunków BCNF przez dekompozycj schematów relacyjnych Maágorzata Kr towska Wydziaá Informatyki Politechnika Biaáostocka • SQL - funkcje cd. Záczenia zewn trzne. Bazy danych 2 Definicja zale*noci funkcyjnych Zale*noci funkcyjne A→B Zale*noü funkcyjna: A1A2...An → B Interpretacja: jeli dwie krotki relacji R s zgodne dla atrybutów A1, A2, .., An (tzn. obie krotki maj takie same wartoci skáadowych dla wymienionych atrybutów), to musz byü równie* zgodne w pewnym innym atrybucie B. A B x – Odczyt zapisu: „A1, A2, ..., An okrelaj funkcyjnie B” – Jeli zbiór atrybutów A1, A2, ..., An okrela funkcyjnie wi cej ni* jeden atrybut tzn. y A1A2...An → B1 A1A2...An → B2 A1A2...An → B3 To taki zbiór zale*noci skrótowo przedstawiamy jako: Jeli x i y s zgodne dla atrybutów A A1A2...An → B1B2B3 Bazy danych 3 Bazy danych To musz byü zgodne równie* dla atrybutów B 4 Klucze relacji Nadklucze • Atrybut lub zbiór atrybutów {A1, A2,..., An} tworzy klucz relacji, jeli: • Nadklucz - zbiór atrybutów, który zawiera klucz • Ka*dy klucz jest nadkluczem – wszystkie pozostaáe atrybuty relacji s funkcyjnie zale*ne od tych atrybutów => nie mo*e byü sytuacji, w której dwie ró*ne krotki relacji R zgodne dla wszystkich atrybutów A1, A2,..., An. – Nie istnieje taki podzbiór wáaciwy zbioru {A1, A2,..., An}, od którego pozostaáe atrybuty relacji R s zale*ne funkcyjnie, tzn. klucz musi byü minimalny – Przykáady nadkluczy w relacji Film: • (tytuá, rok, nazwisko Aktora, czas) • (tytuá, rok, nazwisko Aktora, rodzaj) • Klucze w diagramach E/R nie speániaj wymagania (2) Bazy danych 5 Bazy danych Reguáy wykrywania kluczy w relacji Klucze relacyjne i E/R • Reguáa 1 • Klucze w ERD s atrybutami encji – Jeli relacja pochodzi z przeksztaácenia zbioru encji, to jej kluczem s atrybuty kluczowe tego zbioru encji • Klucze w relacjach s atrybutami krotek • Reguáa 2 (dotyczy zwizków binarnych) • Zazwyczaj, jedna krotka odpowiada jednej encji, wówczas idea jest taka sama – Jeli zwizek jest typu wiele do wiele, to klucze obu zbiorów encji obj tych zwizkiem tworz zbiór atrybutów klucza R – jeli zwizek ze zbioru encji E1 do zbioru encji E2 jest typu wiele do jeden, to atrybuty klucza E1 staj si kluczem R, ale atrybuty klucza E2 nie wchodz do klucza relacji R. – Jeli zwizek jest typu jeden do jeden, to atrybuty klucza któregokolwiek ze zbiorów mog byü kluczem R. W tej sytuacji nie ma tylko jednego klucza. Bazy danych 6 • W niewáaciwie skonstruowanych relacjach, jedna encja mo*e byü opisana przez kilka krotek, wówczas klucze w diagramach E/R i relacjach b d si ró*niáy. 7 Bazy danych 8 Zasady podziaáu i áczenia Reguáy dotyczce zale*noci funkcyjnych • Zasady, które pozwalaj na zast powanie zbioru zale*noci funkcyjnych zbiorami równowa*nymi lub na doáczanie do zbioru tych zale*noci, które wynikaj ze zbioru pocztkowego. • Reguáa podziaáu Zale*noü funkcyjn A1A2...An → B1B2 ... Bm mo*emy zastpiü zbiorem zale*noci funkcyjnych A1A2...An → Bi, gdzie i=1,2,...,m • Wyró*niamy nast pujce reguáy: • Reguáa áczenia – reguáa áczenia – reguáa podziaáu – reguáa przechodnioci Bazy danych Zbiór zale*noci funkcyjnych A1A2...An → Bi, gdzie i=1,2,...,m mo*emy zastpiü pojedyncz zale*noci funkcyjn A1A2...An → B1B2 ... Bm 9 Bazy danych Zale*noci trywialne Domkni cie zbioru atrybutów • Zale*noü funkcyjna A1A2...An → B jest trywialna, jeli B jest równe któremu z A • Zaáo*enia: – {A1, A2, ..., An} - zbiór atrybutów – S - zbiór zale*noci funkcyjnych – tytuá rok → tytuá • Mówimy, *e zale*noü A1A2...An → B1B2 ... Bm jest: – trywialna - jeli zbiór záo*ony z atrybutów typu B jest podzbiorem zbioru atrybutów typu A – nietrywialna - jeli co najmniej jeden z atrybutów typu B znajduje si poród atrybutów A – caákowicie nietrywialna - jeli *aden z atrybutów typu B nie znajduje si poród atrybutów typu A • Domkni ciem zbioru {A1, A2, ..., An} nad zbiorem zale*noci S nazywamy taki zbiór atrybutów B, *e jeli pewna relacja R speánia wszystkie zale*noci ze zbioru S, to speánia tak*e zale*noü A1 A2... An → B, a zatem zale*noü A1 A2... An → B wynika z S. • Atrybuty, które wyst puj równoczenie z prawej i lewej strony zawsze mo*na pominü po prawej tronie, std prawdziwe jest twierdzenie (reguáa zale*noci trywialnych) • Domkni cie zbioru atrybutów {A1, A2, ..., An} oznaczamy przez {A1, A2, ..., An}+. – Zale*noü funkcyjna A1A2...An → B1B2 ... Bm jest równowa*na zale*noci A1A2...An → C1C2 ... CK, gdzie C s tymi elementami z B, które nie s równe A. Bazy danych 10 11 Bazy danych 12 Algorytm obliczania domkni cia zbioru atrybutów {A1, A2, ..., An} Przykáad • Niech X oznacza nazw zbioru domkni cia. Na pocztku X= {A1, A2, ..., An}. • Znajdujemy tez wszystkie zale*noci funkcyjne postaci B1B2 ...Bm → C X+ gdzie B1B2 ...Bm nale* do zbioru X, a C nie nale*y. Wówczas doáczamy C do zbioru X. Y B Nowy X+ • Powtarzamy krok 2 tak dáugo, jak dáugo nie b dzie mo*na doáczyü do X *adnego nowego atrybutu. • Jeli ju* *adnego atrybutu nie mo*na doáczyü do X, to znaczy, *e otrzymalimy domkni cie zbioru {A1, A2, ..., An}+ Bazy danych 13 Bazy danych 14 Cel Domkni cie i klucze • Majc dane domkni cie zbioru atrybutów {A1, A2, ..., An} mo*emy sprawdziü, czy dana zale*noü funkcyjna wynika ze zbioru zale*noci S. • Zbiór {A1, A2, ..., An}+ zawiera wszystkie atrybuty relacji R wtedy i tylko wtedy, gdy elementy A1, A2, ..., An s nadkluczem w R. • Stwierdzenie, czy atrybuty A1, A2, ..., An stanowi klucz relacji, mo*e polegaü na sprawdzeniu: • Jeli B nale*y do {A1, A2, ..., An}+ to oznacza, *e A1A2...An → B – czy wszystkie atrybuty R nale* do zbioru {A1, A2, ..., An}+ – czy X+ otrzymane z dowolnego X, który utworzymy przez usuni cie choüby jednego elementu sporód A1, A2, ..., An, nie zawiera wszystkich atrybutów R wynika z S. • Przykáad: – – – – Bazy danych 15 Bazy danych Relacja Filmy(tytuá, rok, czas, rodzaj, nazwaStudia, adresStudia) Uzasadniü, *e kluczem jest zbiór (tytuá, rok) tytuá rok → nazwaStudia nazwaStudia → adresStudia 16 Reguáa przechodnioci Plan wykáadu • Proces dobrego projektowania relacyjnego schematu bazy danych: • Reguáa przechodnioci umo*liwia kaskadowe áczenie zale*noci: – szczegóáowy opis problemów, które wynikaj przy tworzenu 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áoci – informacja o tym, w jaki sposób zapewniü speánienie warunków BCNF przez dekompozycj schematów relacyjnych – jeli w relacji R zachodz zale*noci A1A2...An → B1B2 ... Bm oraz B1B2 ... Bm → C1C2...Ck , to w relacji R zachodzi tak*e zale*noü A1A2...An → C1C2...Ck. – Uzasadnienienie powy*szej reguáy => wyliczenie domkni cia {A1, A2, ..., An}+. • SQL cd Bazy danych 17 Bazy danych 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 pujcych zasad: – redundancja - dane niepotrzebnie powtarzaj si w kilku krotkach – anomalie modyfikacji - sytuacje, w których wartoü zostaje zmodyfikowana w jednej krotce, a w innej nie – {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 wartoci 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 18 19 Bazy danych 20 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 wczeniej anomalie. Jeli 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*noci A1, A2,..., An →B, zbiór {A1, A2,..., An} jest nadkluczem R • Strategia dekompozycji: – Dane: relacja R z zale*nociami funkcyjnymi ZF – Znalezienie pewnej nietrywialnej zale*noci 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 21 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*noci funkcyjnych prawdziwych w R – Aby wyznaczyü zbiór zale*noci funkcyjnych prawdziwych w S, nale*y • rozwa*yü wszystkie podzbiory X atrybutów S i dla ka*dego wyznaczyü X+. Jeli atrybut B speánia nast pujce 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 22 Projektowanie zale*noci funkcyjnych – Zamie relacj R na relacje o schematach: • R1= {A1, A2,..., An}+ • R2 = (R-{A1, A2,..., An}+) ∪ {A1, A2,..., An} R2 Bazy danych X+-X R Bazy danych 23 Bazy danych 24 Problem Trzecia postaü normalna • Wyst puje jedna struktura zale*noci funkcyjnych, która mo*e powodowaü problem w trakcie dekompozycji. AB →C i C → B Mówimy, *e relacja jest w trzeciej postaci normalnej (3NF) wtedy i tylko wtedy, gdy jest speániony nast pujcy warunek: jeli A1, A2,..., An→ B jest zale*noci nietrywaln, to albo {A1, A2,..., An} jest – Przykáad: Relacja Zamówienia • A - tytuá filmu; • B - miasto, gdzie znajduje si kino; • C - nazwa kina, w którym wywietlany jest film; – Wyodr bniamy tutaj nast pujce zale*noci funkcyjne: • kino → miasto • tytuá miasto → kino – Klucze • {tytuá, miasto} • {kino, tytuá} Bazy danych nadkluczem albo B jest elementem pewnego klucza. W przykáadzie: – Klucze: {tytuá, miasto} i {kino, tytuá} – Relacje: kino → miasto i tytuá miasto → kino • 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. 25 Bazy danych SQL 26 Funkcje konwersji • Funkcje cd • Záczenia zewn trzne • TO_CHAR (liczba|data[,format’]) - zamiana liczby lub daty na cig znaków zgodny z formatem opisanym w parametrze ‘format’ • TO_NUMBER (tekst) - zamiana cigu znaków zawierajcych liczb na dan typu NUMBER • TO_DATE(‘tekst’, ‘format’) - zamiana cigu znaków reprezentujcych dat w formacie opisanym w parametrze ‘format’ na dan typu DATE Bazy danych 27 Bazy danych 28 Funkcja TO_CHAR konwersja dat • Funkcja TO_CHAR konwersja liczb SQL> SELECT TO_CHAR(SYSDATE,'DAY,DD MONTH YYYY') FROM DUAL ; • • SQL> SELECT TO_CHAR(SAL, '$9,999') FROM EMP; TO_CHAR ------$800 $1,600 $1,250 $2,975 TO_CHAR(SYSDATE,'DAY,DDMONTHYYYY -------------------------------,21 PA'DZIERNIK 2005 PITEK SQL> SELECT TO_CHAR(SYSDATE,'HH:MI:SS') FROM DUAL ; TO_CHAR( -------02:06:30 Formaty dla liczb: Przykáady formatów dat: YYYY, YYY, YY, Y - 4, 3, 2,lub ostatnia cyfra roku MM - miesic MONTH - nazwa miesica DDD, DD, D - dzie roku, miesica lub tygodnia DAY - nazwa dnia tygodnia HH - godzina MI - minuta; SS - sekunda Bazy danych 29 • 099999 1234 001234 $99999 $1234 99999.99 1234.00 30 Funkcje polimorficzne Funkcja DECODE SQL> SELECT EMPNO, ENAME,JOB,SAL FROM EMP WHERE SAL>TO_NUMBER('1500'); EMPNO ENAME JOB ---------- ---------- --------- ---------7499 ALLEN SALESMAN 7566 JONES MANAGER 7698 BLAKE MANAGER 7782 CLARK MANAGER PrzykáDG 99999 Bazy danych Funkcja TO_NUMBER i TO_DATE • Wzorzec Znaczenie 9 Pozycja cyfry – liczba dziewiWHNRNUH OD szerokoüZ\ ZLHWODQLD 0 WyZLHWODQL]HU wiodF\FK $ Ruchomy znak dolara . Pozycja kropki dziesi WQHM Funkcje polimorficzne - funkcje, które nie s zwizane ze szczególnym typem danych, dziaáaj podobnie dla wielu ró*nych danych. • DECODE - umo*liwia warunkow realizacj zapyta, gdy* dziaáa na zasadzie typu „case” czy „if-then-else” z innych j zyków. SAL 1600 2975 2850 2450 • DECODE(wyra*enie, wyr1, wynik1, SQL> SELECT EMPNO, ENAME, HIREDATE FROM EMP WHERE HIREDATE=TO_DATE ('GRUDZIEÑ 17, 1980','MONTH DD,YYYY'); [wyr2, wynik2, ......................] wynik domylny) EMPNO ENAME HIREDATE ---------- ---------- -------7369 SMITH 80/12/17 Uwagi: – wyra*enie mo*e byü dowolnego typu – wartoü wyr musz byü takiego samego typu jak wyra*enie Bazy danych 31 Bazy danych 32 Funkcja DECODE • Funkcja DECODE SQL>SELECT ENAME, JOB, • DECODE(JOB, 'CLERK','PRACOWNIK', 'MANAGER', 'SZEF', ' ')àUMACZENIE T FROM EMP; ENAME JOB TàUMACZEN ---------- --------- --------SMITH CLERK PRACOWNIK ALLEN SALESMAN WARD SALESMAN JONES MANAGER SZEF SQL> SELECT GRADE, DECODE(GRADE, 1, '15%', 2, '10%', 4 3, '8%', 5 '5%') BONUS 6 FROM SALGRADE; GRADE BON ---------- --Bazy danych 1 15% SQL> SELECT GRADE, DECODE(GRADE, 1, '15%', 2, '10%', 3, '8%', '5%') BONUS FROM SALGRADE; GRADE BON ---------- --1 15% 2 10% 3 8% 4 5% 5 5% • 33 Bazy danych Inne funkcje Záczenia zewn trzne SELECT wyra*enia FROM tabele WHERE warunki áczce tabele [inne warunki] Dziaáanie: wywietlane s wiersze speániajce warunki záczenia • NVL (wyra*enie1, wyra*enie2) - zmienia wartoü NULL w pierwszym argumencie na wartoü2 • GREATEST (wartoü1, wartoü2,...) - zwraca najwi ksz wartoü z listy • • LEAST(wartoü1, wartoü2,...) - zwraca najmniejsz wartoü sposród podanych argumentów Bazy danych 34 SQL> select ename, dept.deptno, dname from emp, dept where emp.deptno=dept.deptno and dept.deptno in (30,40); ENAME DEPTNO DNAME ---------- ---------- -------------ALLEN 30 SALES WARD 30 SALES MARTIN 30 SALES BLAKE 30 SALES TURNER 30 SALES JAMES 30 SALES 35 Bazy danych 36 Záczenia zewn trzne Powizanie tabeli samej ze sob • W jaki sposób wywietliü równie* informacje o departamencie 40, w którym nikt nie pracuje? • • • Powizanie tabeli samej ze sob jest mo*liwe dzi ki zastosowaniu aliasu tabeli. Warunek áczenia odbywa si w taki sposób, jakby to byáy dwie oddzielne tabele: FROM tabela alias1 tabela alias2 • Przykáad: Wybraü pracowników, którzy zarabiaj mniej od swoich kierowników. Wypisaü nazwiska i zarobki pracowników i ich kierowników. • SQL> select e.ename emp_name, e.sal emp_sal, m.ename mgr_name, m.sal mgr_sal from emp e, emp m where e.mgr=m.empno and e.sal<m.sal; SQL> select ename, dept.deptno, dname from emp, dept where emp.deptno (+) =dept.deptno and dept.deptno in (30,40); ENAME DEPTNO DNAME ---------- ---------- -------------ALLEN 30 SALES BLAKE 30 SALES MARTIN 30 SALES JAMES 30 SALES TURNER 30 SALES WARD 30 SALES 40 OPERATIONS • • EMP_NAME EMP_SAL MGR_NAME ---------- ---------- ---------- ---------SMITH 800 FORD 3000 ALLEN 1600 BLAKE 2850 WARD 1250 BLAKE 2850 JONES 2975 KING 5000 MARTIN 1250 BLAKE 2850 Departament 40 zostaá powizany z wierszem tabeli EMP zawierajcym same wartoci NULL (mimo, *e taki wiersz w tabeli naprawd nie istnieje) àczenie rozszerzone uzyskuje si za pomoc tzw. operatora zewn trznego áczenia (+). Powinien byü on umieszczany po tej stronie warunku áczcego, która dotyczy tabeli z niepeán informacj. Bazy danych 37 Bazy danych MGR_SAL 38