Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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, то как организовать такую связь оптимальным образом. спасибо!

Казаков Николай Константинович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Казаков Николай Константинович (статус: 1-ый класс)
Вопрос отправлен: 5 марта 2012, 10:51
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 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]:

А где объяснение того, что именно требуется? Какой сервер БД используется? Поддерживает триггеры? Если да, то лучший вариант, на мой взгляд, операцию удаления лучше прописать в триггере.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:43
Выполнено за 0.02 сек.