Pierwsza postać normalna: definicja ostateczna


9

Próbuję uzyskać ostateczną wersję tego, co jest Pierwszą Normalną Formą. Wszystko, co czytam, ma nieco inny obrót.

Wiele autorytetów, takich jak Data, twierdzi, że z definicji relacja jest zawsze w Pierwszej Normalnej Formie, podczas gdy inni podają listę wymagań. Oznacza to, że dla 1NF istnieje od zera do wielu wymagań.

Przypuszczam, że różnica polega na tym, że między tabelami a relacjami: tabele mogą być kompletnym bałaganem, podczas gdy relacja podlega pewnym ograniczeniom. Fakt, że relacja jest reprezentowana w SQL jako tabela, powoduje pewne zamieszanie.

Skupiam się szczególnie na 1NF, ponieważ dotyczy on baz danych SQL. Pytanie brzmi: jakie właściwości są wymagane, aby upewnić się, że tabela jest w pierwszej normalnej formie?


Wiele autorytetów sugeruje, że jeśli tabela reprezentuje relację , to jest już w 1NF. Spycha to definicję 1NF z powrotem do definicji relacji.

Oto niektóre właściwości tabeli w 1NF:

  • Kolejność kolumn jest nieznaczna [1]
  • Rząd rzędów jest nieznaczny
  • Wszystkie wiersze mają tę samą długość (tzn. Dane wiersza pasują do nagłówków kolumn)
  • Nie ma duplikatów wierszy (można to zagwarantować za pomocą zastępczego klucza podstawowego, ale sam PK nie jest wymagany)
  • Brak powtarzalnych kolumn
  • Każda kolumna zawiera pojedynczą wartość (atomową)

[1] Technicznie atrybuty są nieuporządkowane, ale w tabeli dane wiersza muszą być w tej samej kolejności co nagłówki kolumn. Rzeczywiste zamówienie jest jednak nieznaczne.

Na wielu danych :

Pojęcie danych atomowych polega na tym, że elementu nie można dalej rozbić. Ta koncepcja została zakwalifikowana pod tym względem, że chociaż technicznie wszystko można rozbić na muzeum , danych danych nie można praktycznie dalej rozbić, w zależności od sposobu ich wykorzystania.

Na przykład pełny adres lub pełna nazwa powinny normalnie być dalej dzielone, ale elementy takie jak imię lub nazwa miasta prawdopodobnie nie powinny być dalej dzielone, mimo że mogą być ciągami znaków.

Jeśli chodzi o powtarzanie kolumn, jest to słaba konstrukcja kolumny mają prawie powtarzające się kolumny, takie jak phone1, phone2itd. Ogólnie, powtarzane dane wskazują na potrzebę dodatkowego powiązanej tabeli.

Zależność

Pomiędzy wierszami nie powinno być żadnych relacji poza tym, że odpowiadają one tym samym nagłówkom.

Nie powinno być również związku między kolumnami, ale uważam, że jest to przedmiotem wyższych normalnych form.

Pytanie brzmi: ile z powyższego wynika z definicji 1NF? Czy wchodzi w to także bit niezależnych wierszy?

Odpowiedzi:


7

Wstępny

Definicja postaci normalnej (która z prezentacji „Dalszej normalizacji modelu relacyjnego bazy danych” w 1971 r. Jest znana jako pierwsza postać normalna ) oraz sama definicja paradygmatu relacji została opublikowana w 1970 r. W pracy naukowej, która zapewniła silny podstawą dla praktyki administracji bazami danych, czyli „relacyjnym modelu danych dla Large Shared Data Banks” (RM dla zwięzłość) stworzony przez dr EF Codd , który jest odbiorcą Nagroda Turinga i organ w odniesieniu do relacyjnej struktury.

