Mysql
AdonisJS:belongsTo() 關係設計有問題嗎?
在 AdonisJs 框架中,假設我們有一個
Profile
模型,我們在其中定義belongsTo()
了與User
模型的關係。文件說這將導致我們以這種方式定義我們的數據庫:表中的列
id
是users
引用profiles
表的外鍵,而不是表的主鍵users
。這種“糟糕的數據庫設計”會導致一些不一致嗎?比拉爾·貝格拉傑
我認為連結文件的唯一問題是模型圖像中的拼寫錯誤:
該
users
專欄id (FK)
的意思是說id (PK)
。該
profiles
專欄user_id (PK)
的意思是說user_id (FK)
。連結應該有相反的方向(在所有其他圖表中,連結從 PK/引用表開始並指向 Fk/引用表)。
範例下的圖表
belongsTo()
似乎是正確的(也應該在 中使用hasOne()
)。該設計顯示了和之間的 1-1 關係,或者更準確地說是一種
1 - 0..1
關係。users``profiles
使用者可以擁有一個 (hasOne) 個人資料。個人資料屬於(belongsTo) 一個使用者。
圖中似乎缺少的是
profiles (user_id)
應該有一個UNIQUE
約束,以便關係是真正的 1-1 而不是 1 對多。也許 ORM 創建了這樣一個約束,在繪製圖表時它被遺漏了。