0

我正在尝试创建一个数据库架构来存储调查问题和答案,而我无法想到保存数据的架构。

这是我要存储在数据库中的示例问题:

在此处输入图像描述

任何关于我如何做到这一点的指示都非常感谢!

PS:我已经在 SO 上浏览了这些帖子,但它们没有帮助:

具有动态列和动态行的关系数据库系统

在 DB 中存储距离矩阵

具有不同数据类型答案的调查 SQL 设计

编辑 1

PS:

我想创建一个模式来存储来自 SurveyMonkey.com 和 Qualtrics.com 的所有问题类型。有什么办法吗?

4

3 回答 3

1

关于 sql 和问卷/调查的 Google stackoverflow 问题。阅读有关 EAV 及其问题的信息。(例如,搜索我的 EAV 答案)。

一种选择是为每个问题使用一个基表,其中垂直列和水平列,其中有关多个问题的查询查询数据库元数据并使用 DBMS 管理问题完整性。另一种选择是 EAV,其中关于问题的每个查询都涉及从前一句构建相应的表,并且完整性由您通过复杂的约束来管理。

第一个选项的唯一缺点是当前的 DBMS 不会使 DDL 更新像 DML 更新那样高效。您应该构建您的软件以独立于您当前选择的选项。就您使用 EAV 而言,您正在编写自己的 DBMS。

您可以找到答案和调查的示例调查数据导出和下载格式,例如SurveyMonkey.com和 Qualtrics.com(数据调查)。

于 2014-11-25T08:34:22.083 回答
0

MySQL版本

CREATE TABLE MatrixQuestion ( username VARCHAR(45) NOT NULL COMMENT 'ex Michael', meal VARCHAR(10) NOT NULL COMMENT 'ex breakfast, lunch, dinner', rate TINYINT NOT NULL COMMENT 'ex 1:poor 2:average 3:fair 4:good 5:awesome', PRIMARY KEY (meal, username, rate) );

于 2014-11-20T07:56:31.950 回答
0

您可以创建三个表

桌子FoodType

FoodId - PK (TINYINT) -- 1,2,3
FoodName - varchar(50)-- breakfast, lunch, dinner

桌子RatingType

RatingId - PK (TINYINT) --1,2,3,4,5
RatingName - varchar(50) --poor,average,fair,good, awesome

桌子UserRating

UserName - varchar(100)
RatingId - FK (TINYINT)
FoodId - FK (TINYINT)

现在为每个用户反馈在表格中输入UserRating

于 2014-11-20T08:03:19.533 回答