我正在考虑合并以下两个表:
Table: images Columns: id, name, description, user_id, file_name, upvotes, downvotes, views Table: album_images Columns: id, album_id, file_name
我担心的是,如果我合并它们,我必须使名称、描述、向上投票、向下投票和视图为空,因为相册图像没有这些信息,但我的图像肯定应该有这些信息。我正在验证来自html表单的信息。
sg24os4d1#
扪心自问:合并表的好处是什么?缺点显而易见。使用两个表,dbms可以强制关系完整性:必须存在必需的值,否则该行将被拒绝。这是万无一失的。不管在其他什么地方,强制执行都是有效的。如果您想要一个“单表”,以便可以同时查询两个表,这就是为什么会发明视图。创建一个视图,该视图是两个表的并集,并使用它。作为程序员,我们学会排除冗余。这种诱惑有时会看到冗余,然后说,“嘿,我可以把这两个合并起来”。不过,在sql数据库中,这种本能是相反的:在sql中,冗余通常是通过添加表而不是删除表来消除的。看看你的列名,我想知道 file_name 引用两个表中的图像文件,图像由 id ? 如果是这样,您可以通过消除冗余来消除冗余,从而提高引用完整性 album_images.file_name . 如果您需要相册图像的文件名,这就是join的用途。
file_name
id
album_images.file_name
1条答案
按热度按时间sg24os4d1#
扪心自问:合并表的好处是什么?
缺点显而易见。使用两个表,dbms可以强制关系完整性:必须存在必需的值,否则该行将被拒绝。这是万无一失的。不管在其他什么地方,强制执行都是有效的。
如果您想要一个“单表”,以便可以同时查询两个表,这就是为什么会发明视图。创建一个视图,该视图是两个表的并集,并使用它。
作为程序员,我们学会排除冗余。这种诱惑有时会看到冗余,然后说,“嘿,我可以把这两个合并起来”。不过,在sql数据库中,这种本能是相反的:在sql中,冗余通常是通过添加表而不是删除表来消除的。
看看你的列名,我想知道
file_name
引用两个表中的图像文件,图像由id
? 如果是这样,您可以通过消除冗余来消除冗余,从而提高引用完整性album_images.file_name
. 如果您需要相册图像的文件名,这就是join的用途。