Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Radionov Alexey   (2003-09-12 08:41) [0]

В проекте используется midas. На сервере поменялась структура таблицы, так как было выяснено, что в некотором строковом поле некоторой таблицы довольно часто встречаются одинаковые данные. Было решено это поле заменить ссылкой на соответствующий элемент в новой таблице-справочнике.

Вопрос:
Как "малой кровью" реализовать сие, если приложения на стороне клиента модификации не подлежат?
Клиенту данные этой таблицы отправляются соответствующим DataSetProvider"ом.


 
Reindeer Moss Eater   (2003-09-12 08:48) [1]

Переписать запрос на сервере приложений так, чтобы он возвращал клиенту точно такой же датасет как и раньше


 
Radionov Alexey   (2003-09-12 08:53) [2]

>Reindeer Moss Eater © (12.09.03 08:48)
Как в этом случае лучше выполнить "подмену" полей при приеме данных клиента? Все делается в событии OnUpdateData у DataSetProvider?


 
Reindeer Moss Eater   (2003-09-12 09:09) [3]

Возникшая проблема - следствие проведенной псевдонормализации таблиц. Почему псевдонормализации? Потому что исходная таблица не нарушала ни одну нормальную форму, а после изменений не стала "более нормализованной" с точки зрения Б-К.
Весь выигрыш в занимаемом дисковом пространстве, что давно уже не так актуально.
Зато обработка данных в на миддл-участке сильно усложнилась.
Вывод: изменения структуры не только не помогли, но и ухудшили ситуацию.


 
Radionov Alexey   (2003-09-12 09:37) [4]

>Reindeer Moss Eater © (12.09.03 09:09)
Все-таки:
1. Про выигрыш. Всегда раздражали решения методом грубой силы.
Таким макаром и получаются конфигурации а-ля "1С", где гениально реализован принцип "походов в погреб за сметаной с чайной ложкой".
2. Обработка да, усложнилась. Неверно спроектирована база. Так как требования заказчика со временем изменились.
А почему ухудшается ситуация - так и не понял. Потому-что думать приходится? И сильное усложнение заключается в дополнительных 20 строчках кода? Это уже реализовал. Можно переписать клиентскую часть. Но это имхо гораздо труднее. Вопрос был о существовании других вариантов решения, так как я не уверен в корректности первого.


 
Е-Моё имя   (2003-09-12 09:41) [5]

AlphaBlend:=true


 
Reindeer Moss Eater   (2003-09-12 09:50) [6]

Таким макаром и получаются конфигурации а-ля "1С", где гениально реализован принцип "походов в погреб за сметаной с чайной ложкой".

Обоснуй. Ты поменял шило на мыло и считаешь, что умнее кого-то из 1С. У тебя были повторяющиесся данные-строки (что само по себе нормально, не все же поля должны иметь UNIQUE атрибуты), а стали повторяющиеся данные - числа.
Ну и что дальше? В чем выигрыш конкретно?


 
Johnmen   (2003-09-12 09:51) [7]

Так вот оно единственное решение в данных условиях Reindeer Moss Eater © (12.09.03 08:48)

А о нормализации надо было сразу думать, и возросшие аппетиты заказчика, по-моему, здесь непричем...


 
Johnmen   (2003-09-12 09:53) [8]

>Reindeer Moss Eater © (12.09.03 09:50)
>Ты поменял шило на мыло ...

Ну почему же ? Я так понял, что он провел запоздалую нормализацию...


 
Reindeer Moss Eater   (2003-09-12 09:54) [9]

Все произведенные тобой манипуляции с таблицами не имеют ни малейшего отношения к нормализации.


 
Johnmen   (2003-09-12 09:58) [10]

>Reindeer Moss Eater © (12.09.03 09:54)

На основании чего такое утверждение ???


 
Reindeer Moss Eater   (2003-09-12 10:00) [11]

Кроме того:
На участке "клиент-среднее звено" датапакет будет содержать как сами данные-строки, так и их коды. Трафик не только не уменьшится, но еще и возрастет.


 
Reindeer Moss Eater   (2003-09-12 10:01) [12]

Johnmen ©

На основании чего такое утверждение ???

А требованиям какой из пяти нормальных форм стала удовлетворять таблица после произведенных действий (которой она не удовлетворяла до реструктуризации)?


 
Radionov Alexey   (2003-09-12 10:04) [13]

>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:07) [14]

Числа много меньше занимают места, нежели строки.

См. [11]


 
Reindeer Moss Eater   (2003-09-12 10:14) [15]

Вопрос был о существовании других вариантов решения, так как я не уверен в корректности первого.

