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

Czy praktyczna jest dynamiczna normalizacja tabeli?

To zależy trochę od twojego użytkowania. Znormalizowane podejście (park to stół) ułatwi następujące zapytania:

  • Ile zaobserwowano ptaków w każdym parku
  • W którym parku najprawdopodobniej zobaczysz ptaka XYZ
  • Prawdopodobnie jest więcej takich zapytań

Ale tak, napotykasz kilka lepkich problemów. Wzorzec „jeśli park XYZ nie istnieje, wstaw go do tabeli parków” cierpi na sytuację wyścigu, z którą będziesz musiał sobie poradzić.

A co powiesz na kilka argumentów przeciwko normalizacji tutaj... Większość baz danych klientów prawdopodobnie przechowuje mój adres ulicy jako „123 Foo Street”, bez dynamicznej normalizacji nazwy ulicy (możemy mieć tabelę ulic i umieścić tam „Foo Street”, a następnie odwołać się do z innych tabel. Dlaczego o tym wspominam? Cóż, żeby pokazać, że nawet ci, którzy nienawidzą powtarzających się danych, prawdopodobnie przyznają, że jest pewna granica, której niekoniecznie musisz przekraczać.

Innym głupim przykładem może być to, że możemy dzielić się nazwiskami. Czy naprawdę potrzebujemy tabeli dla unikalnych nazwisk, a następnie klucza obcego do niej z innych tabel? Mogą istnieć pewne aplikacje, w których jest to pomocne, ale w przypadku 99% aplikacji jest to za daleko. To po prostu więcej pracy i mniej wydajności przy niewielkim lub zerowym zysku.

Zastanowiłbym się więc, jak chcę mieć możliwość wysyłania zapytań do danych z powrotem z tabeli. Szczerze mówiąc w tym przypadku prawdopodobnie zrobiłbym osobny stolik dla parków. Ale w innych przypadkach zdecydowałem się tego nie robić.

To moje dwa centy, jeden cent po opodatkowaniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykonywanie wielu zapytań SQL w jednej instrukcji z PHP

  2. Mysql NIE W I NIE ISTNIEJE tak samo?

  3. Załącznik PHP w wiadomości e-mail jest pusty

  4. Klauzula LIKE Mysql i oddzielne słowa w polu

  5. Jak przekonwertować zestaw wyników na Json w MYSQL