如果有中心用户表和不同的角色表,如何在typeorm中设计实体

时间:2018-11-29 07:28:40

标签: database-design entity nestjs typeorm

假设我正在设计一个学校网站,并且有很多角色,例如学生,老师,管理员...

我的数据库设计看起来像这样

enter image description here

然后,考虑易于阅读和易于保存的方法,如何在typeorm中设计实体更好?

[更新] 最后,我像这样设计,我只是将所有角色合并到一个ROLE表中,而role_type表示不同的角色,例如。 5表示管理员,3表示老师,2表示学生。

但是,有2列冗余,school_id和class_id。 这2列对于管理员来说不是必需的,因为admin不属于任何一个学校或班级,但是如果我尝试将这2列放入其他人记录,这似乎是另一种浪费和复杂性 enter image description here

1 个答案:

答案 0 :(得分:2)

我很想这样做:

  1. 使所有表实体
  2. 角色表和“用户”之间具有@OneToOne关系

这样,您对角色表的查询可以检索“用户”关系,从而生成合理的JSON表示形式:

Request.GetOwinContext().Request.Host.Value

示例实体

{ 
  user_id: 11,
  phone: '555-444-3333',
  school_id: '1234567',
  user: {
    id: 11',
    nickname: 'Jack',
    username: 'jblack',
    ...
  }
}