Tento článek vás naučí rozdíl mezi primárním klíčem a cizím klíčem. Tento článek vás také naučí, proč jsou oba tyto klíče důležité, pokud jde o údržbu struktury relační databáze.
všechny příklady této lekce jsou založeny na Microsoft SQL Server Management Studio A databázi AdventureWorks2012. Můžete začít používat tyto bezplatné nástroje pomocí mého průvodce Začínáme používat SQL Server.
jaký je rozdíl mezi primárním klíčem a cizím klíčem?,
než budeme moci kopat do rozdílu, pojďme nejprve prozkoumat primární a cizí Klíčové vlastnosti. Začněme tím, že se dozvíme o primárních klíčích.
primární klávesy
aby se tabulka kvalifikovala jako relační tabulka, musí mít primární klíč.
primární klíč se skládá z jednoho nebo více sloupců, jejichž data obsažená uvnitř se používají k jedinečné identifikaci každého řádku v tabulce. Můžete na ně myslet jako na adresu. Pokud by řádky v tabulce byly poštovní schránky, primárním klíčem by byl seznam pouličních adres.,
když je primární klíč složen z více sloupců, data z každého sloupce se používají k určení, zda je řádek jedinečný.
aby se jednalo o primární klíč, musí platit několik podmínek. Za prvé, jak jsme již zmínili, sloupce musí být jedinečné. Abychom to objasnili, máme na mysli data v řádcích, nikoli názvy sloupců. Také žádná hodnota ve sloupcích nemůže být prázdná nebo nulová.
při definování tabulky zadáte primární klíč. Tabulka má pouze jeden primární klíč a její definice je povinná.
primární klíč pro každou tabulku je uložen v indexu., Index se používá k prosazení požadavku jedinečnosti. To také usnadňuje cizí klíčové hodnoty odkazovat zpět na odpovídající hodnoty primárního klíče, jak se dozvíme v následující části.
Cizí Klíče
cizí klíč je sada jeden nebo více sloupců v tabulce, která odkazuje na primární klíč v jiné tabulce. Neexistují žádné speciální kód, konfigurace, nebo definice tabulky je třeba umístit oficiálně „označit“ cizí klíč.
v níže uvedeném diagramu se podívejte na tabulku SalesOrderHeader. Sloupec SalesOrderHeader.,CurrencyRateID je cizí klíč, protože souvisí s měnou.CurrencyRateID. Tento sloupec CurrencyRate.CurrencyRateID je primárním klíčem tabulky CurrencyRate.
Cizí Klíče jako Součást Primární
Podívejte se na následující diagram. Který sloupec je cizí klíč?
Pokud jste řekl, že to byl PersonPhone.,Pak máte pravdu. Důvodem, proč se jedná o cizí klíč, je to, že se odkazuje na primární klíč, osoba.Podnikání je na druhém stole.
shodou okolností PersonPhone.Podnikání není jen cizí klíč, ale je také součástí primárního klíče PersonPhone. Hlavním klíčem PersonPhone table je kombinace BusinessEntityID, PhoneNumber a PhoneNumberTypeID.
souhlasím s tím, že je to matoucí, ale je povoleno a není to špatná praxe.
Na rozdíl od primárních klíčů mohou cizí klíče obsahovat duplicitní hodnoty. Také je v pořádku, aby obsahovaly nulové hodnoty.,
indexy nejsou automaticky vytvořeny pro cizí klíče; nicméně, jako DBA, můžete je definovat.
tabulka může obsahovat více než jeden cizí klíč. V tabulce PersonPhone najdete další cizí klíč (viz odpověď na konci článku)?
nalezení primárních a cizích klíčů v Průzkumníku objektů
při použití SSMS najdete v Průzkumníku objektů nejrůznější užitečné informace. Nemusíte kopat hluboko, abyste našli primární klíče. Když zobrazíte sloupce tabulky, ale kliknete na složku sloupce, sloupce primárního klíče mají vedle sebe zlaté klíče.,
Také, pokud se kterýkoli z cizí klíče jsou definovány v omezení cizího klíče, které se dozvíme v následující části, pak tyto sloupce FK po nich. Ty jsou ve výše uvedeném diagramu zakroužkovány zeleně.
omezení cizích klíčů
některé systémy pro správu databází, například SQL Server, vám umožňují nastavit omezení cizích klíčů. Ty pomáhají prosazovat referenční integritu., V jejich nejjednodušší podobě vám omezení cizího klíče brání v zadávání hodnot, které se nenacházejí v primárním klíči související tabulky.
pomocí prvního diagramu jako našeho příkladu nemůžete zadat SalesOrderHeader.CurrencyRateID pokud již neexistuje v tabulce CurrencyRate.
Tato omezení vstoupí v platnost v několika způsoby:
- bar vás od změny hodnoty cizího klíče do jedné, která neexistuje jako hodnotu v související tabulce primární klíč.
- Brání vám v odstranění řádku z tabulky primárních klíčů. To vám brání vytvářet sirotčí záznamy., Záznamy o sirotcích jsou popsány jako “ záznamy o dětech bez rodičů.“
- Brání vám v přidávání hodnoty cizího klíče, která v primárním klíči neexistuje.
stručně řečeno, omezení vynucují vztah mezi tabulkami primárních a zahraničních klíčů.
Srovnání Primární Klíče Cizí Klíče
Abychom to shrnuli zde je srovnání Primární, Cizí Klíče,
Odpověď na Otázku: Dříve jsme se ptali za vás identifikovat jiné cizí klíč v PersonPhone stolu. Správná odpověď je PhoneNumberTypeID.
Napsat komentář