sql >> Databáze >  >> RDS >> Mysql

První normální tvar a jméno a příjmení

1NF je o atomicitě, ne o redundanci (o tom jsou vyšší normální formy). V podstatě, pokud jsou všechny atributy atomické, vaše tabulka je v 1NF.

Je zřejmé, že zda je tabulka v 1NF závisí na tom, co definujete jako "atomové". Co vlastně znamená „atomicita“, je předmětem určité kontroverze, ale zde bych zvolil pragmatický přístup případ od případu a jednoduše se zeptal:

Má někdy v kontextu problému, který se snažím vyřešit, smysl přistupovat k jakékoli části hodnoty, nebo mám vždy přístup k celé hodnotě?

Pokud vždy přistupuji k celku, je v tomto konkrétním kontextu atomický.

Ve vašem příkladu je pravděpodobné, že budete chtít získat přístup k first_name a last_name samostatně, tedy full_name by byl neatomový a to by byl důvod porušení 1NF. Pokud však víte, že nikdy nebudete potřebovat přístup ke křestnímu jménu a příjmení odděleně, můžete jen full_name a přesto neporušují 1NF.

"Přístup" k hodnotě by zde měl být chápán poměrně široce. Může to samozřejmě znamenat čtení z databáze, ale může to také znamenat použití v omezení nebo indexování atd...



  1. Seřaďte proměnné $_POST

  2. JDBC - Statement, PreparedStatement, CallableStatement a ukládání do mezipaměti

  3. Databáze:Nejlepší způsob, jak zjišťovat údaje o zeměpisné poloze?

  4. Python mysql.connector – správný způsob, jak načíst řádek jako slovník