Příliš přemýšlíte o spojení mezi volitelností a identitou. Dokud vám celá věc nepřijde přirozenější, je nejlepší si je představit jako zcela nesouvisející .
Pokud jde o volitelnost, je důležité si uvědomit, že volitelnost je směrová. Chcete-li použít váš příklad employee_equipment
:Jistě, zaměstnanci nepotřebují vybavení. Vztah jeden k mnoha od employee
na employee_equipment
je volitelný. Zároveň, když se na to podíváme z opačné perspektivy, vztah je povinný. Nemůžete mít záznam v employee_equipment
pokud neexistuje employee
přiřadit jej.
Identita nemá nic společného s volitelností, kromě náhodně identifikační vztah je povinný od dítěte k rodiči. Zda je to povinné i ze strany rodiče k dítěti, není zde ani tam, pokud jde o identitu.
To, co dělá vztah identifikací, je to, že musíte vědět, o jakém rodiči mluvíte (stejně jako o některých dalších věcech), abyste věděli, o jakém dítěti mluvíte. To znamená, že primární klíč potomka musí obsahovat cizí klíč pro rodiče.
Čisté průsečíkové tabulky (např. employee_equipment
) jsou toho dobrým příkladem. Primárním klíčem čistého průniku je kombinace cizích klíčů k oběma nadřazeným tabulkám. Všimněte si, že někteří lidé mohou k těmto typům tabulek také přidat náhradní klíč. Z hlediska identity tolik nezáleží na tom, zda existuje více kandidátských klíčů. Při určování identity je důležité, zda je cizí klíč součástí kandidátského klíče, zda je či není tento kandidátský klíč primárním klíčem.
Dalším dobrým příkladem by bylo něco jako katalog metadat databáze, kde je sloupec identifikován tabulkou, do které patří, stejně jako je tabulka identifikována schématem, ve kterém se nachází atd. Vědět, že sloupec se nazývá NAME
neřekne vám, který sloupec to je. S vědomím, že jde o NAME
ve sloupci CUSTOMER
pomáhá tabulka. (Také budete muset vědět, které schéma CUSTOMER
je in a tak dále).