gpt4 book ai didi

MySQL数据库结构帮助

转载 作者:行者123 更新时间:2023-11-29 02:06:54 25 4
gpt4 key购买 nike

我正在做一个测验项目,我想以这样的方式创建一个 mysql 结构:

questionID:唯一的问题标识号(主键)
testID:一个唯一的测试标识号(题目属于本次测试)(主键)
questionOrder:问题在测验问题中的顺序,即该问题是测验中的第n个问题。我希望这个值来自mysql,这样当我向db插入一个新问题时,我不必计算它
一个问题可以在多个不同的测试中。

我有几个问题:
1) 我有以下代码,但我得到:
不正确的表定义; auto列只能有一个,必须定义为key
我怎样才能解决这个问题?

2) 这种结构不允许一个问题属于多个测验。有什么办法避免这种情况吗?

3) 你认为这个结构好/优化吗,你能提出更好的建议吗?


CREATE TABLE `quiz_question` (
`questionID` int(11) NOT NULL auto_increment,
`quizID` int(11) NOT NULL default '0',
`questionOrder` int(11) NOT NULL AUTO_INCREMENT,
`question` varchar(256) NOT NULL default '',
`answer` varchar(256) NOT NULL default '',
PRIMARY KEY (`questionID`),
UNIQUE KEY (`quizID`, `questionOrder`),
KEY `par_ind` (`quizID`, `questionOrder`)
) ENGINE=MyISAM;

ALTER TABLE `quiz_question`
ADD CONSTRAINT `0_133` FOREIGN KEY (`quizID`) REFERENCES `quiz_quiz` (`quizID`);

CREATE TABLE `quiz_quiz` (
`quizID` int(11) NOT NULL auto_increment,
`topic` varchar(100) NOT NULL default '',
`information` varchar(100) NOT NULL default '',
PRIMARY KEY (`quizID`)
) ENGINE=MyISAM;

感谢阅读本文。

最佳答案

1) 每个表只能有一个 AUTO_INCREMENT 列。应该是一把 key 。一般来说,它的一部分/就是PK。

2) “测验”是由问题组成的实体。你应该有 3 个表: 1 - quiz_question:quest_id,问题,答案 2 - quiz_quiz:quiz_id、主题、信息 3 - quiz_fact:quiz_id、quest_id、quest_order

测验和问题表包含每个项目(测验/问题)的信息。 quiz_fact 定义了测验的组成方式(此测验按此顺序包含此问题)。

3) 我唯一的建议是改用 Drizzle ; ) 不过说真的,玩玩东西 - 通常是“足够好”。如果它适合您的需要,为什么要修补?否则,一旦启动并运行,您就可以提出更详细的问题(即我的查询在此类操作上太慢)。

关于MySQL数据库结构帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4434196/

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