Niedawno dowiedziałem się o normalizacji i rozumiem, jak ważne jest wdrożenie nowego schematu.
Jak mogę sprawdzić, czy moja baza danych jest zgodna z 2NF lub 3NF?
Ręczna recenzja jest pewną opcją, ale szukam tutaj zautomatyzowanego narzędzia.
Nie szukam narzędzia typu „wskaż i kliknij”, a raczej czegoś, co podkreśliłoby możliwe optymalizacje w celu zapewnienia zgodności tabeli 3NF. Wydaje mi się, że może korzystać ze statystyk opartych na dobrych przykładowych danych i / lub analizie semantycznej nazw kolumn.
Odpowiedzi:
Normalizacja jest absolutnie używana w prawdziwym świecie ... i mam nadzieję, że wiesz, że 3NF jest dopiero trzecim z ... co jest teraz, 8? Ale 3NF powinien być łatwym celem.
Jednak ... Zaryzykowałbym stwierdzenie, że nie może być takiego narzędzia.
Normalizacja, technicznie rzecz biorąc, jest atrybutem każdej tabeli. W obrębie danej bazy danych różne tabele mogą mieć różne poziomy normalizacji.
Każda tabela przedstawia fakty ... fakty dotyczące przypadków określonego rodzaju rzeczy (osoba, konto, zamówienie, przesyłka, pozycja, lokalizacja), w tym czasem klucze obce, które prowadzą do innych faktów na ten temat.
Normalizacja ma związek z dokładnością i wydajnością faktów przedstawianych w tabelach, a także ze zdolnością projektu tabeli do zapobiegania dwuznacznym i zbędnym wzorcom danych.
Dlatego konieczne jest zrozumienie faktów ... co wykracza poza zakres zautomatyzowanych narzędzi.
W świecie, w którym wszyscy instruktorzy uczyli wszystkich przedmiotów, a każdy uczeń mógł wziąć dowolną kombinację, ale nie więcej niż jeden kurs z każdego przedmiotu od każdego instruktora, rzeczywiście można powiedzieć, że ta tabela jest w 3NF. W prawdziwym świecie twierdzenie, że 3NF dla tej tabeli jest absurdalne.
Aby zrozumieć, że nie ma tego w 3NF, konieczne jest zrozumienie charakteru faktów, które reprezentuje. W naszej rzeczywistości ta tabela nie będzie 3NF, ponieważ (między innymi) przedmiot i instruktor są ze sobą powiązani w sposób, który nie ma nic wspólnego z uczniem. Jeśli mamy kursy, w których instruktorzy uczą przedmiotów przechowywanych gdzie indziej w naszej bazie danych, dlaczego mielibyśmy kopiować obie wartości tutaj zamiast klucza obcego z drugiej tabeli wskazującej, że uczeń został zapisany na kurs? Jeśli instruktor zostanie zastąpiony, musimy zmienić wiele rekordów w wielu miejscach.
Im bardziej znormalizowana jest baza danych, tym bardziej jest ona wewnętrznie spójna ze światem rzeczywistym i samym sobą, a tym trudniejsze jest, aby fakty bazy danych były nieumyślnie nieprawdziwe. Projektowanie baz danych jest sztuką, ale z całą pewnością jest również nauką.
Mimo że nie widzę wszystkiego, co pisze, polecam książkę Chrisa Datea, Database Design and Relational Theory: Normal Forms and All That Jazz, która zawiera dręczące szczegóły na temat teorii leżącej u podstaw modelu relacyjnego.
źródło
Jednym z celów stosowania metod formalnych w rozwijaniu teorii relacji było opracowanie procedur, które można zautomatyzować. Jestem prawie pewien, że CJ Date wychodzi od razu i mówi to w swoim Wprowadzenie do systemów baz danych .
Kilka narzędzi CASE wydanych pod koniec lat 80. lub na początku lat 90. XX wieku mogło uzyskać każdy możliwy schemat 5NF albo poprzez analizę diagramów ER lub przez statystyczną analizę przykładowych danych.
Visio Enterprise Architect (myślę) to stosunkowo nowe narzędzie zgodne z tymi założeniami.
źródło
Wątpię, czy nadal potrzebujesz odpowiedzi, ale jeśli Ty lub ktoś inny skorzysta, możesz wypróbować to narzędzie: http://uisacad5.uis.edu/cgi-bin/mcrem2/ database_design_tool.cgi
źródło
Myślę, że gdybyś mógł napisać narzędzie do zrobienia tego, nadal by to działało ręcznie. normalne formularze są definiowane na podstawie zależności funkcjonalnych i nie można ich ustalić na podstawie samej kontroli danych. Innymi słowy, jest to kwestia logiki raczej indukcyjnej niż dedukcyjnej w celu ustalenia, czy istnieje zależność funkcjonalna.
źródło