Как сделать составной ключ уникальным?

Я делаю базу данных учеников одной школы. Вот что у меня есть: enter image description here

Если вам не нравится читать, перейдите к части «Кратко»

. Проблема в том, что я не доволен этим дизайном. Я хочу, чтобы комбинация grade, subgradeи id_classбыла уникальной и служила первичным ключом для таблицы студентов. Я могу удалить student_idи сделать составной ключ из 3, но я этого тоже не хочу. Может быть, мне следует создать еще одну таблицу, скажем, combination_id, где grade, subgradeи id_class— внешние ключи, и есть один дополнительный столбец comb_id, который служит идентификатором для таблицы. И все столбцы будут первичными ключами. Но проблема в том, что эти 3 столбца могут повторяться из-за этого дополнительного столбца (comb_id).. Например, у меня могут быть одинаковые grade, subgradeи class_id, но разные comb_id, что сделает строку действительной из-за составного ключа 4 столбцов таблицы(combination_id).

Короче говоря, я хочу, чтобы students_idоставался единственным первичным ключом таблицы, но был внешним ключом к другой таблице, которая представляет собой уникальную комбинацию grades, subgradeи class_id.

Если я не был достаточно ясен, спросите в комментариях ниже и заранее спасибо.

PS Извините за неинформативное название, но я плохо называю

РЕДАКТИРОВАТЬ 1: Чтобы быть более ясным: gradeможет быть от 1 до 12 subgradeможет быть от a до j id_classможет быть от 1 до 30, и это ваш номер в классе

Так ученик может быть из 7б класса и его номер в классе -5

8
задан Bosak 2 August 2012 в 08:37
поделиться