Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果在后端使用验证,即使数据库表列必须不为空,但它是否可以为空,这有关系吗?_Mysql_Database - Fatal编程技术网

Mysql 如果在后端使用验证,即使数据库表列必须不为空,但它是否可以为空,这有关系吗?

Mysql 如果在后端使用验证,即使数据库表列必须不为空,但它是否可以为空,这有关系吗?,mysql,database,Mysql,Database,我正在考虑合并以下两个表: Table: images Columns: id, name, description, user_id, file_name, upvotes, downvotes, views Table: album_images Columns: id, album_id, file_name 我担心的是,如果我合并它们,我必须使名称、描述、向上投票、向下投票和视图为空,因为album_图像没有这些信息,但我的图像肯定应该有这些信息 我正在验证HTML表单中的信息。问问

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

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

Table: album_images
Columns: id, album_id, file_name
我担心的是,如果我合并它们,我必须使名称、描述、向上投票、向下投票和视图为空,因为album_图像没有这些信息,但我的图像肯定应该有这些信息


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

问问自己这个问题:合并表的好处是什么

缺点是显而易见的。使用两个表,DBMS可以强制执行关系完整性:必须存在的必需值,否则将拒绝该行。这是万无一失的。无论在其他任何地方检查,强制执行都是有效的

如果您想要一个表,以便可以同时查询两个表,这就是为什么会发明视图。创建一个作为两个表的并集的视图,并使用它

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


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

当前的结构允许您在每个相册中有多个图像,这是我从word album中期望的,如果您合并它们,您将在相册中放置的每个图像中复制相册的所有信息。这是一个令人头疼的问题,原因有几个,包括如果你想更改相册的任何内容,你必须更新包含该数据的所有行。我不建议你这么做。你为什么要让它们为空?如果合并它们,则必须复制数据,而不是将其保留为空。正如@GrumpyCrouton所说,这种非规范化是糟糕的设计。