0

我网站的用户可以上传文件在这个问题的帮助下,我提出了两种用于建模文件状态的设计。

示例状态为 -已删除、待处理、禁止、上传

设计 A - 单独的表格

文件-file_id(pk) | user_id(fk) | 文件名

禁止文件- file_id(fk) | 禁止原因 | 管理员用户 | 时间

已删除的文件- file_id(fk) | 永久删除 | 时间 | 删除者

待处理文件- file_id(fk) | 开始时间 | 等待


设计 B - 数据透视表和单独的信息表(两者)

文件-file_id(pk) | user_id(fk) | 文件名

状态- status_id(pk) status_text

文件状态- file_id(fk) | status_id(fk) | info_id(fk) <--这链接到另一个表中的记录,该表存储有关此状态的信息,例如(ban_reason、admin_user、time)

禁止信息- info_id(fk) | 禁止原因 | 管理员用户 | 时间

已删除信息- info_id(fk) | 永久删除 | 时间 | 删除者

待处理信息- info_id(fk) | 开始时间 | 等待


我对设计A的主要关注点是,选择文件时,我必须在几个表上加入以检查它们是否被禁止等。设计B旨在防止执行连接的需要,因为我只需要与一张表加入.

你会推荐哪种设计?

设计 A 的选择查询会不会太慢?

4

1 回答 1

0

如果您担心性能,您可以在文件表中包含一个名为 active 的 BIT 列。1 表示它处于活动状态,0 表示不处于活动状态。这将让您找到只有一个表的所有活动文件,但维护它会有一些开销。这与设计 A 很相配。

于 2013-09-23T19:57:16.867 回答