数据库设计中的外键

时间:2017-01-18 21:16:09

标签: mysql database database-design

不是问题,而是关于最佳实践的问题以及将来对我有用的问题。

我有许多表,其中包含链接到我的架构中的帐户的数据 - 服务,位置,提供商等。

我有两个选择,我可以向我的所有表中的帐户添加一个外键,这将减少所需的连接数,但可能会增加存储的数据和(可能?)导致不一致。

所以,我的问题是,我应该在服务,地点等方面添加帐户FK,还是依靠连接为我管理?

2 个答案:

答案 0 :(得分:1)

在不知道数据库结构的情况下,很难给出正确的答案。但是,让我们以一个表providers为例。如果提供商只能拥有一个帐户,那么我会在providers表中添加一个FK。如果情况并非如此,那么我就不会使用FK,因为它不起作用。

外键是将事物联系在一起,因此没有不一致。因此,如果您有一个employees表和一个departments表,employees将有一个FK到departments,因为员工只能在一个部门。

答案 1 :(得分:0)

你似乎在理解FK和他们给你的东西方面遇到了一些麻烦。

您的FK应该加入带有PK(主键)的表,这样可以确保表之间的数据完整性。

但是,如果不对FK的列编制索引,则它将是未编制索引的FK,这可能会导致对联接进行全表扫描。

PK和FK仅仅是约束,不会增加存储空间。索引FK会增加存储空间,但索引的性能优势通常会超过存储的开销。

使用PK和索引的FK都是规范化数据设计的一部分,您不必担心使用它们。