Relations بین جدول های بانک اطلاعتی در برنامه های سی شارپ با استفاده ازentityframework مدیریت میشوند اما در Go با استفاده از Gorm ما میخوایم مشخص کنیم که به چه صورت میتوانیم انواع ارتباطات بین جدول ها رو داشته باشیم .
انواع ارتباطات شاملOne to One وone to many و many to many خواهد بود.
مبحث one to one زمانی نیاز خواهد بودکه شما به طور مثال
ما دوتا جدول داریم جدول کاربر :
ype User struct {
gorm.Model
UserId VID `json:"user_id,omitempty"`
UserName string `json:"user_name,omitempty"`
PasswordHash string `json:"password,omitempty"`
Email string `json:"email,omitempty"`
}
و جدول تقویم:
type Calendar struct {
gorm.Model
}
وقتی که ارتباطone to one رو برای این دو جدول در نظر میگیریم یعنی هر کاربر یک تقویم در جدول تقویم ها خواهد داشت و هر تقویم یک کاربر به خود اتصاص خواهد داد
به این نوع ارتباط one to one گفته میشود
ارتباط one to one به دو نوع وجود داره که از طریق gorm می توانیم می توانیم مدیریت کنیم اول اولین نوع ان Has-one است به این معنی که هر کاربر یک آیدی در جدول تقویم خواهد داشت و با پاک کردن کاربر تقویم نیز پاک خواهد شد اما با پاک کردن تقویم کاربر حذف نخواهد شد.
ype User struct {
gorm.Model
UserId VID `json:"user_id,omitempty"`
UserName string `json:"user_name,omitempty"`
PasswordHash string `json:"password,omitempty"`
Email string `json:"email,omitempty"`
Calendar Calendar `json:"calendar,omitempty"`
}
و در جدول تقویم
type Calendar struct {
gorm.Model
UserId uint
}
نوع دوم belongs to است : در این نوع، در صورتی که کاربر پاک شود تقویم پاک نخواهد شد و در صورتی تقویم رو از جدول تقویمها پاک کنیم کاربر پاک خواهد شد این دو نوع ارتباط در Gorm به صورتone to one معرفی می شود
ype User struct {
gorm.Model
UserId VID `json:"user_id,omitempty"`
UserName string `json:"user_name,omitempty"`
PasswordHash string `json:"password,omitempty"`
Email string `json:"email,omitempty"`
Calendar string `json:"calendar,omitempty"`
CalendarID string `json:"calendar_id,omitempty"`
}
و در جدول تقویم
type Calendar struct {
gorm.Model
}