Здравствуйте, Pavel Dvorkin, Вы писали:
PD>То есть когда студент становится студентом вне группы, Student.GroupID ставится в NULL ? А что тогда получится с первым FK ?
Ничего особенного. Если один из компонентов FK null, то он не проверяется.
Я же дал ссылку — нажмите на неё.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>То есть когда студент становится студентом вне группы, Student.GroupID ставится в NULL ? А что тогда получится с первым FK ? S>Ничего особенного. Если один из компонентов FK null, то он не проверяется. S>Я же дал ссылку — нажмите на неё.
Ссылка у меня что-то не открывается. Точнее, заголовок появляется и все.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Есть факультеты. Таблица faculty с FK (или без него, как хотите) на institute PD>На факультете есть группы. Таблица `group` с FK на faculty. PD>А еще есть студенты. Таблица student и вот тут вопрос PD>Студент входит в группу, но ей не принадлежит. После приказа ректора о зачислении он на короткое время становится студентом вне группы, пока его в группу декан не определит. Если уйдет в академотпуск, то до возвращения из него будет опять студентом вне группы.
… PD>В итоге у студента должно быть 2 FK — на группу и факультет. Но группа имеет FK на факультет. Получается, что студент фактически имеет 2 FK на факультет — один явно, а другой косвенно, через свой FK на группу и FK группы на факультет.
Как вариант: иметь у студента и ссылку на факультет и ссылку на группу, обе NULL-абельные и CHECK constraint что только одна из них может иметь значение и хотя бы одна из них должна иметь значение.
Как будет лучше, или так или с помощью "специальной" группы, как предложили выше, можно понять с помощью запросов, которые нужно будет составлять.
Help will always be given at Hogwarts to those who ask for it.