sql >> Databasteknik >  >> RDS >> Mysql

Första normalform och för- och efternamn

1NF handlar om atomicitet, inte redundans (det är vad högre normala former handlar om). I huvudsak, om alla attribut är atomära, är din tabell i 1NF.

Uppenbarligen, om en tabell är i 1NF beror på vad du definierar som "atomär". Vad "atomicitet" egentligen betyder är en fråga om viss kontrovers, men jag skulle ta en pragmatisk syn på fall till fall här och helt enkelt fråga:

Inom ramen för problemet jag försöker lösa, är det någonsin meningsfullt att komma åt någon del av värdet, eller att jag alltid kommer åt hela värdet?

Om jag alltid kommer åt helheten är den atomär i just det sammanhanget.

I ditt exempel är det troligt att du vill komma åt first_name och last_name separat, alltså full_name skulle vara icke-atomär och det skulle vara anledningen till att bryta mot 1NF. Om du däremot vet att du aldrig kommer att behöva komma åt för- och efternamnet separat, kan du ha bara full_name och fortfarande inte bryter mot 1NF.

"Åtkomst till" värdet bör förstås ganska brett här. Det kan uppenbarligen betyda att man läser det från databasen, men det kan också innebära att man använder det i en begränsning, eller indexerar det etc...



  1. SQL-fråga för att skapa tabell i MySQL

  2. Snabbaste sättet att dumpa Python-ordboksobjekt (dict) till en MySQL-tabell?

  3. Det effektivaste sättet att få tabellrader

  4. mysql-fråga för att matcha mening mot nyckelord i ett fält