MW7 BDI


Relacja jest w 3PN
Jeśli jest w 1PN,
BAZY DANYCH I
Każdy atrybut niekluczowy jest
bezpośrednio zależny funkcyjnie od
WYKAAD 7 całego klucza głównego,
3PN jest zazwyczaj wystarczajÄ…ca
Normalizacja relacji cd.
Każdą relację można doprowadzić
Zapytania zagnieżdżone.
do 3PN zachowujÄ…c:
(Wybrane materiały)
zależności
Dr inż. E. Busłowska
odwracalność rozkładu
1
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 2
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Diagramy zależności
Zależności tranzytywne
funkcyjnychi przechodnich
Nr_ części
Z jest tranzytywnie zależny od klucza
Nr_zamówienia
Nazwa_części
X w schemacie R=(U,F) wtedy i tylko
Nr_ dostawcy
wtedy gdy:
Nazwa_dostawcy
Magazyn
a) X)"Z=",
Adres_dostawcy
b) oraz istnieje Y‚"U, Y)"X=" i Adres_magazyny
Y)"Z=",
Nr_zamówienia
takie że X Y" F+ Y X "F i YZ " F+
Nr_ części
Ilość
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 3 Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 4
Czwarta postać Zależność
normalna wielowartościowa
Schemat relacji R ze zbiorem zależności F
Oznacza, że mając wartość jednego atrybutu,
można określić wartości zbioru innego atrybutu.
jest w Czwartej postaci normalnej jeśli dla
Oznacza siÄ™: X ->>Y, i odczytuje jako:  X
każdej zależności wielowartościowej (przy
określa wiele Y".
czym Y jest zbiorem niepustym lub
Przykładowo:
podzbiorem X, a XY nie zawiera wszystkich
Znając numer wykładowcy, można określić listę
atrybutów R), to X jest nadkluczem do R.
prowadzonych przez niego przedmiotów,
Jeśli F nie zawiera zależności
Nrwykładowcy ->>Przedmiot
wielowartościowych to czwarta postać
Znając numer dostawcy można określić części,
normalna pokrywa siÄ™ z postaciÄ… normalnÄ…
które dostarcza,
Boyce'a-Codda.
Nrdostawcy ->>Część.
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 5 Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 6
1
Postać normalna
Tabele hierarchiczne
Boyce'a-Codda
Mówimy, że schemat relacji R ze zbiorem zależności F jest
Tabele zawierające kolumnę odwołującą się
w postaci normalnej Boyce'a-Codda, jeśli zawsze, gdy w R
do innej kolumny tej samej tabeli
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
Idpracownika Zwierzchnik
Związki między postaciami normalnymi
4NF => BCNF => 3NF => 2NF => 1NF
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 7 Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 8
ZACZENIA ZACZENIA
ZEWNTRZNE ZEWNTRZNE
prawostronne
Operator złączenia zewnętrznego (+) służy do tworzenia
SELECT stanowiska.IDstanowiska,stanowiska.nazwa,
sprzężenia rozszerzonego lewego lub prawego, w
Pracownicy.IDpracownika,Pracownicy.nazwisko
zależności po której stronie operatora porównania
FROM Pracownicy, Stanowiska
znajduje siÄ™ symbol (+).
WHERE Pracownicy.IDstanowiska =
stanowiska.IDstanowiska (+);
Sprzężenia rozszerzone lewe/prawe włączają wszystkie
lewostronne
rekordy z dwóch tabel, nawet jeśli dla rekordów z
SELECT stanowiska.IDstanowiska,stanowiska.nazwa,
prawej/lewej tabeli nie istniejÄ… odpowiadajÄ…ce im
Pracownicy.IDpracownika,Pracownicy.nazwisko
wartości w tabeli z lewej/prawej strony.
FROM Pracownicy, Stanowiska
Tabela znajdujÄ…ca siÄ™ po stronie znaku (+) jest
WHERE Pracownicy.IDstanowiska (+)=
Stanowiska.IDstanowiska;
uzupełniana.
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 9 Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 10
Wstawianie
Użycie BREAK n pustych linii
BREAK ONIdstanowiska
SELECT Idstanowiska, BREAK ON break_column SKIP n
Nazwisko, DataZatrudnienia
By pominąć stronę:
FROM Pracownicy
WHERE DataZatrudnienia >
BREAK ON break_column SKIP PAGE
'03/01/31'
ORDER BY Idstanowiska;
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 11 Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 12
2
Podzapytania dwupoziomowe
UŻYCIE CONNECT BY
Użycie odwołania do kolumny IDpracownika w kolumnie zwierzchnik i złączenie
zewnętrzne w połączeniu z funkcją NVL pozwalają pobrać inf. o pracownikach po lewej
PRIOR i START WITH
stronie pionowej kreski, a inf. o zwierzchniku po prawej
set pagesize 40
break on IDpracownika skip 1 Wybór osoby 7654 i jego zwierzchników
Col a heading 'ID|Prac' format 9999
SELECT IDpracownika,nazwisko, IDstanowiska,
Col b heading 'nazwisko|pracownika' format a10
zwierzchnik
Col c heading 'ID|Pracy|prac' format 99999
Col d heading 'ID|kier' format 9999
FROM Pracownicy
Col e heading 'nazwisko|kierownika' format a10
CONNECT BY PRIOR zwierzchnik=idpracownika
Col f heading 'ID|Pracy|kier' format 99999
SELECT w.IDpracownika a,w.Nazwisko b,w.IDstanowiska c,'|',b.IDpracownika START WITHidpracownika=7654;
d,nvl(b.Nazwisko,'NIKT') e, b.IDstanowiska f
FROM Pracownicy w, Pracownicy b
WHERE NVL(w.zwierzchnik,-9)=b.IDpracownika (+)
ORDER BY w.zwierzchnik;
clear columns
clear breaks
set pagesize 24
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 13 Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 14
Formatowanie raportów hierarchicznych - LPAD
Poziom węzła w hierarchii: SQL> col IDpracownika format 9999
SQL>col Nazwisko format a8
level SQL>col IDstanowiska format 99
SQL>col zwierzchnik format 9999
SQL>col distance format a15
SQL> set pagesize 10
Wybór osoby 7369 i jego zwierzchników
SQL> SELECT lpad(level-1,level*4-3,'===>') distance,
SELECT LEVEL, IDpracownika, nazwisko,
2 IDpracownika, nazwisko, IDstanowiska, zwierzchnik
IDstanowiska, zwierzchnik 3 FROM Pracownicy
4 CONNECT BY PRIOR zwierzchnik=idpracownika
FROM Pracownicy
5 START WITHidpracownika=7876;
CONNECT BY PRIOR zwierzchnik=idpracownika
DISTANCE IDPRACOWNIKA NAZWISKO IDSTANOWISKA ZWIERZCHNIK
START WITHidpracownika=7369;
--------------- ------------ -------- ------------ -----------
0 7876 Samar 3 7788
===>1 7788 Milak 2 7566
===>===>2 7566 Paluch 3 7698
===>===>===>3 7698 Miker 1 7839
===>===>===>=>4 7839 Pikara 5
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 15 Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. 16
3


Wyszukiwarka