具有多对一关系的异常插入

时间:2019-04-18 20:34:00

标签: mysql sql django-models database-normalization

假设我有一个名为“ student”的表,其中有一列“ name”。我想存储另一个名为“ group”的属性。 “组”将是根据名称计算得出的值,并且不同的名称可以位于同一组中。因此,每个名称都有一个组,一个组可以有多个名称。通过创建另一个名为“ group”的表并在“ student”中添加一个指向“ group”的fk列,可以很容易地在规范化模式中对其进行建模。但是,现在假设我只能在学生注册后的某个时间计算他们的组。因此,我需要能够在不知道学生组的情况下进入学生。使用这种模式,我要么必须使用null fk,要么不添加学生。

很抱歉,如果我错过了显而易见的内容,那么我对标准化有些陌生。我考虑的是使用关联表,其中fk用于组,fk用于学生。这样一来,我可以在不知道他们的小组的情况下进入学生,然后在以后的阶段通过关联表将他们链接到他们的小组。但是,从我在关联表上阅读的内容来看,您是要使用它们来解构多对多关系。这是一对多的关系。所以我很困惑。是否存在标准化这种多对一关系的标准方法,该值只能稍后计算?

1 个答案:

答案 0 :(得分:1)

解决此问题的一种非常常见的方法是在groups表中有一个“ no group”记录。所有学生都开始映射到该记录,然后在将他们分配给一个组时更新外键。