【问题标题】:Many-to-many table with ID and Relation带有 ID 和 Relation 的多对多表
【发布时间】:2017-01-11 12:52:09
【问题描述】:

我正在尝试建立一个管理员数据库

可以创建可以有任务的列表,现在棘手的部分是,所有用户都可以将任务设置为已完成,但仅限于自己。

这是我目前的方案

这是正确的处理方式吗?

【问题讨论】:

  • "所有用户都可以将任务设置为已完成,但仅限于他自己。"这将是应用程序逻辑的一部分,数据库不需要这样做,对吗? 或者您的问题是将这个逻辑合并到数据库层中?
  • 感谢您的回复。我的意思是完成的字段对于 user_id 和 task_id 应该是唯一的。
  • ...只要在user_tasks 表中对user_idtask_idUNIQUE 约束,那么您就可以了。 stackoverflow.com/q/635937/3000179
  • 所以可以在多对多表中有一个ID字段并将其与user_tasks表相关联吗?以前从未这样做过,但我没有看到任何其他方式。谢谢!

标签: mysql database


【解决方案1】:

您实际上并不需要 completed 标志,因为如果任务未完成,添加行将毫无意义

create table user_list_tasks_completion (
  user_id int references users(user_id),
  list_task_id int references list_tasks(id),
  primary key (user_id, list_task_id)
);

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2013-02-05
    • 2011-03-09
    • 2013-05-03
    • 2019-03-25
    • 2018-01-14
    相关资源
    最近更新 更多