我正在为调查系统建立一个数据库。
我们的员工使用有问题的类别填写调查问卷。员工可以给自己一个分数(例如6/10)。现在我们也有教练为该员工填写相同的测试。
我创建了以下数据库方案,但我不确定布局。例如:
另一种方法是在员工的答案表中获取coach_id,因为我将使用角色来检查某个员工是否是教练......
+------------+------------+---------+-----------+
| EmployeeID | QuestionID | CoachID | Answer |
+------------+------------+---------+-----------+
| 1 | 10 | null | 5/10 |
| 2 | 11 | null | 8/10 |
| 3 | 12 | null | 6/10 |
| 1 | 10 | 1 | 5/10 |
| 2 | 11 | 1 | 8/10 |
| 3 | 12 | 1 | 6/10 |
+------------+------------+---------+-----------+
我有一些用户 教练,因此当在answers表中填写coach_id时,我们会假设教练填写了此报告。我不确定这是怎么回事?
我正在使用员工表,他们是一种用户..但对于教练我不使用不同的模型。我应该这样做吗?因为教练也像员工,但角色不同。我正在使用各种角色,但我只是想知道是否需要这些员工/教练员表?
感谢您的时间!
答案 0 :(得分:1)
您的数据模型不需要完美地封装您的所有业务逻辑,事实上它通常既不能也不应该。这不仅是因为业务逻辑通过对已经结构化的数据进行操作,而且还因为它可能会发生变化:如果员工突然需要使用调查来评估教练,那么您的应用程序必须处理它,如果您已将权限模型烘焙到您的架构中,那么您正在查看对系统最基本级别的主要修订。不是一个好地方。
当您设计架构时,您需要注意您将对数据施加的规则,但仅限于您需要使其可以执行它们。您的主要关注点应该是合理地表达基础结构:在这里,您有用户。他们中的一些人只能自己填写调查问卷。其他人可以为任何用户填写调查,或者可能是任何不在自己角色的用户;我不清楚这一点,但无论哪种方式,这是一个商业规则,而不是结构差异,所以这种区别无关紧要。