Mysql
 sql >> Base de données >  >> RDS >> Mysql

Base de données :puis-je avoir des attributs nullables dans une troisième base de données de forme normale ?

La façon dont les valeurs nulles sont définies dans SQL - en tant que non-valeurs qui ne peuvent pas être comparées aux valeurs de domaine - signifie qu'elles violent 1NF (et toutes les formes normales supérieures). Une relation (la structure mathématique représentée par des tables normalisées) doit avoir une valeur unique pour chaque colonne de chaque ligne. Les valeurs nulles signifient que nous n'avons aucune valeur, et une colonne nullable signifie que nous avons deux relations dans une table - une relation de supertype qui inclut toutes les colonnes sauf celle nullable, et une relation de sous-type qui a la même clé primaire et la colonne précédemment nullable, pour dont nous ne pouvons enregistrer que les lignes dont l'attribut est connu. Le but de la normalisation est de factoriser un ensemble de données en faits élémentaires sans perdre d'informations, donc avoir deux relations dans une seule table contredit l'objectif et rend les choses comme l'algèbre/calcul relationnel plus compliquées.

Les formes normales sont des structures formelles définies logiquement, pas des meilleures pratiques industrielles qui peuvent être adaptées à la situation, donc je ne vois pas beaucoup de place pour la controverse. La question de savoir si nous devons les utiliser et comment les gérer est un sujet plus intéressant.

Bien que les valeurs nulles violent les formes normales, cela ne signifie pas que vous ne pouvez pas utiliser de valeurs nulles dans votre base de données SQL. Ils ont des risques ainsi que des avantages. Je les utilise aussi, mais avec considération.