這張圖代表了我需要制作的一個資料庫中的er圖,但是我想知道fk_note和id(note table)之間的relationsheep和fk_users和id(users table)之間的關系是否可以在我做的時候得到每個note的id使用內部連接進行選擇。

uj5u.com熱心網友回復:
“fk_note”和“fk_user”列都表示相同的關系。兩者兼有是不必要的,并且是導致錯誤的潛在原因。
如果每個用戶只有一個筆記(或沒有),則:
- “fk_note”列本身就表達了完整的關系
- "fk_user" 列如果也被限制為 Unique 就可以表達完整的關系
在這種情況下,以下兩個查詢是等效的 - 都回傳名為“Rowan”的任何用戶的單個注釋:
Select users.id, users.name, notes.id, notes.title
From users
Inner Join notes
On notes.fk_user = users.id
Where
users.name = 'Rowan'
和
Select users.id, users.name, notes.id, notes.title
From notes
Inner Join users
On users.fk_note = notes.id
Where
users.name = 'Rowan'
如果用戶可能有多個筆記,則:
- “fk_note”列不能存在,因為它沒有單一的值
- “fk_user”串列示完整關系
在這種情況下,只有上面的第一個查詢(加入 on notes.fk_user = users.id)是可能的。它將回傳任何名為“Rowan”的用戶的所有筆記。
如果用戶可以有一個“主要”和許多“次要”筆記,那么“fk_note”列可以代表“主要筆記”,然后同時擁有兩列就有意義(但建議選擇更好的名稱)。
上面的兩個查詢會給出不同的結果:
- 第一個,加入
notes.fk_user = users.id將給出用戶的所有次要注釋。 - 第二,加入
users.fk_note = notes.id只會給出用戶的主要注釋。
uj5u.com熱心網友回復:
注釋 id 和 fk_note 之間的關系不是必需的,因為用戶的外鍵已經將注釋標記為屬于特定用戶。
找到所有屬于非要運行的用戶的簡單方法
SELECT n.*,u.* FROM notes n INNER JOIN users u ON n.fk_user = u.id
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/330920.html
下一篇:MySQL轉儲檔案為空
