sql >> Databasteknik >  >> RDS >> Mysql

Databas:Kan jag ha null-attribut i en tredje normalformsdatabas?

Sättet som nollvärden definieras i SQL - som icke-värden som inte kan jämföras med domänvärden - innebär att de bryter mot 1NF (och alla former av högre normaler). En relation (den matematiska strukturen som representeras av normaliserade tabeller) måste ha ett enda värde för varje kolumn för varje rad. Nollvärden betyder att vi inte har något värde, och en nollbar kolumn betyder att vi har två relationer i en tabell - en supertyprelation som inkluderar alla kolumner utom den nollbara, och en subtyprelation som har samma primärnyckel och den tidigare nollbara kolumnen, för som vi endast kan registrera rader för vilka attributet är känt. Syftet med normalisering är att faktorisera en datamängd till elementära fakta utan att förlora information, så att ha två relationer i en enda tabell motsäger målet och gör saker som relationalgebra/kalkyl mer komplicerade.

De normala formerna är formella logiskt definierade strukturer, inte industriella bästa praxis som kan anpassas till situationen, så jag ser inte mycket utrymme för kontroverser. Om vi ​​ska använda dem och hur de ska hanteras är ett mer intressant ämne.

Även om nollor bryter mot de normala formerna, betyder det inte att du inte kan använda nollor i din SQL-databas. De har både risker och fördelar. Jag använder dem också, men med omtanke.




  1. Minsta åtkomstnivåer för att köra MySql lagrad procedur

  2. Hämta den genererade uuid efter infoga php

  3. DROP FUNCTION utan att veta antalet/typ av parametrar?

  4. Kombinera data från två olika korsningstabeller