Ez a cikk megtanítja a különbséget egy elsődleges kulcs és egy idegen kulcs között. Ez a cikk azt is megtanítja, hogy miért fontos mindkét kulcs a relációs adatbázis-struktúra karbantartásakor.
az összes példa erre a leckére a Microsoft SQL Server Management Studio és a AdventureWorks2012 adatbázison alapul. Elkezdheti használni ezeket az ingyenes eszközöket az útmutatóm segítségével az SQL Server használatával.
mi a különbség az elsődleges kulcs és az idegen kulcs között?,
mielőtt belemerülnénk a különbségbe, először vizsgáljuk meg az elsődleges és a külföldi kulcsjellemzőket. Kezdjük azzal, hogy megismerjük az elsődleges kulcsokat.
elsődleges kulcsok
ahhoz, hogy egy táblázat relációs táblának minősüljön, elsődleges kulcsnak kell lennie.
az elsődleges kulcs egy vagy több oszlopból áll, amelyek adatait a táblázat minden sorának egyedi azonosítására használják. Úgy gondolhatsz rájuk, mint egy címre. Ha a táblázatban szereplő sorok postafiókok voltak, akkor az elsődleges kulcs az utcai címek felsorolása lenne.,
Ha egy elsődleges kulcs több oszlopból áll, akkor az egyes oszlopokból származó adatok határozzák meg, hogy egy sor egyedi-e.
annak érdekében, hogy elsődleges kulcs legyen, több feltételnek igaznak kell lennie. Először is, amint már említettük, az oszlopoknak egyedinek kell lenniük. A tisztázás érdekében a sorokon belüli adatokra utalunk, nem pedig az oszlop neveire. Az oszlopokban nincs érték sem üres, sem NULL.
táblázat meghatározásakor adja meg az elsődleges kulcsot. A táblázatnak csak egy elsődleges kulcsa van, meghatározása kötelező.
az egyes táblázatok elsődleges kulcsát egy index tárolja., Az indexet az egyediség követelményének érvényesítésére használják. Ezenkívül megkönnyíti a külföldi kulcsértékek hivatkozását a megfelelő elsődleges kulcsértékekre, amint azt a következő részben megtudjuk.
idegen kulcsok
egy idegen kulcs egy vagy több oszlop halmaza egy táblázatban, amely egy másik táblázat elsődleges kulcsára utal. Nincsenek speciális kódok, konfigurációk vagy táblázatdefiníciók, amelyeket el kell helyeznie egy idegen kulcs hivatalos “kijelöléséhez”.
az alábbi ábrán nézd meg a SalesOrderHeader táblázatot. Az oszlop SalesOrderHeader.,A CurrencyRateID egy külföldi kulcs, mivel a CurrencyRate-hez kapcsolódik.CurrencyRateID. Ez az oszlop CurrencyRate.A CurrencyRateID a CurrencyRate táblázat elsődleges kulcsa.
Foreign Keys as Part of Primaries
nézd meg a következő ábrát. Melyik oszlop az idegen kulcs?
Ha azt mondta, hogy PersonPhone.,BusinessEntityID akkor igaza van. Az ok, hogy ez egy idegen kulcs, az, hogy egy elsődleges kulcsra utal, személy.Üzletemberként, a másik asztalon.
véletlenül, PersonPhone.A BusinessEntityID nemcsak külföldi kulcs, hanem a PersonPhone elsődleges kulcsának is része. A PersonPhone tábla elsődleges kulcsa a BusinessEntityID, a Phonenumbertypeid és a PhoneNumberTypeID kombinációja.
egyetértek azzal, hogy ez zavaró, de megengedett, nem pedig rossz gyakorlat.
az elsődleges kulcsokkal ellentétben az idegen kulcsok ismétlődő értékeket tartalmazhatnak. Ezenkívül rendben van, hogy NULL értékeket tartalmazzanak.,
az indexek nem jönnek létre automatikusan idegen kulcsokhoz; DBA-ként azonban meghatározhatja azokat.
egy táblázat egynél több idegen kulcsot tartalmazhat. A PersonPhone táblázatban megtalálhatja a másik idegen kulcsot (lásd a cikk végén található választ)?
elsődleges és idegen kulcsok keresése az objektum Explorerben
az SSMS használatakor mindenféle hasznos információt talál az objektum Explorerben. Nem kell mélyen ásni, hogy megtalálja az elsődleges kulcsokat. Amikor egy táblázat oszlopait jeleníti meg, de az oszlopok mappára kattintva az elsődleges kulcsoszlopok mellett arany kulcsok vannak.,
továbbá, ha az idegen kulcsok bármelyike idegen kulcsban van definiálva, amit a következő részben fogunk megtanulni, akkor ezek az oszlopok FK utánuk. Ezeket a fenti ábrán zölden körözik.
külföldi Kulcskorlátok
egyes adatbázis-kezelő rendszerek, például az SQL Server lehetővé teszik a külföldi kulcskorlátok beállítását. Ezek segítenek a referenciális integritás érvényesítésében., A legegyszerűbb formában egy idegen kulcskorlátozás megakadályozza, hogy olyan értékeket írjon be, amelyek nem találhatók meg a kapcsolódó táblázat elsődleges kulcsában.
az első diagram segítségével példánkként nem léphet be a Salesorderheaderbe.CurrencyRateID, ha még nem létezik a CurrencyRate táblázatban.
ezek a korlátok többféle módon lépnek hatályba:
- megtiltják, hogy az idegen kulcs értékét olyanra változtassa, amely nem létezik értékként a kapcsolódó táblázat elsődleges kulcsában.
- megakadályozzák, hogy töröljön egy sort az elsődleges kulcstáblából. Ez megakadályozza az árva rekordok létrehozását., Az árva nyilvántartásokat “gyermekrekordok, szülők nélkül” írják le.”
- megakadályozzák, hogy idegen kulcsértéket adjon hozzá, amely nem létezik az elsődleges kulcsban.
összefoglalva, a kényszerek érvényesítik a kapcsolatot az elsődleges és az idegen kulcstáblák között.
összehasonlítása elsődleges kulcsok idegen kulcsok
összefoglalni itt van egy összehasonlítás elsődleges idegen kulcsok
válasz a kérdésre: korábban kértük, hogy azonosítsa a másik idegen kulcsot a PersonPhone táblázatban. A helyes válasz PhoneNumberTypeID.
Vélemény, hozzászólás?