Pirminis raktas

Manifesto duomenų modelis yra normalizuotas, tai reiškia, kad objektai yra išskaidyti į plokščius objektus ir objektai tarpusavyje gali būti jungiami pirminio rakto (lauko id) pagalba.

Laukas id yra rezervuotas ir visi duomenų aprašai privalo nurodyti šį lauką. Lauko id tipas turi būti pk, pavyzdys:

id:
  type: pk
  source: id

Būtina užtikrinti, kad objektas turėtų unikalų pirminį raktą. Jei duomenų šaltinis teikia duomenis su pirminiu raktu, tada viskas labai paprasta, tačiau jei pirminio rakto nėra, tada tenka pirminį raktą išgauti jungiant kelias reikšmes, kurie visi kartu unikaliai identifikuoja objektą.

Kai reikia jungti kelias reikšmes, pirminio rakto aprašas atrodo taip:

id:
  type: pk
  source:
    - foo
    - bar
    - baz

id lauko reikšmė gaunama serializuojant id lauko reikšmę MsgPack formatu ir rezultatą verčiant į SHA1 kontrolinę sumą. Jei id reikšmė nėra sąrašas, tada reikšmė verčiama į sąrašą. Pavyzdžiui [1, 2, 3] sąrašas būtų verčiamas į:

78a74af6c06029985f388dfeceb9794100377124

Atkreipkite dėmesį, kad laukų sąrašo tvarka yra svarbi, sukeitus sąrašo elementus vietomis, pasikeis ir pirminio rakto reikšmė.

Globalūs identifikatoriai

Jei tik įmanoma, reikėtų naudoti tokius identifikatorius, kurie yra globalūs. Pavyzdžiui jei turime tokią lentelę:

id code country
1 lt Lietuva
2 lv Latvija
3 ee Estija

Čia pirminiam raktui geriau naudoti code, o ne id, kadangi id yra lokalus duomenų rinkinio identifikatorius, o šalies kodas yra globalus. Tačiau, jei šiame duomenų rinkinyje objektai jungiami tik naudojant lokalų pirminį raktą, tai žinoma, tada id laukui geriau naudoti lokalų pirminį raktą, su kuriuo jungiasi visi kiti duomenų rinkinio objektai.