我该如何建模这个数据库?

时间:2013-11-01 02:31:05

标签: php mysql

我正在使用网络应用来评估员工。在php表单中,我添加了worker的名称,有10个问题。每个问题都有选项(a,b,c,d)。 例如:

  1. 工作质量。
    • a)优秀
    • b)好
    • c)不好
    • d)太糟糕了
  2. 专业知识。
    • a)优秀的知识
    • b)没问题
    • c)男人知之甚少
    • d)什么都不知道
  3. 我的问题是我无法正确建模MYSQL数据库。我计划制作一个问题表,一个用于答案,另一个用于工作区域。但我不能这样做。 请帮我模一下这个基地? 我认为他们应该只是那些表:“tbl_worker”,“tbl_alternative”,“tbl_question”,“tbl_answer”。

    Model

2 个答案:

答案 0 :(得分:0)

如果是我,我会使用以下表格和字段。

tbl_worker
    id
    name

tbl_questions
    id
    question

tbl_question_answer
    id
    question_id
    answer

tbl_report
    id
    worker_id 

tbl_worker_report
    id
    report_id
    question_answer_id

将所有问题都放在问题表中,然后使用多个(答案)ToOne(问题)关系将答案与答案结合起来。

然后创建一个设置工作人员ID的新报告。然后遍历所有问题并将answer,id和report_id保存到tbl_worker_report表中。

然后,您可以通过查找具有您要查看的报告的报告ID的所有行来获取所有报告,从而查看结果。并且因为你的答案也引用了你可以在需要的时候得到的问题。

答案 1 :(得分:0)

想想你拥有的东西。你有一个“工人”,一个“问题”有“可能的答案”,然后你可能有“问题一个工人回答”(这将允许你对不同的工人有不同的问题但不强迫你)

工人会有一个主键+你收集的关于工人的数据。 问题将有一个主键+您收集的有关该问题的数据。 可能的答案将有一个主键+一个外键问题+你收集什么数据的问题的答案 回答工人的问题将有一个主键+问题的外键+可能答案的外键+工人的外键+您需要收集的任何其他数据。

实施例

Worker
+id : int
+name : string

Question
+id : int
+text : string

PossibleAnswer
+id : int
+question_id : int
+text : string

AnsweredQuestion
+id : int
+question_id : int
+possibleanswer_id : int
+worker_id : int
+time_answered : datetime