我一直想知道以下方法是否不好或真的非常糟糕:)。
问题#1:我们可以使用和表indicator_id
中的数据进行合并(不使用)[我们知道我们可以,因为我们这样做了,但是它可以接受吗:)]?indicator_values
indicator_details
FOREIGN KEY
问题#2:如果我们决定使用indicator_id
(indicator_details
表中不是PK
),它会对性能产生重要影响吗?
正确理解 SQL 方法,最好的选择是在表中使用iid
( iid
as FOREIGN KEY
)indicator_values
而不是indicator_id
,但项目总是有一些限制(比如用户插入数据的方式 - 下面详细介绍),因此我们试图找到一个折衷的解决方案。
我知道这可能会导致数据完整性问题,但是没有 FK 的解决方案将非常用户友好(因为用户不必担心插入indicator_values
表中正确的行 - 具有正确的行iid
),特别是在我们的情况下,数据完整性是并不重要。此外,如果用户插入数据的唯一方法(在我们的例子中)是先从表中删除所有行,则使用 FK 的方法将导致在表更新ON DELETE
期间从指标值中删除所有行(由...引起)indicator_details
(再次 - 更新)意味着:删除所有行然后插入新数据),所以这会很耗时。
D B:
指标值表
+----------+--------------+------+-------+
| vid (PK) | indicator_id | year | value |
+----------+--------------+------+-------+
| 1 | AACA | 2001 | 10 |
| 2 | bbb | 2001 | …
Run Code Online (Sandbox Code Playgroud)