“关联表”(多对多关系)的正确名称是啥[关闭]
Posted
技术标签:
【中文标题】“关联表”(多对多关系)的正确名称是啥[关闭]【英文标题】:What's the correct name for an "association table" (a many-to-many relationship) [closed]“关联表”(多对多关系)的正确名称是什么[关闭] 【发布时间】:2011-03-03 23:14:41 【问题描述】:“关联表”的正确名称或最流行的名称是什么?
我听说过查找、关联、解析、映射和联结表。
【问题讨论】:
我想我也听说过它叫“链接表”,但它与链接表的概念有太多重叠和歧义 What should I name a table that maps two tables together? 的可能重复项。没有绝对的“正确”名称,只有同义词具有相同含义:Xreference(XREF)、map、lookup、associative 等 en.wikipedia.org/wiki/Junction_table 说:连接表有很多名称,其中交叉引用表、桥表、连接表、映射表、交叉表、链接表、多对多解析器、链接表、配对表、数据透视表、转换表、人行横道或关联表。 【参考方案1】:没有“正确”的名称,但学术名称将是“关联表”(参见***文章Associative Entity)。其他常用名称(按字母顺序):
关联表 桥牌桌 交叉引用表 人行横道 中间表 交点表 加入表 连接表 链接表 链接表 多对多解析器 地图表 映射表 数据透视表 配对表 关系表 转换表注意:这是由 Derek Greer 创建的原始内容,但作为对已接受答案的编辑发布,完全改变了答案。
【讨论】:
创建的答案根据meta.***.com/questions/337963/…从接受的答案中回滚 我也使用 pivot 表。根据公司标准,我可能只在表students
和courses
上使用student_courses
进行多对多。我遇到的一些标准可能会为此强制使用前缀;如lnk
、ref
、pvt
等... lnk_students_courses
.【参考方案2】:
交叉引用表。客户产品外部参照。
【讨论】:
我不得不说我完全反对你的命名约定。如果您接受这样的表是关系表,那么表名应该反映关系。我认为大多数数据建模者会将客户和产品之间的关系称为“订单”。 @onedaywhen "Orders" 通常是多对一的例子,而不是多对多的例子,尽管不幸地提到了"产品"。此外,将“客户订单”与“采购订单”区分开来可能是有意义的。在一对多的情况下,如果条件允许,我会选择不使用连接表。对于您的批评,“客户产品”确实是一个不寻常的表名称组合。【参考方案3】:“正确”取决于使用的建模方法。我对陈很熟悉,其中这张表是Associative Entity的物理实现。我想最流行的将与最流行的建模方法直接相关。
Wikipedia 列出了此类表的多个名称。
【讨论】:
【参考方案4】:我被教导并使用术语“加入表”
【讨论】:
【参考方案5】:取决于你问谁。它们都是正确的,请使用对您正在与之交谈的人最有意义的术语。
【讨论】:
【参考方案6】:关系表。
“SQL 中的一个基本技巧是表示多对多关系。您创建第三个表,该表引用主键所涉及的两个(或多个)表。这第三个表有很多流行的名称,比如'junction table'或者'join table',但我知道是关系。”
Hollywood Couples by Joe Celko
【讨论】:
【参考方案7】:您将客户表称为 CustomerTable 还是 Customer 或 Customers?我通常使用“业务对象”名称(例如,有关哪些客户订购了哪些产品的信息的订单,而不是 CustomerProduct),但是一个真正只是跟踪关系的表,如 SalesRepCustomer,我给出了所涉及的两个表的名称并且不要t 添加后缀。正如其他人所说,保持一致。
我保留名称查找(在对话中,而不是在表名中)诸如“国家 11 的名称是什么”之类的内容,而不是“哪个销售代表负责国家 11”。
【讨论】:
+1 但是对于跟踪关系的表,“业务”通常已经有了该关系的名称,例如对于我工作的企业,负责照顾特定客户的销售人员被称为“客户经理”。【参考方案8】:我们在我工作的地方称这些人行横道桌子。命名基于 Table1XTable2,其中内容是 2 个表的 PK。
【讨论】:
以上是关于“关联表”(多对多关系)的正确名称是啥[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate学习笔记 --- 创建基于中间关联表的多对多映射关系