mysql - 元素状态关系数据库设计

标签 mysql database-design relational-database

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

我有下表:

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/

相关文章:

mysql - 连接 2 个具有相同字段名称的表

mysql - 多次引用一个外键

mysql - 使用 MySQL 在大表上运行更新非常慢

sql-server - 人员可用性的数据库设计

mysql - 映射到另一个表(其实际值保存在 MySQL 中)的表的效率

php - 匹配 url mysql

MySQL HELP - 需要从所有类(class)的三个表中打印,其中注册的学生少于六名

mysql - 如何在不知道类别有多深的情况下获取与类别相关的所有子类别。

PHP PDO 和 MySQL AGAINST() 函数

mysql - 在你的数据库设计中有循环关系总是不好的做法吗