Sobes.tech
Junior — Middle

Ինչպես իրականացնել շատ-միայն հարաբերություն տվյալների բազայում?

sobes.tech AI

Պատասխան AI-ից

Բազմիցս-մեկ հարաբերությունը տվյալների բազայում իրականացվում է միջնորդական աղյուսակի (կապող աղյուսակի) միջոցով, որը պարունակում է արտաքին բանալիներ երկու կապակցվող աղյուսակների վրա:

Օրինակ, երկու էություն կա՝ օգտագործողներ և `դերը։ Մի օգտվող կարող է ունենալ մի քանի դերը, և մի դերը կարող է պատկանում մի քանի օգտվողների:

Աղյուսակների կառուցվածքը՝

  • օգտագործողներ (id, անուն, ...)
  • դերը (id, դերի_անուն, ...)
  • օգտագործող_դեր (օգտագործող_id, դերը_id) — միջնորդական աղյուսակ, որտեղ օգտագործող_id և դերը_id արտաքին բանալիներ են:

Go-ում ORM-ի հետ աշխատելիս (օրինակ, GORM), դա կարելի է նկարագրել այսպես՝

type Օգտագործող struct {
    ID    uint
    Անուն  string
    Դերերը []Դեր `gorm:"many2many:օգտագործող_դեր;"`
}

type Դեր struct {
    ID   uint
    Անուն string
}

Այսպիսով, ORM-ը կառավարում է հարաբերությունը օգտագործող_դեր աղյուսակի միջոցով:

Եթե ORM չեք օգտագործում, ապա պետք է ձեռքով գրել SQL հարցումներ՝ JOIN-ով միջնորդական աղյուսակի վրա: