我是SQL和数据库设计的新手。
我有一个任务,我需要创建一个包含用户(学生或教师)的表,每个用户可以在一个或多个组中,每个组可以获得一个或多个任务来解决。
我创建了设计,但我认为实体group
存在问题,因为当我在那里添加数据时,我无法做到(我只有ID,但没有其他数据。我确定我做错了。)
向user
实体添加数据正在发挥作用。
我应该更改什么或如何将用户添加到群组中?
答案 0 :(得分:2)
这样的事情应该有效:
USERS
-----
user_id (pk)
name
surname
email
GROUPS
------
group_id (pk)
groupName
TASKS
-----
task_id (pk)
taskName
USERSGROUPSM2M (Many-to-Many table)
-------------
id (pk)
user_id (fk)
group_id (fk)
您可以将user_id#1与group_id#1和#42或任意组合
一起使用GROUPSTASKSM2M (Another Many-to-Many table)
-------------
id (pk)
group_id (fk)
task_id (fk)
你可以将group_id#7与task_ids#3和#76或任意组合
一起使用答案 1 :(得分:1)
是否正在尝试为每个群组添加其他信息?如果是这样,在组表中添加更多列就像用户表一样,并在这些列中添加组相关数据:
group( id, name, type, description)
user(id, name, ...... )
因此,例如,如果您要更新任何群组的名称,只需更新该群组的 名称 id 强>
答案 2 :(得分:0)
这是一种可能的方法吗?
insert into [group] (group_id) values((SELECT ISNULL(MAX([group_id])+1,1) FROM [group] WITH(SERIALIZABLE, UPDLOCK)))
insert into [Entity3] values(1,1) //values(x,y) x - user_id, y - group_id where I want to add the user
insert into [Entity3] values(2,1)
insert into [Entity3] values(3,1)
这是按预期工作的,但也许更短或更容易?
答案 3 :(得分:-2)
你应该摆脱2个绿色实体。您可以将user_id值添加到组和任务实体中。您可能还想添加一个" task_id"列到您的组。然后,您将添加您的用户,并从中填充组表。然后,您将通过user_id OR group_id或两者分配您的任务。此外,在任务栏中,您可能希望添加"状态"用于定义任务是否预期完成或错误不完整的列。最后,为了更加资源友好,您可以选择创建一个"任务完成的"表是user_id,group_id,task_id和status。然后,您可以创建一个在给定时间范围之后归档旧任务的流程。
对于可视化构建轻量级数据库的优秀资源,您可以使用(https://www.vertabelo.com/),一旦线框正确如上所述,它就可以导出到SQL创建脚本。