53
Procesy normalizacji
a* zwvklcgo zapomnienia. Nie zawsze jest to tak proste, jak zademonstrowano tutaj i zale2y ni to od rodzaju wprowadzanych zmian oraz złożoności logiki bazy danych.
Jeśli się uprzeć, można rozdzielić tabelę ZAKUPY na trzy pochodne tabele, co w tym H przypadku komplikuje tylko projekt bazy, nie dając żadnych wymiernych korzyści Nic jesi powiedziane, że 4PN jest lepsza od 3PN. Zależy to od rodzaju zastosowań, więc me należy na siłę dążyć do jak najwyższych postaci normalnych. Projekt bazy danych nia pizedc wszystkim przedstawiać sobą funkcjonalność widzianą przez pryzmat autora -1) oprogramowania, które będzie w przyszłości z bazą współpracowało, jak również przez pry-w zinat wygody przyszłego użytkownika systemu.
Zwiększanie liczby tabel bezwzględnie komplikuje cały projekt, jak też zwiększa nakłady pracy programisty na sporządzenie kodu, co także ma swój ciężar gatunkowy w chwilach konserwacji oprogramowania i bazy danych. Im większa liczba tabel, tym większe także są nakłady ze strony SZBD na skojarzenie właściwych informacji. Załóżmy jednak, że tabelę tę znormalizowano dalej, wyodrębniając z niej aż trzy tabele pochodne (rys. 3.5).
ZAKUP KLIENT
Nr transakcji |
Kod klienta | |||
1 |
K1 | |||
2 |
K2 | |||
ar |
3 |
K3 | ||
4 |
K4 | |||
1S-: |
5 |
K.1 | ||
to |
6 |
K1 | ||
je- |
ZAKUP |
TOWAR | ||
nil |
Nr Irahsakcil |
Kod towaru | ||
id |
1 |
TS | ||
-► |
2 |
T1 | ||
go |
3 |
T1 | ||
:it |
4 |
T5 | ||
5 |
T1 | |||
iy. |
6 |
T3 | ||
ZAKUP |
ILOSC | |||
Nr transakcji |
llosc zakuolona | |||
1 |
100 | |||
--► |
2 |
100 | ||
3 |
100 | |||
4 |
100 | |||
5 |
100 | |||
6 |
320 J |
kynjnek 3 5 Przykład redukcji nadmiarowej
Ponieważ nie można tego zrobić inaczej, w każdej z tabel kluczem głównym jest numer transakcji, który zapewnia sprzężenie pomiędzy rozdzielonymi informacjami. W pr/> (war/aniu danych jedną z tabel (niech będzie to na przykład ZAKUPKL1ENT) ir/i w w yliiać jako tabelę wzorcową, to znaczy taką, w której będzie generowany koleiny numer transakcji Najwygodniej zrobić to poprzez zdefiniowanie wartości automatycznie ram rowancj przez S/lłD, jako pole nutoinkremenlowanc. Po wpisuniu wiersza do lej tabeli. «> a!gl un /iifcjcstiuwuny / określonym numerem transakcji, Następnym krokiem jest uzupełnienie