Druga norma tworzy pięć normalnych form

Druga norma tworzy pięć normalnych form

Ten samouczek wyjaśnia drugą normalną formę związaną z relacyjną bazą danych. Jest to druga część serii: pięć normalnych form. Wyjaśnienie tych pięciu normalnych formularzy następuje po fabule, która zaczyna się następująco: ojciec zmarł i zostawił trochę pieniędzy dla swojego syna. Syn postanowił wykorzystać pieniądze, aby otworzyć sklep wygody. Syn zatrudnił kilku pracowników (urzędników). Wszystko w sklepie jest już zaopatrzone, a pracownicy zaczęli sprzedawać niektórym klientom. Na początku funkcjonowania sklepu, który nie tak dawno temu syn, który jest właścicielem i jego robotnikami, nie wiedział nic o normalnych formach.

Jesteś już przyjacielem syna, właścicielem. W końcu ukończyłeś tę serię samouczków na normalnych formularzach, wiesz wszystko o normalnych formularzach i zostałeś programistą bazy danych. Wczoraj odwiedziłeś sklep swojego przyjaciela i zauważyłeś, że mają tylko stół transakcyjny, który nie był zgodny z pierwszą normalną formą. Następnie nauczyłeś zarówno właściciela, jak i jego urzędników, jak wyprodukować tabelę transakcyjną w pierwszej normalnej formie. Rozumieli, a stół, który teraz mają w pierwszej normalnej formie, to:

To jest tabela transakcji. Istnieje jedna kolumna dla klucza podstawowego, który jest transportowy (auto-increment).

Ponieważ każda pierwsza normalna forma może mieć luki, odwiedziłeś je dziś (sklep), aby wyszkolić je na drugiej normalnej formie, aby zmniejszyć luki w zabezpieczeniach.

Zanim zaczniesz cokolwiek robić, właściciel zapytał:

„Czy ta obecna tabela transakcji nie jest zbyt duża?

Słyszałem, że firmy, które nie korzystają z komputerów, rejestrują swoje dane w różnych księgach.

Myślę, że ta tabela transakcji składa się z dwóch mniejszych tabel transakcyjnych, które mogą mieć nowe nazwy tabeli sprzedaży i tabeli zamówień."

Odpowiadasz podczas uśmiechu:

„Tak, obecna tabela transakcji jest zbyt duża."

Później pogratulowałeś mu pozytywnie dociekliwego, szczególnie w sprawie jego działalności. Zgadzasz się z jego myślami. Kontynuujesz powiedzieć, że w rzeczywistości są tam trzy główne tabele: tabela sprzedaży, tabela zamówień i tabela produktów. Po zidentyfikowaniu tabel sprzedaży i zamówień zastąpią tabelę transakcji. Tabela sprzedaży i tabela zamówień to mniejsze transakcje (o połowę) same w sobie. Tabela produktów jest wyraźnie bytem. Należy go uzyskać z poprzedniej dużej tabeli transakcji.

Jednak te trzy tabele uzyskane z poprzedniej dużej tabeli byłyby nadal w pierwszej normalnej formie. Drugi normalny formularz dotyczy problemu powtarzania (redundancja) i nie to, co ma się tutaj wydarzyć.

Uwaga: Drugi normalny formularz nie może rozwiązać wszystkich problemów związanych z powtórzeniem (redundancja).

Ty, deweloper bazy danych i przyjaciel właściciela, wytworzycie trzy tabele z ich udziałem w następujący sposób:

Główne byty

Główne podmioty to trzy główne tabele wspomniane wcześniej. W poprzedniej kolumnie, z nagłówkiem, akcja ma sprzedaż lub zamówienie. Sprzedaż oznacza, że ​​produkt w tym rzędzie został sprzedany klientowi. Zamówienie oznacza, że ​​produkt w tym rzędzie został zamówiony od dostawcy. Sklep wygody musi zamówić produkty przed ich sprzedażą.

Kolumny odpowiadające trzem tabelom są następujące:

