| 
| 
 | Вопрос # 5 977/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Такой вопрос есть БД есть 3 таблицы: A c полями (ID;TYPE;...), B(ID;IDOBJ;...), C(IDLINK;...) Вопрос можно ли при помощи внешних ключей организовать такую связь. Если TYPE='Объект' то внешний ключ на таблицу B A.ID=B.IDOBJ, если TYPE='Связь', то внешний ключ на таблицу C A.ID=C.IDLINK. Если это не возможно при помощи ForeignKey, то как организовать такую связь оптимальным образом. спасибо!
 
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 6 марта 2012, 19:41; участников в обсуждении: 2. 
|   | Мережников Андрей (статус: Абитуриент), 5 марта 2012, 19:46 [#1]:в принципе можно написать sql запрос, типа: 
 SELECT список полей 
FROM a
LEFT OUTER JOIN b ON (a.type='Объект' AND a.id=b.idobj)
LEFT OUTER JOIN c ON (a.type='Связь' AND a.id=c.idlink) |  
|   | Казаков Николай Константинович (статус: 1-ый класс), 6 марта 2012, 08:52 [#2]:Нет вы не поняли, мне это надо не для вывода данных, а для контроля целостности, чтоб я в А удалил строку и B или C в зависимости от TYPE удалились соответствующие строки |  
|   | Мережников Андрей (статус: Абитуриент), 6 марта 2012, 19:41 [#3]:А где объяснение того, что именно требуется? Какой сервер БД используется? Поддерживает триггеры? Если да, то лучший вариант, на мой взгляд, операцию удаления лучше прописать в триггере. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |