mysql—如果在后端使用验证,即使数据库表列必须不为空,但它是否可以为空?

ztmd8pv5  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(304)

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

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

Table: album_images
Columns: id, album_id, file_name

我担心的是,如果我合并它们,我必须使名称、描述、向上投票、向下投票和视图为空,因为相册图像没有这些信息,但我的图像肯定应该有这些信息。
我正在验证来自html表单的信息。

sg24os4d

sg24os4d1#

扪心自问:合并表的好处是什么?
缺点显而易见。使用两个表,dbms可以强制关系完整性:必须存在必需的值,否则该行将被拒绝。这是万无一失的。不管在其他什么地方,强制执行都是有效的。
如果您想要一个“单表”,以便可以同时查询两个表,这就是为什么会发明视图。创建一个视图,该视图是两个表的并集,并使用它。
作为程序员,我们学会排除冗余。这种诱惑有时会看到冗余,然后说,“嘿,我可以把这两个合并起来”。不过,在sql数据库中,这种本能是相反的:在sql中,冗余通常是通过添加表而不是删除表来消除的。
看看你的列名,我想知道 file_name 引用两个表中的图像文件,图像由 id ? 如果是这样,您可以通过消除冗余来消除冗余,从而提高引用完整性 album_images.file_name . 如果您需要相册图像的文件名,这就是join的用途。

相关问题