2017-05-31 63 views
0

我對數據庫很新穎,所以我非常感謝這方面的幫助。實現大學組學習的數據庫方案

那麼,我想在這裏做什麼,我想創建一個數據庫計劃,幫助學生組織學習小組。

學生應能來檢查組已經存在,如果不創建它,並提供有關的主題,地點,時間一般說明,也許添加圖書資源等

學生想加入羣,應該可以搜索主題區域&特定主題,查看有多少人已經加入該組,並加入它,如果適合他們。

請問這些表是足夠的什麼我嘗試實現:

用戶= UID(主要&唯一),姓名,學期,主題,主題區

組= GID(主),名稱,主題,主題區,說明,資源, NumberOfUsers

會員= UID(FK到users.UID),GID(FK到groups.GID)

而且,我怎能groups.NumberOfUsers動態取決於有多少用戶擁有該特定組的成員資格?

有沒有辦法限制一個組的用戶數量?

乾杯

回答

0

是的,你基本上是正確的,我已經整理了一些數據庫模式,可以幫助你。

表:組

  • ID(PK | AI)
  • 名稱(VARCHAR)
  • 描述(文本)
  • CREATED_BY(INT | FK)
  • 其它信息...

對於特定組的用戶應該有一個數據透視表,命名它, 表:user_groups

  • ID(PK | AI)
  • GROUP_ID(FK)
  • USER_ID(FK)

對於羣體的資源(如圖書資源,視頻等),你可以創建另一個數據透視表,就像下面: 表:groups_resources

  • ID(PK | AI)
  • GROUP_ID(FK)
  • 型(INT)//(可選,如果要排序上傳的文件類型)狀態:1 - b ook,2 - 視頻等
  • 路徑(本地或外部)

爲了您NumberOfUsers的問題,我建議不節能,因爲你可能需要用一個簡單的查詢信息,而不是「輪胎」你與該信息數據庫。 但是,如果你仍然想保存,你可以簡單地更新你的表,的foreach插入user_groups ..你的SQL查詢將是:

Update groups SET numberofusers = numberofuser + 1 WHERE id = ?; 

附: - 在組中,您可以使用created_by或甚至聲明一個新列(administrator_id)並分配該組的管理員,該組具有編輯訪問權限(就像您在腳本中規劃的那樣)。

+0

感謝您的幫助;)! –

+0

對於許多映射表,例如'users_groups',除去'ID'並遵循其餘的建議[_here_](http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table )。 –