首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中表示a(多A到多B)到多C的关系

问如何在SQL中表示a(多A到多B)到多C的关系
EN

Stack Overflow用户
提问于 2014-09-09 23:51:57
回答 1查看 37关注 0票数 2

使用以下表示法:

  • A >< B -多个A和B
  • A <= B -一个A对多个B

我想代表(A >< B) <= C,即把许多Cs与A和B之间的每一个链接联系起来。

以下是我的一些想法(警告:伪代码)

  1. 主密钥对,复制的 表ABMap主外国A_id主外国B_id表C主要C_id外国A_id外国B_id #更多数据
  2. 映射的唯一约束 表ABMap主AB_id外国A_id外国B_id唯一(A_id,B_id)表C主C_id外来AB_id #更多数据
  3. 对id映射的唯一约束 表ABMap auto_increment AB_id主外国A_id主外部B_id唯一( AB_id )表C主C_id AB_id

我该用哪一种,为什么?

EN

回答 1

Stack Overflow用户

发布于 2014-09-10 00:28:47

我最喜欢第二种。

代码语言:javascript
复制
table ABMap
    primary AB_id
    foreign A_id
    foreign B_id
    unique (A_id, B_id)
    clustered_index (A_id, B_id)   --- Add
    index (A_id)                   --- Add if B not supplied sometimes
    index (B_id)                   --- Add if A not supplied sometimes

table C
    primary C_id
    foreign AB_id
    # more data

在加入表C时,使用AB_id的主键将提供快速查找。

但是,如果大多数查询都使用双亲进行搜索,那么使用(A_id,B_id)对数据进行聚类索引,则执行速度最快。如果有些查询只提供A或B,那么这两个字段上的单独索引将支持这些查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25755254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档