Mysql
線上學習:不同的使用者角色不同的領域
我正在嘗試建構一個線上學習系統(類似於 Udemy ),其中使用者具有不同的類型(或角色)。
目前“角色”是:學生、教師 和管理員,未來可能會增加。每個角色都有自己的權限。
一個使用者可以有 1 個或多個角色,因此使用者可以是某門課程的學生和(另一門課程)的講師
見下文:
問題: 現在,每個角色可能有不同的欄位,例如:講師角色有一個獨特的欄位,如“傳記”,其他任何使用者角色都沒有。
如何通過這種數據庫設計來實現這一點,我想創建如下表:
**instructors_users Table** user_id some unique fields for instructors role **students_users Table** user_id some unique fields for students role
這是正確的嗎 ?
使用表繼承
如果您不介意空值,請使用單表繼承。添加“類型”列,然後為不同類型添加可為空的列,並檢查約束的完整性
https://www.martinfowler.com/eaaCatalog/singleTableInheritance.html
如果您介意空值,請為每個子類型添加一個表並使用外鍵加入超類型
https://www.martinfowler.com/eaaCatalog/classTableInheritance.html
像Hibernate這樣的 ORM可以為您自動執行此操作
添加一個名為 field 的表,其中包含所有文件(傳記,數學……)
**field Table** id name_fields
還有另一個名為 user_field_role 的表
**user_field_role table** user_id field_id role_id
如果您想成為使用者 X 傳記講師,則在 user_field_role 中放置 user_id 和傳記 id 和講師 id