Sql-Server
如何實現“一個學生一個學期最多可以報讀4個學分”
我有一個關於數據庫實現的練習問題並且很困惑。對於這個數據庫,我需要儲存學生的註冊資訊。學生註冊的單元等資訊。單元和學生之間的關係是這樣的,一個學生每學期最多可以註冊 4 個單元,但一個單元可以被許多學生註冊。我的問題是,如何使用 CHECK 或觸發器在 mysql 中實現學生每學期最多只能註冊 4 個單元的限制?
如果學生和單位之間是一對多的關係,那將是直截了當的,但在這裡我們有一對四(?)的關係?
我看到至少兩種可能性。
首先 - BEFORE INSERT / UPDATE 觸發器檢查每個學生的註冊數量,如果限制失敗,則禁止插入/更新。在更新學生 ID 更改時限制錯誤數據所需的 UPDATE 觸發器。
第二 -
enroll_number
在與學生 ID 的組合中添加 NOT NULL、ENUM(‘1’,‘2’,‘3’,‘4’) 和 UNIQUE 列。我沒有考慮表格包含 4 個單獨註冊的 4 個欄位的選項 - 這是非規範化結構和不好的做法。當所有註冊都儲存在某個序列化數據類型(JSON、XML)的一列中時,變體形式上相同。