Sprzedaż (SaleID, produkt, klient, pracownik, Sprzedaż)

Zamówienie (zamówienie, produkt, dostawca, pracownik, koszty)

Produkty (produkt, produkt, kategoria)

Każda notacja tabeli ma podkreślony klucz podstawowy. Każda z tych tabel jest nadal w pierwszej normalnej formie. I tak, każdy numer kluczowy jest powiązany bezpośrednio z jego wartościami wiersza.

W tabeli sprzedaży Saleids nie są kopiami trandów. W tabeli zamówień zamówienia nie są również kopiami trandów. Każda z kolumny SaleID i OrderId jest automatycznie zbiórką, zaczynając od 1. Tabela transakcji i jego identyfikatory wierszy nie są już ważne, ponieważ wszystkie informacje w tabeli transakcji znajdują się teraz w tych trzech tabelach. Kolumny SaleID i OrderID zastępują tabelę transakcji, ale nie kopiowanie. Tabela sprzedaży nie ma kolumny dostawcy, a tabela zamówień nie ma kolumny klientów, które były razem w tabeli transakcji. Ponadto żadna tabela nie ma kolumny akcji, ponieważ sprzedaż i zamówienie jest teraz oddzielone, a dwie wartości sprzedaży i zamówienia nie są już potrzebne.

Kolumna kategorii, która była w kolumnie transakcyjnej, nie jest ani w tabeli sprzedaży, ani w tabeli zamówień. Jest w tabeli produktów. Wynika to z faktu, że wartość kategorii w każdym rzędzie jest związana tylko z wartością produktu, a nie z drugą komórką w rzędzie. Kolumna kategorii musi wyjść z tabeli transakcji wraz z kolumną produktu, aby uzyskać tabelę produktów. To rozumowanie ma coś wspólnego z przestrzeganiem zależności w produkcji trzeciej normalnej formy, która zostanie omówiona w następnym samouczku.

Tabela produktów uzyskana z poprzedniej tabeli transakcji to:

Tabela produktów

Zauważ, że ta tabela nie ma żadnego powtórzenia nazwy produktu (w dół), które mogły być w tabeli transakcji. Również każda wartość produktu jest obecna, a każda wartość kategorii jest również obecna.

Ta tabela jest nadal w 1NF. Zależność od wartości wiersza jest związana tylko z kluczowym kluczem, jak dotąd. Wartości w kolumnie kategorii powtarzają się w miarę opadania kolumny. Namienia słoneczne powtarza dwa razy. „Napój bezalkoholowy” powtarza cztery razy. „Produkt mleczny” powtarza trzy razy. Powtórzenie jest zbędne i powoduje problemy z rachunkiem. Umieszczenie tabeli w 2NF oznacza usunięcie wielu powtórzeń. To usunięcie powtórzeń nie odbywa się dowolnie.

Tabela sprzedaży uzyskana z poprzedniej tabeli transakcji to:

Tabela sprzedaży

Dodano cztery nowe wiersze i pojawiły się pewne modyfikacje, aby wyjaśnić lepsze. Kolumna daty jest wprowadzana z tego samego powodu. Teraz w tej tabeli sprzedaży jest 15 wierszy zamiast 11 dla tabeli transakcji.

Zasady biznesowe

Co to jest sprzedaż? Jeśli ten sam pracownik sprzedaje danego klienta w tym samym dniu co najmniej jeden produkt, to jedna sprzedaż. Nawet tego samego dnia (daty), jeśli klient przychodzi dwa razy i jest obsługiwany przez dwóch różnych pracowników, to są dwie sprzedaż. Jeśli klient przychodzi dwa razy tego samego dnia i jest obsługiwany przez tego samego pracownika, nawet jeśli dwa zestawy produktów są różne, oba przyjazdy tworzą jedną sprzedaż. W jednej sprzedaży klient może kupić jeden lub więcej produktów. Innymi słowy, w jednej sprzedaży trio (klient, pracownik i data) musi być takie samo. Po zmianie jednej z tych wartości trio, to kolejna sprzedaż. Różne sprzedaż są identyfikowane przez różne saleids w poprzedniej tabeli. I tak saleids powtarzają. Różne wartości kolumn powtarzają się w swoich kolumnach.

