Sleutels
Primaire sleutel
Eén van de regels voor een tabel zegt dat elke rij (record) uniek moet zijn. We kunnen daarom zeggen dat één kolom of een combinatie van kolommen ervoor zorgt dat de rij uniek is. Deze kolom of combinatie van kolommen wordt de primaire sleutel genoemd. De primaire sleutel is dus altijd uniek binnen de tabel. Een primaire sleutel van een tabel is een kolom of kolomcombinatie waarvoor geldt:
- Hij is verplicht.
- Hij is uniek.
- Hij bestaat uit zo weinig mogelijk kolommen.
Soms kunnen meerdere kolommen of combinaties van kolommen als primaire sleutel gebruikt worden. Dit zijn dan kandidaatsleutels. In dat geval wordt één ervan als primaire sleutel gekozen. Alle anderen zijn dan alternatieve sleutels.
- Een primaire sleutel wordt aangeduid door de dubbele pijlen met een ‘p’ tussen:
← p → - Een alternatieve sleutel wordt aangeduid door de dubbele pijlen met een ‘a’ tussen:
← a →
In het voorbeeld hieronder:
- De kolom ‘naam’ is een goede primaire sleutel
- De combinatie ‘naam’ en ‘eenheid’ is een slechte primaire sleutel
- Hoewel deze primaire sleutel voldoet aan eis 2 (de combinatie ‘naam’ en ‘eenheid’ is uniek), voldoet hij niet aan eis 1 (het deel ‘eenheid’ van de sleutel is niet verplicht) en ook niet aan eis 3 (je kan het deel ‘eenheid’ laten vallen en nog steeds een primaire sleutel verkrijgen)
← p → | ||
---|---|---|
naam | eenheid° | energiePE° |
ijs | liter | 1600 |
kiwano | stuks | 40 |
slagroom | deciliter | 336 |
suiker | gram | 4 |
tequila | eetlepel | 30 |
Refererende sleutel
Een referende sleutel is een kolom of kolomcombinatie waarvan de waarden (of waardencombinaties) naar rijen in een andere tabel verwijzen, via de primaire sleutel daarvan. Dit creëert een relatie tussen de beide tabellen.
Een relatie is een verbinding tussen een kindtabel en een oudertabel. In het voorbeeld hieronder is de ingrediënt-tabel het kind en de product-tabel de ouder. Een relatie werkt altijd in beide richtingen.
Een refererende sleutelkolom bevat altijd redundante gegevens. Het is door de redundante gegevens enkel in refererende sleutels te hebben, dat redundantie wordt beperkt tot het minimum.
In het voorbeeld hieronder is de kolom product
uit de tabel ingredient een refererende sleutel naar de primaire sleutel naam
uit de tabel product.
Het strokendiagram ziet er dan zo uit: