sql >> Databáze >  >> RDS >> Mysql

Databáze:Mohu mít atributy s možnou hodnotou Null ve třetí databázi normálního formuláře?

Způsob, jakým jsou v SQL definovány hodnoty null - jako nehodnoty, které nelze srovnávat s hodnotami domény - znamená, že porušují 1NF (a všechny vyšší normální formy). Vztah (matematická struktura reprezentovaná normalizovanými tabulkami) musí mít jednu hodnotu pro každý sloupec pro každý řádek. Hodnoty Null znamenají, že nemáme žádnou hodnotu, a sloupec s možnou hodnotou Null znamená, že máme v jedné tabulce dva vztahy – vztah nadtypu, který zahrnuje všechny sloupce kromě sloupce s možností hodnoty Null, a vztah podtypu, který má stejný primární klíč a sloupec, který mohl být dříve povolen. které můžeme zaznamenat pouze řádky, u kterých je atribut znám. Účelem normalizace je zahrnout soubor dat do elementárních faktů, aniž by došlo ke ztrátě informací, takže mít dva vztahy v jedné tabulce odporuje cíli a dělá věci jako relační algebru/kalkul složitější.

Normální formy jsou formálně logicky definované struktury, nikoli průmyslové best practices, které lze přizpůsobit situaci, takže nevidím moc prostoru pro polemiku. Zda je máme používat a jak s nimi zacházet, je zajímavější téma.

Zatímco hodnoty null porušují normální formy, neznamená to, že ve své databázi SQL nemůžete používat hodnoty null. Mají rizika i výhody. Používám je také, ale s rozvahou.




  1. Spouštění úloh údržby databáze SQL pomocí SQLCMD

  2. Počítání souvisejících položek s Sequelize

  3. Parallel Go testy provedené proti databázi PostgreSQL běžící na Dockeru

  4. 'pip install MySQL-python' selže s 'IndexError'