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

Prima forma normale e nome e cognome

L'1NF riguarda l'atomicità, non la ridondanza (questo è ciò che riguardano le forme normali superiori). In sostanza, se tutti gli attributi sono atomici, la tua tabella è in 1NF.

Ovviamente, se una tabella è in 1NF dipende da ciò che definisci "atomico". Cosa significhi effettivamente "atomicità" è oggetto di qualche controversia, ma qui adotterei un approccio pragmatico caso per caso e chiederei semplicemente:

Nel contesto del problema che sto cercando di risolvere, ha mai senso accedere a una parte del valore o accedo sempre all'intero valore?

Se accedo sempre al tutto, è atomico in quel particolare contesto.

Nel tuo esempio, è probabile che tu voglia accedere a first_name e last_name separatamente, quindi full_name sarebbe non atomico e questo sarebbe il motivo per violare la 1NF. Se, tuttavia, sai che non avrai mai bisogno di accedere separatamente al nome e al cognome, allora potresti avere solo il full_name e ancora non violare la 1NF.

"Accesso" al valore dovrebbe essere compreso in modo abbastanza ampio qui. Potrebbe ovviamente significare leggerlo dal database, ma potrebbe anche significare usarlo in un vincolo, o indicizzarlo ecc...