Tak, istnieje wiele wyjaśnień, interpretacji, prezentacji, odchyleń i opinii na temat tekstu doktora Codda, ale ja osobiście wolę trzymać się oryginalnego źródła i bardzo sugeruję, abyś sam go przeanalizował, abyś mógł wyciągnąć własne wnioski.

Z pewnością nie rozumiem RM w całości, ale to, co rozumiem, pozwala mi docenić jego doskonałość, wizję, intencję i zakres, i chociaż dekady później można zauważyć, że ma kilka drobnych niedokładności, nie zmniejszają, w jakikolwiek sposób, jego geniusz i elegancja. W swojej dziedzinie RM przetrwał próbę czasu w wyjątkowy sposób i pozostaje niezrównany.

Podkreślanie wyżej wspomnianych niedokładności byłoby - przy użyciu terminu charytatywnego - niesprawiedliwe, ponieważ, widząc go z dużej odległości, ten przełomowy materiał wymagał kilku udoskonaleń i rozszerzeń, tak, ale główna część dzieła była solidna z sama koncepcja (i rzeczywiście doktor Codd sam dokonał większości - jeśli nie wszystkich) takich udoskonaleń i rozszerzeń).

Kontynuuję ponowne czytanie RM w celu lepszego zrozumienia tego wyjątkowego źródła wiedzy (a mój szacunek do niego stale rośnie przy każdym ponownym przeczytaniu); celem jest stanąć na barkach gigantów.

Relacje i tabele

Należy zauważyć, że ponieważ relacje są zasobami abstrakcyjnymi , dr Codd przewidział użyteczność reprezentowania ich w formie tabelarycznej (początkowo użył terminu „reprezentacja tablicowa”, a następnie „tabeli” lub „tabeli r”), tak że użytkownicy, projektanci i administratorzy relacyjnej bazy danych (RDB) mogą do nich podejść w bardziej znany lub konkretny sposób. Dlatego w kontekście implementacji RDB poprawne jest użycie tabeli jako skróconej relacji, o ile wspomniana tabela oznacza rzeczywistą relację. Ta cecha jest - choć oczywista - dość znacząca, ponieważ przed oceną, czy tabela reprezentuje relację zgodną z pierwszą formą normalną (1NF), musi dokładnie reprezentować relację.

RM oczywiście zawiera cechy, które musi mieć stół, aby ustalić, czy faktycznie przedstawia on relację, ale przedstawię tutaj nieformalną i bezpretensjonalną interpretację (kolejna, tak!):

  • Musi mieć nazwę (każdą konkretną relację w strukturze bazy danych należy odróżnić od reszty).
  • Każdy z jego wierszy musi przedstawiać dokładnie jeden krotki z istotnych relacji.
  • Kolejność swoich wierszy nie jest ważne w ogóle.
  • Każda z jej kolumn musi mieć nazwę, która oznacza dokładnie jedną domenę relacji, a wspomniana nazwa musi być inna niż nazwy pozostałych kolumn tabeli (kolumna musi być wyjątkowo zróżnicowana i musi nosić szczególne znaczenie ma znaczenie, jakie odgrywa modelista bazy danych i eksperci biznesowi w precyzyjnym zdefiniowaniu każdej ważnej dziedziny)
  • Kolejność swoich kolumn nie ma znaczenia.
  • Wszystkie jego wiersze muszą mieć tę samą liczbę kolumn.
  • Musi mieć co najmniej jedną kolumnę lub jedną kombinację kolumn, która jednoznacznie identyfikuje każdą z krotek przedstawionych za pomocą wierszy; w ten sposób wszystkie wiersze muszą być różne (tak, to podkreśla znaczenie zadeklarowania co najmniej jednego KLUCZA, a gdy są dwa lub więcej KLUCZÓW, należy zdefiniować je jako PODSTAWOWE w oparciu o pragmatyczne powody, podczas gdy pozostałe mogą być uważane za ALTERNATYWNE, ale tak, przed podjęciem decyzji, każdy z KLUCZÓW był „kandydatem” do definicji PODSTAWOWEJ).

