Existuje nějaký rozdíl mezi dvěma primárními klíči a složeným klíčem?


Odpověď 1:

Ano, je tu rozdíl. Než se dostanete k rozdílu, musíte pochopit, že „klíč“ je pole, jehož hodnota jedinečně identifikuje řádek. Toto se nazývá „jedinečnost“ vlastnosti klíče. Existuje druhá vlastnost klíče (kde leží rozdíl mezi složeným klíčem a více klíči) - viz vlastnost „minimality“. To stanoví, že nesmí být možné vyjmout pole z klíče tak, aby byla zničena jedinečnost.

Zvažte tabulku se skóre zkoušky studenta takto:

  • ScoreId (jedinečné provozní číslo) StudentId (registrační ID studentů zaručené, že bude jedinečné pro každého studenta bez ohledu na akademický rok; FK na studentské tabulce) SubjectNameSubjectTestIdentifier (jedinečné testovací ID pro každý test, který kdy instituce provedla; FK na TestMaster tabulka, která uvádí akademický rok, předmět, datum testu a další atributy testu)

Ve výše uvedeném případě {ScoreId}, {StudentId, SubjectName, SubjectTestIdentifer, SubjectScore} a {StudentId, SubjectTestIdentifier} jsou všechny klíče - každá z těchto sad polí jedinečně identifikuje řádek, o kterém mluvíte.

Nyní však zvažte {StudentId, SubjectName, SubjectTestIdentifier, SubjectScore} a {StudentId, SubjectTestIdentifier} - zatímco oba splňují vlastnost jedinečnosti, první selže testu „minimality“ - vyřadíte „SubjectName“ a „SubjectScore“ a můžete stále jedinečně identifikujte řádek.

Nyní přichází na vaši otázku: V tomto případě je {ScoreId} klíč, ale nikoli složený klíč, zatímco {StudentId, SubjectTestIdentifier} je složený klíč. Všechny složené klíče jsou jedinečné klíče, ale ne všechny jedinečné klíče jsou složené klíče.


Odpověď 2:

Pokud deklarujete více atributů jako primární klíče, společně vytvoří složený klíč. Složené klíče se obvykle vytvářejí, když neexistuje žádný takový klíč, pomocí kterého můžete jedinečně identifikovat každý řádek. Takže vytvoříte kombinaci polí, která společně dokáží jednoznačně identifikovat řádky.

Pokud máte více klíčů, které lze vytvořit z primárního klíče, nazývají se taková pole jako kandidátní nebo sekundární klíč.

Takže více definovaných primárních klíčů a složeného klíče jsou v podstatě stejné.