我正在设计一个数据库表和随之而来的vb表。该表格将向每个用户询问大约40个预定义的是/否问题。如何设计数据库表以便正确存储答案。我宁愿避免在桌子上有40个左右的属性。有没有办法设计它,以便当您查询特定用户的答案时,您会看到问题并在其旁边找到答案(是/否) 谢谢
答案 0 :(得分:1)
我就是这样做的。列出QUESTION表中的所有问题。这也意味着您可以随时添加新行来添加新问题。
USER
UserId |用户名|电子邮件|等..
问题
QuestionId |问题
USER_RESPONSE
UserId | QuestonId |响应
SELECT
user.Name,
question.Qustion,
user_response.Responce
FROM
user
INNER JOIN user_response
ON user.UserId = user_response.UserId
INNER JOIN question
ON user_response.QuestionId = question.QuestionId
WHERE
user.UserName = 'JoeBloggs'
答案 1 :(得分:1)
好的,用最简单的术语表示(“用户”)表以UserID作为字段1开始。 制作包含所有问题的Q表(仅当您不想在程序中对其进行硬编码时) 制作一个答案表,这个表应该有2列......用户ID和答案
你不需要外键这些2虽然从长远来看它在删除数据时更好(它会让你知道为什么你不能删除用户,例如,如果他仍然有qeustions那么没有被删除,这是为了避免你真正不需要保留的空间,因为用户将被删除)
然后您所做的就是当您一次提交问题1或同时提交所有问题时,请将UserID提供到答案表中,并附上答案。所以用户1总是1,答案会改变。
如果我是你,我也会创建问题表。所以整个事情看起来像
用户表
UserID,UserName,UserPass,User ...,User ......等
问题表
QuestionID,问题
答案表
用户ID,QuestionID,应答
因此,在您的程序中,因为您知道哪个问题对应于哪个questionID,所以您将插入
1(UserID),1(to40forQuestionID),answer.text(Answer)进入答案表
然后你总是能够从答案表中获取所有信息,知道答案属于哪个问题以及用户等等。
如果你需要术语以及他的解释让我兴奋,我试图将所有的术语留下来进行简化,如果你不了解它们的话。
答案 2 :(得分:0)
您可以将问题和答案存储在单独的表格中。具体来说,您将拥有一个Questions
表,其中包含40个是/否问题。 Answers
表将包含问题标识符,用户标识符和答案的列(对于是/否问题,您可以使用布尔值)。 AnswerChoices
也可以是一个单独的表格。
根据您的需求,有很多可能的灵活性。如果同一个用户可以多次进行调查,您可以拥有一个用户调查表,并将答案链接到该表。如果需要进行多次调查,您还可以使用Surveys-Questions映射表。