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

时间:2018-05-29 17:08:12

标签: mysql sql database sqldatatypes

我需要创建一个具有以下想法的数据库:

准备问题:

教师建立了一系列问题供考试使用。这个问题包括一个文本和四个答案。其中一个答案被标记为正确答案。

数据库中的每个问题都与一个主题和一个或多个关于该主题的课程相匹配。 每个问题都有一个唯一标识它的数字,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

关于表格,我不确定我是否正确创建了

在考试中,我有很多问题。 对于每个问题,我需要定义点数。

如何在我的桌面关系中进行此操作?

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

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

您可以针对第二个问题进行类似的处理。