大型系统是否在其数据库中使用外键?

11 浏览
0 Comments

大型系统是否在其数据库中使用外键?

在关系数据库中使用外键的一个缺点是需要确保在进行任何插入操作之前,父表存在的额外开销。随着数据库和操作的增长,这个影响会被放大。有人知道大型网站是否使用外键吗?如果使用,他们是如何避免额外开销的?如果不使用,随着开发团队的扩大,这可能会引起很多潜在的错误/冲突/沟通不畅/孤立行的问题。有什么见解吗?

0
0 Comments

大型系统在其数据库中使用外键的原因和解决方法是多方面的。首先,是否使用外键取决于对“大型站点”的定义。例如,如果花旗集团在线银行是一个“大型站点”,那么我猜他们会使用外键。这个例子的意思是,使用(或不使用)外键、仅通过存储过程等访问方式,取决于业务逻辑的要求(也许还有其法律框架),而不仅仅是技术上的问题。

为了澄清,我强调的是一个假设的网站,它有大量的数据写入和读取关系型数据库。对于花旗集团来说,这些外键的开销可能会影响他们,因此他们被认为是一个“大型站点”。也许Twitter或Wordpress是更好的例子。

Twitter不应该(并且据我所知也没有)使用关系型数据库,因此不使用外键。Wordpress也不使用外键,正是我的观点:业务逻辑和法律框架不要求使用外键。花旗银行将使用外键,即使开销影响他们,但是业务逻辑和法律要求他们这样做。

因此,大型系统是否在其数据库中使用外键取决于业务逻辑和法律要求,以及对性能和开销的考量。对于一些大型站点来说,外键的开销可能会影响他们的性能,因此他们可能会选择不使用外键。但对于其他一些站点来说,业务逻辑和法律要求可能会迫使他们使用外键,即使有一些开销。

0
0 Comments

大型系统在其数据库中使用外键的原因是为了避免由于缺乏外键检查而导致的严重事故。虽然外键可能会增加一些成本,但与由于事故而导致的严重事故(需要花费数小时的时间进行调查和修复)相比,这些成本微不足道。

解决方法是在数据库中使用外键来确保数据的完整性。以下是一个示例代码,显示了如何在数据库表中创建外键:

CREATE TABLE 表名 (

列名 数据类型,

...

FOREIGN KEY (外键列名) REFERENCES 关联表名(关联列名)

);

通过在表之间建立外键关系,系统可以自动检查和维护数据的一致性。这可以减少人工错误,并提高数据的可靠性。

总之,大型系统使用外键的原因是为了避免由于缺乏外键检查而导致的严重事故,并通过在数据库中建立外键关系来确保数据的完整性和一致性。

0