Ar yra skirtumas tarp dviejų pirminių raktų ir sudėtinio rakto?


Atsakymas 1:

Taip, yra skirtumas. Prieš pradėdami suprasti skirtumą, turite suprasti, kad „raktas“ yra laukas, kurio reikšmė vienareikšmiškai identifikuos eilutę. Tai vadinama rakto „unikalumu“. Yra antroji rakto savybė (būtent čia ir skiriasi kompozicinis raktas nuo kelių raktų), tai yra, „minimalumo“ savybė. Tai numato, kad neturi būti įmanoma pašalinti rakto taip, kad unikalumas būtų sunaikintas.

Apsvarstykite lentelę su studentų egzaminų balais taip:

  • „ScoreId“ (unikalus einamasis numeris) „StudentId“ (studentų registracijos ID garantuojamas unikalus kiekvienam studentui, nepriklausomai nuo mokslo metų; FK ant studentų lentelės) SubjectNameSubjectTestIdentifier (unikalus testo ID kiekvienam institucijos kada nors atliktam testui; FK „TestMaster“). lentelė, kurioje nurodomi mokslo metai, dalykas, testo data ir kiti testo atributai

Aukščiau pateiktu atveju, {ScoreId}, {StudentId, SubjectName, SubjectTestIdentifer, SubjectScore} ir {StudentId, SubjectTestIdentifier} yra visi raktai - kiekvienas iš šių laukų rinkinių vienareikšmiškai identifikuos jūsų kalbamą eilutę.

Bet dabar apsvarstykite {StudentId, SubjectName, SubjectTestIdentifier, SubjectScore} ir {StudentId, SubjectTestIdentifier} - nors jie abu tenkina unikalumo savybę, pirmasis neišlaiko „minimalumo“ testo - nuplaukite „SubjectName“ ir „SubjectScore“ ir galėsite vis tiek unikaliai identifikuokite eilutę.

Taigi dabar kreipkitės į jūsų klausimą: Šiuo atveju {ScoreId} yra raktas, bet ne sudėtinis raktas, tuo tarpu {StudentId, SubjectTestIdentifier} yra sudėtingas raktas. Visi sudėtiniai raktai yra unikalūs raktai, bet ne visi unikalūs raktai yra sudėtiniai raktai.


Atsakymas 2:

Jei deklaruojate kelis atributus kaip pagrindinius raktus, jie kartu sudaro sudėtinį raktą. Sudėtiniai raktai paprastai sukuriami, kai nėra nė vieno tokio rakto, per kurį būtų galima unikaliai identifikuoti kiekvieną eilutę. Taigi sukuriate laukų derinį, kuris kartu gali vienareikšmiškai identifikuoti eilutes.

Kai turite kelis raktus, kuriuos galima padaryti pirminiu raktu, tokie laukai vadinami kandidatu arba antriniu raktu.

Taigi, keli apibrėžti pirminiai raktai ir sudėtinis raktas iš esmės yra tas pats.