mysql—在一个表中创建一个数据类型,该表是对其他表的引用列表

ulmd4ohb  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(363)

我需要用以下想法创建一个数据库:
准备问题:
老师为考试准备了一堆问题。这个问题包括一篇课文和四个答案。其中一个答案被标记为正确答案。
数据库中的每个问题匹配一个主题,以及一个或多个关于该主题的课程。每个问题都有一个唯一的数字,5位数。例如:第02105号:科目:数学(02),题号(105)。
考试准备:
教师建立包括数据库中的问题的考试。每次考试都有一个数字,以某种方式表示它是唯一的,6位数字。例如:020301:科目:数学(02),课程:代数(03),考试号(01)
指定解决方案的持续时间(以分钟为单位)和每个问题的点数已定义。
我创建了这些表:

CREATE TABLE `course` (
  `idcourse` varchar(2) NOT NULL,
  `courseName` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idcourse`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

--

CREATE TABLE `subject` (
  `idsubject` varchar(2) NOT NULL,
  `subjectName` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idsubject`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

--

CREATE TABLE `question` (
  `questionText` varchar(100) DEFAULT NULL,
  `answer1` varchar(100) DEFAULT NULL,
  `answer2` varchar(100) DEFAULT NULL,
  `answer3` varchar(100) DEFAULT NULL,
  `answer4` varchar(100) DEFAULT NULL,
  `subjetID` varchar(2) NOT NULL,
  `questionNum.` varchar(3) NOT NULL,
  PRIMARY KEY (`subjetID`,`questionNum.`),
  CONSTRAINT `idsubject` FOREIGN KEY (`subjetID`) REFERENCES `subject` (`idsubject`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1

--

CREATE TABLE `exam` (
  `subjectID` varchar(2) NOT NULL,
  `courseID` varchar(2) NOT NULL,
  `examNumber` varchar(2) NOT NULL,
  `duration` int(11) DEFAULT NULL,
  `pointsPerQuestionl` int(11) DEFAULT NULL,
  PRIMARY KEY (`subjectID`,`courseID`,`examNumber`),
  KEY `idCourse_idx` (`courseID`),
  CONSTRAINT `idCo` FOREIGN KEY (`courseID`) REFERENCES `course` (`idcourse`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `idSu` FOREIGN KEY (`subjectID`) REFERENCES `subject` (`idsubject`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1

关于表,我不确定我是否正确地创建了它们
在考试中我有很多问题。对于每个问题,我需要定义点数。
我怎么在我的table上做这个?
谢谢。

yzuktlbb

yzuktlbb1#

试试这个:

select a.subjectname,b.questionText
from
subject a
left join
question b
on a.idsubject = b.subjectid;

对于第二个问题,你可以用同样的方法进行。

相关问题