Autor: Joanna Karwowska
Podczas używania bazy danych mogą pojawić się tzw. anomalie – sytuacje, w których może dojść do utracenia danych.
Anomalie, mogące wystąpić w niedostatecznie znormalizowanych tabelach, dzielimy na trzy rodzaje:
◦ anomalie wstawiania ,
◦ anomalie usuwania ,
◦ anomalie modyfikacji .
Nazwa
specjalizacji Numer
lekarza Nazwisko
lekarza Imię
lekarza Tytuł
lekarza Nr
pacjenta Nazwisko
pacjenta Imię
pacjenta Wiek
pacjenta Ubezpie- czenie
internista 222 Lubicz Jan Lek.
med. 158 Zawada Janusz 50 NFZ internista 222 Lubicz Jan Lek.
med. 159 Ziober Jakub 41 Brak gastrolog 555 Nowak Anna Dr 260 Kowal Jan 59 NFZ nefrolog 444 Burski Jakub Dr 499 Bąk Miron 25 Brak pediatra 777 Jarosz Piotr Lek.med. 248 Kmieć Anna 12 NFZ neurolog 333 Sum Jerzy Prof. 239 Nowak Anna 31 NFZ neurolog 666 Sum Jerzy Prof. 159 Ziober Jakub 42 Brak 1. Usunięcie pacjenta Mirona Bąka, nr 499, spowoduje utratę informacji o lekarzu
Jakubie Burskim (anomalia usuwania danych).
2. Zmiana lekarza na stanowisku internisty spowoduje konieczność zmiany imienia i nazwiska we wszystkich wierszach, w których jego dane się powtarzają (anomalia modyfikacji danych).
3. Podczas zapisywania do szpitala nowego pacjenta musielibyśmy wielokrotnie powtarzać jego dane przy wszystkich lekarzach do których byłby zapisany (anomalia wstawiania).
Normalizacja bazy danych jest to proces
polegający na usuwaniu z niej błędów i nieprawidłowości dotyczących struktury
tabel.
Normalizacja bazy danych w praktyce polega na sprawdzeniu zgodności jej wykonania z
pierwszą, druga i trzecią postacią normalną.
Baza danych do prawidłowego (efektywnego) działania musi spełniać założenia
normalności.
Pierwsza postać normalna wymaga, aby:
w każdym polu były wartości niepodzielne (atomowe),
nie było redundancji (nadmiarowości –
występowania powtarzających się danych).
podział wartości złożonych na proste,
wyeliminowanie redundancji.
Druga postać normalna wymaga, aby:
spełniona była pierwsza postać normalna,
wszystkie pola niekluczowe są w pełni zależne od całego klucza głównego – nie mogą być zależne od jego składowych.
Zgodność z drugą postacią normalną sprawdzamy, gdy klucz jest złożony z kilku pól.
przeniesienie do nowych tabel grup danych
zależnych od składowych klucza lub niezależnych
od klucza
Trzecia postać normalna wymaga, aby:
spełniona była druga postać normalna,
wszystkie pola niekluczowe są zależne
jedynie od klucza głównego tabeli – brak jest jakichkolwiek zależności pomiędzy polami niekluczowymi.
przeniesienie do nowych tabel grup danych
zależnych od pól niekluczowych
Model danych w trzeciej postaci normalnej jest wygodnym punktem wyjścia do
projektowania fizycznej struktury danych.
W przykładzie na rysunku tabela PRACOWNICY zawiera powtarzające się grupy wartości atrybutów. Rozwiązaniem jest dekompozycja (nie
powodująca utraty danych) na dwie tabele PRACOWNICY i PRZYPISANIA.
Dekompozycja ta powinna usunąć powtarzające się dane.
Na rysunku kluczem głównym w tabeli
PRZYPISANIA jest kombinacja kolumn NR i NRP.
Kolumna PROJEKT jest funkcjonalnie zależna tylko od NRP to znaczy, tylko od części klucza głównego.
Rozwiązaniem jest dekompozycja, polegająca na:
• usunięciu atrybutu funkcjonalnie związanego (PROJEKT) do osobnej tabeli (tabela PROJEKTY),
• zabranie wraz z nim jego wyznacznika (NRP).
W tabeli PRACOWNICY NR_W jest funkcjonalnie zależny od NAZWA_W, który nie jest kluczem głównym. Z atrybutów tych tworzy się nową tabelę WYDZIAŁY. Atrybut NAZWA_W zostaje usunięty z tabeli PRACOWNICY, natomiast NR_W pozostaje w niej jako klucz obcy.
Tabele PRZYPISANIA i PROJEKTY bez zmian w trzeciej postaci normalnej.
ID Nazwisko Imię Adres
1 Kowalski Patryk 80-165, Gdańsk, ul. Reja 13 m.1
2 Nowak Anna 83-300, Pruszcz Gdański, ul. Kochanowskiego1 3 Burski Jakub 00-710, Warszawa, ul. Woronicza 7
Dlaczego?
Klient Zamówienie Zakupiony towar
Jan 1 bluza, pasek, spodnie
Wojciech 2 skarpetki, buty, koszula
Grzegorz 3 rękawice, spodnie
Dlaczego?
Id_lekarza
(klucz_główny) Id_specjalizacji
(klucz_główny) Nazwa_specjalizacji Nazwisko_lekarza
1 1 internista Nowak
2 1 internista Lubicz
3 2 kardiolog Burski
4 3 neurolog Kowalska
Dlaczego?
Id_lekarza
(klucz_główny) Nazwisko Gabinet Numer telefonu do gabinetu 1 Nowak stomatologiczny 111 111 111
2 Lubicz ortopedyczny 222 222 222
3 Burski kardiologiczny 333 333 333 4 Kowalska stomatologiczny 111 111 111
Dlaczego?
Id Nazwa towaru Cena Ilość sztuk Wartość
1 mysz 20 zł 15 300 zł
2 klawiatura 100 zł 15 1500 zł
3 monitor 1000 zł 15 15 000 zł