powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Использование внешних ключей
25 сообщений из 30, страница 1 из 2
Использование внешних ключей
    #36937697
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Появилась нужда создать таблицу которая поле id (guid) которой, является внешним ключем к нескольким таблицам. Создать внешний ключ не получится по известным причинам. Хотел бы узнать мнение - это нормально? т.е. использование такой таблицы и грубо говоря программное связывание. На сколько это влияет на производительность и в каких случаях без этого не обойтись
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938050
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini,

Не обойтись без этого всегда :)
все нормально
но лучше эту таблицу вовсе не создавать, а union делать виртуально
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938365
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
izoldov-roskiniПоявилась нужда создать таблицу которая поле id (guid) которой, является внешним ключем к нескольким таблицам. Создать внешний ключ не получится по известным причинам. Хотел бы узнать мнение - это нормально? т.е. использование такой таблицы и грубо говоря программное связывание. На сколько это влияет на производительность и в каких случаях без этого не обойтись
Ничего не понял.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938415
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniСоздать внешний ключ не получится по известным причинам.
Включив хрустальный шар, я так подумал и решил, что Вы имеете в виду популярную хрень "хочу, чтобы доктор мог ссылаться на поликлинику, а мог - на больницу".

izoldov-roskiniХотел бы узнать мнение - это нормально?
Не очень. А то и очень не.

izoldov-roskiniНа сколько это влияет на производительность
На производительность это непосредственно не влияет. Это влияет на целостность, а вот программная поддержка целостности в этом случае может катастрофически сказываться на производительности.

izoldov-roskiniи в каких случаях без этого не обойтись
Таких не бывает. Любую структуру, в которой возникает такое поползновение, можно перепроектировать в рамках традиционных подходов. В отдельных случаях можно решить, что такой подход - меньшее зло и/или вопрос слишком незначителен, чтобы ради него городить более аккуратное решение.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938849
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробую объяснить. Есть таблица например договора, есть таблица входящих писем, и для первого и для вторго типа документов надо хранить сканированные копии, соответственно есть идея использовать одну таблицу для вложений, а не для каждого типа свою. Но если использовать одну таблицу, то построить связи не получится. Как выкрутиться? Дробить типы на таблицы? (типа выделить общие реквизиты), слишком сложная структура получится, да и документов (типов) может быть не одни и не пять
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938864
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniпопробую объяснить. Есть таблица например договора, есть таблица входящих писем, и для первого и для вторго типа документов надо хранить сканированные копии, соответственно есть идея использовать одну таблицу для вложений, а не для каждого типа свою. Но если использовать одну таблицу, то построить связи не получится. Как выкрутиться? Дробить типы на таблицы? (типа выделить общие реквизиты), слишком сложная структура получится, да и документов (типов) может быть не одни и не пять
В договоре после со ссылкой на таблицу с вложением и в письмах ссылка. Или я не догоняю чего-то???
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938883
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniсоответственно есть идея использовать одну таблицу для вложений, а не для каждого типа свою
Допустим. Хотя в данном случае смысла не видно, хватит blob-поля в той и другой таблице.

izoldov-roskiniНо если использовать одну таблицу, то построить связи не получится.
Почему же не получится? Самая что ни на есть обычная таблица "сканы" со внешними ключами к той и другой таблице.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938888
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakВ договоре после со ссылкой на таблицу с вложением и в письмах ссылка. Или я не догоняю чего-то???
Лучше наоборот направление, имхо, особенно в договорах - поскольку там наверняка появятся сканы приложений, дополнительных соглашений итп, да и вообще их запросто может быть много страниц.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938925
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. ну блоб поля не есть хорошо, уж в таком случае filestream
2. одно и тоже поле в этой таблице должно быть иметь две связи на две разные таблицы, т.е. поле object_id должно ссылаться и на T1 и на T2. Вот это меня волнует
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938930
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini1. ну блоб поля не есть хорошо, уж в таком случае filestream
Для ненужных данных - да, filestream лучше.

izoldov-roskini2. одно и тоже поле в этой таблице должно быть иметь две связи на две разные таблицы,
Плюньте в лицо тому, кто Вам сказал такую глупость.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938983
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что самому себе :)
Это мне нужно при использовании общей таблицы чтобы поле указывало на двух возможных родителей (таблицы 2)
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36938991
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniЧто самому себе :)
Как вариант.

izoldov-roskiniЭто мне нужно
Изучать до просветления
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939018
baike2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniЧто самому себе :)
Это мне нужно при использовании общей таблицы чтобы поле указывало на двух возможных родителей (таблицы 2)
Это ошибка проектирования - вам это и говорит softwarer . А вы не понимаете, что нарушаете правила нормализации.

