gpt4 book ai didi

mysql - 如果数据库表列可以为空,即使我在后端使用验证时强制它不为空,这是否重要?

转载 作者:行者123 更新时间:2023-11-29 10:09:12 27 4
gpt4 key购买 nike

我正在考虑合并以下两个表:

Table: images
Columns: id, name, description, user_id, file_name, upvotes, downvotes, views

Table: album_images
Columns: id, album_id, file_name

我担心的是,如果我合并它们,我必须将名称、描述、赞成票、反对票和 View 设为可为空,因为 album_images 没有这些信息,但我的图像肯定应该有这些信息。

我正在验证 HTML 表单中的信息。

最佳答案

问自己这个问题:合并表的优点是什么?

缺点很明显。通过两个表,您的 DBMS 可以强制执行关系完整性:必须存在必需的值,否则该行将被拒绝。这是万无一失的。无论在其他地方进行检查,这种执行都有效。

如果您想要一个“单个表”,以便可以同时查询两个表,这就是发明 View 的原因。创建一个作为两个表的 UNION 的 View ,并使用它。

作为程序员,我们学会排除冗余。有时看到冗余并说,“嘿,我可以合并这两个”。然而,在 SQL 数据库中,这种本能是倒退的:在 SQL 中,冗余通常是通过添加表而不是删除表来消除的。

看看你的列名,我想知道file_name是否指的是两个表中的图像文件,即由id表示的图像?如果是这样,您可以通过消除 album_images.file_name 来消除冗余,从而提高引用完整性。如果您需要相册图像的文件名,这就是 JOIN 的用途。

关于mysql - 如果数据库表列可以为空,即使我在后端使用验证时强制它不为空,这是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313450/

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