W pierwszej wyprzedaży, która ma dwa rzędy i ten sam Saleid, John Smith, klient, kupił jedno słodycze i jeden duszek od Jacoba Jonesa w tym samym dniu.

Rankiem 09/06/22 James Taylor, klient, przyszedł i kupił dwa jogurt i jeden. To jest jedna sprzedaż. Występuje trzy rzędy w tabeli z tym samym saleID.

Tego samego dnia, ale po południu ten sam James Taylor przyszedł i kupił Pepsi, ale od innego pracownika, którym jest Peter Lewis. Trio ma teraz zmianę z innym pracownikiem. I tak jest to inna sprzedaż spowodowana zmianą jednego z trio. Ponieważ jest to inna sprzedaż, ma inny rząd w tabeli z inną saleID.

W dniu 09/08/22, Susan Wright, klient, kupiła dwa ser i jedno mleko od Mary Baker. To jest jedna sprzedaż, ponieważ trio pozostaje takie samo (w trzech rzędach). Jednak wymaga trzech rzędów w tabeli. Ponieważ trio pozostaje takie samo, Saleid również pozostaje taki sam.

Reszta rzędów w dół w tabeli nie ma takiego samego powtórzenia SaleID. Ta tabela jest nadal w 1NF. Dotychczasowa zależność dla wartości wiersza jest nadal powiązana tylko z kluczowym kluczem tego rzędu. Każda kolumna ma powtarzane wartości. Powtórzenie w kolumnie niekoniecznie musi znajdować się w kolejnych komórkach.

Zobacz, kiedy wziąć pod uwagę kolumnę ceny lub wartości sprzedaży w sekcji samouczka Postępowania powtórzeń. Umieszczenie tabeli w 2NF rozwiązuje problem powszechnych powtórzeń (redundancja) w rzędach.

Tabela zamówień uzyskana z poprzedniej tabeli transakcji to:

Tabela zamówień

Ta tabela jest nadal w pierwszej normalnej formie. Istnieje możliwość, że każda wartość w każdej kolumnie powtórzyła się poniżej swojej kolumny. Powtórzenia te są adresowane w tym samouczku, aby mieć drugą normalną formę tabeli.

W tym momencie ty, deweloper bazy danych, zgodziłeś się z sugestią personelu, aby umieścić tabelę transakcji w mniejszych tabelach. I w dogodnym sposób umieszczasz tabelę transakcyjną w mniejsze tabele (podmioty). Personel, w tym ich właściciel, teraz wierzą, że oni również mogą całkowicie zrozumieć normalne formy i są gotowi dowiedzieć się więcej, ponieważ ich sugestia zmaterializowała się.

Jednak ty, twórca bazy danych, nalega na nich, że oryginalna tabela transakcji nie istnieje już i została zastąpiona trzema mniejszymi tabelami. Sprzedaż i tabela zamówień zasadniczo zastępują tabelę transakcyjną. Transid (identyfikator transakcji) nie jest już istotny. Jest zastępowany przez saleID i rzędność w dwóch różnych tabelach.

Główne jednostki, które są teraz mniejszymi tabelami oryginalnej tabeli transakcji to: tabela produktów, tabela sprzedaży i tabela zamówień. Ty, programista bazy danych, nadal wyjaśniasz i nalegasz, że te nowe, ale mniejsze tabele są nadal w pierwszej normalnej formie. Zastąpienie tabeli głównymi tabelami jednostek nie jest normalizacją, ponieważ żadna z rodzajów definicji zależności nie jest używana do rozkładania dużego stołu. Ty, deweloper bazy danych, idziesz dalej, aby umieścić trzy tabele w drugiej normalnej formie w następujący sposób:

Obsługa powtórzeń

Tabela produktów

W tabeli produktów wartości kolumny kategorii powtarzają. Wszystkie nazwy (wartości) kolumny kategorii muszą zostać usunięte z tabeli produktów do tabeli kategorii, w której nie było ograniczonych powtórzeń. Tabela kategorii staje się:

Tabela kategorii

Tabela kategorii nie ma już żadnego przedmiotu, takiego jak „napój bezalkoholowy”, który się powtarza. Ta tabela jest krótsza pionowo niż jej umieszczenie w poprzednim tabeli produktów.

Każda tabela potrzebuje klucza podstawowego. Jak dotąd tabela kategorii składa się z jednej kolumny, w której wszystkie wartości są unikalne i nie ma pustej wartości komórki ani wartości zerowej. Ta kolumna może być kolumną klucza podstawowego dla tabeli kategorii. Może być jednak lepiej mieć kluczowy klucz podstawowy. Poniższa tabela zmodyfikowanych kategorii pokazuje to:

Tabela kategorii - 2NF

To jest tabela końcowych kategorii. Jest teraz w 1NF i 2NF. A co z oryginalnym stołem produktów? Należy stworzyć nowy tabelę produktów. W nowej tabeli dowolna nazwa kategorii w oryginalnej tabeli zostanie zastąpiona odpowiednim identyfikatorem w tabeli kategorii. Tak więc tabela produktów staje się:

Tabela produktów - 2NF

Kolumna kategorii jest zastąpiona kolumną kategoriiID. Informacje dla wartości kategorii są nadal w tabeli produktów jako kategoria. Kolumna kategorii jest umieszczana tuż po kolumnie produktowej zamiast po kolumnie produktu w celu lepszej prezentacji. Ta tabela nie jest krótsza niż oryginalna tabela produktów, ale nadal ma przewagę.

„Jaki jest główny klucz tabeli produktów?- zapytał jeden z urzędników. Należy zauważyć, że w każdym rzędzie zarówno produkty i kategoria są zależne od wartości nazwy produktu (wartość). Jeśli albo produktID lub kategoria jest zmieniona dla dowolnego wiersza, nowa kombinacja produktu i kategorii wskazałaby inną nazwę produktu (wartość). Innymi słowy, nazwa produktu (wartość) z rzędu jest powiązana zarówno z produktami, jak i kategorią tego rzędu. Z powodu tej zależności (zależności funkcjonalnej) kombinacji produktu i kategorii na określoną nazwę produktu (wartość), zarówno produktd, jak i kategoria tworzą klucz podstawowy.

Gdy klawisz jest kombinacją więcej niż jednej kolumny, klucz nazywa się klawiszem złożonym. Notacja tabeli dla tej nowej tabeli produktów to:

Produkty (produkty, kategoriaID, produkt)

Związek między produktem i kategorią jest wiele do jednego.

Każda nazwa kolumny dla klucza podstawowego (tym razem klawisz złożony). Wartości kategorii w tabeli produktów i wartości kategorii.

Notacja tabeli dla tabeli kategorii to:

Kategorie (kategoria, kategoria)

Nowe tabele, które zastąpiły oryginalną tabelę produktów, to: Tabela kategorii Tabela i produktów (ta sama nazwa). Te tabele znajdują się teraz w pierwszej normalnej formie i drugiej formie normalnej. Zobacz rzeczywiste zasady drugiej normalnej formy w następującej dyskusji.

Tabela sprzedaży

