Supernøkkel
I en relasjonsdatamodell er en supernøkkel en mengde av attributter som unikt identifiserer hver tuppel (sekvens av elementer) av en relasjon.[1][2] Siden supernøkkelverdier er unike medfører det at tupler med samme supernøkkelverdi også må ha de samme ikke-nøkkel attributtverdiene. Altså er ikke-nøkkel-attributter funksjonelt avhengige av supernøkkelen.
Mengden av alle attributter er alltid en supernøkkel (den trivielle supernøkkelen). Tupler i en relasjon er per definisjon unike, med duplikater fjernet etter hver operasjon, slik at mengden av alle attributter alltid gir unike verdier for hver tuppel. En kandidatnøkkel (eller minimal supernøkkel) er en supernøkkel som ikke kan reduseres til en enklere supernøkkel ved å fjerne en attributt.[3]
I for eksempel en ansattmodell med attributtene ansatt-ID, navn, stilling og avdelings-ID så kan man (under forutsetning at ansatt-ID-ene er unike) si at ansatt-ID kombinert med noen eller alle av de andre attributtene unikt identifiserer tuplene i tabellen. Enhver kombinasjon, som eksempelvis {ansatt-ID}, {ansatt-ID, navn}, {ansatt-ID, navn, jobb} og så videre, er en supernøkkel. {ansatt-ID} er en kandidatnøkkel, siden ingen delmengde av attributtene også er en supernøkkel. {ansatt-ID, navn, stilling, avdelings-ID} er den trivielle supernøkkelen.
Dersom attributt-mengden K er en supernøkkel av relasjonen R vil det til enhver tid være slik at projeksjon av R over K har samme kardinalitet som R selv.
Eksempel
| Monarknavn | Monarknummer | Kongehus |
|---|---|---|
| Edvard | II | Plantagenet |
| Edvard | III | Plantagenet |
| Rikard | III | Plantagenet |
| Henrik | IV | Lancaster |
Først listes alle de mulige mengdene med attributter:
- {}
- {monarkens navn}
- {monarknummer}
- {kongehus}
- {monarkens navn, monarknummer}
- {monarkens navn, kongehus}
- {monarknummer, kongehus}
- {monarkens navn, monarknummer, kongehus}
Deretter elimineres alle mengdene som ikke tilfredsstiller kravene for å gi en supernøkkel. For eksempel kan ikke {monarkens navn, kongehus} være en supernøkkel fordi det for disse attributtverdiene er et tilfelle (Edvard, Plantagenet) som gir to forskjellige tupler:
- (Edvard, II, Plantagenet)
- (Edvard, III, Plantagenet)
Til slutt etter eliminering sitter man igjen med de ulike mengdene av attributter som er de eneste mulige supernøklene i dette eksemplet:
- {monarkens navn, monarknummer} — (dette er også kandidatnøkkelen)
- {monarkens navn, monarknummer, kongehus}
I virkeligheten kan ikke supernøkler bestemmes bare ved å undersøke en begrenset mengde av tupler i en relasjon. En supernøkkel definerer en funksjonell avhengighet i en relasjonsmodell som gir en begrensning som må gjelde for alle mulige forekomster (instanser) av relasjoner av den gitte relasjonsmodellen (inkludert fremtidige).
Se også
Referanser
- ^ Date, Christopher. «Codd's First Relational Papers: A Critical Analysis» (PDF). Besøkt 4. januar 2020.
- ^ Introduction to Database Management Systems. Tata McGraw-Hill. s. 77. ISBN 9780070591196. «no two tuples in any legal relation»
- ^ «An Efficient Algorithm to Compute the Candidate Keys of a Relational Database Schema».
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.