Normalizacja

Transkrypt

Normalizacja
Wykład X
Normalizacja
Proces dekompozycji; odwracalny rozpoczynający się od podstawowej relacji
zmierzającej do schematu optymalnego, pozbawionego anomalii.
Anomalie
 wstawiania
 usuwania
 modyfikacji
Proces normalizacji musi odbywać się bez strat
 danych; żaden atrybut nie może zostać zgubiony
 zależności; wszystkie zależności funkcyjne muszą być reprezentowane w pojedynczych
schematach relacji
proces normalizacji spowoduje:
o „spłaszczenie” struktury danych poprzez eliminację atrybutów złożonych
o ustalenie pierwotnych i obcych kluczy relacji
o wyeliminowanie niepożądanych zależności pomiędzy kolumnami relacji poprzez
wprowadzenie nowych relacji
 aktualnie rozróżnia się pięć postaci normalnych
 proces normalizacji jest (zazwyczaj) kończony po osiągnięciu 3NF, która w większości
praktycznych zastosowań uznawana jest za wystarczającą
 przekształcanie relacji do zaawansowanych postaci normalnych dotyczy tabel, które
posiadają więcej niż 3 atrybuty i każdy z nich pełni funkcję klucza.
Postacie normalne ( zdefiniowane przez Codda )
Pierwsza postać normalna 1NF
 relacja jest w pierwszej postaci normalnej, jeśli każda wartość atrybutu w każdej krotce
tej relacji jest wartością atomową
Zależność funkcyjna – definicja:
atrybut Y relacji R pozostaje w zależności funkcyjnej od
atrybutu X relacji R wtedy i tylko wtedy, gdy z każdą wartością
atrybutu X jest zawsze skojarzona ta sama wartość atrybutu Y
X→Y
Dalsze postacie normalne 2NF , 3NF
Wykład X
 relacja jest w drugiej postaci normalnej, jeśli jest w 1NF i każdy atrybut nie należący
do żadnego klucza potencjalnego jest zależny funkcyjnie od całego klucza głównego
 relacja jest w trzeciej postaci normalnej jeśli jest w 2NF i wszystkie atrybuty nie
należące do żadnego klucza potencjalnego są wzajemnie niezależne
Przysięga normalizacji ( parafraza )
1.
2.
3.
4.
5.
Bez powtórzeń
Atrybuty zależą od klucza
Od całego klucza
I niczego innego, tylko klucza
Tak mi dopomóż Codd.
przykład:
z www.ploug.org.pl/seminarium/05_01/pliki/2.pdf
Tabela ZAMÓWIENIA
Nr_
zamówienia
Id_
dostawcy
Nazwa_
dostawcy
Adres_
dostawcy
Id_
części
Nazwa_
Części
Ilość_
Magazyn
zam_części
Adres_
magazynu
001
001
001
002
002
003
004
300
300
300
400
400
500
600
NISSAN
NISSAN
NISSAN
HONDA
HONDA
TOYOTA
HONDA
Liege
Liege
Liege
Glasgow
Glasgow
Tokio
London
53
57
59
54
32
88
59
Pompa
Filtr
Błotnik
Pompa
Koło
Silnik
Błotnik
100
50
500
500
100
15
400
Warszawa
Warszawa
Szczecin
Warszawa
Szczecin
Poznań
Szczecin
5
5
6
5
6
7
6
2
Założenia
• tabela zawiera informacje o zamówieniach części u dostawców i skierowaniu ich do
odpowiednich magazynów
• jedno zamówienie może dotyczyć wielu części dostarczanych przez tego samego dostawcę
• różne zamówienia mogą dotyczyć tego samego dostawcy i tych samych części
• ta sama część może być dostarczana przez różnych dostawców
• te same części są składowane zawsze w tym samym magazynie
• w zamówieniach jest podawany identyfikator dostawcy i nazwa dostawcy, gdyż różni
dostawcy mogą mieć tę samą nazwę ( np. Honda )
Wady ( ANOMALIE ) tabeli ZAMÓWIENIA
•
•
•
występuje dublowanie się danych; wielokrotnie jest pamiętany adres dostawcy; podobnie
magazynu
w tej tabeli nie możemy zapisać adresu dostawcy, do którego nie złożono żadnego
zamówienia
usuwając informację o zamówieniu skierowanym do danego dostawcy, możemy utracić
Wykład X
•
informacje o jego adresie
analogiczna sytuacja występuje w odniesieniu do magazynu i jego adresu
Rys. Zależności funkcyjne dla tabeli Zamówienia
proponowane tabele po normalizacji to:
Zamowienie_do_dostawcy(Nr_zamowienia, Id_dostawcy)
Czesci(Id_czesci, Nazwa_czesci)
Czesci_w_magazynie(Id_czesci, Magazyn)
Magazyny(Magazyn, Adres_magazynu)
Dostawcy(Id_dostawcy, Nazwa_dostawcy, Adres_dostawcy)
Dostawy_czesci(Nr_zamowienia, id_czesci, ilosc_zam_czesci)
Postulaty Codd'a dla relacyjnej bazy danych
(1985 )
1. Postulat informacyjny
Na poziomie logicznym dane są reprezentowane wyłącznie za pomocą tabelwartości.
2. Postulat dostępu
Każda wartość w bazie danych jest dostępna poprzez nazwę tabeli, atrybut oraz wartości kluczy
głównego
Wykład X
3. Postulat wartości NULL
Dostępna jest specjalna wartość NULL do reprezentacji wartości nieokreślonej, nieznanej
4. Postulat słownika danych
Informacje o obiektach bazy danych tworzących schemat bazy danych są na poziomie logicznym
zgrupowane w tabele i dostępne w taki sam sposób jak każde inne dane
5. Postulat pełnego języka danych
W systemie jest zaimplementowany pełny język przetwarzania danych obejmujący definiowanie
danych, perspektyw, więzów spójności, manipulację danymi (interaktywnie jak i przez program);
nadawanie uprawnień użytkownikom, obsługę transakcji i bezpieczeństwo danych.
6. Postulat modyfikowania danych przez perspektywę
Możliwe jest modyfikowanie danych za pomocą perspektyw, w przypadku gdy taka modyfikacja jest
semantycznie sensowna.
7. Postulat modyfikowania danych na wysokim poziomie abstrakcji
System umożliwia modyfikowanie danych za pomocą operacji, których argumentami są tabele
( perspektywy ) a więc w szczególności nie tylko w sposób nawigacyjny
8. Fizyczna niezależność danych
Zmiany w metodach przechowywania danych i dostępu do nich nie mają wpływu na aplikację.
9. Logiczna niezależność danych
Zmiany w tabelach zachowujących informacje i dopuszczalne semantycznie, nie mają wpływu na
aplikację.
10. Niezależność więzów spójności
Więzy spójności są definiowalne w języku bazy danych, nie muszą być wyrażone w aplikacji.
11. Niezależność dystrybucyjna
System ( i jego język ) umożliwiają używanie danych zapisanych w różnych fizycznie miejscach ( w różnych węzłach sieci ).
12. Zabezpieczenie przed operacjami na niższych poziomach abstrakcji
Jeśli system umożliwia operacje na niższych poziomach abstrakcji, nie mogą one naruszać
relacyjnego modelu danych w tym pomijać ograniczeń określonych przez więzy spójności.

Podobne dokumenty