Sql server 用于存储调查矩阵问题和答案的db模式

Sql server 用于存储调查矩阵问题和答案的db模式,sql-server,relational-database,database-schema,survey,db-schema,Sql Server,Relational Database,Database Schema,Survey,Db Schema,我正试图创建一个数据库模式来存储调查问题和答案,但我想不出保存数据的模式 下面是我想存储在数据库中的示例问题: 任何关于我如何做到这一点的建议都是非常感谢的 PS:我已经浏览了这些帖子,但它们没有帮助: 编辑1 附言: 我想创建一个模式来存储SurveyMonkey.com和Qualtrics.com中的所有问题类型。有什么办法吗?MySQL版本 创建表格MatrixQuestion( usernameVARCHAR(45)非空注释“ex Michael”, 用餐VARCHAR(10)

我正试图创建一个数据库模式来存储调查问题和答案,但我想不出保存数据的模式

下面是我想存储在数据库中的示例问题:

任何关于我如何做到这一点的建议都是非常感谢的

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

编辑1

附言:

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

MySQL版本


创建表格
MatrixQuestion
(
username
VARCHAR(45)非空注释“ex Michael”,
用餐
VARCHAR(10)非空注释“早餐、午餐、晚餐前”,
rate
TINYINT NOT NULL注释'ex1:poor 2:average 3:fair 4:good 5:awesome', 主键(
用餐
用户名
费率
) );

您可以创建三个表作为

FoodType

FoodId - PK (TINYINT) -- 1,2,3
FoodName - varchar(50)-- breakfast, lunch, dinner
RatingId - PK (TINYINT) --1,2,3,4,5
RatingName - varchar(50) --poor,average,fair,good, awesome
RatingType

FoodId - PK (TINYINT) -- 1,2,3
FoodName - varchar(50)-- breakfast, lunch, dinner
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

中输入关于sql和问卷/调查的Google stackoverflow问题。了解EAV及其问题。(如在我的答案中搜索EAV)

UserName - varchar(100)
RatingId - FK (TINYINT)
FoodId - FK (TINYINT)
一种选择是对每个问题使用一个基表,其中一列表示垂直,一列表示水平,其中关于多个问题的查询查询数据库元数据&DBMS管理问题完整性。另一种选择是EAV,其中关于问题的每个查询都涉及到根据前一句话构建相应的表,完整性由您通过复杂的约束进行管理

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


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

谢谢您的回复。。。但是,你如何获得一个美食家的所有评级名称呢?也。。。这永远不是一个问题!尝试这样的操作
从UserRating-UR-JOIN-RatingType-RT-ON-RT.RatingId=UR.RatingId-JOIN-FoodType-FT-ON-FT.FoodId=UR.FoodId其中UR.FoodId=1选择UR.UserName、RT.RatingName、FT.FoodName:这与MatrixQuestion(用户名、膳食、价格)的答案基本相同,但没有添加ID。每个设计都应该有适当的类型检查。@Sunny:我们看不懂你的心思。解释“获得一个食物的所有评级名称”和“这不是一个问题总是”的意思。@philipxy感谢您的宝贵意见。我的意思是,vijayp没有提到FoodType表的任何外键,因此如何获得所有评级。我已经编辑了我的问题“这不是一个单一的问题总是”,PS。再次感谢你指出我的EAV。。。我要去调查一下。谢谢谢谢你的回复,但对答案不屑一顾@Sunny通过将需求编辑到您的问题中来解释这有什么问题。