Kas see on tavapärane praktika koostada registrite vaheliste seoste puhul nn vahetabelid, ning kas on juhte, kus see pole vajalik?

Postitas Erki Eessaar 13.06.2024 17:02
Kui kontseptuaalses andmemudelis on mitu-mitmele seosetüüp, nagu näiteks:
 
[Protseduur]-0..*---------------0..*-[Protseduuri_kategooria]
 
, siis selle realiseerimiseks tekib SQL-andmebaasis vahetabel. See on kõige tavapärasem viis, kuidas sellist tüüpi seost realiseerida.
 
Kui kontseptuaalses andmemudelis on üks-mitmele seosetüüp, nagu näiteks
 
[Isik]-0..*-------------1-[Riik]
 
, siis tekib seosetüübi mitu-poolel oleva olemitüübi alusel tekkivasse tabelisse (antud juhul Isik) välisvõtme veerg ja kitsendus.
 
Mitu-mitmele seosetüübid on kontseptuaalses andmemudelis ülevaatamist vajav koht, sest väga võimalik, et selle taga peidab ennast eraldi olemitüüp koos täiendavate atribuutidega e lisainfo säilitamise vajadusega.
 
Seega näiteks selle asemel, et modelleerida:
 
[Töötaja]-0..*------0..*-[Töötaja_roll]
 
, oleks parem modelleerida
 
[Töötaja]-1------0..*-[Töötaja_rolli_omamine]-0..*------1-[Töötaja_roll]
 
ning olemitüübil Töötaja_rolli_omamine on atribuudid nagu alguse_aeg ja lõpu_aeg.
 
Mis puudutab seosetüübi alusel defineeritud olemitüüpi ja selle alusel tekkinud tabelit, siis see on valiku koht, kumba registrisse see paigutub. Paigutus tuleks otsustada selle järgi, millises funktsionaalses allsüsteemis hallatakse neid andmeid. Kui protseduuride kategooriate omamisi hallatakse protseduuride funktsionaalses allsüsteemis, siis kuuluks Protseduuri_kategooria_omamine protseduuride registrisse. Kui töötajate rolli omamisi hallatakse töötajate funktsionaalse allsüsteemi kaudu, siis kuuluks Töötaja_rolli_omamine töötajate registri alla.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!