0

有问题的项目可以是任何东西,在我的情况下,它们是用户上传的文件。

我有下表:

Files table -  file_id (pk), user_id (fk), file_name

如何存储每个文件的禁止状态?

我想过有一个banned_files 表,但是用户也可以删除文件,禁用文件和文件可以挂起。这意味着每个状态都有一个表格,这听起来不是一个好主意。

更新#1

一个文件应该可以有多个状态,例如一个文件可以被禁止也可以被删除。因此,如果用户取消删除他们的文件,它仍然会被禁止。

更新#2

当文件被禁止时,需要记录被禁止的原因。我的理由如下表:

Reasons table -  reason_id (pk), reason_text
4

2 回答 2

2

创建一个可能状态表,以及该表与文件表之间的交集表。如果一个文件通过交集表连接到它,它就具有特定的状态。

于 2013-09-17T08:48:54.373 回答
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.
于 2013-09-17T13:17:42.437 回答