我应该使用外键吗?

16 浏览
0 Comments

我应该使用外键吗?

可能重复:

外键有什么问题?

我使用MS Sql Server,有一个大约4GB数据的大型数据库。

我在网上搜索了为什么要使用外键。

到目前为止,我只为用于连接表的键建立了索引。

性能都很好,数据完整性没有问题。

我应该使用外键吗?使用外键会获得更好的性能吗?

0
0 Comments

在设计数据库时,是否应该使用外键是一个常见问题。外键主要是用来强制实施数据库完整性的工具,与执行速度无关。如果您已经优化了索引设计,那么您可能已经安装了这些索引,至少作为非唯一索引。因此,我不希望仅仅安装外键就会有任何性能变化(甚至不一定涉及索引)。但是,如果您对设计的优化持有这样的态度,我会有一些怀疑。阅读外键的文档,目标是了解它们如何强制实施完整性(无论如何都值得了解)。然后看看这是否更完整地回答了您的问题。关于插入操作的“与执行速度无关”并不完全准确(我知道您知道,但Tuan可能不知道)。谢谢-我稍微补充了一下答案,以便最终达到相同的结论。对于结构,我有很好的观点。正如我所说,完整性没有问题。我需要的是原始速度。

在这段内容中,出现了是否应该使用外键的问题。问题的原因是作者需要在设计数据库时考虑到性能因素,而不仅仅是强制实施完整性。解决方法是阅读外键的文档以了解其如何强制实施完整性,并进行索引设计的优化。

以下是整理后的文章:

在设计数据库时,是否应该使用外键是一个常见问题。外键主要是用来强制实施数据库完整性的工具,与执行速度无关。如果您已经优化了索引设计,那么您可能已经安装了这些索引,至少作为非唯一索引。因此,我不希望仅仅安装外键就会有任何性能变化(甚至不一定涉及索引)。但是,如果您对设计的优化持有这样的态度,我会有一些怀疑。

要解决这个问题,您可以阅读外键的文档,目标是了解它们如何强制实施完整性。这样做不仅仅是为了回答问题,而是为了在任何情况下都了解它们的作用。在阅读文档之后,您可以检查一下自己的设计是否已经优化,并根据需要进行调整。

需要注意的是,“与执行速度无关”并不完全准确,特别是在插入操作方面。如果您对数据库的性能有更高的要求,那么还是需要考虑外键的影响。因此,在设计数据库时,除了强制实施完整性外,还应该考虑执行速度。

总之,对于是否应该使用外键的问题,需要综合考虑完整性和性能因素。阅读外键的文档以了解其作用,进行索引设计的优化,并根据具体需求决定是否使用外键。

0
0 Comments

应该使用外键吗?

外键实际上并不能提高性能,事实上,它们会对所有的写操作产生一些性能损耗,以确保约束得到遵循。

你想要使用外键的原因是为了防止破坏性的写操作。如果没有外键,有错误的代码或糟糕的SQL语句可能会删除预期存在的行。

外键不能保护你免受糟糕代码的影响。它们只能在有依赖子项的情况下保护你免于删除外键关系的父项。

原因:

外键实际上并不能提高性能,事实上,它们会对所有的写操作产生一些性能损耗,以确保约束得到遵循。但是,你想要使用外键的原因是为了防止破坏性的写操作。如果没有外键,有错误的代码或糟糕的SQL语句可能会删除预期存在的行。

解决方法:

外键不能保护你免受糟糕代码的影响。它们只能在有依赖子项的情况下保护你免于删除外键关系的父项。因此,在使用外键时,需要注意编写良好的代码和正确的SQL语句,以确保不会发生意外的删除操作。

以下是一个示例,展示了如何在MySQL数据库中创建外键关系:

CREATE TABLE orders (

order_id INT AUTO_INCREMENT PRIMARY KEY,

customer_id INT,

order_date DATE,

FOREIGN KEY (customer_id)

REFERENCES customers(customer_id)

);

在上述示例中,orders表中的customer_id列被定义为外键,它引用了customers表中的customer_id列。这样一来,如果试图删除customers表中被orders表的customer_id列所引用的行,将会触发外键约束,从而阻止删除操作。

但是需要注意的是,如果在编写SQL语句时不小心,仍然可能绕过外键约束,导致意外的删除操作。因此,除了使用外键外,还应该编写可靠的代码和正确的SQL语句来保证数据的完整性和一致性。

0
0 Comments

应该使用外键吗?

问题的出现原因:

- 缺乏对数据完整性的关注和重视,可能会导致未来的问题。

解决方法:

- 使用外键来确保数据完整性。

在数据库中,外键是一种关系约束,用于确保数据之间的一致性和完整性。使用外键可以创建一个表与另一个表之间的关联。它定义了一个列或一组列,这些列的值必须与另一个表的主键或唯一键的值匹配。

使用外键有以下好处:

1. 数据完整性:使用外键可以确保数据之间的一致性和完整性。如果没有外键约束,可能会出现数据不一致的情况,例如在一个表中引用了另一个表中不存在的数据。

2. 数据一致性:使用外键可以确保数据的一致性。当修改或删除一个表中的数据时,外键约束可以自动更新或删除与之相关联的数据,避免了数据不一致的情况。

3. 数据关联性:使用外键可以创建表与表之间的关联,使得数据之间的关系更加清晰和可理解。

在设计数据库时,应该根据数据之间的关系和依赖选择是否使用外键。如果数据之间存在关联性和依赖性,那么使用外键是一个明智的选择。在创建表时,可以使用以下代码示例来添加外键约束:

CREATE TABLE 表名 (

列名 数据类型,

...

FOREIGN KEY (列名) REFERENCES 另一个表(列名)

);

总之,使用外键是确保数据完整性和一致性的有效方法。虽然在当前环境中可能没有问题,但如果忽视了数据完整性,那么可能会在未来面临问题。因此,应该始终重视并使用外键来管理和维护数据库中的数据。

0