我在数据库实现方面有一个实践上的问题,我很困惑。对于这个数据库,我需要存储学生的注册信息。信息,如学生已注册的单位。单位和学生之间的关系是这样的,一个学生每学期最多可以注册4个单元,但是一个单元可以被许多学生录取。我的问题是,如何实现这样的限制:学生在mysql每学期只注册4个单元,使用检查或触发器?
如果学生和单位之间的关系是一对多的话,这是直接的,但在这里我们有一个1到4个(?)关系?
发布于 2021-03-02 08:08:34
我认为至少有两种可能性。
首先,在INSERT / UPDATE触发器之前,检查每个学生的注册数量,如果限制失败,则禁止插入/更新。在更新学生ID更改时限制错误数据所需的更新触发器。
第二,添加enroll_number列,它不是NULL,ENUM('1','2','3','4')和学生ID的组合是唯一的。
我不考虑这样的选项,即表包含4个字段,供4个不同的参与者使用--这是非规范化结构和不良实践。当所有加入者都存储在某种序列化数据类型(JSON,XML)的一列中时,变体的形式也是一样的。
https://dba.stackexchange.com/questions/286267
复制相似问题