Создайте в таблице тип данных, представляющий собой список ссылок на другую таблицу. - PullRequest
0 голосов
/ 29 мая 2018

Мне нужно создать базу данных со следующей идеей:

Подготовка вопросов:

Учитель создает пул вопросов для использования на экзаменах.Вопрос включает в себя текст и четыре ответа.Один из ответов помечен как правильный ответ.

Каждый вопрос в базе данных соответствует одному предмету и одному или нескольким курсам по этому предмету.Каждый вопрос имеет номер, который идентифицирует его однозначно, 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 голосов
/ 29 мая 2018

Попробуйте это:

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

Вы можете продолжить аналогичное для второй проблемы.

...