我真的需要桥接表上的身份字段吗?
Do I really need an identity field on Bridge Tables?
我真的需要在网桥 table 上使用名为 id
的额外标识字段吗?对于主要 tables 我设置了一个 id 并让它从 0 开始递增。但不确定桥 tables.
示例:
user
user_id (identity)
name
user_communities
id (identity) - do I even need this??
user_id
community_id
communities
community_id (identity)
name
不,您不需要在网桥上额外生成主键 table - 至少如果 (user_id, community_id)
是主键则不需要。
只有在您允许用户多次参与同一个社区时才需要它,例如具有不同的角色。
您的关系链接了两个实体,因此您在其中拥有两个实体的 ID。在那种情况下,您的桥 table 中的 id 是不必要的。
但是,尽管很少见,但您也可以拥有连接两个关系或与其他实体的关系的高阶关系。比方说,你想用一组属性(关系的强度、参与者等)来限定关系,你可以有一个关系属性 table 链接到关系(因此你需要它的 id) 到一组 name-values 对。你甚至可以在两个不同的网桥 table 之间建立一个网桥 table 来连接它们并为连接分配某些属性(哪个关系优先于另一个,例如)
我真的需要在网桥 table 上使用名为 id
的额外标识字段吗?对于主要 tables 我设置了一个 id 并让它从 0 开始递增。但不确定桥 tables.
示例:
user
user_id (identity)
name
user_communities
id (identity) - do I even need this??
user_id
community_id
communities
community_id (identity)
name
不,您不需要在网桥上额外生成主键 table - 至少如果 (user_id, community_id)
是主键则不需要。
只有在您允许用户多次参与同一个社区时才需要它,例如具有不同的角色。
您的关系链接了两个实体,因此您在其中拥有两个实体的 ID。在那种情况下,您的桥 table 中的 id 是不必要的。
但是,尽管很少见,但您也可以拥有连接两个关系或与其他实体的关系的高阶关系。比方说,你想用一组属性(关系的强度、参与者等)来限定关系,你可以有一个关系属性 table 链接到关系(因此你需要它的 id) 到一组 name-values 对。你甚至可以在两个不同的网桥 table 之间建立一个网桥 table 来连接它们并为连接分配某些属性(哪个关系优先于另一个,例如)