MSSQL позволяет в некоторых случаях делать update для View"ов имеющих джойны двух таблиц.
Делаем View в котором приклеиваем к измененной таблице справочник и все. Данные берем из него и его же и обновляем.


 
Radionov Alexey   (2003-09-12 10:17) [16]

>Reindeer Moss Eater © (12.09.03 10:07)
Сторона клиента не меняется. Он ничего не знает про коды.


 
Radionov Alexey   (2003-09-12 10:21) [17]

>Reindeer Moss Eater © (12.09.03 10:14)
В моем случае вопрос к MS SQL отношения не имеет. В этой программе я его не использую.


 
Reindeer Moss Eater   (2003-09-12 10:21) [18]

Сторона клиента не меняется. Он ничего не знает про коды.

1. Если клиент не меняется, то он будет (должен) получать все те же длинные строки. Приложения пишутся для клиентов. Что клиент получит от этой реструктуризации?

2. Клиент написан новый и таблицы тоже изменены. Получаем ситуацию описанную в [11] и снова спрашиваем себя, что хорошего мы изменили в жизни клиента?

Ответ : мы сэкономили дисковое пространоство на сервере.
Вопрос: Достигнутый совокупный эффект окупает затраты на его достижение?


 
Radionov Alexey   (2003-09-12 10:33) [19]

>Reindeer Moss Eater © (12.09.03 10:21)
С точки зрения клиента ничего не поменялось. Это и требовалось. Поменялась логика хранения данных с целью уменьшения объема данных и уменьшения времени поиска. А последнее - в том числе для клиента


 
Johnmen   (2003-09-12 10:34) [20]

>Reindeer Moss Eater © (12.09.03 10:01) [12]
>А требованиям какой из пяти нормальных форм стала удовлетворять
>таблица после произведенных действий (которой она не
>удовлетворяла до реструктуризации)?

Первой нормальной форме.
Кстати, интересно, как выглядит 4-я и 5-я ? :)))


 
Reindeer Moss Eater   (2003-09-12 10:53) [21]

Первая нормальная форма - данные в поле должны быть атомарными (неделимыми).

Поле строка заменено полем-числом. Если таблица не удовлетворяла первой форме до замены, то она не будет ей удовлетворять и после такой замены.


 
Reindeer Moss Eater   (2003-09-12 11:03) [22]

Поменялась логика хранения данных с целью уменьшения объема данных и уменьшения времени поиска. А последнее - в том числе для клиента

Первое - клиенту по барабану. Второе (про более быстрый поиск) - очень спорно.


 
Radionov Alexey   (2003-09-12 11:11) [23]

>Reindeer Moss Eater © (12.09.03 11:03)
Конечно, по барабану :)
Ему и этот наш разговор по барабану тож.
Не говорить теперь?
А не по барабану мне, собственно. Просто не люблю халявы.

По поводу скорости поиска спорить не буду. От этого спора клиенту ни горячо, ни холодно :)

Таки спасибо за наводку с запросом ;)


 
Johnmen   (2003-09-12 11:34) [24]

>Reindeer Moss Eater © (12.09.03 10:53)

Слишком узкое определение НФ1. Если хочешь, отнеси это к другой НФ.
Кстати, интересно, как выглядит 4-я и 5-я ? :)))


 
Reindeer Moss Eater   (2003-09-12 11:39) [25]

Данные в поле должны быть неделимы. Логически.
Это и есть первая НФ. Именно она.

4-ю и 5-ю нормальные формы кратко можно выразить так:
Они настолько специфичны, что практического применения в реальной жизни имеют мало.
Кроме того пятая форма - далеко не самая последняя.


 
Radionov Alexey   (2003-09-12 11:48) [26]

>Johnmen © (12.09.03 11:34)
Про форму Бойса-Кодда;
Про четвертую форму;
Про пятую форму;
и, кажется, все про базы данных есть в
Бегг К., Страчан А., Коннолли Т.
"Базы данных. Проектирование, реализация и сопровождение. Теория и практика"


 
Zacho   (2003-09-12 12:02) [27]


> Radionov Alexey © (12.09.03 11:48) [26]

Я предпочитаю К.Дж. Дейт "Введение в системы баз данных", хотя на вкус и цвет .. :)

>
> Reindeer Moss Eater © (12.09.03 11:39) [25]
> Данные в поле должны быть неделимы. Логически.
> Это и есть первая НФ. Именно она.

Далеко не полное определение 1НФ

> Johnmen © (12.09.03 10:34) [20]
>
> Первой нормальной форме.