Posiadanie tabeli, która w rzeczywistości reprezentuje relację, ma krytyczne znaczenie, ponieważ po przejściu operacji manipulacyjnych o charakterze relacyjnym, wynikiem jest ponownie tabela reprezentująca relację. W ten sposób zachowanie wspomnianej tabeli jest przewidywalne .

Domeny atomowe (kolumny)

W pierwszych częściach RM dr Codd przedstawia kilka próbek relacji w celu wprowadzenia niektórych pojęć; więc, aby zrozumieć znaczenie domeny atomowej , zacznijmy od następującego fragmentu RM, który szczegółowo opisuje niektóre istotne punkty:

Do tej pory omawialiśmy przykłady relacji, które są zdefiniowane w prostych domenach - domenach, których elementami są wartości atomowe (nierozkładalne). Wartości nieatomowe można omawiać w ramach relacji. Dlatego niektóre domeny mogą mieć relacje jako elementy. Relacje te można z kolei definiować w nieprostych domenach i tak dalej.

W ten sposób można powiedzieć, że każda z wyżej wymienionych relacji ekspozycyjnych pasuje do jednego z dwóch rodzajów, powiedzmy albo rodzaj A, albo rodzaj B :

  • Rodzaj A grupuje tylko relacje (tabele), które są zbudowane z domen (kolumn), które zawierają wyłącznie proste wartości w każdym z ich krotek (wierszy), tj. Takie domeny (kolumny) nie zawierają relacji (tabel) jako wartości, które w ten kontekst oznacza, że ​​wartości są atomowe, ponieważ nie można ich rozkładać sukcesywnie na nowe relacje (tabele). Stąd relacje tej klasy są tymi, które są znormalizowane , tj. Są zgodne z 1NF, ich forma jest pożądana.

  • Rodzaj B jest zintegrowany wyłącznie z relacjami (tabelami), które mają jedną lub więcej domen (kolumn), które przechowują relacje jako wartości w każdym krotce (wierszu), a to oznacza, że ​​wspomniane wartości nie są anatomiczne, ponieważ można je następnie podzielić na nowe relacje (tabele), tzn. są rozkładalne . Tak więc relacje tego rodzaju są nienormalizowane, tj. Naruszają 1NF, są w niepożądanej formie.

Normalizacja

Dr Codd wprowadza rozdział dotyczący normalizacji w RM z następującym akapitem:

Relacja, której domeny są proste, może być reprezentowana w pamięci przez dwuwymiarową jednorodną kolumnę typu omawianego powyżej. Bardziej skomplikowana struktura danych jest konieczna dla relacji z jedną lub kilkoma nieprostymi domenami. Z tego powodu (i innych, które zostaną przytoczone poniżej) warto zbadać możliwość wyeliminowania nieskomplikowanych domen! W rzeczywistości istnieje bardzo prosta procedura eliminacji, którą nazwiemy normalizacją.

Następnie pokazuje:

  1. Grupa relacji, w których jedna jest nienormalizowana (ma domeny, które zawierają relacje jako wartości, tj. Są one nieatomowe, tj. Nie są proste)

  2. Grupa relacji, które są znormalizowane (tj. Te, które zostały zdekomponowane; tj. Takie, które relację cenionych domen zostały podzielone na proste, co oznacza, że ​​są atomowe)

A następnie opisuje procedurę uzyskiwania znormalizowanych relacji z nienormalizowanych.

W związku z tym relacje, które wykorzystał do zilustrowania ćwiczenia normalizacyjnego, i sam opis ćwiczenia są dość jasne i ponownie polecam ich samodzielną analizę (i mam nadzieję, że zachęca to niektórych czytelników do zaangażowania się w tekst).

Sukcesywnie wskazuje:

Możliwe są dalsze operacje normalizujące. Nie są one omówione w tym dokumencie.

Wspomniane operacje, tj. Druga i trzecia postać normalna (2NF i 3NF) są szczegółowo wyszczególnione w „Dalszej normalizacji modelu relacyjnego bazy danych” i jak wspomniano powyżej, po prezentacji (oraz późniejszym wydrukowaniu i opublikowaniu) tego artykułu , oryginalna postać normalna stała się znana jako pierwsza postać normalna.

Jak zauważa praktykujący, posiadanie nienormalizowanych relacji (tabel) wprowadza (prawie zawsze niepotrzebne) splot do implementacji RDB.

Relacja, która spełnia 1NF, ułatwia definicję ograniczeń i operacji manipulacji danymi, które można wdrożyć za pomocą języka podrzędnego danych, który jest mniej skomplikowany niż wymagany w przypadku nienormalizowanych relacji (tabel), jak zauważa dr Codd w następujących wierszach:

Przyjęcie relacyjnego modelu danych, jak opisano powyżej, pozwala na opracowanie uniwersalnego języka danych w oparciu o zastosowany rachunek predykatów. Rachunek predykatu pierwszego rzędu jest wystarczający, jeśli zbiór relacji ma normalną postać. Taki język stanowiłby miernik siły językowej dla wszystkich innych proponowanych języków danych i sam byłby silnym kandydatem do osadzenia (z odpowiednią modyfikacją składniową) w różnych językach hosta (programowanie, zorientowanie na polecenia lub problemy). […]

[…]

Uniwersalność podjęzyka danych polega na jego zdolności opisowej (a nie na zdolności obliczeniowej).

Zdziwienie

Z mojego punktu widzenia, oszołomienie powstał ze względu na: (a) wspomnianego nadmiaru interpretacji, wyjaśnień itp około 1nF i tym samym RM, a ze względu na (b) dalsze próby redefinicji 1nF, które stwierdzają, że mający stosunki z domenami, które przechowują wartości, które z kolei relacje są zgodne z 1NF, o ile są one jedną wartością dla każdej odpowiadającej krotki.

Moje zdanie na temat innych punktów

Pomiędzy wierszami nie powinno być żadnych relacji poza tym, że odpowiadają one tym samym nagłówkom.

Nie jestem pewien, czy dobrze rozumiem intencję tego stwierdzenia, ale oprócz zgodności z tymi samymi nagłówkami, musi istnieć połączenie między (krotkami) wierszy relacji (tabeli), ponieważ każdy z nich powinien być twierdzeniem o szczególne wystąpienie określonego rodzaju jednostki (zdefiniowanej w kontekście interesu gospodarczego), którą relacja (tabela) ma reprezentować.

Nie powinno być również związku między kolumnami, ale uważam, że jest to przedmiotem wyższych normalnych form.

Nie wiem też, czy właściwie interpretuję znaczenie tego stwierdzenia, ale w rzeczywistości i zgodnie z moją odpowiedzią na poprzedni aspekt, musi istnieć również związek między domenami (kolumnami) relacji (tabeli) , właśnie dlatego jest to relacja (zasadnicza struktura modelu relacyjnego i konkretnej implementacji RDB).

Dla przykładu w odniesieniu do relacji hipotetycznej (tabela)

  • Salary (PersonNumber, EffectiveDate, Amount)

krotka (wiersz)

  • Salary (x, y, z)

przekazałoby znaczenie

  • The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z

Dlatego każda krotka (wiersz) Salaryrelacji (tabela) musi pasować do struktury powyższego twierdzenia, a różnicą byłoby zastąpienie odpowiednich wartości domeny (kolumny), ale musi istnieć związek między (a) wszystkie Salarydomeny (kolumny), a także między (b) wszystkie odpowiadające im wartości w odniesieniu do każdej krotki (rzędu); taki związek jest niezbędny.

