Database-Design

學校管理應用程序的數據庫圖

  • February 15, 2022

我目前正在為一所小型藝術學校製作管理軟體:PHP / MySQL 中的小型 Intranet。

我試圖在開始編碼之前繪製數據庫架構,因為我不想從一開始就做出錯誤的選擇。

我的圖表可以在下面找到。

軟體要求如下:

  • 為學生註冊一個學年並將其分配給一門或多門課程
  • 為學生註冊一個獨特的活動(音樂會、大師班、實習……)
  • 註冊教師並將他們分配到一門或多門課程
  • 管理學生財務方面,付款次數和培訓總成本
  • 以後還會有其他需求,比如保存標記、日程安排,也許還有其他事情……

我試圖把它全部轉錄到我的圖表上,但這裡有一些解釋:

  • 一個學生(student表)是獨一無二的,可以註冊幾年。此表包含所有通用資訊(姓名、電子郵件、電話…)
  • 一個學生註冊(enrollment表)可以跟隨幾門課程(course表)和幾個事件(events表)
  • 學生可以分期支付培訓費用(funding表)
  • 一門課程由一位老師講授(trainer表),一個活動由一位演講者講授(speaker表)

這是在幾個學年中保存學生資訊的最佳方式嗎?我應該添加一些優化嗎?

數據庫圖

更新- 正如@Matigo 所建議的,我添加了一些優化

StudentsSpeakers並且Trainers都共享共同的元素:姓氏、電話號碼、地址等。

所以只有一張People表更好更容易,但我們將Students,SpeakersTrainers表保留為子表。

更新後的數據庫圖

更新後的數據庫圖

我將首先添加一個地址表和一個帶有地址類型的 studenttoaddress 表。

然後創建一個地址控制項來保存對地址的編輯。這可以在將來重複使用。

我不喜歡將 TableName_ 放在每一列的前面。它是表格的一部分,製作在列名上執行的通用控制項或數據對象更難。

如果您的表 ID 命名為 ID,則可以實現很多可重用性。這是第一眼。

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