小编LAd*_*das的帖子

新手设计:外键总是必要的吗?连接非 PK 的列

我一直想知道以下方法是否不好或真的非常糟糕:)。

问题#1:我们可以使用和表indicator_id中的数据进行合并(不使用)[我们知道我们可以,因为我们这样做了,但是它可以接受吗:)]?indicator_valuesindicator_detailsFOREIGN KEY

问题#2:如果我们决定使用indicator_idindicator_details表中不是PK),它会对性能产生重要影响吗?

正确理解 SQL 方法,最好的选择是在表中使用iid( iidas 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)

performance foreign-key database-design table

1
推荐指数
1
解决办法
1366
查看次数

标签 统计

database-design ×1

foreign-key ×1

performance ×1

table ×1