Есть три таблицы данных:
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 определяется программно, т.к. отсутствует в таблице.
Возможно это не правильный путь и надо делать по связующей таблице для каждой пары связуемых таблиц?
А зачем вам phome_model связывать с организацией? Более того - я не вижу там полей для связи ни в одной ни в другой таблице. Если вы под id подразумеваете внешний ключ на какую-то таблицу - то будьте добры назвать его соответствующе.
Почему в таблицу employee нет внешнего ключа на organization? через какую сущность я смогу получить всех сотрудников организации?
Где связь сотрудник-телефон?
Ну и поясните в двух словах - то что у вас телефон связан с моделью телефона я вижу, а как модель телефона связана с организацией и сотрудником я не наблюдаю в принципе(да и зачем их связывать?!).
Добавил пример данных в таблицах. Поле phone_model-model_id ссылается на поле id модели с классом phone_model-model_class.
Связь сотрудник-организация опустил, что бы не усложнять)