@Serrrgio

Внешние ключи при связи через таблицу?

Есть три таблицы данных:
phone (id, number);
1; 74951230001
2; 74951230002
3; 74951230003
4; 74951230004
5; 74951230005
6; 74951230006

organisation (id, name);
1; Рога и копыта
2; Без рогов копыта

employee (id, name);
1; Иванов
2; Петров

Первая связана с остальными через таблицу phone_model(phone_id, model_class, model_id).
1; Organisation; 1
2; Organisation; 1
3; Organisation; 2
4; Employee; 1
5; Employee; 1
6; Employee: 2

Связка работает отлично, но задумался о сохранении логической целостности. Возможно ли при такой структуре создать внешний ключ для таблицы phone_model, зависящий от таблицы organisation, например?

Проблема в том, что phone_model связана с organisation через 2 поля model_class, model_id, и model_class определяется программно, т.к. отсутствует в таблице.

Возможно это не правильный путь и надо делать по связующей таблице для каждой пары связуемых таблиц?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
А зачем вам phome_model связывать с организацией? Более того - я не вижу там полей для связи ни в одной ни в другой таблице. Если вы под id подразумеваете внешний ключ на какую-то таблицу - то будьте добры назвать его соответствующе.
Почему в таблицу employee нет внешнего ключа на organization? через какую сущность я смогу получить всех сотрудников организации?
Где связь сотрудник-телефон?
Ну и поясните в двух словах - то что у вас телефон связан с моделью телефона я вижу, а как модель телефона связана с организацией и сотрудником я не наблюдаю в принципе(да и зачем их связывать?!).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы