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.