Normalizacja jest podejściem do projektowania bazy danych do systematycznego rozkładania tabel w celu usunięcia redundancji danych i zapobiegania anomalii, które mogą towarzyszyć wstawieniu, aktualizacji i usunięciu danych. Istnieje pierwsza postać normalna (1NF), druga postać normalna (2NF), trzecia postać normalna (3NF), normalna postać z kodem Boyce (BCNF), czwarta postać normalna (4NF) i piąta normalna postać (5NF). Szósta normalna forma jest nadal rozwijana (wciąż w stanie badawczym) i nie będzie omawiana w tej serii. Normalna postać z kodkiem Boyce jest jak 3½ (3.5) normalna postać. Relacyjna baza danych składa się z powiązanych tabel, które powinny zostać znormalizowane.
Ten artykuł (samouczek) wyjaśnia o pierwszej normalnej formie. To pierwsza część serii, pięć normalnych form. Przykładową bazą danych to sklep wygody. W Wielkiej Brytanii sklep wygody nazywa się sklepem narożnym. W niektórych krajach nazywa się to sklepem rezerwowym.
Nieprzestrzegana tabela transakcji
Transakcja to kupowanie produktów przez klienta, od sklepu lub otrzymywanie produktów od sklepu od dostawców na sprzedaż. Zakłada się, że w tej części serii (w tym samouczku) urzędnik, który rejestruje transakcje. Może być więcej niż jeden urzędnik, który nic nie wie o normalizacji. Jeśli jest więcej niż jeden urzędnik, wszyscy urzędnicy zapisują w tej samej książce ćwiczeń i żaden z nich nie wie nic o normalizacji. Właściciel (właściciel sklepu) również nic nie wie o normalizacji. Jego ojciec właśnie umarł i zostawił mu trochę pieniędzy, a on postanowił zainwestować w sklep wygody. Tak więc urzędnik (lub urzędnicy) zaczyna się od jednej tabeli do zarejestrowania wszystkich transakcji. Tabela ma następujące nagłówki kolumn, w których trans oznacza transakcję:
Trans (produkt, kategoria, klient, dostawca, pracownik, cena)
Trans odnosi się do wiersza w tabeli. Tabela jest tabelą transakcyjną. Przykłady produktów sprzedawanych w sklepie to: słodycze, czekoladki, sprite, coca-cola, fanta, pepsi, mleko, jogurt, ser, pasty do zębów, tkanki, pieluchy, cukierki, frytki i orzechy. Każda z tych nazw może pojawić się w kolumnie produktu.
Produkty te należą do kategorii: cukierni, napojów bezalkoholowych, produktów mlecznych, kosmetyków i przekąsek.
Kolumna klientów ma nazwiska osób, które kupują w sklepie. Kolumna dostawcy ma nazwy firm, które dostarczają produkty do sprzedaży przez sklep. Kolumna pracownika ma nazwę urzędnika, który sprzedaje produkt lub odbiera produkt od dostawcy i rejestruje go. Kolumna akcji wskazuje, czy dokonano sprzedaży klientowi, czy też zamówienie (zakupiono) od dostawcy.
Każda cena to całkowita cena sprzedawanych lub kupionych w jednej transakcji.
I tak pierwsze rzędy stołu to:
Przed kontynuowaniem wiedz, że kolumny tabeli w tabeli bazy danych są również nazywane atrybutami. Rzędy o wartościach można określić jako obiekty.
Teraz zauważ, że w kolumnie ceny waluta nie jest wskazana. Niezależnie od tego, czy waluta to dolary, euro, czy jakaś inna waluta, nie trzeba jej wskazać. Jest to jednak wskazane w jakimś obszarze komentarzy, który nie jest częścią tabeli.
Ze stołu: Do tej pory są trzy urzędników, z wyłączeniem właściciela, a jeden z nich dwukrotnie przeprowadził transakcję; Do tej pory są trzech klientów, a jeden z nich kupił dwa razy; Do tej pory są cztery firmy dostawców i każda z nich dotyczy jednej transakcji.
Nadmierność:
Zauważ, że „John Smith” pojawia się jako wartość w dwóch rzędach w tej samej kolumnie. Powtarzanie tej samej wartości w tej samej kolumnie jest redundancja, która może prowadzić do problemów z rachunkiem.
Pierwsze zasady normalnej formy
Aby tabela była w pierwszej normalnej formie, należy przestrzegać następujących zasad. W przeciwnym razie byłyby problemy z rachunkiem:
1) Wszystkie kolumny w tabeli powinny mieć unikalne nazwy nagłówka.
2) Każda komórka musi mieć tylko jedną wartość.
3) Wartości przechowywane w kolumnie powinny być tego samego typu.
4) rzędy powinny być wyraźne.
5) Kolejność kolumn lub kolejności wierszy nie ma znaczenia.
Ty, czytelnik, który w końcu ukończy tę serię i wie wszystko o normalnych formularzach, zostałeś deweloperem bazy danych. Właścicielem sklepu wygodnego jest twój przyjaciel. Postanowiłeś odwiedzić witrynę biznesową znajomego (sklep).
Patrzysz na poprzedni stół, który wyprodukowali. Zastanawiasz się przez jakiś czas, a potem potrząśnij głową, mówiąc: „HM-HM-HM”. Następnie mówisz swojemu przyjacielowi, właścicielowi i jego robotnikom, że nie wszystkie zasady pierwszej normalnej formy zostały szanowane; A to doprowadziłoby do błędów rachunkowości.
Następnie postanowiłeś nauczyć ich zasad pierwszej normalnej formy, badając podane pięć zasad, ponieważ są one związane z poprzednią tabelą, jeden po drugim.
Zasada nr 1: Wszystkie kolumny w tabeli powinny mieć unikalne nazwy nagłówka.
Czy wszystkie kolumny poprzedniej tabeli mają unikalne nazwy? Tak, i to jest w porządku. W końcu członkowie personelu nie są niezinteligentni. Po prostu nie były wykształcone na temat normalnych form. Zasada 1 nie została naruszona, co nie stanowi problemu.
Zasada 2: Każda komórka musi mieć tylko jedną wartość.
Komórka to przecięcie rzędu i kolumny. Patrząc na ostatni atrybut (kolumna) z nagłówkiem, ceną, jest liczba w każdej komórce i jest tylko jedna liczba na komórkę. To jest w porządku. Każda komórka jest jedna o wartości.
Patrząc na kolumnę pracownika, każda komórka ma jedno imię osoby. Jedna nazwa składa się z pierwszego i nazwiska, tworząc jeden ciąg (tekst). To jest w porządku. Każda komórka w kolumnie ma jeden ciąg, a więc każda komórka ma jedną wartość.
Komórki dla kolumn klientów i dostawców mają jeden ciąg, a więc jedna wartość. To jest w porządku. W kolumnie klienta „John Smith” znajduje się w dwóch różnych komórkach (rzędach). To jest redundancja (powtórzenie), a jego problem zostanie omówiony w dalszej części samouczka dla 2NF.
W kolumnie kategorii każda komórka powinna mieć jedną kategorię. Jeden tekst kategorii (jedna wartość) to jeden ciąg. Jednak w drugiej komórce z góry istnieją dwie kategorie (dwie struny): „napój bezalkoholowy” i „produkt mleczny” oddzielone przecinkiem. Są to dwie wartości w jednej komórce. Reszta komórek w kolumnie kategorii ma pojedyncze wartości, ale ta komórka ma dwie. Zasada, że każda komórka musi mieć tylko jedną wartość, została naruszona tutaj w drugiej komórce. Doprowadziłoby to do problemów z rachunkiem. Ponieważ istnieją dwie wartości w jednej komórce, rozwiązaniem jest podzielenie wiersza danych na odpowiednio dwa rzędny, umieszczając dwie wartości w dwóch komórkach, dwóch wierszy, w tej samej kolumnie, co następuje:
Dwie kategorie, które były w jednej komórce, zostały umieszczone w dwóch komórkach w tej samej kolumnie. Jednak pozostałe komórki powtórzono w ich kolumnach, wprowadzając większą redundancję. W trakcie rozwiązania jednego problemu dodano powtórzenia (redundancja), dodając kolejny problem. Rozwiązanie powtórzeń zostanie omówione w następnym samouczku w drugiej normalnej formie.
Patrząc na pierwszą kolumnę na produkcie, pierwsza komórka ma dwie wartości: „słodycze” i „czekoladki” oddzielone przecinkiem. To także dwa produkty. Rozwiązaniem jest podzielenie wiersza na dwa, umieszczanie dwóch wartości w dwóch różnych komórkach w tej samej kolumnie i niestety również podwajanie pozostałych komórek.
Druga komórka tej samej kolumny produktu ma siedem wartości. Podobnie jak pierwsza komórka, narusza to zasadę: każda komórka musi mieć tylko jedną wartość. Rozwiązaniem jest zastąpienie wiersza siedmiu nowych wierszy, przy czym każda z tych wartości we własnej komórce w tej samej kolumnie i powtórzeniach innych komórek we własnych kolumnach. Nowe powtórzenia zwiększają redundancję.
Spośród siedmiu produktów cztery spadają w kategorii napojów bezalkoholowych i trzy spadki w kategorii produktów mlecznych. Cztery produkty (Sprite, Coca-Cola, Fanta i Pepsi) są powiązane z kategorią, napojem bezalkoholowym. Produkty (mleko, jogurt i ser) są powiązane z kategorią, produktem mleczarskim.
Nowy stół staje się:
Zasada, że każda komórka musi mieć tylko jedną wartość, jest teraz zadowolona. Nie ma teraz komórki z więcej niż jedną wartością w tabeli. To rozwiązanie kosztowało. Więcej komórek powtórzyło się w swoich kolumnach, dodając więcej powtórzeń do danego podwójnego (oryginalnego) powtórzenia „John Smith”. Umieszczenie tabeli w drugiej normalnej formie rozwiązuje problem powtórzenia (redundancja) z pierwszej normalnej formy.
Notatka: Powtórzenie w kolumnie ceny nie jest uważane za problem i nie jest brane pod uwagę przy produkcji 2NF. Należy również zauważyć, że w tej wynikowej tabeli niektóre z danych ceny zostały podzielone i są uważane za właściwe.
Zasada 3: Wartości przechowywane w kolumnie powinny być tego samego typu.
Ostatni atrybut, kolumna ceny ma tylko liczby. Tak więc wszystkie wartości w tej kolumnie są tego samego typu zwane liczbami (dokładnie liczby całkowite). Każda z pozostałych kolumn ma wartości ciągów typu. Typ ciągu jest wywoływany tekstem w niektórych kodach tabeli bazy danych. I tak, zasada, że wartości przechowywane w kolumnie powinny być tego samego typu, jest zadowolona bez zmiany tego, co zrobili personel. W końcu nie są niezinteligentni.
Zasada 4: Rzędy powinny być wyraźne.
W wynikowej poprzedniej tabeli żadne dwa wiersze nie są takie same. Niektóre komórki występują w więcej niż jednym rzędzie w tej samej kolumnie, ale żadne dwa rzędy nie mają tych samych komórek w tej samej kolejności. I tak, zasada, że wiersze powinny być odrębne, jest zadowolona bez zmiany tego, co zrobili personel. W końcu nie są niezinteligentni.
Zasada 5: Kolejność kolumn lub kolejność wierszy nie ma znaczenia.
Każda kolumna może być pierwszą lub ostatnią kolumną. Każdy wiersz może być pierwszym lub ostatnim rządem. I tak, zasada, że kolejność kolumn lub kolejności wierszy nie ma znaczenia, jest spełniona bez żadnej zmiany tego, co zrobili personel. W końcu nie są niezinteligentni.
Tabela jest teraz w pierwszej normalnej formie, ponieważ pięć zasad jest spełnionych.
Spośród pięciu zasad posiadania stołu w pierwszej normalnej formie, personel, w tym ich właściciel, naruszył tylko jedną z ignorancji. Ty, twórca stron internetowych, musisz im pogratulować. Musisz jednak nalegać, aby zasada, że każda komórka musi mieć tylko jedną wartość, jest najważniejszą zasadą, aby umieścić tabelę w pierwszej normalnej formie.
Cóż, to nie wszystko. Nie zostawiasz jeszcze ludzi, których trenujesz. Tabela musi otrzymać klucz (klucz podstawowy). Innymi słowy, każdy wiersz musi być możliwy do zidentyfikowania przez jedną lub więcej wartości komórkowych tego rzędu. Jeśli nie jest to możliwe, po lewej stronie tabeli należy utworzyć nową kolumnę.
Główny klucz
Czy w poprzedniej tabeli jest jakaś kolumna, w której żadna komórka nie może być pusta lub mieć wartość zerową, a wszystkie wartości zawsze będą unikalne? Nie ma żadnego. Gdyby taki był, byłby to klucz podstawowy. Czytelnik może myśleć, że kolumna produktu ma unikalne wartości, ale tak nie było przez cały czas. Na przykład klient „John Smith” lub nowy klient może nadal przyjść i kupić słodycze w przyszłości, jako nowa transakcja (wiersz). Następnie w kolumnie produktu byłyby dwie wartości słodyczy słodyczy.
Czy w wynikowej poprzedniej tabeli, której kombinacja komórek rzędowych jest unikalna i nie może mieć żadnych powtórzeń w poniższej tabeli? Jeśli tak, grupa kolumn utworzy klucz podstawowy. Tak się składa, że nie ma takiej grupy; chyba że wszystkie kolumny tabeli należy uznać za klucz podstawowy, ponieważ żaden wiersz nie może się powtórzyć. Musi istnieć klucz podstawowy i w znormalizowanej tabeli muszą być kolumny nieokreślone.
Ponieważ jedna lub więcej kolumn nie może być kluczem podstawowym wynikowej poprzedniej tabeli, na lewym końcu tabeli należy dodać nową kolumnę. W takiej kolumnie klucza podstawowego żadna komórka nie jest pusta i żadna komórka nie ma wartości zerowej. Wszystkie wartości w komórce muszą być unikalne. Najłatwiejszym sposobem posiadania takich wartości dla kolumny klucza podstawowego jest posiadanie liczb od 1 w górę. To znaczy dla pierwszego rzędu wartość klucza podstawowego wynosiłaby 1. W drugim rzędzie wartość klucza podstawowego wynosiłaby 2. W trzecim rzędzie wartość klucza podstawowego wynosiłaby 3 i tak dalej. Gdy na dole dodano nowy wiersz transakcji, nowa wartość klucza podstawowego jest jedna plus tą tuż nad nim. Tak więc pełna tabela dla pierwszej normalnej formy jest następująca:
Kolumna klucza podstawowego nazywa się Transid dla „ID transakcji”. ID oznacza identyfikator. Takim kluczem podstawowym jest typ automatycznego wzrostu, który jest taki sam jak liczba automatyczna. Nowy rząd będzie miał główny identyfikator 12. Ta tabela jest tabelą transakcyjną. To jedyny stół, który do tej pory ma sklep.
Który uzupełnia projekt tabeli dla pierwszej normalnej formy. Jednak ty jako programista stron internetowych nie odejdziesz od ludzi, których już trenujesz. Nadal musisz wyjaśnić pracownikom (stażystom) znaczenie zależności funkcjonalnej. Dzięki temu będą w stanie poradzić sobie z kwestią klucza podstawowego, a także pięcioma zasadami, których ich nauczyłeś podczas swojej nieobecności.
Zależność funkcjonalna
Idea zależności funkcjonalnej lub po prostu zależności jest to, że po znanym kluczu rzędu, każda inna wartość w tym wierszu można pobrać. Tak więc klucz podstawowy to wartość zależna. Zależy od reszty pozostałych wartości w rzędzie. Na przykład, jeśli transport 3 jest podany dla poprzedniej tabeli, odpowiednim produktem jest duszka. Odpowiednia kategoria to „napój bezalkoholowy”. Odpowiednim klientem jest „John Smith”. Odpowiednim dostawcą jest „firma do picia”. Odpowiednim pracownikiem (urzędnik) jest „Mary Baker”. Odpowiednie działanie to „sprzedaż”. Oraz kwota (cena), którą zapłacono klient, wynosi 12 USD ($ nie jest wskazane w tabeli).
W tym momencie jako programista bazy danych możesz odejść. Jednak przed wyjazdem podsumowujesz to, czego ich nauczyłeś.
Wniosek
Tabela w pierwszej normalnej formie nie może naruszać żadnej z następujących zasad:
1) Wszystkie kolumny w tabeli powinny mieć unikalne nazwy nagłówka.
2) Każda komórka musi mieć tylko jedną wartość.
3) Wartości przechowywane w kolumnie powinny być tego samego typu.
4) rzędy powinny być wyraźne.
5) Kolejność kolumn lub wierszy nie ma znaczenia.
Każda tabela w dowolnej normalnej formie powinna mieć klucz podstawowy.
Idea zależności funkcjonalnej lub po prostu zależności jest to, że po znanym kluczu rzędu, każda inna wartość w tym wierszu można pobrać.
W tym momencie, jako programista bazy danych. Jednak wrócisz, aby nauczyć ich o drugiej normalnej formie, ponieważ tabela w 1NF może nadal mieć pewne luki.