Sql-Server-Express

定義 3 個表的關係

  • November 28, 2017

我有 3 個表,目前定義為:

目前的關係

這是最好的方法,還是我應該使用關聯表?

我把關係倒過來,1 個組可以包含許多使用者和許多學生。除了組之外,使用者和學生之間沒有其他關係。這是一個跟踪程序,其中一個或多個使用者正在帶一個學生或一組學生通過登記程序。

根據您的描述,您希望擁有一個GroupMembers為您執行所有多對多連接的表。

您目前的架構只允許 aGroup包含一個User和一個Student,因為您已將 GroupName 設為主鍵。如果組名發生更改,您真的想將其拆分Group到自己的表中。

這可以讓您擁有:

  • 一個Group有很多Users很多Students
  • Users可以是許多成員Groups
  • Students可以是許多成員Group
  • AUser不應在 a 中重複Group
  • AStudent不應在 a 中重複Group

這是通過這樣的架構實現的:

在此處輸入圖像描述

因為您只需要給定組、使用者和學生的一種組合,您也可以將外鍵列設為主鍵。

這一切都遵循第三範式(至少)。

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