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

Baza danych:czy mogę mieć atrybuty dopuszczające wartość null w trzeciej bazie danych o normalnym formularzu?

Sposób, w jaki null są definiowane w SQL - jako wartości niebędące wartościami, których nie można porównać z wartościami domeny - oznacza, że ​​naruszają one 1NF (i wszystkie wyższe formy normalne). Relacja (struktura matematyczna reprezentowana przez znormalizowane tabele) musi mieć jedną wartość dla każdej kolumny dla każdego wiersza. Null oznacza, że ​​nie mamy żadnej wartości, a kolumna dopuszczająca wartość null oznacza, że ​​mamy dwie relacje w jednej tabeli - relację nadtypu, która zawiera wszystkie kolumny z wyjątkiem jednej z wartościami null, oraz relację podtypu, która ma ten sam klucz podstawowy i kolumnę, która wcześniej dopuszczała wartość null, dla dla których możemy rejestrować tylko wiersze, dla których znany jest atrybut. Celem normalizacji jest rozłożenie zbioru danych na elementarne fakty bez utraty informacji, więc posiadanie dwóch relacji w jednej tabeli jest sprzeczne z celem i komplikuje takie rzeczy jak algebra/rachunek relacyjny.

Normalne formy to formalnie zdefiniowane logicznie struktury, a nie najlepsze praktyki przemysłowe, które można dostosować do sytuacji, więc nie widzę zbyt wiele miejsca na kontrowersje. To, czy powinniśmy ich używać i jak się z nimi obchodzić, jest ciekawszym tematem.

Chociaż wartości null naruszają normalne formy, nie oznacza to, że nie możesz ich używać w swojej bazie danych SQL. Wiążą się zarówno z ryzykiem, jak i korzyściami. Ja też ich używam, ale z rozwagą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 5.1 — Sprawdzanie połączenia z bazą danych

  2. mySql:pobiera wiersze, w których liczba słów w komórce (ciąg oddzielony przecinkami) ma taką samą wartość jak dopasowana komórka

  3. Jak mogę migrować wersje z bugzilli do nowego niestandardowego pola „wersja źródłowa” w redmine (jakiej składni SQL potrzebuję)?

  4. Ochrona przed wstrzykiwaniem SQL za pomocą tylko str_replace

  5. Jak mogę policzyć liczbę postów?