Mysql

AdonisJS:belongsTo() 關係設計有問題嗎?

  • February 27, 2019

在 AdonisJs 框架中,假設我們有一個Profile模型,我們在其中定義belongsTo()了與User模型的關係。文件說這將導致我們以這種方式定義我們的數據庫:

在此處輸入圖像描述

表中的列idusers引用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 創建了這樣一個約束,在繪製圖表時它被遺漏了。

引用自:https://dba.stackexchange.com/questions/230858