关于数据库设计的初学者问题

Kev*_*vin 8 mysql database-design

这是我以前的一个后续问题.我们大三学生正在为大学做志愿工作的网站开发.我们正在使用PHP + MySQL技术.现在我主要负责使用MySQL的数据库开发,但我是一名MySQL设计师.我现在要求提供一些关于编写我的第一张表的提示,以获得它,然后我可以很好地处理其他表.问题是这样的,我们的网站要做的第一件事就是向用户提供调查,以便在他们想要使用巴士服务时收集他们的偏好.这就是我要开始数据库开发的地方.用户需求文档指定对于调查,应该有

客户方:

客户可以通过一组预定义的问题和答案获得调查,并且应该很容易填写

业务方面:

Survery信息.将被存储,输出和显示以供分析.

它听起来不是太多工作,我不需要关心任何PHP的东西,但我只是困惑:我应该创建一个名为"Survery"的表,或者两个表"Survey_business"和"Survey_Customer",以及如何数据库可以存储信息吗?如果你们能给我一些帮助以便我能够继续努力,我将不胜感激,因为第一步始终是最艰难和最重要的.谢谢.

Chr*_*mer 9

我会使用多个表.一个用于调查本身,另一个用于问题.如果您想选择多项选择题,可能还有一个答案选项.另一个答案表,每个问题每个问题都有一个记录.当您考虑多种类型的答案(选择,填空单行,自由格式多行等)和显示选项(单选按钮,下拉列表,文本框,yada yada)时,复杂性会升级,但对于我认为,这是一个简单的多选择示例,只有一种渲染类型.

就像是:

-- Survey info such as title, publish dates, etc.
create table Surveys
(
    survey_id number,
    survey_title varchar2(200)
)

-- one record per question, associated with the parent survey
create table Questions  
(
    question_id number,
    survey_id number,
    question varchar2(200)
)

-- one record per multiple-choice option in a question
create table Choices
(
    choice_id number,
    question_id number,
    choice varchar2(200)
)

-- one record per question per answerer to keep track of who
-- answered each question
create table Answers
(
    answer_id number,
    answerer_id number,
    choice_id number
) 
Run Code Online (Sandbox Code Playgroud)

然后使用应用程序代码:

  1. 插入新的调查和问题.
  2. 在人们参加调查时填写答案.
  3. 调查结果报告正在进行中.

作为数据库开发人员,您可以与Web应用程序开发人员一起设计查询,以便为每个任务填充和检索适当的数据.