Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Normalizacja w MYSQL

W tym miejscu staram się wyjaśnić normalizację w kategoriach laika. Po pierwsze, jest to coś, co dotyczy relacyjnych baz danych (Oracle, Access, MySQL), więc nie dotyczy to tylko MySQL.

Normalizacja polega na upewnieniu się, że każda tabela ma tylko minimalne pola i pozbyciu się zależności. Wyobraź sobie, że masz rekord pracownika, a każdy pracownik należy do działu. Jeśli przechowujesz dział jako pole wraz z innymi danymi pracownika, masz problem - co się stanie, jeśli dział zostanie usunięty? Musisz zaktualizować wszystkie pola działu i istnieje możliwość błędu. A co, jeśli niektórzy pracownicy nie mają działu (może nowo przydzielonego?). Teraz będą wartości null.

Tak więc, w skrócie, normalizacja polega na unikaniu pól, które byłyby puste, i upewnieniu się, że wszystkie pola w tabeli należą tylko do jednej domeny opisywanych danych. Na przykład w tabeli pracowników pola mogą być id, nazwisko, numer PESEL, ale te trzy pola nie mają nic wspólnego z działem. Tylko identyfikator pracownika opisuje, do którego działu należy pracownik. Oznacza to, że dział, w którym znajduje się pracownik, powinien znajdować się w innym stole.

Oto prosty proces normalizacji.

EMPLOYEE ( < employee_id >, name, social_security, department_name)

Jak wyjaśniono, nie jest to znormalizowane. Znormalizowany formularz może wyglądać tak

EMPLOYEE ( < employee_id >, name, social_security)

Tutaj tabela Pracownik odpowiada tylko za jeden zestaw danych. Więc gdzie przechowujemy, do którego działu należy pracownik? W innym stole

EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )

To nie jest optymalne. Co się stanie, jeśli zmieni się nazwa działu? (cały czas zdarza się to w rządzie USA). Dlatego lepiej to zrobić

EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )

Istnieje pierwsza postać normalna, druga postać normalna i trzecia postać normalna. Ale jeśli nie studiujesz kursu DB, zwykle wybieram najbardziej znormalizowaną formę, jaką mogę zrozumieć.

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_ARRAY_APPEND() – Dołącz wartości do tablicy JSON w MySQL

  2. PDOException SQLSTATE[HY000] [2002] Brak takiego pliku lub katalogu

  3. MySQL, uzyskaj rangę użytkowników

  4. Jak wypełnić brakujące daty w MySQL?

  5. MySQL — wybór kolumny spoza grupy według