Не факт, не достаточно информации для того чтобы вообще определить какой НФ соответствует эта таблица, хоть до реструктуризации, хоть после.
2 Reindeer Moss Eater ©
Действительно, просто в исходном посте не достаточно информации для утверждения была ли таблица нормализована или нет, т.ч. твои замечания, что реструктуризация была сделана зря - просто не имеют оснований. Если хочешь - могу привести пример.


 
Reindeer Moss Eater   (2003-09-12 12:05) [28]

Еще раз повторяю. Из приведенных в вопросе данных совершенно очевидно, что к нормализации это никакого отношения не имеет.


 
Zacho   (2003-09-12 12:16) [29]


> Reindeer Moss Eater © (12.09.03 12:05) [28]

А мне - не очевидно. Действительно, могу привести пример из жизни.


 
Reindeer Moss Eater   (2003-09-12 12:17) [30]

Зачем мне твои примеры? Я вопрос автора разбираю.


 
Sandman25   (2003-09-12 12:21) [31]

Согласен с Reindeer Moss Eater насчет нормализации. Если поле не служило ссылкой на другую таблицу, конечно.
Не согласен с ним же насчет удобства работы пользователя. Пользователю может быть легче выбрать значение (особенно длинное) из списка (особенно с поиском по подстроке), чем набирать его полностью (при этом еще и рискуя ошибиться в 25-ом символе).


 
Johnmen   (2003-09-12 12:23) [32]

>Reindeer Moss Eater © (12.09.03 12:05)
>Еще раз повторяю. Из приведенных в вопросе данных совершенно
>очевидно, что к нормализации это никакого отношения не имеет

А мне почему-то очевидно, что имеет :)))


 
Reindeer Moss Eater   (2003-09-12 12:23) [33]

Пользователю может быть легче выбрать значение (особенно длинное) из списка (особенно с поиском по подстроке), чем набирать его полностью (при этом еще и рискуя ошибиться в 25-ом символе).

И как это связано с внесенными изменениями?
В поле-строку запрещено выбирать значения из справочника?


 
Zacho   (2003-09-12 12:28) [34]


> Reindeer Moss Eater © (12.09.03 12:17) [30]

Блин !
В вопросе автора просто недостаточно информации, для определения была ли нормализована таблица или нет. Вот это для меня - абсолютно очевидно, поэтому и предлагал тебе пример, показывающий это.


 
Reindeer Moss Eater   (2003-09-12 12:29) [35]

Zacho ©

Это тебе недостаточно, а мне достаточно.
Было одно поле-строка, которое вынесли в справочник и заменили ссылкой. Это все что угодно, но не нормализация.


 
Sandman25   (2003-09-12 12:31) [36]

[33] Reindeer Moss Eater © (12.09.03 12:23)

И как это связано с внесенными изменениями?
В поле-строку запрещено выбирать значения из справочника?


До изменения не было справочника :) Перечитайте первый пост.


 
Radionov Alexey   (2003-09-12 12:34) [37]

Ребята, я про нормализацию и не заикался.
Что хотел - уже сделал.
По поводу удобства - давно использую autocomplete и "расстояния Левенштейна" :))
Все таблицы находятся мнимум в 3НФ.


 
Reindeer Moss Eater   (2003-09-12 12:36) [38]

До изменения не было справочника :) Перечитайте первый пост.

Так и после изменения НА КЛИЕНТЕ нет справочника. Хоть перечитайте весь форум.


 
Sandman25   (2003-09-12 12:41) [39]

>Так и после изменения НА КЛИЕНТЕ нет справочника. Хоть перечитайте весь форум.

Если клиент сейчас тоже не выбирает из справочника, то тогда действительно нафиг это все надо было...


 
Zacho   (2003-09-12 12:49) [40]


> Reindeer Moss Eater © (12.09.03 12:29) [35]
> Это тебе недостаточно, а мне достаточно.

Попробуй доказать. Тоько приводи точные и полные определения НФ.
P.S. Кажется, этот спор зашел в тупик. Если есть желание продолжить - может перейдем в "Потрепаться" ?



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.009 c
1-3969
killer
2003-09-20 01:35
2003.10.02
Как в Delphi взять побитовую коньюнкцию?


1-3972
waw
2003-09-19 16:26
2003.10.02
Как DBGridEh сделать запрет на изменение определенных ячеек?


3-3785
Samgin
2003-09-11 12:54
2003.10.02
Record already locked by this session


14-4060
yakshe
2003-09-15 15:04
2003.10.02
Хочу научиться создавать сайты. С чего начать?


14-4044
gg
2003-09-15 21:53
2003.10.02
Обработчик событий в паскале





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский