Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 5 (Projektowanie i normalizacja bazy danych) 1
Informacje podstawowe Główne cele normalizacji bazy danych to: Pozbycie się się redundancji danych oraz eliminacja potencjalnych anomalii. Określenie związków funkcyjnych pomiędzy atrybutami (określamy klucze). Sprawdzenie zgodności z poszczególnymi założeniami poszczególnych postaci normalnych. Przykład normalizacji bazy danych Zebrano i opracowano następujące dane zakupowe: Nr Faktury NIP Nazwa Adres Id Towaru Nazwa towaru Ilość Cena SWW VAT 12 Intel Core i7 3 2,5 1541 7 001 631008060 ADAX Ul. Róż 2 24 Płyta ASUS 4 3,6 1237 0 50 Zasilacz ATX 3 2,5 1221 7 002 645149863 HighIT Ul. Kot 3 12 Intel Core i7 4 2,5 1541 7 33 RAM 8GB 5 5,0 3655 22 003 658326147 ITEX Ul. Pól 5 33 RAM 8GB 2 5,0 3655 22 Pierwsza postać normalna 1NF Pierwsza postać normalna dotyczy atomowości (niepodzielności) danych. Wartości atrybutów (pól) muszą być niepodzielne. Każde pole zawiera tylko jedną wartość, a nie listę wartości lub powtarzającą się grup danych. Każdy jej atrybut(kolumna), który nie jest kluczem zależy od klucza głównego. Czy baza (tu na razie 1 tabela) znajduje się w pierwszej postaci normalnej? Nie, ponieważ dane w krotkach powtarzają się, nie są atomowe! Nr Faktury NIP Nazwa Adres Id Towaru Nazwa towaru Ilość Cena SWW VAT Ul. Róż 2 12 Intel Core i7 3 2,5 1541 7 001 631008060 ADAX 24 Płyta ASUS 4 3,6 1237 0 50 Zasilacz ATX 3 2,5 1221 7 002 645149863 HighIT Ul. Kot 3 12 Intel Core i7 4 2,5 1541 7 33 RAM 8GB 5 5,0 3655 22 003 658326147 ITEX Ul. Pól 5 33 RAM 8GB 2 5,0 3655 22 2
Tabela po sprowadzeniu do 1NF Nr Faktury NIP Nazwa Adres Id Towaru Nazwa towaru Ilość Cena SWW VAT 001 631008060 ADAX Ul. Róż 2 12 Intel Core i7 3 2,5 1541 7 001 631008060 ADAX Ul. Róż 2 24 Płyta ASUS 4 3,6 1237 0 001 631008060 ADAX Ul. Róż 2 50 Zasilacz ATX 3 2,5 1221 7 002 645149863 HighIT Ul. Kot 3 12 Intel Core i7 4 2,5 1541 7 002 645149863 HighIT Ul. Kot 3 33 RAM 8GB 5 5,0 3655 22 003 658326147 ITEX Ul. Pól 5 33 RAM 8GB 2 5,0 3655 22 Wybieramy klucz główny- które atrybuty jednoznacznie identyfikują krotki tabeli? Nr faktury oraz Id Towaru (łącznie) jednoznacznie identyfikują każdą krotkę tabeli Klucz główny będzie kluczem kompozytowym, tj. składającym się z 2 atrybutów - Nr Faktury, Id Towaru Druga postać normalna 2NF Tabela jest w drugiej postaci normalnej, gdy jest w pierwszej postaci normalnej oraz każdy jej atrybut(kolumna), który nie jest kluczem zależy od klucza głównego w całości i nie zależy od fragmentu klucza głównego. Czy baza znajduje się w drugiej postaci normalnej? Nie, ponieważ np.: Nazwa towaru, Cena oraz SWW * zależą wyłącznie od Id towaru (zależność od fragmentu klucza głównego) Ponadto VAT towaru zależny jest od SWW NIP zależy tylko od Nr faktury ( * ) https://pl.wikipedia.org/wiki/systematyczny_wykaz_wyrob%c3%b3w 3
Trzecia postać normalna 3NF Tabela jest w trzeciej postaci normalnej, gdy jest w drugiej postaci normalnej oraz wszystkie pola niebędące polami klucza głównego są od niego zależne bezpośrednio (tj. nie ma zależności przechodnich) Czy baza znajduje się w trzeciej postaci normalnej? Nie, ponieważ np.: VAT zależy od SWW a SWW zależy od Id towaru Nazwa oraz Adres zależą od NIP, a NIP zależy od Nr faktury Aby reprezentować schematy relacyjny wygodnie jest używać notacji nawiasowej: Podajemy nazwę mnemoniczną tabeli W nawiasie podajemy listę atrybutów czyli kolumn tabeli oddzielona przecinkami Jako pierwszy wymienia się klucz główny, należy go podkreślić Jeśli jest to klucz kompozytowy podkreślamy wszystkie atrybuty wchodzące w skład klucza Schemat dekompozycji do poszczególnych tabel 4
Ostateczny schemat bazy danych po dekompozycji. Wszystkie tabele tej bazy danych są zgodne z trzecią postacią normalną (3NF) 5
Zadanie 1. Dla podanego przez prowadzącego zbioru danych zaprojektuj schemat bazy danych, zastosuj metody normalizacji. Baza docelowa powinna zawierać wszystkie tabele w 3 postaci normalnej. IdAktora Imię Nazwisko IdFilmu Tytuł Rokprodukcji Skazani na 1 Morgan Freeman 1 Shawshank 1994 2 Iluzja 2013 3 Red 2010 2 Tim Robbins Skazani na 1 Shawshank 1994 3 Julianne Moore 4 Mapy gwiazd 2014 5 Wszystko w porządku 2010 6 Chloe 2009 7 Miasto ślepców 2008 4 Liam Neeson 7 Miasto ślepców 2008 8 Non stop 2014 Zadanie 2. Dla opracowanego schematu zaprojektuj bazę danych z użyciem narzędzi UML odpowiednio stosując asocjacje pomiędzy tabelami. Zadanie 3. Wprowadź przykładowe dane do tabel bazy danych oraz wyświetl dane używając poleceń SELECT oraz złączeń wewnętrznych. 6