Wyższe normalne formy (2NF i 3NF) są przydatne do pozbycia się funkcjonalnych zależności między domenami (kolumnami) relacji (tabeli), pomagają unikać niepożądanych połączeń między domenami (kolumnami), ponieważ wspomniane niepożądane połączenia umożliwiają wprowadzenie anomalii aktualizacji . Zarówno 2NF, jak i 3NF są pomocne w testowaniu poprawności struktury relacji (tabel) w pewnej implementacji RDB.


3

Ilustracja. Weź ciąg tekstowy zawierający typowy adres w USA:

"123 Cornhusk Rd., South Succotash, NY 12345"

Napisanie zapytania, aby znaleźć wszystkich mieszkańców Cornhusk Road lub konkretnego mieszkańca miasta South Succotash lub stanu Nowy Jork, byłoby zniechęcającym zadaniem. Zwłaszcza gdy w danych występują następujące ciągi:

"123 Cornhusk Road, South Succotash, NY 12345"
"123 Cornhusk Rd., South Succotash, New York 12345"
"123 Cornhusk, South Succotash, NY 12345"
"123 Cornhusk Rd., SOUTH SUCCOTASH, NY 12345"

Każdy z nich podaje ten sam rzeczywisty adres (i to nawet nie bierze pod uwagę prawdopodobnych literówek, takich jak „Succatash”), ale napisanie algorytmu w celu pomyślnego ich porównania jest czymś, czego NIE chciałbym poświęcić moim ostatnim pozostałym latom na Ziemi.

Wprowadź pierwszą normalną formę. Nie będę wchodził w szczegóły, jak to się robi, po prostu weźmy pod uwagę wspólny formularz widoczny w większości baz danych:

create table Addresses(
  ...
  Street  varchar,
  City    int        references Cities( ID ),
  State   char( 2 )  references States( ID ),
  Zip     int
  ...
);

To nie jest pełna normalizacja. Na przykład, możesz dalej podzielić Street na StreetNum i StreetName, ale jest to wystarczająco daleko do prostej ilustracji i tak naprawdę chodzi o to, o ile proces normalizacji jest podejmowany w prawdziwym życiu. Nadal istnieje niewielki problem ze znalezieniem wszystkich mieszkańców Cornhusk Road, ale jeśli przeszukałeś ulicę w poszukiwaniu podciągu „Cornhusk” i zdarzyło się, że gdzieś było miasto o nazwie Cornhusk, przynajmniej nie spowodowałoby to zamieszania.

Problem z definicją podaną przez Date i wsp. Polega na tym, że nie zaglądają do danych i nie biorą pod uwagę ich znaczenia. Nie to, że szczególnie ich winię, może być dość trudne.

Musimy więc wziąć „ciąg znaków” i przekształcić go w „adres”. Jednak opracowanie kompleksowej definicji adresu nie jest tak proste, jak się wydaje. Zwłaszcza podczas pracy z adresami w więcej niż jednym kraju.

Najpierw naprawiamy kontekst. Nic nie ma znaczenia bez kontekstu. Nasz kontekst tutaj to adres . W tym kontekście możemy zobaczyć części danych, które mają określone znaczenie, takie jak ulica , miasto itp. Każdemu z nich przypisujemy oddzielne pole.

Trudność polega na tym, że dane, podobnie jak słowa, mogą mieć różne znaczenie dla różnych osób lub niektórzy ludzie widzą znaczenie tam, gdzie inni ich nie mają. Może to być projekt sam w sobie i wymaga dużego wysiłku współpracy. Jest to jednak kluczowy element dobrego projektu bazy danych.

Celem normalizacji jest wyeliminowanie lub przynajmniej zminimalizowanie nieprawidłowych danych. Weź pod uwagę fakt, że w powyższej tabeli można wprowadzić miasto lub kod pocztowy, który nie istnieje w wybranym stanie. Lub wprowadzona ulica, która tak naprawdę nie istnieje w wybranym mieście. Ach, ale teraz przechodzimy do drugiej i trzeciej normalnej formy i to jest inny temat.


