Normalizacja bazy danych (wyjaśniona w prostym języku angielskim)
Wprowadzenie do normalizacji bazy danych
Normalizacja bazy danych to proces używany do organizowania bazy danych w tabele i kolumny. Główną ideą jest to, że tabela powinna dotyczyć określonego tematu i zawierać tylko tematy pomocnicze. Jako przykład weź arkusz kalkulacyjny zawierający informacje, w którym dane zawierają sprzedawców i klientów służących do różnych celów:
- Zidentyfikuj sprzedawców w swojej organizacji
- Wymień wszystkich klientów, do których dzwoni Twoja firma sprzedać produkt
- Zidentyfikuj, którzy sprzedawcy dzwonią do określonych klientów.
Ograniczając tabelę do jednego celu, zmniejszasz liczbę zduplikowanych danych zawartych w bazie danych. Eliminuje to niektóre problemy wynikające z modyfikacji bazy danych.
Aby osiągnąć te cele, będziemy używać pewnych ustalonych zasad. W miarę stosowania tych reguł tworzone są nowe tabele. Przejście od niesfornego do zoptymalizowanego przechodzi przez kilka normalnych form.
Istnieją trzy normalne formy, których używa większość baz danych. Ponieważ tabele spełniają każdy kolejny formularz normalizacji bazy danych, stają się mniej podatne na anomalie modyfikacji bazy danych i bardziej koncentrują się na jednym celu lub temacie. Zanim przejdziemy dalej, upewnij się, że rozumiesz definicję tabeli bazy danych.
Przyczyny normalizacji bazy danych
Istnieją trzy główne powody, dla których należy normalizować bazę danych. Pierwsza to zminimalizowanie duplikatów danych, druga to zminimalizowanie lub uniknięcie problemów z modyfikacją danych, a trzecia to uproszczenie zapytań.
W trakcie przechodzenia przez różne stany normalizacji omówimy, w jaki sposób każdy formularz rozwiązuje te problemy, ale na początek przyjrzyjmy się niektórym danym, które nie zostały znormalizowane, i omówimy niektóre potencjalne pułapki.
Myślę, że kiedy zrozumiesz problemy, lepiej docenisz normalizację. Weź pod uwagę następującą tabelę:
Pierwszą rzeczą, na którą należy zwrócić uwagę, jest to, że ta tabela służy wielu celom, w tym:
- Identyfikowanie sprzedawców w organizacji
- Lista sprzedaży biura i numery telefonów
- Powiązanie sprzedawcy z biurem sprzedaży
- Pokazywanie klientów każdego sprzedawcy
Jako administrator DBA jest to sygnał ostrzegawczy. Ogólnie lubię widzieć tabele, które mają jeden cel. Posiadanie stołu służącego do wielu celów wprowadza wiele wyzwań; a mianowicie powielanie danych, problemy z aktualizacją danych i zwiększony wysiłek związany z wyszukiwaniem danych.
Nieprawidłowości w zakresie duplikacji i modyfikacji danych
Zauważ, że dla każdego sprzedawcy wymieniliśmy zarówno biuro sprzedaży, jak i numer biura. Istnieją zduplikowane dane sprzedawcy. Powielone informacje stwarzają dwa problemy:
- Zwiększa pamięć masową i zmniejsza wydajność.
- Utrzymanie zmian danych staje się trudniejsze.
Na przykład:
Zastanów się, czy przeniesiemy biuro w Chicago do Evanston w stanie Illinois. Aby odpowiednio odzwierciedlić to w naszej tabeli, musimy zaktualizować wpisy dla wszystkich sprzedawców aktualnie przebywających w Chicago. Nasza tabela jest małym przykładem, ale możesz zobaczyć, gdyby była większa, że potencjalnie może to wymagać setek aktualizacji.
Takie sytuacje to anomalie modyfikacji. Normalizacja bazy danych rozwiązuje te problemy. Mogą wystąpić trzy anomalie modyfikacji:
Wstaw anomalię
Istnieją fakty, których nie możemy zarejestrować, dopóki nie znamy informacji z całego wiersza. W naszym przykładzie nie możemy nagrać nowego biura sprzedaży, dopóki nie poznamy również sprzedawcy. Dlaczego? Ponieważ aby utworzyć rekord, potrzebujemy klucza podstawowego. W naszym przypadku jest to EmployeeID.
Zaktualizuj anomalię
W tym przypadku mamy te same informacje w kilku wierszach. Na przykład, jeśli zmieni się numer biura, należy wprowadzić wiele aktualizacji. Jeśli nie zaktualizujemy wszystkich wierszy, pojawią się niespójności.
Anomalia usuwania
Usunięcie wiersza powoduje usunięcie więcej niż jednego zestawu faktów. Na przykład, jeśli John Hunt przejdzie na emeryturę, usunięcie tego wiersza spowoduje utratę informacji o biurze w Nowym Jorku.
Problemy z wyszukiwaniem i sortowaniem
Ostatnim powodem, dla którego rozważymy, jest ułatwienie wyszukiwania i sortowania danych. Jeśli w tabeli SalesStaff chcesz wyszukać konkretnego klienta, takiego jak Ford, musisz wpisać zapytanie takie jak
SELECT SalesOfficeFROM SalesStaffWHERE Customer1 = ‘Ford’ OR Customer2 = ‘Ford’ OR Customer3 = ‘Ford’
Oczywiście, gdyby klient w jakiś sposób w jednej kolumnie nasze zapytanie byłoby prostsze. Zastanów się również, czy chcesz uruchomić zapytanie i posortować według klienta.
Nasz obecny stół sprawia, że jest to trudne. Musiałbyś użyć trzech oddzielnych zapytań UNION!Możesz wyeliminować lub zmniejszyć te anomalie, rozdzielając dane w różnych tabelach. W ten sposób dane są umieszczane w tabelach służących jednemu celowi.
Proces przeprojektowywania tabeli polega na normalizacji bazy danych.
Definicja normalizacji bazy danych
Istnieją trzy popularne formy normalizacji bazy danych: pierwsza, druga i trzecia postać normalna. Są również skracane odpowiednio jako 1NF, 2NF i 3NF.
Istnieje kilka dodatkowych form, takich jak BCNF, ale uważam te zaawansowane i niezbyt konieczne, aby uczyć się na początku.
Formy są progresywne, co oznacza, że aby kwalifikować się do trzeciej postaci normalnej, tabela musi najpierw spełniać zasady dla drugiej postaci normalnej, a druga postać normalna musi być zgodna z regułami dla pierwszej postaci normalnej. Zanim szczegółowo omówimy różne formy i reguły, podsumujmy różne formy:
- Pierwsza forma normalna – informacje są przechowywane w tabeli relacyjnej, w której każda kolumna zawiera wartości atomowe. Nie ma powtarzających się grup kolumn.
- Druga forma normalna – tabela jest w pierwszej postaci normalnej, a wszystkie kolumny zależą od klucza podstawowego tabeli.
- Trzecia forma normalna – tabela jest w drugiej normalnej formie i wszystkie jego kolumny nie są przejściowo zależne od klucza podstawowego
Jeśli reguły nie mają zbyt wiele sensu, nie martw się. Dołączyłem link do artykułu, który pomoże Ci je zrozumieć.
Na razie ważne jest, aby zrozumieć, że istnieją trzy zasady normalizacji baz danych, które wzajemnie na siebie działają. Niektórzy uważają, że normalizacja bazy danych wydaje się skomplikowana.
ale nie musi, a kiedy już ją zrozumiesz, stanie się intuicyjna.