Sql-Server-Express
定義 3 個表的關係
我有 3 個表,目前定義為:
這是最好的方法,還是我應該使用關聯表?
我把關係倒過來,1 個組可以包含許多使用者和許多學生。除了組之外,使用者和學生之間沒有其他關係。這是一個跟踪程序,其中一個或多個使用者正在帶一個學生或一組學生通過登記程序。
根據您的描述,您希望擁有一個
GroupMembers
為您執行所有多對多連接的表。您目前的架構只允許 a
Group
包含一個User
和一個Student
,因為您已將 GroupName 設為主鍵。如果組名發生更改,您真的想將其拆分Group
到自己的表中。這可以讓您擁有:
- 一個
Group
有很多Users
很多Students
Users
可以是許多成員Groups
Students
可以是許多成員Group
- A
User
不應在 a 中重複Group
- A
Student
不應在 a 中重複Group
這是通過這樣的架構實現的:
因為您只需要給定組、使用者和學生的一種組合,您也可以將外鍵列設為主鍵。
這一切都遵循第三範式(至少)。