я извинюсь сейчас подхожу из C++ ОПП шаблона проектированияВ SQLite является возможностью перекрестной ссылки на чужой ключ
Для примера три таблицы базы данных (неключевой полех опущенный) является возможным здравомыслящим пересечь -отличить другую таблицу в разделе ССЫЛКИ?
CREATE TABLE `Attempt` (
`attempt_ID` INTEGER PRIMARY KEY AUTOINCREMENT,
`username` TEXT NOT NULL,
`assessment_ID` INTEGER NOT NULL,
`timestamp` INTEGER NOT NULL,
FOREIGN KEY(`username`) REFERENCES Students (username),
FOREIGN KEY(`assessment_ID`) REFERENCES Assessments (assessment_ID)
);
CREATE TABLE `Questions` (
`assessment_ID` INTEGER NOT NULL,
`question_number` INTEGER NOT NULL,
PRIMARY KEY(assessment_ID,question_number)
);
CREATE TABLE "Responses" (
`attempt_ID` INTEGER,
`question_number` INTEGER,
PRIMARY KEY(attempt_ID,question_number),
FOREIGN KEY(`attempt_ID`) REFERENCES Attempt (attempt_ID)
);
Очевидным решением является включение assessment_ID в каждом question.row но если мы уже знаем attempt_ID тогда мы можем LookUp оценочный ID?
CREATE TABLE "Responses" (
`attempt_ID` INTEGER,
`assessment_ID` INTEGER,
`question_number` INTEGER,
PRIMARY KEY(attempt_ID,question_number),
FOREIGN KEY(`attempt_ID`) REFERENCES Attempt (attempt_ID)
FOREIGN KEY(`assessment_ID`,`question_number`) REFERENCES `Questions` (`assessment_ID`,`question_number`)
);
Sub_Reference может быть?
При дальнейшем изучении ограничений внешнего ключа SQLITE не работают в базах данных. На всякий случай кто-то приезжает сюда с подобной идеей. – ArchNemSyS