Sekcje wierszy, w których saleID powtarza się, ale wartości komórki kolumnowej się nie powtarzają, muszą zostać usunięte z tabeli sprzedaży i umieścić w nowej tabeli. W nowej tabeli nie zostaną uwzględnione identyczne sekcje wiersza (kolumny), w których wartości komórki powtarzają. Oznacza to, że każda wartość komórkowa lub sekcja wiersza, takie jak trio (klient, pracownik i data), które muszą powtórzyć z tym samym saleID w tabeli sprzedaży, nie zostaną uwzględnione w nowej tabeli, nawet jeśli powtórzenie jest tylko raz. Wartości kolumny produktu, które mogą się zmienić w przypadku tego samego SaleID w tabeli sprzedaży, muszą znajdować się w nowej tabeli. Wprowadzono nową kolumnę, która ma liczbę tych samych produktów sprzedawanych dla konkretnego SaleID. To utrzymuje nową tabelę w 1NF, przenosząc ją do 2NF. Nowy stół nazywa się tabelą Saledetails. Jeśli programista nie może znaleźć nowej odpowiedniej nazwy dla nowego stołu, coś poszło nie tak z jego analizą. Tabela Saledetails staje się:

Saledetails - 2nf

Tabela Saledetails, usunięta z tabeli sprzedaży, znajduje się teraz w drugiej normalnej formie, a także w pierwszej normalnej formie. Saleid z pierwotnej tabeli sprzedaży musi być zawarty w tabeli Saledetails, aby utrzymać związek między oryginalną tabelą sprzedaży a nową tabelą Saledetails. Teraz w tabeli Saledetails znajduje się 13 rzędów zamiast 15 z pierwotnej tabeli sprzedaży.

W oryginalnej tabeli sprzedaży każda kolumna, której wartość nie zmieniła się, podczas gdy SaleID nie zmieniał się, pozostał w oryginalnej tabeli sprzedaży i nie została usunięta. W tej sytuacji są to zasadniczo trio (klient, pracownik i data). Wartości kolumny produktu zmieniły się, gdy SaleID nie zmieniał się, więc należy go usunąć. Jeśli cena lub wartości kolumny ceny lub sprzedaży zmieniają się, gdy SaleID nie zmienia się, należy również usunąć.

Czy wszyscy przyjdzie do sklepu i kupiliby tylko jedną puszkę mleka? NIE. Dla każdego klienta, który kupuje, powiedzmy 4 puszki mleka, numer 4 po prostu pasuje do kolumny liczbowej w przywłaszczonym rzędzie.

„A jaki jest kluczowy klucz nowej tabeli Saledetails?- zapytał właściciel. To jest twoja odpowiedź jako programista bazy danych:

Należy zauważyć, że w każdym rzędzie saleID i produkt są zależne od liczbowych i sprzedaży (wartości). Jeśli albo salesid lub nazwa produktu zostanie zmieniona dla dowolnego wiersza, nowa kombinacja saleID i produktu wskazuje na inny rząd liczby i sprzedaży. Innymi słowy, wiersz liczb i wartości sprzedaży są powiązane zarówno z wartościami SaleID, jak i produktami tego rzędu. Z powodu tej zależności (zależności funkcjonalnej) kombinacji Salesid i Product w określonym rzędzie, zarówno sprzedawcy, jak i produkt tworzą klucz podstawowy. Produkt powinien być również podkreślony.

Gdy klawisz jest kombinacją więcej niż jednej kolumny, klucz nazywa się klawiszem złożonym. Notacja tabeli dla tej nowej tabeli Saledetails to:

Saledetails (SaleID, produkt, liczbowe, sprzedawane)

Związek między sprzedawcą a produktem jest wiele do wielu.

„Zamierzam skomputeryzować bazę danych. Ponieważ tabela produktów już istnieje z produktem, czy nie byłoby lepiej wymienić produkt jako część klucza na produktID? Następnie komputer użyje produktu z tabeli SaleDetails i będzie szukał nazwy produktu z tabeli produktów ”, zauważa właściciel.

Ty, programista i trener bazy danych, uśmiecha się podczas kiwania głową. I to jest twoja odpowiedź:

