构建调查数据库方案

时间:2016-12-08 16:12:20

标签: mysql database database-design

我正在为调查系统建立一个数据库。

  

我们的员工使用有问题的类别填写调查问卷。员工可以给自己一个分数(例如6/10)。现在我们也有教练为该员工填写相同的测试。

我创建了以下数据库方案,但我不确定布局。例如:

enter image description here

另一种方法是在员工的答案表中获取coach_id,因为我将使用角色来检查某个员工是否是教练......

enter image description here

实体

  • 客户(或公司)已分配员工。客户(公司)的所有员工都必须进行扫描(调查)
  • 用户是一般可登录实体,他们有用户名,密码和角色
  • 有2个角色员工教练,教练可以填写某些员工的调查,因此我们得到了员工和教练的分数。 / LI>
  • 一个类别有很多问题
  • 回答(见下面的例子)
  • 扫描是类别和问题的集合,因此多年来,1个客户(公司)可以进行多次扫描。

答案示例表

+------------+------------+---------+-----------+
| 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时,我们会假设教练填写了此报告。我不确定这是怎么回事?

员工

我正在使用员工表,他们是一种用户..但对于教练我不使用不同的模型。我应该这样做吗?因为教练也像员工,但角色不同。我正在使用各种角色,但我只是想知道是否需要这些员工/教练员表?

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

您的数据模型不需要完美地封装您的所有业务逻辑,事实上它通常既不能也不应该。这不仅是因为业务逻辑通过对已经结构化的数据进行操作,而且还因为它可能会发生变化:如果员工突然需要使用调查来评估教练,那么您的应用程序必须处理它,如果您已将权限模型烘焙到您的架构中,那么您正在查看对系统最基本级别的主要修订。不是一个好地方。

当您设计架构时,您需要注意您将对数据施加的规则,但仅限于您需要使其可以执行它们。您的主要关注点应该是合理地表达基础结构:在这里,您有用户。他们中的一些人只能自己填写调查问卷。其他人可以为任何用户填写调查,或者可能是任何不在自己角色的用户;我不清楚这一点,但无论哪种方式,这是一个商业规则,而不是结构差异,所以这种区别无关紧要。