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的连接表中。
这样做有什么弊端吗?如果有,有没有更好的方法呢?
从您对问题的表述方式来看,我认为您的直觉基本上是正确的。您将联结表标识为保留计数的地方。但是您很犹豫,显然是因为它是一个“连接表”。
创建的所有表均相等。从SQL的角度来看,没有事实表,没有维表,没有联结表。只有表格。
规范化设计表示用于标识每一行的最小键。就您而言,联结表的自然键类似于{company_id,trailer_type_id}。是否存在功能上依赖该键的信息?为什么,是的,有:ntrailers。这样一列就诞生了。
因此,不必担心它是什么样的桌子。考虑一下行的含义以及如何对其进行标识。那会让你在球道上。