„Właściciel, dobrze sobie radzisz. Rozumiesz szybciej niż się spodziewałem. Gdy baza danych będzie w książkach ćwiczeń (księgi), w miarę możliwości, będzie miała nazwy tekstu zamiast numerowanych identyfikatorów. Kiedy baza danych będzie w komputerze, w miarę możliwości, będzie miała numerowane identyfikatory zamiast nazw tekstów. Komputer podłączy ponumerowane identyfikatory i nazwy tekstu w swoich tabelach i wydrukuje nazwy tekstu po wydaniu zapytania.

Pozwól, że mam zaszczyt wykonać komputeryzację; Ale za komputeryzację zapłacisz mi.”I tak, notacja stołu dla tabeli Saledetails staje się:

Saledetails (SaleId, produktID, liczbowal, sprzedaż)

„Co pozostała ze stolika sprzedaży?- zapytał jeden z urzędników. Kolumny, których wartości nie zmieniły się, gdy SaleID nie zmieniał się w tabeli sprzedaży. SaleID pozostaje również dlatego, że „rządzi” każdym rządem w tabeli sprzedaży. Nowa tabela sprzedaży staje się:

Tabela sprzedaży - pośredni

Kolumny produktu i oferty sprzedaży, w których nastąpiła zmiana wartości, gdy SaleID nie zmienił się. Teraz wyraźnie są pewne zduplikowane pełne wiersze. Takie duplikaty zostały już zliczone i zarejestrowane w tabeli Saledetails w kolumnie liczbowych. W rzeczywistej tabeli Saledetails liczba wynosi 2 lub 1. Tak więc duplikaty nie muszą być brane pod uwagę w nowej tabeli sprzedaży. Gdyby dozwolone są duplikaty, jedna z zasad pierwszej normalnej formy zostanie naruszona. Nowa tabela sprzedaży staje się:

Tabela sprzedaży - 2NF

Ta nowa i ostateczna tabela sprzedaży jest w 2NF, a także w 1NF. W tej tabeli nie występuje nie więcej niż raz. Jest tu 10 wierszy, a nie 15, w porównaniu z oryginalną tabelą sprzedaży. Ta nowa tabela sprzedaży jest krótsza niż oryginalny o pięć wierszy.

Ta ostatnia tabela sprzedaży ma tylko jedną kolumnę kluczową, która jest Saleid. Jest podkreślony. Wartości SaleID w tabeli sprzedaży i wartości SaleID w tabeli Saledetails tworzą dokładne korespondencje między dwiema tabelami.

Notacja tabeli dla tabeli sprzedaży to:

Sprzedaż (SaleId, klient, pracownik, data)

A notacja stołu dla tabeli Saledetails to:

Saledetails (SaleId, produktID, liczbowal, sprzedaż)

Nowe tabele, które zastąpiły oryginalną tabelę sprzedaży to: tabela Saledetails i tabela sprzedaży (ta sama nazwa). Te tabele znajdują się teraz w pierwszej normalnej formie i drugiej formie normalnej. Zobacz rzeczywiste zasady drugiej normalnej formy w następującej dyskusji:

Tabela zamówienia

Analiza podobna do tej tabeli sprzedaży można dokonać, aby tabela zamówień miała nowe tabele zastępcze:

Zamówienie (zamówienie, dostawca, pracownik, data)

I

OrderDetails (OrderId, ProductID, liczba, koszty, koszty)

W tym momencie, deweloper bazy danych, właśnie zakończył ilustrując członków personelu, w tym właściciela o tym, jak 2NF jest produkowany z 1NF.

Właściciel pyta teraz: „Czy to, w jaki sposób utworzymy tabelę 2nf z tabeli 1NF?„Ty, programista bazy danych, odpowiada w następujący sposób:

"No tak. Jednak bez względu na sposób, w jaki używasz do utworzenia 2NF z 1NF, musi przestrzegać zasad 2NF.„Następnie wyjaśniasz zasady 2NF.

Zasady drugiej normalnej formy

Aby tabela znajdowała się w drugiej normalnej formie, musi ona szanować następujące dwie reguły:

1) Tabela musi być już w pierwszej normalnej formie.

2) Nie musi być częściowej zależności.

