sql >> Database teknologi >  >> RDS >> Mysql

Database:Kan jeg have nullbare attributter i en tredje normalform database?

Måden nulls er defineret i SQL - som ikke-værdier, der ikke kan sammenlignes med domæneværdier - betyder, at de overtræder 1NF (og alle former for højere normaler). En relation (den matematiske struktur repræsenteret af normaliserede tabeller) skal have en enkelt værdi for hver kolonne for hver række. Nullværdier betyder, at vi ikke har nogen værdi, og en nullbar kolonne betyder, at vi har to relationer i én tabel - en supertyperelation, som inkluderer alle kolonnerne undtagen den nullable, og en undertyperelation, som har den samme primærnøgle og den tidligere nullable kolonne, for som vi kun kan optage rækker for, hvor attributten er kendt. Formålet med normalisering er at inddrage et datasæt i elementære fakta uden at miste information, så at have to relationer i en enkelt tabel modsiger målet og gør ting som relationel algebra/regning mere kompliceret.

De normale former er formelle logisk definerede strukturer, ikke industriel bedste praksis, som kan tilpasses situationen, så jeg ser ikke meget plads til kontroverser. Om vi ​​skal bruge dem, og hvordan de skal håndteres, er et mere interessant emne.

Selvom nuller overtræder de normale former, betyder det ikke, at du ikke kan bruge nuller i din SQL-database. De har både risici og fordele. Jeg bruger dem også, men med omtanke.




  1. codeigniter active record få forespørgsel og forespørgsel uden LIMIT-klausulen

  2. django.db.utils.OperationalError:(1045:Adgang nægtet for brugeren 'root'@'localhost' (ved hjælp af adgangskode:NEJ)

  3. Optimal forespørgsel til at hente en kumulativ sum i MySQL

  4. Hvordan beregner jeg tabelstørrelse i Oracle