首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个细节可以有两个主控元素吗?

一个细节可以有两个主控元素吗?
EN

Stack Overflow用户
提问于 2012-06-29 03:43:34
回答 2查看 218关注 0票数 1

我正在为如何建立一个数据库而苦苦挣扎,以应对有人(非匿名)填写问卷的情况。人与调查问卷之间的关系是多对多的--一个人完成多个调查问卷,一个调查问卷由多个人完成。因此,我有一个PERSON表、一个调查问卷表和一个连接表(PERSON- QUESTIONNAIRE )。

但是,我应该把问卷中出现的信息放在哪里呢?调查问卷项目有两个部分(两个字段),一个部分包含人们将回答的问题或陈述(项目),另一个部分包含用于回答(回答)的空间。假设所有这些都放在一个单独的表中,那么这个表与什么连接?(调查表表格...一个调查问卷可以有多个调查问卷项目?)

而且,如果我对最后一点的理解是正确的,那么我无论如何也想不出如何设置一个DB网格(在Delphi中),该网格将显示选定调查问卷和选定人员的ITEM和RESPONSE字段。(我知道如何使用支持db的组件编写主/详细关系,但这就像是两个主组件的详细关系。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-29 03:52:52

您将拥有一个表调查问卷-项目(问题)和一个单独的表调查问卷-回答(答案),因为单个问题将有多个答案,这些答案来自多个人。前者获取调查问卷的外键,而后者获取调查问卷的外键-项目和人员。

实际上,由于可以从其他表中查询该信息,因此可以省略PERSON- queried表。因此,对于设计,我建议:

问题调查: ID (主键)、描述等...

  • 用户: ID (主键)、姓名、

ID (主键)、SurveyID (FK)、Users、etc...

  • Answers: ID (PK)、QuestionID (FK)、UserID (FK)、Answer等...

DBGrid的视图将基于如下查询:

代码语言:javascript
复制
SELECT 
  Question, 
  Answer,
  ...
FROM 
  Questions INNER JOIN Answers ON Questions.ID = Answers.QuestionID
WHERE
  Questions.SurveyID = :SurveyID AND Answers.UserID = :UserID

在图形用户界面的另一部分中,选择SurveyIDUserID参数。

还有一个额外的好处:获取调查和用户的查询,作为单独连接表的替代方法,将如下所示:

代码语言:javascript
复制
SELECT
  Surveys.ID,
  Users.ID
FROM
  Users INNER JOIN (
    Answers INNER JOIN (
      Questions INNER JOIN (
        Surveys
      ) ON Questions.SurveyID = Surveys.ID
    ) ON Answers.QuestionID = Questions.ID
  ) ON Users.ID = Answers.UserID
GROUP BY
  Surveys.ID,
  Users.ID
票数 7
EN

Stack Overflow用户

发布于 2012-06-29 03:54:31

ITEM和RESPONSE应该是不同的表;它们之间是一对多的关系。(一个项目属于调查问卷,但许多人可以对该项目提供回答,因此每个项目都会有许多回答。)

我推荐这样的设置:

代码语言:javascript
复制
PERSON  <---- PERSON_QUESTIONNAIRE ----> QUESTIONNAIRE
                        ^                       ^
                        |                       |
                        |                       |
                     RESPONSE      ----->     ITEM

我没有任何关于如何设置DB网格的建议(不是Delphi专家),但有时解决设计问题将有助于技术解决方案变得更加清晰。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11251776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档