0

我有这个想法,我一直在根据我在某处读到的另一个概念在脑海中思考。基本上,您有一个包含很少字段的“主”表,其他表通过外键继承该主表。以前做过这么多,所以没有消息。我想做的是让数据库中的几乎每个表都继承自该主表。这样,每个表中的每个对象、每个记录、每个条目都可以有一个完全唯一的主键(因为 PK 实际上存储在 Primary 表中),并且可以简单地通过 ID 而不是通过 table 来引用。

另一个好处是可以很容易地建立可以触及多个表的关系。例如:我有一个 Transaction 表,并且该表希望对任何事务(库存、帐户、联系人、订单等)都有一个 FK。事务可以只对主表有一个 FK,并通过它引用必要的数据。

我脑海中不断出现的问题是,主表是否会成为瓶颈。这件事将在某一时刻拥有数百万条记录。我知道通过良好的表格设计可以处理巨大的记录集,但限制是什么?

有没有人尝试过类似的事情,你的结果是什么?

4

3 回答 3

2

您必须考虑到该表将具有大量外键关系。如果您想从根表中删除一行,这些可能会导致性能问题。(这可能会在删除时导致一些讨厌的执行计划)

因此,如果您计划删除行,则可能会影响性能。我最近遇到了这样的设置问题,清理它很痛苦(它引用了 120 个其他表 - 删除速度非常慢)。

为了克服这个性能问题,您可能会考虑不强制执行约束(坏计划),不使用性能约束(坏计划),或者尝试将属于一个实体的所有数据分组在一行中,并坚持正常的规范化做法(好计划)

于 2010-11-23T15:43:11.590 回答
2
  1. 是的,主表几乎肯定会成为瓶颈。
  2. 您如何实施真正的参照完整性?
    例如,您如何确定交易的 FK 实际上与库存、帐户、联系人或订单而不是苹果、橙子或菠萝相关联?
于 2010-11-23T15:40:00.517 回答
1

我认为这将是一个可怕的瓶颈。这不仅会使执行真正的 PK/FK 关系变得更加困难。它可能会造成数据完整性的噩梦。我根本看不到你从哪里获得任何好处。

于 2010-11-23T15:40:03.450 回答