1

Pomyśl o 1NF jako wprowadzeniu do matematycznej koncepcji relacji, a nie o określonej strukturze danych lub ustalonym zestawie reguł. Struktury matematyczne, takie jak relacje, można przedstawiać na różne sposoby - tabele to tylko jeden z najwygodniejszych sposobów. Podczas korzystania z tabel istnieją ograniczenia, aby zapewnić, że wyraźnie reprezentują zamierzone relacje oraz że operacje na tabelach są logicznie prawidłowe w odniesieniu do reprezentowanych relacji.

Kiedy mówimy, że kolejność kolumn i wierszy oraz powielanie są nieistotne, ma to zapewnić, że wszystkie istotne informacje są rejestrowane jako wartości w tabeli i dostępne dla naszych zapytań, a nie zakodowane w prezentacji tabeli. Podczas gdy niewielu, jeśli w ogóle, autorzy wyraźnie zakazali używania kolorów w tabelach, zrozumienie celu powyższych ograniczeń doprowadziłoby nas w podobny sposób do wykluczenia użycia znaczących kolorów prezentacji, tak że istotne wartości kolorów muszą zostać wyraźnie zarejestrowane. Z tego samego powodu data i inni autorzy również uznają ukryte identyfikatory wierszy.

Pojęcie atomowości polega na zapewnieniu, że cała znacząca struktura jest wyrażona jako relacje, dzięki czemu jesteśmy w stanie analizować zależności we wszystkich naszych danych i zapobiegać anomaliom oraz aby cała znacząca struktura była jednolicie dostępna dla operacji relacyjnych. Wartości złożone nie są nieprawidłowe, ale wymagają rozpakowania operatorów specyficznych dla domeny, co zwiększa złożoność i może wprowadzić nadmiarowość. Oczywiście w praktyce niektóre proste typy kompozytów i powiązane operatory są wygodne i pomagają zwiększyć zwartość i ekspresyjność zapytań, ale nie jest to sprzeczne z teorią.

Zależności między wierszami, takie jak zależności wielowartościowe, nie naruszają 1NF, ale podobnie jak zależności między kolumnami, są przedmiotem wyższych normalnych postaci. Prawie powtarzające się kolumny, takie jak phone1, phone2itp. Również nie naruszają 1NF, mimo że są kiepskie.


0

Definicja i wyjaśnienie z Wikipedii około 1nF, myślę, że jest dość dobry. - joanolo

Rozwinięcie jednego zdania w artykule w Wikipedii:

Tekst traktowany jako numery telefonu nie jest atomowy

To może dać ci wytłumaczenie, dlaczego tak wiele zamieszania. Jeśli to tylko odrobina tekstu, to jest atomowa. Ale jeśli jest postrzegany jako numery telefonów, to nie jest atomowy. Data i inni omijają ten problem. Ma to związek z tym, co oznaczają dane. Analizując przedmiot, musisz zmierzyć się z tym, co oznaczają dane.

To, czy jest jakiś powód do dalszego podziału, jest istotne dla pytania, czy pierwsza normalna forma została spełniona. Celem 1NF jest zapewnienie kluczowego dostępu do wszystkich danych. Ale jeśli rzecz, którą odzyskujesz za pomocą dostępu kluczowego, ma podkonstrukcję, to nie masz dostępu kluczowego do podkonstrukcji. - Walter Mitty

„1NF” oznacza wiele różnych rzeczy , z których wiele jest jednocześnie całkowicie bezsensownych i powszechnych. Zobacz moją odpowiedź na „Normalizację w systemie zarządzania bazą danych” , w tym jej linki. Jedną z nich jest moja odpowiedź na „Co to jest atomowość w dbms” . (Oba w przepełnieniu stosu.) - philipxy


Wiki Wiki odpowiedź utworzona z komentarzy pozostawionych na pytanie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.