MW6 BDI


Wady redundancji
BAZY DANYCH I
konieczność utrzymania spójności
kopii,
marnowanie miejsca,
WYKAAD6
anomalie.
Normalizacja relacji.
Zapytania zagnieżdżone.
(Wybrane materiały)
Dr inż. E. Busłowska
1
2
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Anomalie
Podział relacji
Twierdzenie
ZwiÄ…zane z aktualizacjÄ…,
Jeżeli w relacji R={X, Y, Z} istnieją
ZwiÄ…zane z istnieniem,
zależności funkcyjne X
Y, to relacja R jest


ZwiÄ…zane z wprowadzaniem,
relacją rozkładalną, możemy więc zapisać:
ZwiÄ…zane z usuwaniem.
R=R1[X, Y]*R2[X, Z]
3 4
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Rozkład relacji i
PROCES NORMALIZACJI
normalizacja
RELACYJNEJ BAZY DANYCH
Postać normalna pozwala minimalizować koszty
redundancję usuwa się przez rozkład relacji,
przechowywania i aktualizowania oraz zwiększać
rozkład odwracalny: można odwrócić przez
wiarygodność danych.
naturalne złączenie,
Wszystkie relacje znormalizowane i nieznormalizowane
Relacja w 1PN  wszystkie atrybuty mają wartości
rozkład relacji powinien doprowadzić do tzw.
proste
Relacja w 2PN  nie ma zależności części klucza
postaci normalnej,
Relacja w 3PN  nie ma zależność
tranzytywnych
rozkład relacji nie powinien powodować utraty
Relacja w 4PN  wiąże się z
zależnościami wielowartościowymi
zależności istniejących w relacji pierwotnej.
5 6
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
1
Pierwsza postać
Wady relacji w pierwszej
normalna postaci normalnej
relacja jest w1PN gdy wszystkie
Dublowanie siÄ™ danych prowadzi do
atrybuty sÄ… atomowe - prostych
niepotrzebnego zajmowania pamięci i
typów,
przedłużania wykonywania operacji
1PN jest wymogiem dla rachunku
relacyjnych.
relacyjnego, a więc i języków
Może również wystąpić niespójność danych
zapytań.
problemy przy aktualizacji.
Usuwając informacje możemy utracić dane.
7 8
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Druga postać normalna Pełna zależność funkcjonalna
dana relacja jest wdrugiej postaci
Definicja
normalnej, jeśli każdy jej atrybut nie
Atrybut Y relacji R jest w pełni
wchodzący w skład klucza potencjalnego jest
funkcjonalnie zależny od zbioru
w pełni funkcjonalnie zależny od wszystkich
atrybutów X tej relacji, jeśli jest
kluczy potencjalnych.
funkcjonalnie zależny od niego, ale
przyczyną braku 2NF jest zwykle błędne
nie jest funkcjonalnie zależny od
połączenie danych
żadnego podzbioru zbioru X.
9 10
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Relacja ZAMÓWIENIA
w 2PN Wady relacji w 2PN
W przykładowej BD w relacji DOSTAWCA
podział według zależności funkcyjnych:
NA ZAMÓWIENIU dublują się dane atrybutu
Nazwa dostawcy i Adres dostawcy, a w relacji
1. DOSTAWCA NA ZAMÓWIENIU
CZÅšCI W MAGAZYNIE  atrybuty Adres
Nazwa_dostawcy, Adres_dostawcy>
magazynu.
2. CZŚCI W MAGAZYNIE < Nr_ części,
Nazwa_części, Magazyn, Adres_magazynu> Wynika to z istnienia tak zwanych
3. DOSTAWY CZŚCI < Nr_ zamówienia, Nr_
przechodnich zależności funkcyjnych między
części, Ilość>
atrybutami.
11 12
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
2
Wielowartościowe operatory
porównania
ZAPYTANIA ZAOŻONE
IN - równy dowolnej wartości podawanej przez wewnętrzną
instrukcjÄ™ SELECT
Not IN - różny od wszystkich wartości podawanych przez
Zapytania w których podzapytanie
wewnętrzną instrukcję SELECT
może zwrócić wiele wartości, =ANY  działa tak jak IN odpowiednik logicznego or
> ANY, >= ANY  większy bądz większy-równy dowolnej
Zapytania skorelowane,
wartości podawanej przez wewnętrzną instrukcję SELECT
< ANY, <= ANY - mniejszy bądz mniejszy-równy dowolnej
Zapytania z predykatem EXISTS,
wartości podawanej przez wewnętrzną instrukcję SELECT
= ALL - równy wszystkich wartości podawanych przez
Zapytania parametryczne.
wewnętrzną instrukcję SELECT
> ALL, >= ALL - większy bądz większy-równy wszystkim
wartościom podawanym przez wewnętrzną instrukcję SELECT
< ALL, <= ALL - mniejszy bądz mniejszy-równy wszystkim
wartościom podawanym przez wewnętrzną instrukcję SELECT
13 14
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Zapytania proste
zwracające wiele wartości Słowo kluczowe ANY
SELECT Model
SELECT Model
Zapytanie zewnętrzne
FROM Samochody uruchamiane na końcu
FROM Samochody
WHERE IdDealera In
WHERE Cena>ANY
Wielowartościowy
operator porównania
(Select IdDealera
(SELECT Cena
Zapytanie wewnętrzne
FROM Dealerzy
FROM SAMOCHODY S, DEALERZY D
uruchamiane na poczÄ…tku
WHERE miasto='Warszawa');
WHERE S.IdDealera=D.IdDealera
ANDNazwaFirmy= Honda );
15 16
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Słowo kluczowe ALL w
Słowo kluczowe ALL klauzuli HAVING
SELECT Nazwisko, Count(*) liczba, Stanowisko
SELECT Model
FROM Pracownicy p, Umowy U
FROM Samochody
WHERE P.IDpracownika = U.IDpracownika
GROUP BY Nazwisko, Stanowisko
WHERE CenaHAVING Count(*) >= ALL
(SELECT Cena
(SELECT Count(*)
FROM SAMOCHODY S, DEALERZY D FROM Pracownicy pr,Umowy Um
WHERE Pr.IDpracownika = Um.IDpracownika AND
WHERE S.IdDealera=D.IdDealera
stanowisko= Przedstawiciel handlowy
ANDNazwaFirmy= Honda ); GROUP BY Pr.IdPracownika, Nazwisko);
17 18
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
3
Zapytania skorelowane
Zapytania wielokrotne (współzależne)
SELECT Nazwisko, Count(*) Ile SELECT Nazwisko,ImiÄ™, Stanowisko,
FROM Pracownicy P, Umowy U
Wynagrodzenie
WHERE P.IDpracownika = U.IDpracownika
FROM Pracownicy P1
GROUP BY P.Idpracownika, Nazwisko
HAVING COUNT(*) >=ALL
WHERE Wynagrodzenie >=
(SELECT Count(*)
(SELECT Avg(Wynagrodzenie)
FROM Umowy
WHERE idPracownika IN FROM Pracownicy P2
(SELECT IdPracownika
WHERE P2.Stanowisko =P1.Stanowisko)
FROM Pracownicy WHERE kraj = Francja )
ORDER BY Stanowisko;
GROUP BY idpracownika);
19 20
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
Zapytania z predykatem
EXISTS Zapytania parametrycze
EXISTS  czy zapytanie podrzędne przekazało
SELECT NazwaFirmy
chociażby jedną wartość
FROM Dealerzy
NOT EXISTS  czy zapytanie podrzędne nie
przekazało żadnej wartość WHERE Adres =  &AD AND Miasto =  &&MS ;
SELECT NazwaFirmy
FROM Dealerzy D
&& - przy ponownym uruchomieniu następuje
WHERE EXISTS
podstawienie wcześniejszych wartości zmiennych
(SELECT *
& - nie zapamiętuje wcześniej podanych wartości
FROM Samochody S
WHERE D.IdDealera =S.IdDealera
AND PojSilnika=2500);
21 22
Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved. Copyright © 2010-2011 E. BusÅ‚owska. All rights reserved.
4


Wyszukiwarka