Во-первых, всегда называйте свои таблицы в единственном числе. Это потому, что «определение таблицы» на самом деле является определением для каждой строки - одна строка (то есть единственное число). Кроме того, он выглядит более естественно: quiz.id
имеет смысл - идентификатор теста, но quizzes.id
это что? Идентификатор викторины? Нет.
Чтобы ответить на ваш вопрос, вам обязательно нужно объединить опрос и тест в одну таблицу. Наконечник - у них есть то же самое определение. Если вам нужно различать эти два, есть логический столбец. Давайте назовем это викториной.
Вы должны также назвать свои внешние ключи как 'table_id', например, 'quiz_id'.
Вероятно, вы должны дать название своим тестам.
В mysql тип данных timestamp
автоматически обновляется всякий раз, когда вы что-то изменяете в строке. Это очень удобно - экономит добавление now()
к каждому набору обновлений / вставок.
ИМХО ваши таблицы должны быть:
create table quiz (
id integer not null auto_increment primary key,
created datetime,
modified timestamp,
name text,
is_poll boolean not null default false
);
create table question (
id integer not null auto_increment primary key,
quiz_id integer not null references quiz,
question varchar(255) not null,
created datetime,
modified timestamp
);
create table answer (
id integer not null auto_increment primary key,
question_id integer not null references question,
answer varchar(255) not null,
created datetime,
modified timestamp
);