gpt4 book ai didi

mysql - 如何拥有一个包含两种变量列的表

转载 作者:行者123 更新时间:2023-11-30 01:16:14 25 4
gpt4 key购买 nike

我有一个表格问题,有两种操作系统问题,T/F 问题和多项选择问题。是否可以制作一个动态表格,其中包含问题的一般列和T/F问题和选择题的特定列?

谁能帮助我如何创建模型来解决这个问题?谢谢。

最佳答案

将您的问题及其选择分成单独的表格。第三个表定义问题及其选项之间的映射。对表格进行标准化将有助于避免重复 True 和 False 等选项组。

这是表模式的粗略 UML 草图:

Database Tables Diagram

您还需要向表中添加主/外键约束。为了简洁起见,我省略了它们。

CREATE TABLE QUESTIONS
(`Question_ID` int, `Question_Text` varchar(50), `Answer_ID` int);

INSERT INTO QUESTIONS
(`Question_ID`, `Question_Text`, `Answer_ID`)
VALUES
(1, 'True/False question?', 1),
(2, 'Multiple-choice question?', 5);

CREATE TABLE OPTIONS
(`Option_ID` int, `Option_Text` varchar(25));

INSERT INTO OPTIONS
(`Option_ID`, `Option_Text`)
VALUES
(1, 'TRUE'),
(2, 'FALSE'),
(3, 'Option 1'),
(4, 'Option 2'),
(5, 'Option 3'),
(6, 'Option 4');

CREATE TABLE QUESTION_OPTIONS
(`QnA_ID` int, `Question_ID` int, `Option_ID` int);

INSERT INTO QUESTION_OPTIONS
(`QnA_ID`, `Question_ID`, `Option_ID`)
VALUES
(1, 1, 1),
(2, 1, 2),
(3, 2, 3),
(4, 2, 4),
(5, 2, 5),
(6, 2, 6);

现在,只需连接表格即可获取问题的所有相关详细信息。

SELECT Option_Text,
CASE
WHEN q.Answer_ID = o.Option_ID THEN 1
ELSE 0
END Is_Answer
FROM QUESTIONS q, OPTIONS o, QUESTION_OPTIONS qo
WHERE qo.Option_ID = o.Option_ID
AND q.Question_ID = qo.Question_ID
AND q.Question_ID = 1

SELECT Option_Text,
CASE
WHEN q.Answer_ID = o.Option_ID THEN 1
ELSE 0
END Is_Answer
FROM QUESTIONS q, OPTIONS o, QUESTION_OPTIONS qo
WHERE qo.Option_ID = o.Option_ID
AND q.Question_ID = qo.Question_ID
AND q.Question_ID = 2

输出:

+--------------+-----------+
| OPTION_TEXT | IS_ANSWER |
+--------------+-----------+
| TRUE | 1 |
| FALSE | 0 |
+--------------+-----------+

+--------------+-----------+
| OPTION_TEXT | IS_ANSWER |
+--------------+-----------+
| Option 1 | 0 |
| Option 2 | 0 |
| Option 3 | 1 |
| Option 4 | 0 |
+--------------+-----------+

如果您愿意,您可以在 SQL Fiddle 调整表格。

关于mysql - 如何拥有一个包含两种变量列的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19033053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com