【发布时间】:2017-04-23 22:59:45
【问题描述】:
我正在为调查系统构建一个数据库。
我们有员工使用有问题的类别填写调查表。员工可以给他/她自己打分(例如 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 |
+------------+------------+---------+-----------+
教练
我有一些用户是教练,因此当在答案表中填写coach_id 时,我们假定教练填写了此报告。我不确定这是解决方法吗?
员工
我正在使用员工表,他们是一种用户。但对于教练,我没有使用不同的模型。我应该这样做吗?因为教练也像员工,但角色不同。我对所有事情都使用角色,但我只是想知道是否需要这些员工/教练表?
感谢您的宝贵时间!
【问题讨论】:
-
如果教练是用户,员工是用户,那么根本不要把他们分开。让您的结构允许任何用户为任何其他用户填写调查表,并确保只有具有指导角色的用户才能分别为其他用户填写调查表。
-
感谢您的回答,所以您会摆脱员工表吗?并从 answers 表链接 2 次到 users 表?
-
是的。如果所有员工都是用户,则单独的表不会添加任何内容,除了必须将额外对象加入查询中带来的不便。您所要做的就是将您的 answers.employee_id 和 answers.coach_id 外键指向用户表。
-
这就是我一直在寻找的答案!如果你想让它成为一个真正的答案,我会接受!
-
还有一个问题! :) 我现在如何将用户链接到客户端?员工属于客户,但如果我摆脱那张表..我是否将 client_id 添加到用户?可以为空,还是再添加一张表?谢谢!
标签: mysql database database-design