我有一个关于数据库实现的练习问题并且很困惑。对于这个数据库,我需要存储学生的注册信息。学生注册的单元等信息。单元和学生之间的关系是这样的,一个学生每学期最多可以注册 4 个单元,但一个单元可以被许多学生注册。我的问题是,如何使用 CHECK 或触发器在 mysql 中实现学生每学期最多只能注册 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)的一列中时,变体形式上相同。