有问题的项目可以是任何内容,在我的情况下,它们是用户上传的文件。
我有下表:
Files table - file_id (pk), user_id (fk), file_name
如何存储每个文件的禁止状态?
我想过有一个banned_files表,但是用户也可以删除文件,禁用文件和文件可以等待。这意味着每个状态的表格,这听起来不是一个好主意。
文件应该能够具有多个状态,例如,文件可以被禁止并且也可以被删除。因此,如果用户取消删除他们的文件,它仍然会被禁止。
当文件被禁止时,需要记录禁令的原因。我的理由如下表所示:
Reasons table - reason_id (pk), reason_text
答案 0 :(得分:2)
创建一个可能状态的表,以及它与Files表之间的交集表。如果文件通过交集表连接到该文件,则该文件具有特定状态。
答案 1 :(得分:2)
这样的事情可行:
files
id unsigned int(P)
user_id unsigned int(F users.id)
path varchar(200)
files_statuses
id unsigned int(P)
status_id unsigned int(F statuses.id)
reason_id unsigned int(F reasons.id) ALLOW NULL, DEFAULT NULL
reasons
id unsigned int(P)
description varchar(100) // Offensive material, etc.
statuses
id unsigned int(P)
description varchar(50) // Banned, Deleted, etc.