Sql-Server

如何實現“一個學生一個學期最多可以報讀4個學分”

  • March 2, 2021

我有一個關於數據庫實現的練習問題並且很困惑。對於這個數據庫,我需要儲存學生的註冊資訊。學生註冊的單元等資訊。單元和學生之間的關係是這樣的,一個學生每學期最多可以註冊 4 個單元,但一個單元可以被許多學生註冊。我的問題是,如何使用 CHECK 或觸發器在 mysql 中實現學生每學期最多只能註冊 4 個單元的限制?

如果學生和單位之間是一對多的關係,那將是直截了當的,但在這裡我們有一對四(?)的關係?

我看到至少兩種可能性。

首先 - BEFORE INSERT / UPDATE 觸發器檢查每個學生的註冊數量,如果限制失敗,則禁止插入/更新。在更新學生 ID 更改時限制錯誤數據所需的 UPDATE 觸發器。

第二 -enroll_number在與學生 ID 的組合中添加 NOT NULL、ENUM(‘1’,‘2’,‘3’,‘4’) 和 UNIQUE 列。

我沒有考慮表格包含 4 個單獨註冊的 4 個欄位的選項 - 這是非規範化結構和不好的做法。當所有註冊都儲存在某個序列化數據類型(JSON、XML)的一列中時,變體形式上相同。

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