Mysql

線上學習:不同的使用者角色不同的領域

  • June 24, 2021

我正在嘗試建構一個線上學習系統(類似於 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

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