我有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
将此评论与其他表相关联的最好方法是:
答案 0 :(得分:0)
我会引用Candidacies
中的Reviews
。与直接引用Users
和Jobs
相比,这可以避免约束的重复,因此架构将更加简洁。它还可能具有一些性能优势,因为您在Reviews
表上的索引较小,在Users
和Jobs
上的FK较少。
此外,您可以这样看:带有Candidacy
的{{1}}是一个实体(您可以将其称为status=Hired
)。所有评论都是针对Position
,而不是Position
或Job
完成的。您可以通过加入来获取工作和用户详细信息。雇用时,您也可以将工作和用户详细信息复制到User
中,这样即使Candidacies
/ Job
被更改(或删除),您也可以保留租用协议上的内容的历史记录以后。