2015-02-02 5 views
0

Скажите, если реальная жизнь, такая как заимствование библиотечной книги, должна выполняться на двух предметах Учителя и Студента. Детали операции присутствуют в таблице, такой как «Ссуды» или «Сделки». Как определить внешний ключ в таблице «Ссуды» для Учителя и Студента, которые имеют разные схемы для первичных ключей? (учащийся имеет 6-значный ключ, но учитель имеет 4 разряда)Иностранный ключ для разных лиц

Аналогичный вопрос возникает, когда таблица базы данных базы данных в больнице пытается связать таблицу Employee и EmployeeRelatives с использованием внешнего ключа, где оба сотрудника больницы и их родственникам предоставляется бесплатное лечение. Как указать формат внешнего ключа в таблице «Назначения»?

ответ

1

Внешний ключ может ссылаться только на одну таблицу.

Мое решение в этих случаях ввести дополнительную таблицу (People или любое имя вы предпочитаете), который содержит все IDs из Teacher и Student. Teacher и Student также могут иметь ключ таблицы People как внешний ключ.

Вы можете найти другие возможные решения здесь: Foreign Key to multiple tables

+0

Это хорошо, насколько это идет. Сделаем еще один шаг: таблицы Учителя и Студента могут иметь в качестве первичного ключа внешний ключ (PersonId). Это достаточно хорошо для целей уникальности, и это упрощает жизнь. –