在两个实体之间使用多个 M2M 关系是个好主意吗?

Is it a good idea to use multiple M2M relationships between two entities?

我们遇到这样一种情况,我们似乎需要在数据库中的两个实体之间使用两种不同的 M2M 关系。

实体是 UsersStudies。用户可以注册 学习,但也可能有资格 学习。

因此,我们正在考虑使用两个不同的 table 对其进行建模:EnrollmentsEligibilities

架构如下:

我的问题是:这是个好主意吗? 我知道当建议将两个实体合并为一个时,这会在两个实体之间创建两个 M2M 关系。将这些关系组合成一个 table 的问题是这些关系是独立的。例如,用户可能有资格参加研究但不注册,用户可能注册研究但不符合条件。

是的,完全没问题;只注意按键。

I know that this would create two M2M relationships between two entities when it is advised to combine them into one.

不,不建议这样做。只关注逻辑、谓词和约束,而不是行话 (m2m ...)。

-- User USR exists.
--
user {USR}
  PK {USR}
-- Study STY exists.
--
study {STY}
   PK {STY}
-- User USR is eligible for study STY.
--
eligibility {USR, STY}
         PK {USR, STY}

FK1 {USR} REFERENCES user  {USR}
FK2 {STY} REFERENCES study {STY}

如果用户注册了一项研究,则该用户必须符合该研究的条件。

-- User USR enrolled in study STY.
--
enrollment {USR, STY}
        PK {USR, STY}

FK {USR, STY} REFERENCES eligibility {USR, STY}

注:

All attributes (columns) NOT NULL

PK = Primary Key
FK = Foreign Key