我正在尝试创建一个数据库架构来存储调查问题和答案,而我无法想到保存数据的架构。
这是我要存储在数据库中的示例问题:
任何关于我如何做到这一点的指示都非常感谢!
PS:我已经在 SO 上浏览了这些帖子,但它们没有帮助:
编辑 1
PS:
我想创建一个模式来存储来自 SurveyMonkey.com 和 Qualtrics.com 的所有问题类型。有什么办法吗?
我正在尝试创建一个数据库架构来存储调查问题和答案,而我无法想到保存数据的架构。
这是我要存储在数据库中的示例问题:
任何关于我如何做到这一点的指示都非常感谢!
PS:我已经在 SO 上浏览了这些帖子,但它们没有帮助:
编辑 1
PS:
我想创建一个模式来存储来自 SurveyMonkey.com 和 Qualtrics.com 的所有问题类型。有什么办法吗?
关于 sql 和问卷/调查的 Google stackoverflow 问题。阅读有关 EAV 及其问题的信息。(例如,搜索我的 EAV 答案)。
一种选择是为每个问题使用一个基表,其中垂直列和水平列,其中有关多个问题的查询查询数据库元数据并使用 DBMS 管理问题完整性。另一种选择是 EAV,其中关于问题的每个查询都涉及从前一句构建相应的表,并且完整性由您通过复杂的约束来管理。
第一个选项的唯一缺点是当前的 DBMS 不会使 DDL 更新像 DML 更新那样高效。您应该构建您的软件以独立于您当前选择的选项。就您使用 EAV 而言,您正在编写自己的 DBMS。
您可以找到答案和调查的示例调查数据导出和下载格式,例如SurveyMonkey.com和 Qualtrics.com(数据或调查)。
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
)
);
您可以创建三个表
桌子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