Zależność funkcjonalna lub po prostu zależność jest wyjaśniona w poprzedniej części serii, pierwszej normalnej formie. Wyjaśnienie jest tutaj krótko powtarzane, a następnie zostanie wyjaśniona częściowa zależność.

Zależność funkcjonalna

W dowolnej tabeli w pierwszej normalnej formie, po znaniu klucza pierwotnego, resztę wartości w wierszu klucza podstawowego można pobrać. Na przykład w pierwszej tabeli w poprzednim przykładzie wartości dla klucza podstawowego numer 10 to: pasta do zębów, przybory toaletowe, firma czyszcząca, Peter Lewis, zamówienie i 4. Tak więc numer 10 zależy od tych wartości. Klucz podstawowy jednoznacznie identyfikuje wszystkie jego wartości.

Częściowa zależność

Częściowa zależność jest sytuacją z kluczowym kluczem, w którym wartość klawisza nieprogowego z rzędu może mieć tylko część klucza złożonego, e.G. Jedna z jego komórek w zależności od tego. W poprzednich tabelach z klawiszami kompozytowymi każda wartość klawisza nieprogowego z rzędu ma oba komórki klucza podstawowego w zależności od tego. Druga zasada dla 2NF mówi, że nie musi być częściowej zależności. I nie ma częściowej zależności w żadnej z poprzednich tabel.

Obie komórki klucza kompozytowego zależą od każdej wartości w wierszu dla wszystkich powyższych tabel z klawiszami kompozytowymi. Gdyby była to częściowa zależność, jedna komórka w klawiszu złożonym zależałaby od niektórych wartości w wierszu, a druga komórka klucza kompozytowego zależałaby od innych wartości tego samego wiersza.

Produkcja 2NF z tabeli produktów i tabeli sprzedaży w porównaniu

Tabela produktów ma limit długości (w dół). Tabela sprzedaży nie ma limitu długości, ponieważ jest tabelą transakcyjną. Jednak różnica ta niekoniecznie daje obu tabelom różne sposoby uzyskania tabel 2NF.

W podanej tabeli produktów 1NF kategorie powtarzają się w dół. Kolumna kategorii jest usuwana, aby utworzyć nową tabelę o ograniczonej długości, a klucz kompozytowy trafia do tabeli nadrzędnej, tabeli produktów.

W podanej tabeli sprzedaży 1NF SaleID i odpowiedni zestaw innych komórek tego samego rzędu powtarzają się w dół. Raczej nie powtarzające się kolumny zostały usunięte, aby utworzyć nowy tabelę, a klucz złożony trafia do tabeli dziecięcej, tabeli Saledetails. Zarówno tabele sprzedaży, jak i Saledetails mają nieograniczone długości.

W tym momencie ty, deweloper bazy danych, który szkoli personel, w tym ich właściciela, prosi wszystkich o sprawdzenie, czy wszystkie nowe tabele są naprawdę w pierwszej i drugiej normalnej formie. Powinny to zrobić pomyślnie i odpowiedzieć tak.

A potem zakończysz.

Wniosek

Tabela znajduje się w drugiej normalnej formie, jeśli przestrzega następujących zasad:

1) Tabela musi być już w pierwszej normalnej formie.

2) Nie musi być częściowej zależności.

Dla wszystkich tabel z kompozytowymi klawiszami pierwotnymi, wszystkie wartości klawiszowe bez podstaw w wierszu określają każdą wartość klucza podstawowego tego wiersza.

Przyjęcie tabeli z 1NF do 2NF obejmowałoby obsługę poważnej powtarzającej się grupy (zestaw komórek).

Chociaż niektóre luki zostały wyeliminowane, tabela w 2NF nadal ma inne luki. W następnym samouczku (artykuł) o trzecie.

Z pytań, które zadają pracownicy, i informacje zwrotne, pokazuje, że zrozumieli wszystko, czego do tej pory nauczali. Musisz pogratulować im przed wyjazdem i wrócić, aby omówić trzecią normalną formę.