Database-Design
學校管理應用程序的數據庫圖
我目前正在為一所小型藝術學校製作管理軟體:PHP / MySQL 中的小型 Intranet。
我試圖在開始編碼之前繪製數據庫架構,因為我不想從一開始就做出錯誤的選擇。
我的圖表可以在下面找到。
軟體要求如下:
- 為學生註冊一個學年並將其分配給一門或多門課程
- 為學生註冊一個獨特的活動(音樂會、大師班、實習……)
- 註冊教師並將他們分配到一門或多門課程
- 管理學生財務方面,付款次數和培訓總成本
- 以後還會有其他需求,比如保存標記、日程安排,也許還有其他事情……
我試圖把它全部轉錄到我的圖表上,但這裡有一些解釋:
- 一個學生(
student
表)是獨一無二的,可以註冊幾年。此表包含所有通用資訊(姓名、電子郵件、電話…)- 一個學生註冊(
enrollment
表)可以跟隨幾門課程(course
表)和幾個事件(events
表)- 學生可以分期支付培訓費用(
funding
表)- 一門課程由一位老師講授(
trainer
表),一個活動由一位演講者講授(speaker
表)這是在幾個學年中保存學生資訊的最佳方式嗎?我應該添加一些優化嗎?
更新- 正如@Matigo 所建議的,我添加了一些優化
Students
,Speakers
並且Trainers
都共享共同的元素:姓氏、電話號碼、地址等。所以只有一張
People
表更好更容易,但我們將Students
,Speakers
和Trainers
表保留為子表。更新後的數據庫圖
我將首先添加一個地址表和一個帶有地址類型的 studenttoaddress 表。
然後創建一個地址控制項來保存對地址的編輯。這可以在將來重複使用。
我不喜歡將 TableName_ 放在每一列的前面。它是表格的一部分,製作在列名上執行的通用控制項或數據對象更難。
如果您的表 ID 命名為 ID,則可以實現很多可重用性。這是第一眼。