Du overtænker sammenhængen mellem valgfrihed og identitet. Indtil det hele falder mere naturligt for dig, er det bedst at tænke på dem som værende helt uafhængige .
Om valgfrihed er det vigtigt at huske, at valgfrihed er retningsbestemt. For at bruge dit eksempel på employee_equipment
:Ja, medarbejderne har ikke brug for udstyr. En-til-mange-forholdet fra employee
til employee_equipment
er valgfri. Ser man på det fra det modsatte perspektiv, er forholdet samtidig obligatorisk. Du kan ikke have en registrering i employee_equipment
medmindre der er en employee
at forbinde det med.
Identitet har intet at gøre med valgfrihed, undtagen tilfældigvis et identificerende forhold er obligatorisk fra barnet til forælderen. Om det også er obligatorisk fra forælder til barn er hverken her eller der hvad identitet angår.
Det, der gør et forhold identificerende, er, at man skal vide, hvilken forælder man taler om (samt nogle andre ting) for at vide, hvilket barn man taler om. Det vil sige, at barnets primære nøgle skal indeholde en fremmednøgle til forælderen.
Rene skæringstabeller (f.eks. employee_equipment
) er gode eksempler på dette. Den primære nøgle i et rent skæringspunkt er kombinationen af fremmednøglerne til begge overordnede tabeller. Bemærk, at nogle mennesker også kan tilføje en surrogatnøgle til denne slags tabeller. Det betyder ikke så meget fra et identitetsperspektiv, hvis der er flere kandidatnøgler. Det, der er vigtigt for at bestemme identiteten, er, om den fremmede nøgle er en del af en kandidatnøgle, uanset om denne kandidatnøgle tilfældigvis er den primære nøgle.
Et andet godt eksempel ville være noget i retning af en databases metadatakatalog, hvor en kolonne identificeres ved den tabel, den tilhører, ligesom tabellen identificeres ved det skema, den er i, og så videre. At vide, at en kolonne hedder NAME
fortæller dig ikke, hvilken kolonne det er. Velvidende, at det er NAME
kolonnen i CUSTOMER
bord hjælper. (Du skal også vide hvilket skema CUSTOMER
er med og så videre).