Denne artikkelen vil lære deg forskjellen mellom en primær nøkkel og en sekundærnøkkel. Denne artikkelen vil også lære deg hvorfor begge disse tastene er viktig når det kommer til vedlikehold av en relasjonell database struktur.
Alle eksempler for denne leksjonen er basert på Microsoft SQL Server Management Studio og AdventureWorks2012 database. Du kan komme i gang med disse gratis verktøyene ved hjelp av min Veileder Komme i Gang ved Hjelp av SQL Server.
Hva er forskjellen mellom en Primær Nøkkel og en sekundærnøkkel?,
Før vi kan grave i forskjell, la oss først utforske primære og utenlandske viktige egenskaper. La oss starte ut ved å lære om primærnøklene.
primærnøklene
for en tabell for å kvalifisere som en relasjonell bordet, det må ha en primærnøkkel.
Den primære nøkkelen består av én eller flere kolonner med data som finnes innen brukes til å identifisere hver rad i tabellen. Du kan tenke på dem som en adresse. Hvis radene i en tabell som var postbokser, deretter den primære nøkkelen ville være oppføring av gateadresser.,
Når en primærnøkkel er sammensatt av flere kolonner, data fra hver kolonne brukes til å avgjøre om en rad er unik.
for å være en primærnøkkel, flere vilkår må holde sant. For det første, som vi har nevnt, er det kolonner må være unike. For å avklare, vi henviser til data i rader, ikke kolonnenavnene seg selv. Også, ingen verdi i kolonnene kan være blank eller NULL.
Når du definerer en tabell som du angi primærnøkkelen. En tabell har bare en primærnøkkel, og dens definisjon er obligatorisk.
Den primære nøkkelen for hver tabell som er lagret i en indeks., Indeksen er brukt til å håndheve det unike krav. Det gjør det også enkelt for utenlandske viktige verdier å se tilbake på tilsvarende primære viktige verdier, som vi vil lære mer om i neste avsnitt.
fremmednøkler
En sekundærnøkkel er et sett av en eller flere kolonner i en tabell som viser til primærnøkkel i en annen tabell. Det er ikke noen spesiell kode, konfigurasjoner, eller en tabell definisjoner du trenger til sted for å offisielt «utpeke» en sekundærnøkkel.
I diagrammet nedenfor ser du på SalesOrderHeader bordet. Kolonnen SalesOrderHeader.,CurrencyRateID er en sekundærnøkkel siden det er knyttet til CurrencyRate.CurrencyRateID. Denne kolonnen CurrencyRate.CurrencyRateID er primærnøkkel av CurrencyRate bordet.
fremmednøkler som en Del av Primærvalgene
Se på følgende diagram. Hvilken kolonne er utenlandske nøkkel?
Hvis du sa det var PersonPhone.,BusinessEntityID så er du riktige. Grunnen til at det er en sekundærnøkkel er at det er med henvisning til en primærnøkkel, Person.BusinessEntityID, på det andre bordet.
Tilfeldigvis PersonPhone.BusinessEntityID er ikke bare en sekundærnøkkel, men er også en del av PersonPhone er primærnøkkel. Den PersonPhone tabellen er primærnøkkel er kombinasjonen av BusinessEntityID, Telefonnummer, og PhoneNumberTypeID.
jeg er enig i dette er forvirrende, men det er tillatt og ikke en dårlig praksis.
i Motsetning til primærnøklene, fremmednøkler kan inneholde dupliserte verdier. Også, det er OK for dem å inneholde NULL-verdier.,
Indekser ikke automatisk opprettet for utenlandske nøkler; imidlertid, som et DBA, kan du definere dem.
En tabell er lov til å inneholde mer enn en sekundærnøkkel. I PersonPhone tabellen kan du finne andre foreign key (se svaret på slutten av artikkelen)?
Finn Primær-og fremmednøkler i Object Explorer
Når du bruker SSMS du vil finne alle slags nyttig informasjon i object explorer. Du trenger ikke å grave dypt for å finne primærnøklene. Når du viser en tabell er kolonner, men å klikke på Kolonner-mappen, primærnøkkel kolonnene har gull tastene ved siden av dem.,
Også, hvis noen av de utenlandske tastene er definert i utenlandske viktige begrensninger, som vi skal lære i det følgende avsnittet, så de kolonnene har FK etter dem. Disse er omgitt av grønt i diagrammet ovenfor.
Utenlandske Viktige Begrensninger
Noen database management systemer, for eksempel SQL Server, kan du sette opp utenlandske viktige begrensninger. Disse bidrar til å gjennomføre referanseintegritet., I sin enkleste form en foreign key constraint stopper deg fra å komme inn verdier som ikke finnes i den relaterte tabellen er primærnøkkel.
ved Hjelp av det første diagrammet som vårt eksempel, du kan ikke gå inn SalesOrderHeader.CurrencyRateID hvis det ikke allerede finnes i CurrencyRate bordet.
Disse begrensningene trer i kraft på flere måter:
- De bar deg i å endre foreign key verdi til en som ikke eksisterer som en verdi i den relaterte tabellen er primærnøkkel.
- De stoppe deg fra å slette en rad fra den primære nøkkelen bord. Dette stopper deg fra å skape foreldreløse poster., Foreldreløse poster er beskrevet som «barn av poster med ingen foreldre.»
- De stoppe deg fra å legge på en foreign key-verdi som ikke finnes i den primære nøkkelen.
I sammendraget, begrensninger håndheve forholdet mellom primær-og utenlandske nøkkelen bord.
Sammenligning av Primær-Tastene til å fremmednøkler
for Å oppsummere her er en sammenligning av Primære Utenlandske Tastene
Svar på Spørsmål: Tidligere har vi bedt for deg å identifisere andre utenlandske nøkkel i PersonPhone bordet. Det riktige svaret er PhoneNumberTypeID.
Legg igjen en kommentar