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

Jedinečný klíč s hodnotami NULL

Základní vlastnost jedinečného klíče že to musí být jedinečné. Pokud část tohoto klíče změníte na hodnotu Null, tuto vlastnost zničíte.

Existují dvě možná řešení vašeho problému:

  • Jedním ze způsobů, špatným, by bylo použít nějaké magické datum k reprezentaci neznámého. To vás jen dostane přes "problém" DBMS, ale neřeší problém v logickém smyslu. Očekávejte problémy se dvěma položkami "John Smith" s neznámým datem narození. Jsou tito kluci jeden a stejní nebo jsou to jedineční jedinci? Pokud víte, že se liší, jste zpět u stejného starého problému – váš jedinečný klíč prostě není jedinečný. Ani nepřemýšlejte o přiřazení celé řady magických dat k reprezentaci „neznámého“ – toto je skutečně cesta do pekel.

  • Lepším způsobem je vytvořit atribut EmployeeId jako náhradní klíč. Toto je pouze libovolný identifikátor, který přiřadíte jednotlivcům, které znáte jsou jedinečné. Tento identifikátor je často pouze celočíselná hodnota. Pak vytvořte tabulku Employee, která spojí EmployeeId (jedinečný klíč bez možnosti null) s tím, co považujete za závislé atributy, v tomto případě Jméno a Datum narození (kterýkoli z nich může mít hodnotu null). Použijte náhradní klíč EmployeeId všude tam, kde jste dříve používali Jméno/Datum narození. Tím se do vašeho systému přidá nová tabulka, ale problém neznámých hodnot se vyřeší robustním způsobem.



  1. Proč přejmenování sloupce v mysql trvá tak dlouho?

  2. Upgrade Grid Control po ručním upgradu DB

  3. Vrácení informací o sloupci pro uloženou proceduru na serveru SQL Server:sp_sproc_columns

  4. Jak mohu použít transparentní šifrování dat s MySQL?