【问题标题】:Create a datatype in a table that is a list of references to other table在表中创建一个数据类型,该数据类型是对其他表的引用列表
【发布时间】:2018-11-08 10:00:20
【问题描述】:

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

准备问题:

教师构建了一个题库以供考试使用。该问题包括一个文本和四个答案。其中一个答案被标记为正确答案。

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

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

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

如何在我的表关系上进行此操作?

谢谢。

【问题讨论】:

  • 这看起来像非常简单的 sql 工作......就像家庭作业......你加入主题 ID。
  • 我在 mySQL 中创建了这些表。如何在主题表中创建数据类型,使其成为问题列表?
  • 您为什么要这样做?主题id是外键,加入选择即可。如果需要,请对 concat 进行分组
  • 谢谢,我明白了join的用法。如何为考试中的每个问题定义分数?

标签: mysql sql database sqldatatypes


【解决方案1】:

试试这个:

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

对于第二个问题,您可以继续进行类似的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多