是否应在SQL连接/连接表中存储其他数据?

zcl*_*eft 2 mysql sql relational-database junction-table

将附加数据存储在我的联接/连接表中是否有任何缺点?

例如,我正在研究货运公司的数据库,并且有3个表:

Table 1 - company,
Table 2 - trailer_type,
Table 3 - junction_table,
Run Code Online (Sandbox Code Playgroud)

每个公司可以有多个拖车类型,但是我还需要每个公司每种拖车类型的拖车数量。放置拖车计数的最合理的方法似乎是在与company.id和trailer_type.id的连接表中。

这样做有什么弊端吗?如果有,有没有更好的方法呢?

Jam*_*den 5

从您对问题的表述方式来看,我认为您的直觉基本上是正确的。您将联结表标识为保留计数的地方。但是您很犹豫,显然是因为它是一个“连接表”。

创建的所有表均相等。从SQL的角度来看,没有事实表,没有维表,没有联结表。只有表格。

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

因此,不必担心它是什么样的桌子。考虑一下行的含义以及如何对其进行标识。那会让你在球道上。