有问题的项目可以是任何东西,在我的例子中,它们是用户上传的文件。
我有下表:
Files table - file_id (pk), user_id (fk), file_name
如何存储每个文件的禁止状态?
我想过有一个banned_files表,但是用户也可以删除文件,禁用文件和文件可以挂起。这意味着每个状态都有一个表格,这听起来不是个好主意。
更新 #1
一个文件应该可以有多个状态,例如一个文件可以被禁止也可以被删除。因此,如果用户取消删除他们的文件,它仍然会被禁止。
更新 #2
当一个文件被禁止时,需要记录禁止的原因。我在下表中有我的理由:
Reasons table - reason_id (pk), reason_text
最佳答案
像这样的东西可以工作:
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.
关于mysql - 元素状态关系数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18844815/