SQL utenlandsk nøkkel

SQL utenlandsk nøkkel

“En fremmed nøkkel er en eller flere kolonner i et barnebord som refererer til en primærnøkkel i en overordnet tabell. De utenlandske og primære nøklene er de samme verdiene, selv om noen kan gjenta i barnebordet. Foreldrebordet kalles også referansetabellen. Den utenlandske nøkkelen i barnebordet refererer til den primære nøkkelen i den refererte tabellen (overordnet tabell). Det vil si at hver utenlandsk nøkkelverdi i barnebordet er den samme som en primær nøkkelverdi i overordnede tabellen. Det kan være noen repetisjoner av utenlandske nøkkelverdier i barnebordet. Fortsatt er hver utenlandsk nøkkelverdi i barnebordet en primærnøkkel i den refererte tabellen. Koblingen mellom begge tabellene er den utenlandske nøkkelen.

Hvis begge tabellene er godt designet, eliminerer det utenlandske nøkkelforholdet transitiv avhengighet. Se forklaringen på transitiv avhengighet nedenfor. Denne artikkelen forklarer utenlandske nøkler i forhold til transitiv avhengighet og relasjonsdatabase.”

Illustrasjon

Tenk på et salgstabell i det som er kjent som den andre normale formen. I tabellen selger ansatte til kjente enkeltkunder (personer). Bordet er som følger:

Salgstabell


I den første raden, en kunde med CustomerID 1, for en butikk, i personen til Peter Smith, med telefonnummer 444-4444, adresse “1, Road1, Towna”, City Clifton, fra State New Jersey, Postal Code NJ 10265, kom inn i butikken og kjøpte produkter (ikke angitt). Denne kunden ble servert av den ansatte (selger), Jacob Jones. Dette salget har ID 1. SaleID -kolonnen er den primære nøkkelen for denne tabellen. Denne tabellen er for tiden i det som er kjent som den andre normale form. Resten av de andre radene er på samme måte forklart.

Transitiv avhengighet

Merk: En kolonne kan omtales som et attributt. I hver rad avhenger SaleID av attributtene: Datesold, CustomerId, CustomName, Phone, Address, City, Region, PostalCode, Country og ansatt. Det er greit. CustomerId er avhengig av attributtene: CustomName, Phone, Adresse, City, Region, PostalCode og Country. Disse avhengige av CustomerID bestemmer ikke SaleID eller Datesold eller ansatt. Hvis kunden til ID 1 kom til butikken en uke senere, ville han ha møtt en annen ansatt på en annen dato, noe som ville bety et annet Saleid.

Så disse avhengige av kunden må trekkes ut av dette store bordet, for å danne et annet mindre bord. En kopi av CustomerId forblir i den opprinnelige tabellen siden SaleID avhenger av CustomerID. Det nye salgsbordet heter nå barnebordet. En kopi av CustomerID følger med de avhengige siden det avhenger av de avhengige. De to nye tabellene er:

Kundebord

Salgstabell


Kundebordet er nå en foreldre- eller referansetabell. Den har kundenavn og legitimasjon. CustomerId identifiserer hver av radene sine. Det er kortere enn det opprinnelige salgstabellen med 6 rader. Gjentakelse (redundans) er fjernet i kundens tabell. Kundebordet er nå i det som er kjent som den tredje normale formen. Hvis et passende navn ikke ble funnet for kundens bord, gikk noe galt med resonnementet.

Salgstabellen forblir som det var, men mangler noen kolonner. Det er også nå i det som kalles den tredje normale formen. SaleID identifiserer fortsatt de samme radene, men med noen celler fjernet.

Merk: I kundens tabell er CustomerID den primære nøkkelen. I det nye salgstabellen er CustomerID en fremmed nøkkel. Den kobler begge nye tabeller. I salgstabellen avhenger det imidlertid ikke av SaleID; SaleId avhenger av det.

Transitiv avhengighet oppstår når en ikke-prime-attributt er avhengig av et annet ikke-prime-attributt eller attributt. Ved å dele opp den originale tabellen i to tabeller, fjernes en transitiv avhengighet.

Tabellnotasjonen for den opprinnelige tabellen er:

Salg (SaleID, Datesold, CustomerId, CustomName, Phone, Adresse, City, Region, PostalCode, Country, Ansatt)


Tabellnotasjonen for de to nye tabellene er:

Kunder (CustomerId, CustomerName, Phone, Address, City, Region, PostalCode, Country)


og

Salg (SaleID, Datesold, CustomerId, ansatt)


Hver primærnøkkel har en enkelt understrek. Den utenlandske nøkkelen, CustomerID, i salgstabellen har en strek understrek.

Konklusjon

En fremmed nøkkel er en eller flere kolonner i et barnebord som refererer til en primærnøkkel i en overordnede tabell. De utenlandske og primære nøklene er de samme verdiene, selv om noen kan gjenta hos barnet
bord. Foreldrebordet kalles også referansetabellen. Den utenlandske nøkkelen i barnebordet refererer til den primære nøkkelen i den refererte tabellen (overordnet tabell). Det vil si at hver utenlandsk nøkkelverdi i barnebordet er den samme som en primær nøkkelverdi i overordnede tabellen. Det kan være noen repetisjoner av utenlandske nøkkelverdier i barnebordet. Fortsatt skjer hver fremmed nøkkelverdi i barnebordet som en primærnøkkel i den refererte tabellen. Koblingen mellom begge tabellene er den utenlandske nøkkelen. Barnebordet kalles også referansebordet.