我网站的用户可以上传文件。在question的帮助下,我提出了两种用于建模文件状态的设计。
示例状态为 - 已删除,待处理,已禁止,已上传
文件 - file_id(pk)| user_id(fk)| FILE_NAME
禁止文件 - file_id(fk)| ban_reason | admin_user |时间
已删除的文件 - file_id(fk)| perm_delete |时间| DELETED_BY
待处理文件 - file_id(fk)| start_time | waiting_for
文件 - file_id(pk)| user_id(fk)| FILE_NAME
状态 - status_id(pk)status_text
文件状态 - file_id(fk)| status_id(fk)| info_id(fk)< - 这链接到另一个表中存储有关此状态信息的记录,例如(ban_reason,admin_user,time)
禁止信息 - info_id(fk)| ban_reason | admin_user |时间
已删除信息 - info_id(fk)| perm_delete |时间| DELETED_BY
待定信息 - info_id(fk)| start_time | waiting_for
我对设计A的主要关注是,在选择文件时,我必须连接几个表来检查它们是否被禁止等。设计B旨在防止需要执行连接,因为我只会需要加入一个表格。
您会推荐哪种设计?
设计A的选择查询是否太慢?
答案 0 :(得分:0)
如果您担心性能,可以在文件表中包含一个名为active的BIT列。 1表示它是活动的,0表示它不是。这可以让你找到只有一个表的所有活动文件,但是你会有一些开销来维护它。这与设计A相吻合。