Не может один FK указывать на множество таблиц, неоднозначность и соответственно нарушение целостности.

А то что вы говорите:

авторДробить типы на таблицы? (типа выделить общие реквизиты), слишком сложная структура получится, да и документов (типов) может быть не одни и не пять

Это есть правильное решение. Выделяйте таблицу с общими параметрами для всех документов и на нее ссылку из таблицы с файлами. У меня была такая структура в проекте и ничего, все работает очень хорошо.

softwarerДля ненужных данных - да, filestream лучше.

Позволю не согласится, для разных СУБД и методы разные. В MS SQL запрос к blob полю замучаешься ждать, быстрее получить ссылку на файл и передать его как stream на клиента. Хотя в 2008 эту проблему чуть поправили, но все равно...
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939033
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baike2000Позволю не согласится, для разных СУБД и методы разные. В MS SQL запрос к blob полю замучаешься ждать, быстрее получить ссылку на файл и передать его как stream на клиента. Хотя в 2008 эту проблему чуть поправили, но все равно...
Скорость - это хорошо, но для "бумажных копий документов" она вряд ли сколько-нибудь важна, слишком редко к ним обращаются. А вот "забыли включить в бэкап", "случайно стёрли в файловой системе" и прочие прелести встают в полный рост, почему и - "для ненужных данных".
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939209
baike2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Скорость - это хорошо, но для "бумажных копий документов" она вряд ли сколько-нибудь важна, слишком редко к ним обращаются. А вот "забыли включить в бэкап", "случайно стёрли в файловой системе" и прочие прелести встают в полный рост, почему и - "для ненужных данных".
Если в этом смысле, то согласен. Хотя возможно найти компромисс между двумя методами
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939547
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А вот "забыли включить в бэкап", "случайно стёрли в файловой системе" и прочие прелести
> встают в полный рост, почему и - "для ненужных данных"

"Случайно стереть" в файловой системе сильно сложнее, чем в базе данных. А "забыли включить в бэкап" - дебилов побороть невозможно в принципе, и это не повод грузить базу данных мусором.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939558
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После того, как разработчики научатся не грузить БД ни мусором, ни ссылками на мусор, их начнёт куда больше беспокоить сохранность и управляемость оставшихся (немусорных) данных.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939812
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini,
делай как делаешь, это просто РСУБД не может делать то, что ты хочешь
ты просто не можешь знать какие таблицы появятся в будущем у пользователя в этом классификаторе, дай возможность создать и включить в классификатор новые таблицы
введи немножко метаданных и сгенерируй тригерры для целостности
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939836
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

т.е. программно поддерживать целостность. На самом деле я такое уже встречал в серьезной системе на БД Oracle.
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36939935
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniПоявилась нужда создать таблицу которая поле id (guid) которой, является внешним ключем к нескольким таблицам. Создать внешний ключ не получится по известным причинам. Хотел бы узнать мнение - это нормально? т.е. использование такой таблицы и грубо говоря программное связывание. На сколько это влияет на производительность и в каких случаях без этого не обойтись
Объект, связанный со многими другими объектами - это не нужда, а часто встречающаяся реальность:) Например, объект Бухгалтерская проводка связан с десятками объектов-операций М:1. Нужда у Вас использовать "реляционную" СУБД. Вот это, действительно, проблема, которая часто будет Вам мешать создавать адекватные приложения:)
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36940288
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini,

да, все нормально
просто без этого серьезную систему и не напишешь :)
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36940296
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini
т.е. программно поддерживать целостность. На самом деле я такое уже встречал в серьезной системе на БД Oracle.
Если целостность поддерживается на уровне приложения - это не серьезная, а модная система:)
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36940627
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаЕсли целостность поддерживается на уровне приложения - это не серьезная, а модная система:)+1
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36940963
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

один сказал чушь, а другой тут же закивал
пофиг чем целостность поддерживается, лишь бы было
хватит глубокомысленных кивков
субд такое же приложение между прочим, а как допустим МССКЛ обеспечивает целостность убил бы нафиг
...
Рейтинг: 0 / 0
Использование внешних ключей
    #36941024
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,
если надо чтобы "лишь бы было" - тогда действительно, пофиг где. А вот если нужна "целостность", тогда стоит делать по нормальному, обеспечивая оную в СУБД.

>> а как допустим МССКЛ обеспечивает целостность убил бы нафиг
может стоит поучиться его правильно готовить?

>> хватит глубокомысленных кивков
правда глаза колет? ;-))
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Использование внешних ключей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]