gpt4 book ai didi

database - GUI 对 Postgres 的外键约束是必要的吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:43 26 4
gpt4 key购买 nike

我有一个带有 Postgres 数据库的 GUI 程序。在数据库中,我有一个这样的客户表:

id serial Primary Key | name
----------------------+------
21 | Mr. Customer

我也有一个这样的发票表(简化版):

id | customer_id
---+------
4 | 21

我没有使用外键,因为我的 GUI 不允许任何人为 customer_id 插入错误的数字。但是,我的 friend 告诉我不使用外键是愚蠢的。有人可以指出一个可能的场景,即错误的值可能被插入到 customer_id 列中吗?我将出于一个充分的理由更改我的数据库,但到目前为止我还没有想到一个理由。

最佳答案

有几个原因,

从其他来源插入数据。
正如@OldProgrammer 所指出的,有人可以使用 pgadmin 或 psql 客户端将数据插入表中。

删除客户
在客户表中删除客户时会发生什么。您在不存在客户的发票表中有一个条目。

更新客户
如上

额外查询
为了在您的应用程序中手动强制执行外键,您需要从客户表中进行选择以查明用户是否存在。然后你才能执行插入。所以你在做一个额外的查询,更不用说编写大量额外的代码来替换数据库中已经内置的东西了。

编程错误
您的 GUI 很可能包含导致输入无效数据的错误。在这种情况下,数据库中的约束将使您保持安全。这种技术称为防御性编程,可以以很少的成本提高系统质量。

关于database - GUI 对 Postgres 的外键约束是必要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41175744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com