一些简单的表结构建议

本文关键字:结构 构建 简单 | 更新日期: 2023-09-27 17:56:16

数据库的菜鸟,寻找一些建议/指针来让我入门。

我需要创建一个数据库来保存许多用户的详细信息以及他们必须每周完成的任务列表。 然后,此数据将用于显示用户表以及作业的每周完成状态。 此表也应该能够显示我前几周的状态。

作业

列表必须允许添加新作业和删除旧作业。

我目前有以下表格:

-----
User
-----
ID
Name
Email
A number of users will be entered into this table.

----
Job
----
ID
Name
Description
A list of jobs (starting at 4) which each user has to mark as completed each week, this list must be able to grow.

---------
WorkDone
---------
ID
User_ID
Job_ID
Timestamp
Used to record when a user has marked a job as complete.

我的表结构正常还是我从错误的角度来了? 我需要编写一个查询,允许我返回:

User.ID (1)  |  Job 1 completed status  |  Job 2 completed status  |  Job (n) completed status
User.ID (2)  |  Job 1 completed status  |  Job 2 completed status  |  Job (n) completed status
User.ID (n)  |  Job 1 completed status  |  Job 2 completed status  |  Job (n) completed status

在这里没有运气,我只是在寻找那个"doh"时刻。

任何帮助,不胜感激。

一些简单的表结构建议

如果您希望返回如下结果

用户标识、作业 1 状态、作业

2 状态、作业 3 状态
用户 ID(2)、作业 1 状态、作业 2 状态、作业 3 状态

您需要透视结果集、使用游标或使用合并运算符运行 try。

让数据符合这种模式会容易得多

用户 ID, 作业 1
userid, job2
userid, job3
...
...
用户 ID(2), 作业1
用户 ID(2), 作业2
....

用于此的 SQL 将基于设置运行得更快

Select * 
from join workdone as w 
inner join job as j on w.jobid = j.jobid
inner user as u on u.userid = w.userid