在数据库模式中包括评论表

时间:2018-07-24 10:36:55

标签: sql sql-server database-design

我有4个SQL Server表:

用户

UserId (PK)
Name

工作

JobId (PK)
Position

要点

CandidacyId (PK)
UserId (FK)
JobId (FK)
StatusId (FK)  

状态(值,如“已雇用”,“待机”等)

StatusId (PK)
Name

一个工作可以有多个候选人,每个用户一个。

雇用用户后,其候选资格状态将变为“已雇用”。

要查找填补职位的用户,我只需要寻找具有雇用身份的候选人。

欢迎对此结构提出任何建议...

问题

我需要允许用户查看其他用户在工作上的表现。

评论如下:

Reviews
--------
ReviewId (PK)
Rating
Comment

将此评论与其他表相关联的最好方法是:

  1. 我需要了解正在审核的用户;
  2. 我需要知道创建评论的用户;
  3. 我需要知道进行审核的工作。

1 个答案:

答案 0 :(得分:0)

我会引用Candidacies中的Reviews。与直接引用UsersJobs相比,这可以避免约束的重复,因此架构将更加简洁。它还可能具有一些性能优势,因为您在Reviews表上的索引较小,在UsersJobs上的FK较少。

此外,您可以这样看:带有Candidacy的{​​{1}}是一个实体(您可以将其称为status=Hired)。所有评论都是针对Position,而不是PositionJob完成的。您可以通过加入来获取工作和用户详细信息。雇用时,您也可以将工作和用户详细信息复制到User中,这样即使Candidacies / Job被更改(或删除),您也可以保留租用协议上的内容的历史记录以后。