sql - 我应该在 SQL 连接/连接表中存储额外的数据吗?

标签 sql join relational-database junction-table

在我的连接表中存储附加数据有什么缺点吗 /联结表。

例如,我正在处理 cargo 公司的数据库,我有 3 个表:

Table 1 - company,
Table 2 - trailer_type,
Table 3 - junction_table,

每家公司可以有不止一种拖车类型,但我还需要每个公司的每种拖车类型的拖车数量。放置预告片计数的最合乎逻辑的位置似乎是在具有 company.idtrailer_type.id 的联结表中。

这样做有什么缺点吗?如果有,是否有更好的方法?

最佳答案

从您表述问题的方式来看,我认为您的直觉大部分是正确的。您将联结表确定为保存计数的地方。但是你在犹豫,显然是因为它是一个“连接表”。

所有的表都是平等的。从 SQL 的角度来看,没有事实表,没有维度表,没有联结表。只有 table 。

规范化设计表示用于标识每一行的最小键。在您的情况下,联结表的自然键类似于 {company_id, trailer_type_id}。是否存在功能上依赖于该 key 的信息?为什么,是的,有:ntrailers。这样一个专栏就诞生了。

所以不用管是什么表。想一想该行的含义,以及它是如何被识别的。这会让你保持在正确的道路上。

关于sql - 我应该在 SQL 连接/连接表中存储额外的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38403191/

相关文章:

sql - 架构设计 : to-one foreign relation with heterogeneous type (different targets), 但角色相同

sql - 计算2个日期之间每个日期的记录数

php - 如果我使用CodeIgniter中的函数或类来生成表来存储我的用户信息,它是否安全或可能?

join - 学说 2.1 : Nested queries inside a Join section

mysql - 删除多个索引相同的MySQL行,但保留最新的

php - 我如何向这些数据库表添加列或添加全新的数据库表,然后将结果插入适当的 html 表格单元格?

sql - 嵌套where语句

php - 关系数据库组织

mysql - 找到用户问题答案匹配百分比的最佳方法是什么?

mysql - 使用Join时如何选择不同的记录?