aktualizacje AVG
Transkrypt
aktualizacje AVG
Wady redundancji
BAZY DANYCH
• Konieczność utrzymania spójności kopii,
• Marnowanie miejsca,
• Anomalie.
WYKŁAD 5
Normalizacja relacji.
Zapytania zagnieżdżone cd.
(Wybrane materiały)
Dr inż. E. Busłowska
Copyright © 2014-2015 E. Busłowska.
1
Anomalie
•
•
•
•
Twierdzenie
Jeżeli w relacji R={X, Y, Z} istnieją
zależności funkcyjne X→Y, to relacja R jest
relacją rozkładalną, możemy więc zapisać:
R=R1[X, Y]*R2[X, Z]
3
Rozkład relacji i normalizacja
Copyright © 2014-2015 E. Busłowska.
4
PROCES NORMALIZACJI RELACYJNEJ BAZY
DANYCH
• Postać normalna pozwala minimalizować koszty
przechowywania i aktualizowania oraz zwiększać wiarygodność
danych.
• redundancję usuwa się przez rozkład relacji,
• rozkład odwracalny: można odwrócić przez
naturalne złączenie,
• rozkład relacji powinien doprowadzić do tzw.
postaci normalnej,
• rozkład relacji nie powinien powodować utraty
zależności istniejących w relacji pierwotnej.
Copyright © 2014-2015 E. Busłowska.
2
Podział relacji
Związane z aktualizacją,
Związane z istnieniem,
Związane z wprowadzaniem,
Związane z usuwaniem.
Copyright © 2014-2015 E. Busłowska.
Copyright © 2014-2015 E. Busłowska.
Wszystkie relacje znormalizowane i nieznormalizowane
Relacja w 1NF – wszystkie atrybuty mają wartości
proste
Relacja w 2NF – nie ma zależności części klucza
Relacja w 3NF – nie ma zależność
tranzytywnych
Relacja w 4NF – wiąże się z
zależnościami wielowartościowymi
5
Copyright © 2014-2015 E. Busłowska.
6
1
Pierwsza postać normalna
Wady relacji w pierwszej postaci normalnej
• Relacja jest w 1NF gdy wszystkie atrybuty są
atomowe (prostych typów).
• 1NF jest wymogiem dla rachunku relacyjnego,
a więc i języków zapytań.
Copyright © 2014-2015 E. Busłowska.
• Dublowanie się danych prowadzi do
niepotrzebnego zajmowania pamięci i
przedłużania wykonywania operacji
relacyjnych.
• Może również wystąpić niespójność danych
problemy przy aktualizacji.
• Usuwając informacje możemy utracić dane.
7
Copyright © 2014-2015 E. Busłowska.
Druga postać normalna
8
Relacja ZAMÓWIENIA w 2PN
• Dana relacja jest w drugiej postaci normalnej,
jeśli każdy jej atrybut nie wchodzący w skład
klucza potencjalnego jest w pełni funkcjonalnie
zależny od wszystkich kluczy potencjalnych.
• Przyczyną braku 2NF jest błędne połączenie
danych.
1.
DOSTAWCA NA ZAMÓWIENIU
<Nr_zamówienia, Nr_ dostawcy,
Nazwa_dostawcy, Adres_dostawcy>
2. CZĘŚCI W MAGAZYNIE < Nr_ części,
Nazwa_części, Magazyn, Adres_magazynu>
3. DOSTAWY CZĘŚCI < Nr_ zamówienia, Nr_
części, Ilość>
Copyright © 2014-2015 E. Busłowska.
9
Pełna zależność funkcjonalna
• Definicja
• Atrybut Y relacji R jest w pełni funkcjonalnie
zależny od zbioru atrybutów X tej relacji, jeśli
jest funkcjonalnie zależny od niego, ale nie jest
funkcjonalnie zależny od żadnego podzbioru
zbioru X.
Copyright © 2014-2015 E. Busłowska.
10
Diagramy zależności funkcyjnych
Nr_zamówienia
Nr_ części
Nr_ dostawcy
Nazwa_części
Nazwa_dostawcy
Adres_dostawcy
Magazyn
Nr_zamówienia
Adres_magazyny
Nr_ części
Ilość
Copyright © 2014-2015 E. Busłowska.
11
Copyright © 2014-2015 E. Busłowska.
12
2
Relacja w 3PN
Zależności tranzytywne
• Jeśli A→B, B → C, oraz A nie jest funkcyjnie
zależne od B lub C wtedy C jest zależny
tranzytywnie od A.
• Zależność tranzytywna zawiera zależności
funkcyjne pomiędzy atrybutami, które nie
wszystkie są kluczami.
• Jeśli jest w 1PN,
• Każdy atrybut niekluczowy jest bezpośrednio
zależny funkcyjnie od całego klucza głównego,
• 3PN jest zazwyczaj wystarczająca
• Każdą relację można doprowadzić do 3PN
zachowując:
zależności
odwracalność rozkładu
Copyright © 2014-2015 E. Busłowska.
13
Diagramy zależności funkcyjnych
i przechodnich
Nr_ części
• Schemat relacji R ze zbiorem zależności F jest
w Czwartej postaci normalnej jeśli dla każdej
zależności wielowartościowej (przy czym Y
jest zbiorem niepustym lub podzbiorem X, a XY
nie zawiera wszystkich atrybutów R), to X jest
nadkluczem do R.
• Jeśli F nie zawiera zależności
wielowartościowych to czwarta postać normalna
pokrywa się z postacią normalną Boyce'aCodda.
Nazwa_części
Nazwa_dostawcy
Adres_dostawcy
14
Czwarta postać normalna
Nr_zamówienia
Nr_ dostawcy
Copyright © 2014-2015 E. Busłowska.
Magazyn
Adres_magazyny
Nr_zamówienia
Nr_ części
Ilość
Copyright © 2014-2015 E. Busłowska.
15
Zależność wielowartościowa
16
Postać normalna Boyce'a-Codda
• Mówimy, że schemat relacji R ze zbiorem zależności F jest
w postaci normalnej Boyce'a-Codda, jeśli zawsze, gdy w R
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
• Związki między postaciami normalnymi
• 4NF => BCNF => 3NF => 2NF => 1NF
• Oznacza, że mając wartość jednego atrybutu, można
określić wartości zbioru innego atrybutu.
• Oznacza się: X ->>Y, i odczytuje jako: „X określa wiele Y".
• Przykładowo:
• Znając numer wykładowcy, można określić listę
prowadzonych przez niego przedmiotów,
Nrwykładowcy ->> Przedmiot
• Znając numer dostawcy można określić części, które
dostarcza,
Nrdostawcy ->> Część.
Copyright © 2014-2015 E. Busłowska.
Copyright © 2014-2015 E. Busłowska.
17
Copyright © 2014-2015 E. Busłowska.
18
3
Wielowartościowe operatory porównania
•
•
•
•
•
•
•
•
IN - równy dowolnej wartości podawanej przez wewnętrzną instrukcję SELECT
Not IN - różny od wszystkich wartości podawanych przez wewnętrzną instrukcję
SELECT
=ANY – działa tak jak IN odpowiednik logicznego or
> ANY, >= ANY – większy bądź większy-równy dowolnej wartości podawanej
przez wewnętrzną instrukcję SELECT
< ANY, <= ANY - mniejszy bądź mniejszy-równy dowolnej wartości podawanej
przez wewnętrzną instrukcję SELECT
= ALL - równy wszystkich wartości podawanych przez wewnętrzną instrukcję
SELECT
> ALL, >= ALL - większy bądź większy-równy wszystkim wartościom podawanym
przez wewnętrzną instrukcję SELECT
< ALL, <= ALL - mniejszy bądź mniejszy-równy wszystkim wartościom
podawanym przez wewnętrzną instrukcję SELECT
Copyright © 2014-2015 E. Busłowska.
19
Zapytanie zewnętrzne
uruchamiane na końcu
FROM Samochody
WHERE IdDealera In
Wielowartościowy
operator porównania
(Select IdDealera
FROM Dealerzy
Zapytanie wewnętrzne
uruchamiane na początku
WHERE miasto='Warszawa');
Copyright © 2014-2015 E. Busłowska.
20
SELECT Model
FROM Samochody
WHERE CenaJednostkowa <ALL
(SELECT CenaJednostkowa
FROM SAMOCHODY S, DEALERZY D
WHERE S.IdDealera=D.IdDealera AND
NazwaFirmy=‘Honda’);
SELECT Model
FROM Samochody
WHERE CenaJednostkowa >ANY
(SELECT CenaJednostkowa
FROM SAMOCHODY S, DEALERZY D
WHERE S.IdDealera=D.IdDealera AND
NazwaFirmy=‘Honda’);
21
Copyright © 2014-2015 E. Busłowska.
22
Zapytania wielokrotne
Słowo kluczowe ALL w klauzuli HAVING
SELECT Nazwisko, Count(*) Ile
FROM Pracownicy P, Umowy U
WHERE P.IDpracownika = U.IDpracownika
GROUP BY P.Idpracownika, Nazwisko
HAVING COUNT(*) >=ALL
(SELECT Count(*)
FROM Umowy
WHERE idPracownika IN
(SELECT IdPracownika
FROM Pracownicy WHERE kraj =‘Francja’)
GROUP BY idpracownika);
SELECT Nazwisko, Count(*) liczba, Stanowisko
FROM Pracownicy p, Umowy U
WHERE P.IDpracownika = U.IDpracownika
GROUP BY Nazwisko, Stanowisko
HAVING Count(*) >= ALL
(SELECT Count(*)
FROM Pracownicy pr,Umowy Um
WHERE Pr.IDpracownika = Um.IDpracownika AND
stanowisko=‘Przedstawiciel handlowy’
GROUP BY Pr.IdPracownika, Nazwisko);
Copyright © 2014-2015 E. Busłowska.
SELECT Model
Słowo kluczowe ALL
Słowo kluczowe ANY
Copyright © 2014-2015 E. Busłowska.
Zapytania proste zwracające wiele wartości
23
Copyright © 2014-2015 E. Busłowska.
24
4
Zapytania skorelowane (współzależne)
SELECT Nazwisko, Imię, Stanowisko,
Wynagrodzenie
FROM Pracownicy P1
WHERE Wynagrodzenie >=
(SELECT Avg(Wynagrodzenie)
FROM Pracownicy P2
WHERE
P2.Stanowisko=P1.Stanowisko)
ORDER BY Stanowisko;
Copyright © 2014-2015 E. Busłowska.
Zapytania z predykatem EXISTS
• EXISTS – czy zapytanie podrzędne przekazało chociażby jedną
wartość
• NOT EXISTS – czy zapytanie podrzędne nie przekazało żadnej
wartość
SELECT NazwaFirmy
FROM Dealerzy D
WHERE EXISTS
(SELECT *
FROM Samochody S
WHERE D.IdDealera =S.IdDealera
AND PojSilnika=2500);
25
Copyright © 2014-2015 E. Busłowska.
26
Zapytania parametrycze
SELECT Nazwisko
FROM Klienci
WHERE Kraj = ‘&&KR’ AND Miasto = ‘&MT’;
&& - przy ponownym uruchomieniu następuje podstawienie
wcześniejszych wartości zmiennych
& - nie zapamiętuje wcześniej podanych wartości
Copyright © 2014-2015 E. Busłowska.
27
5