Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кривая БД  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
Хотел воспользоваться православной EF чтобы пилить программу к существующей базе.
Но нет связей между табличками и там где [ID_ССылкаНаДругуюТаблицу] вгоняли вместо NULL значение "0".

Естественно, связей теперь настроить не получится, будет ругаться, что нет такого значения.
Ладно бы ее нормализовать, заменив запросом 0 на NULL. Но ведь старые программы все еще будут пытаться вставить 0 и начнут ловить ошибки.

Собственно что делать? Прописывать INSTED OF INSERT (UPDATE) и руками переопределять все поля для вставки обновления что ли?

Так слету и не придумаю ничего лучше...
26 окт 17, 12:37    [20901709]     Ответить | Цитировать Сообщить модератору
 Re: Кривая БД  [new]
04cf9f9576a6f15
Member [заблокирован]

Откуда:
Сообщений: 2927
sanekoffice
Хотел воспользоваться православной EF чтобы пилить программу к существующей базе.
Но нет связей между табличками и там где [ID_ССылкаНаДругуюТаблицу] вгоняли вместо NULL значение "0".

Естественно, связей теперь настроить не получится, будет ругаться, что нет такого значения.
Ладно бы ее нормализовать, заменив запросом 0 на NULL. Но ведь старые программы все еще будут пытаться вставить 0 и начнут ловить ошибки.

Собственно что делать? Прописывать INSTED OF INSERT (UPDATE) и руками переопределять все поля для вставки обновления что ли?

Так слету и не придумаю ничего лучше...
Выполнить рефакторинг базы. Для старых программ сделать вьюшки с триггерами INSTEAD OF. Не надо тащить старые костыли с собой. Старые программы надо будет тестировать.

#Хэш=
26 окт 17, 12:45    [20901750]     Ответить | Цитировать Сообщить модератору
 Re: Кривая БД  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
// Собственно что делать?

Отказаться от затеи, т.к. стороняя прога заточена под значения =0.
Связи между табличками ведите в к-л стороннем проекте, н-р ПД. В самой БД от связей будет мало толку.
26 окт 17, 13:34    [20902008]     Ответить | Цитировать Сообщить модератору
 Re: Кривая БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7762
sanekoffice,

придется отказаться от внешних ключей.
26 окт 17, 14:23    [20902292]     Ответить | Цитировать Сообщить модератору
 Re: Кривая БД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33672
Блог
Добавить в справочники элемент "0, пусто"
26 окт 17, 16:51    [20903242]     Ответить | Цитировать Сообщить модератору
 Re: Кривая БД  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Критик
Добавить в справочники элемент "0, пусто"
В некот. случаях это может серьезно мешать, н-р в отчетах. Их придется переделывать.
27 окт 17, 10:09    [20905121]     Ответить | Цитировать Сообщить модератору
 Re: Кривая БД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
LSV
Критик
Добавить в справочники элемент "0, пусто"
В некот. случаях это может серьезно мешать, н-р в отчетах. Их придется переделывать.
Так система уже рассчитана на 0, так что вряд ли будут проблемы, хотя и не исключены. По крайней мере, это намного проще. чем переделывать на NULL
ЗЫ с точки зрения теоретиков реляционных БД иметь значения unnknown в справочнике более кошерно, чем использовать NULL. NULL сделали для практиков, для удобства кодинга.
27 окт 17, 13:00    [20906164]     Ответить | Цитировать Сообщить модератору
 Re: Кривая БД  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
alexeyvg
LSV
пропущено...
В некот. случаях это может серьезно мешать, н-р в отчетах. Их придется переделывать.
Так система уже рассчитана на 0, так что вряд ли будут проблемы, хотя и не исключены. По крайней мере, это намного проще. чем переделывать на NULL
ЗЫ с точки зрения теоретиков реляционных БД иметь значения unnknown в справочнике более кошерно, чем использовать NULL. NULL сделали для практиков, для удобства кодинга.
Отчет/запрос может быть рассчитан на то, что по =0 связи не существует. А если она вдруг появится - появятся и лишние данные.
27 окт 17, 13:32    [20906370]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить