【问题标题】:Database design issue - add tasks to users数据库设计问题 - 向用户添加任务
【发布时间】:2013-10-21 05:01:10
【问题描述】:

我有一张桌子:

USER {UserId, Email ...}

此表与以下对象处于 1:1 关系:

PROFILES {UserId, FirstName, LastName ...}

我有一个角色表,用户可以在其中请求角色 PROFESSOR。 一位教授可以给某个学生分配不同的任务。 所以我试过了:

UserProfessors {ProfessorId, StudentId} // both related to profiles table

这就是我连接教授和学生的方式,但我补充说:

Tasks{TaskId, Title, Description ...}

但是现在不知道如何加入这个表?
对这种设计有什么建议吗?

【问题讨论】:

    标签: sql sql-server database database-design relational-database


    【解决方案1】:

    要将任务连接到用户,您需要一个包含以下字段的 ProfessorStudentTask

     ProfessorID -- links to Users
     StudentID -- links to Users
     TaskID
    

    或者您可以将任务链接到UserProfessors

     UserProfessorID -- links to UserProfessors via the primary key of UserProfessors
     TaskID 
    

    【讨论】:

      【解决方案2】:

      我会做类似

      的事情

      1)表一用户列(用户ID、用户名、dob、.....)

      2) 表二 PROFESSOR 和 UserID,ProfID, Dept, bla bla 教授

      3) 表三 Students 分别为 UserID、StudentID、bla bla

      4) 表四个任务,列如 (StudentID, ProfID, TaskID, bla bla bla)

      【讨论】:

      • 如果您对 DATABASE NORMALIZATION 进行一些研究,它将让您更好地了解您需要做什么来减少数据冗余、减少存储和原子性,并且显然您比其他任何人都更了解您的业务需求在这里,因此,一旦您对数据标准化有了更好的了解,您将能够比其他任何人更好地回答这个问题:)
      • 我认为,在您继续构建数据库之前,您会充分关注如何进行数据库设计,最好现在花时间做正确的事情,而不是稍后尝试修复它当你遇到问题时。看看这是一本好书sqlmag.com/database-performance-tuning/…
      猜你喜欢
      • 1970-01-01
      • 2012-05-10
      • 2021-06-14
      • 1970-01-01
      相关资源
      最近更新 更多