![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
---|Ветка была без названия|---
Radionov Alexey © (2003-09-12 08:41:00)
В проекте используется midas. На сервере поменялась структура таблицы, так как было выяснено, что в некотором строковом поле некоторой таблицы довольно часто встречаются одинаковые данные. Было решено это поле заменить ссылкой на соответствующий элемент в новой таблице-справочнике.
Вопрос:
Как "малой кровью" реализовать сие, если приложения на стороне клиента модификации не подлежат?
Клиенту данные этой таблицы отправляются соответствующим DataSetProvider"ом.
Radionov Alexey (2003-09-12 10:21:00) [41]
>Reindeer Moss Eater © (12.09.03 10:14)
В моем случае вопрос к MS SQL отношения не имеет. В этой программе я его не использую.
Radionov Alexey (2003-09-12 10:17:00) [42]
>Reindeer Moss Eater © (12.09.03 10:07)
Сторона клиента не меняется. Он ничего не знает про коды.
Reindeer Moss Eater (2003-09-12 10:14:00) [43]
Вопрос был о существовании других вариантов решения, так как я не уверен в корректности первого.
MSSQL позволяет в некоторых случаях делать update для View"ов имеющих джойны двух таблиц.
Делаем View в котором приклеиваем к измененной таблице справочник и все. Данные берем из него и его же и обновляем.
Reindeer Moss Eater (2003-09-12 10:07:00) [44]
Числа много меньше занимают места, нежели строки.
См. [11]
Radionov Alexey (2003-09-12 10:04:00) [45]
>Reindeer Moss Eater © (12.09.03 09:50)
>и считаешь, что умнее кого-то из 1С.
Утверждение с высокой вероятностью верное. Не все же в "1С" гении? Хотя непонятно откуда ты сделал такой вывод.
А про "погреб" я сказал не с потолка. В версии для MS SQl попробуй посмотреть логи запросов "1С" к серверу. Обещаю много интересного.
Числа много меньше занимают места, нежели строки. Сокращение размеров таблицы - тоже довод. Да и поиск выполняться быстрее будет.
>Johnmen © (12.09.03 09:51)
Согласен. Так и сделал уже.
>А о нормализации надо было сразу думать
Думал.
>и возросшие аппетиты заказчика, по-моему, здесь непричем...
Может быть.
Reindeer Moss Eater (2003-09-12 10:01:00) [46]
Johnmen ©
На основании чего такое утверждение ???
А требованиям какой из пяти нормальных форм стала удовлетворять таблица после произведенных действий (которой она не удовлетворяла до реструктуризации)?
Reindeer Moss Eater (2003-09-12 10:00:00) [47]
Кроме того:
На участке "клиент-среднее звено" датапакет будет содержать как сами данные-строки, так и их коды. Трафик не только не уменьшится, но еще и возрастет.
Johnmen (2003-09-12 09:58:00) [48]
>Reindeer Moss Eater © (12.09.03 09:54)
На основании чего такое утверждение ???
Reindeer Moss Eater (2003-09-12 09:54:00) [49]
Все произведенные тобой манипуляции с таблицами не имеют ни малейшего отношения к нормализации.
Johnmen (2003-09-12 09:53:00) [50]
>Reindeer Moss Eater © (12.09.03 09:50)
>Ты поменял шило на мыло ...
Ну почему же ? Я так понял, что он провел запоздалую нормализацию...
Johnmen (2003-09-12 09:51:00) [51]
Так вот оно единственное решение в данных условиях Reindeer Moss Eater © (12.09.03 08:48)
А о нормализации надо было сразу думать, и возросшие аппетиты заказчика, по-моему, здесь непричем...
Reindeer Moss Eater (2003-09-12 09:50:00) [52]
Таким макаром и получаются конфигурации а-ля "1С", где гениально реализован принцип "походов в погреб за сметаной с чайной ложкой".
Обоснуй. Ты поменял шило на мыло и считаешь, что умнее кого-то из 1С. У тебя были повторяющиесся данные-строки (что само по себе нормально, не все же поля должны иметь UNIQUE атрибуты), а стали повторяющиеся данные - числа.
Ну и что дальше? В чем выигрыш конкретно?
Е-Моё имя (2003-09-12 09:41:00) [53]
AlphaBlend:=true
Radionov Alexey (2003-09-12 09:37:00) [54]
>Reindeer Moss Eater © (12.09.03 09:09)
Все-таки:
1. Про выигрыш. Всегда раздражали решения методом грубой силы.
Таким макаром и получаются конфигурации а-ля "1С", где гениально реализован принцип "походов в погреб за сметаной с чайной ложкой".
2. Обработка да, усложнилась. Неверно спроектирована база. Так как требования заказчика со временем изменились.
А почему ухудшается ситуация - так и не понял. Потому-что думать приходится? И сильное усложнение заключается в дополнительных 20 строчках кода? Это уже реализовал. Можно переписать клиентскую часть. Но это имхо гораздо труднее. Вопрос был о существовании других вариантов решения, так как я не уверен в корректности первого.
Reindeer Moss Eater (2003-09-12 09:09:00) [55]
Возникшая проблема - следствие проведенной псевдонормализации таблиц. Почему псевдонормализации? Потому что исходная таблица не нарушала ни одну нормальную форму, а после изменений не стала "более нормализованной" с точки зрения Б-К.
Весь выигрыш в занимаемом дисковом пространстве, что давно уже не так актуально.
Зато обработка данных в на миддл-участке сильно усложнилась.
Вывод: изменения структуры не только не помогли, но и ухудшили ситуацию.
Radionov Alexey (2003-09-12 08:53:00) [56]
>Reindeer Moss Eater © (12.09.03 08:48)
Как в этом случае лучше выполнить "подмену" полей при приеме данных клиента? Все делается в событии OnUpdateData у DataSetProvider?
Reindeer Moss Eater (2003-09-12 08:48:00) [57]
Переписать запрос на сервере приложений так, чтобы он возвращал клиенту точно такой же датасет как и раньше