【问题标题】:Creating tables for my todo list application [closed]为我的待办事项列表应用程序创建表 [关闭]
【发布时间】:2013-05-05 13:26:57
【问题描述】:

我已经开始在 php 中开发一个待办事项列表应用程序。我之前没有研究过关系数据库,所以我对数据库的结构感到困惑。我想保持简单。

这是我的计划:

  • 用户 U_id, 用户名, 密码, 电子邮件

  • 任务 t_id, 任务名称, 描述, u_id 参考用户表

  • 列表 盖, 列表名称, ?

我困惑的主要原因是

  1. 如何连接列表和任务? //每个用户将能够创建多个列表,例如 - 家庭、个人、办公室、家庭工作等。

  2. 连接用户和列表的最佳方式是什么? //每个用户可以有多个任务列表,如何管理。

【问题讨论】:

  • 使用带有 ORM 的框架,例如symfony.com
  • 我可以随时使用 ORM,但程序员应该能够在不使用框架的情况下做这样的事情。
  • 公平点。程序员也会知道要寻找 SQL 教程......(而且,fwiw,这个问题读起来就像 CS 一年级学生的家庭作业。如果这是你的情况,我会更新我的建议:学会做这些东西使用 ORM,然后深入了解血淋淋的细节并了解其中的内容。)

标签: php mysql sql phpmyadmin


【解决方案1】:

要了解列表中的所有任务,如果任务可以属于一个或多个列表,则需要一个关系表。

  • 用户 U_id、用户名、密码、电子邮件 //一个用户可以有零个或一个或多个列表

  • Tasks t_id, task_name, description // 一个任务可以属于零个或一个或多个列表

  • Lists L_id, list_name, U_id // 一个列表只能属于一个用户

  • Lists_Tasks t_id, L_id // 一个任务可以属于一个或多个列表

从列表中获取所有任务

SELECT T.* FROM Tasks AS T
JOIN Lists_Tasks AS L_T ON T.t_id = L_T.t_id
WHERE L_T.l_id = id_from_the_list

从用户那里获取所有列表

SELECT * FROM Lists WHERE U_id = id_of_user

【讨论】:

    【解决方案2】:
    1. n:m 关系表:哪个列表与任务相关
    2. 每个列表都可以有一个 u_Id 字段。当多个用户可以拥有相同的列表时,也可以使用 n:m 关系

    n:m 关系示例:

    list_task_relation: list_id, task_id

    【讨论】:

      【解决方案3】:

      保留一个 U_id 是您的 Lists 表。

      另外,在你的 Tasks 表中保留一个 l_id

      在继续之前阅读MySQL Tutorial。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-04
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多