合并两个交叉引用表?

merge two crossreference tables?

我有三个具有多对多关系的 table: 个人资料角色类型

然后,我有两个交叉引用tables:

profile_role:
  role_id    : int
  profile_id : int

profile_type:
  profile_id : int
  type_id    : int

两个 table 中的共同外部 ID 是 profile_id。 我的想法是创建一个包含三个外部 ID 的 table:

profile_role_type:
  role_id    : int
  profile_id : int
  type_id    : int

我的问题:这两种设计是否等效(没有数据丢失或冗余)?

profile_role_type 只有在 profile_role 恰好 一行且每一行都具有相同的 profile_id 时,

profile_role_type 才是有效的替换profile_type.

总而言之。