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

Откуда:
Сообщений: 3
Люди подскажите пожалуйста (или дайте ссылку где можно почитать), как использовать связи в DataBase. Или они носят чисто декаративный характер??
1 дек 06, 18:37    [3481754]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Не совсем "декорация", но используются только и исключительно на этапе разработки. В готовом приложении - бесполезны. Это инструмент, облегчающий разработку приложения.

Связи и отношения между таблицами
1 дек 06, 18:44    [3481791]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Василий_Н
Member

Откуда:
Сообщений: 3
Большое спасибо!
1 дек 06, 18:55    [3481829]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
ВладимирМ
Не совсем "декорация", но используются только и исключительно на этапе разработки. В готовом приложении - бесполезны. Это инструмент, облегчающий разработку приложения.

Связи и отношения между таблицами

А какже DRI ? Тоже декорация?!
Не согласен!
С уважением, Алексей.
1 дек 06, 18:58    [3481841]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Василий_Н
Member

Откуда:
Сообщений: 3
Aleksey-K
ВладимирМ
Не совсем "декорация", но используются только и исключительно на этапе разработки. В готовом приложении - бесполезны. Это инструмент, облегчающий разработку приложения.

Связи и отношения между таблицами

А какже DRI ? Тоже декорация?!
Не согласен!
С уважением, Алексей.

По подробнее можно про DRI, пожалуйста!
1 дек 06, 22:01    [3482293]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Василий_Н

DRI - это собственное изобретение. Вероятно, речь идет о (DataBase) Referential Integrity

Подробнее об этом читай здесь

http://www.foxclub.ru/articles/index.php?id=37

Aleksey-K

Еще раз внимательно читаем, что именно я написал

ВладимирМ
Это инструмент, облегчающий разработку приложения.


Далее несколько общеизвестных истин

Referential Integrity - "сам по себе" бесполезен. Это всего-лишь построитель. Builder или Wizard. Не знаю, как точнее будет в данном случае.

Его цель - это создание определенных хранимых процедур и подключение некоторых из них, как определенных триггеров.

Да, Referential Integrity использует постоянные связи. НО! КОГДА он их использует? В какой момент?

Очевидно, только и исключительно в процессе формирования хранимых процедур и триггеров. ВСЕ! Внутри тела триггера и хранимых процедур эти постоянные связи никак, никоим образом не используются.

Вот и получается, что постоянные связи были использованы только в момент генерации триггеров. На этапе РАЗРАБОТКИ. В готовом приложении (Run-Time) они не используются.

Именно это я и имел в виду. Постояные связи - инструмент РАЗРАБОТКИ. В Run-Time - бесполезны.
1 дек 06, 22:15    [3482310]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
ВладимирМ

DRI - это собственное изобретение. Вероятно, речь идет о (DataBase) Referential Integrity

К сожалению, DRI (declarative referential integrity) - декларативную целостность, придумал не я, а то бы жил бы в Сочи :). Странно, что вы Владимир не встречали такую абревеатуру!
Другое дело, что в VFP она реализуется через процедурную целостность (Хранимые процедуры, Триггеры), но так, как это сделано прозрачно для пользователя, то вполне корректно назвать реализацию Referential Integrity в VFP, как DRI! Вы же не сами пишети эти триггеры, а за вас это делает Wizard!
А связи между таблицами (а также указания реакции на нарушения целостности) нужны Wizard , что бы он САМ построил триггеры для поддержания целостности базы данных. Если Wizard все делает сам, то вполне логично назвать такой вариант построения целостности, как декларативной.
Теперь далее:
ВладимирМ

В готовом приложении - бесполезны

Вы что предлагаете, после того, как Wizard создал Триггеры удалить связи?
Я вас правильно понял?
А если надо будет что-то поменять ? Что же заново все связи рисовать?
С уважением, Алексей.
2 дек 06, 09:37    [3482904]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Встречал-то я много каких аббревиатур, но, поскольку большинство авторов, вот как Вы сейчас, просто приводят аббревиатуру НИКАК ее не расшифровывая, то понять, о чем же идет речь зачастую совершенно невозможно. Вот как в данном случае.

По поводу всего остального, повторю еще раз

ВладимирМ
Это инструмент, облегчающий разработку приложения.


В процессе написания приложения на FoxPro таких "подпорок" для облегчения написания приложения огромное количество. Некоторые очевидные (вот как постоянные связи или SET ASSERTS), некоторые совсем не очевидные (вроде дополнительных функций и процедур, обрабатывающих ситуации, которые могут возникнуть ТОЛЬКО при отладке - некорректное значение параметра, например).

Удалять или не удалять такие "подпорки" - личное дело каждого. Я считаю, что удалять особого смысла нет. Результат не стоит усилий. Но вот знать, что это используется только и исключительно на этапе РАЗРАБОТКИ - очень даже важно. О чем я и написал.
2 дек 06, 12:11    [3483028]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
FOX_user
Guest
Учитывая посещение вами форума по SQL Server, откровенно говоря, непонятна ваша настойчивость в данном вопросе.
5 дек 06, 17:20    [3494785]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
Василий_Н
Люди подскажите пожалуйста (или дайте ссылку где можно почитать), как использовать связи в DataBase. Или они носят чисто декаративный характер??

Как правильно пояснил Владимир - они не используются в FoxPro... так, как это используется в сервеной базе данных MS SQL Server... Только для облегчения работы построителя этих самых упомянутых выше - тригеров и хранимых процедур...

Мое добавление к данному топику, что использование данных вещей очень сильно замедляет работу с данными FoxPro... При более 200-300 тысяч записей наступают очень большие "тормоза", отсюда практический вывод - отказаться от этой RI либо использовть MS SQL Server 2005, что собственно компания-производитель FoxPro и рекомендует...
5 дек 06, 18:55    [3495396]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6901
Sergey Ch
...либо использовть MS SQL Server 2005, что собственно компания-производитель FoxPro и рекомендует...

А что ИМ еще остается? Рекомендовать FireBird? :)
5 дек 06, 19:52    [3495602]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
FOX_user
Учитывая посещение вами форума по SQL Server, откровенно говоря, непонятна ваша настойчивость в данном вопросе.

Модератор: Давайте уважать друг друга и не переходить на личности.

А если неофициально, то у меня в профиле вообще мало MS SQL Server - это говорит только о том, что по данной технологии очень много литературы, где можно найти ответы на все вопросы... Чем собственно и пользуюсь...

C FoxPro к сожалению, увы - другая картина - кроме HELP, написанного хорошими ребятами почти ничего от VFP 9.1 нет...

P.S. У самых крутых специалистов данного форума в профиле есть только ПТ
5 дек 06, 20:11    [3495645]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Cyv
Member

Откуда: Клайпеда
Сообщений: 164
Sergey Ch
отказаться от этой RI

Сергей, не поднимай руку на святое :)
Есть на просторах инета самописные триггеры RI, оригинальные похоже
не сильно изменились со времён VFP3. Можно и личное творчество проявить.
Сменивший меня на боевом посту коллега заменил все визардовские RI триггера
на более другие :). Вроде пока все живы, хотя я теперь смотрю на это со стороны...
Лично меня стандартные пока не подводили.
5 дек 06, 20:45    [3495695]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
Cyv
Сергей, не поднимай руку на святое :)
Есть на просторах инета самописные триггеры RI, оригинальные похоже
не сильно изменились со времён VFP3. Можно и личное творчество проявить.
Сменивший меня на боевом посту коллега заменил все визардовские RI триггера
на более другие :). Вроде пока все живы, хотя я теперь смотрю на это со стороны...
Лично меня стандартные пока не подводили.

Просто поделился своим опытом и опытом одной большой ERP, где все эти триггеры и хп похоронили очень хорошую идею... Они отказались, скорость возросла неимоверно и они пока держутся на рынке... А какой размер у Вас таблиц и используются ли они в дополнение с Ole DB Provider?
5 дек 06, 20:52    [3495706]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Sergey Ch
Мое добавление к данному топику, что использование данных вещей очень сильно замедляет работу с данными FoxPro... При более 200-300 тысяч записей наступают очень большие "тормоза", отсюда практический вывод - отказаться от этой RI либо использовть MS SQL Server 2005, что собственно компания-производитель FoxPro и рекомендует...

Здесь проблема не в RI (это частный случай), а в логике обработки триггеров в FoxPro вообще.

Дело в том, что FoxPro обрабатывает по одной записи за раз. Т.е. даже в групповых командах вроде APPEND FROM добавление пойдет по одной записи с тем, чтобы обеспечить корректную обаботку триггера на каждую запись.

Отсюда и тормоза при массовых обработках.

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

Если тормоза пошли при "штатной" работе (модификация одного документа), то это уже вопрос оптимизации самих триггеров. Не должен он тормозить при таких незначительных масштабах. "Что-то в консерватории надо подправить" (С)
5 дек 06, 21:40    [3495761]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
FOX_user
Guest
Sergey Ch

А если неофициально, то у меня в профиле вообще мало MS SQL Server - это говорит только о том, что по данной технологии очень много литературы, где можно найти ответы на все вопросы... Чем собственно и пользуюсь...

Ну в общем-то комментарий (без перехода на личности как-раз) был как-раз не вам, а вы все-таки продемонстрировали переход на личности (или, если хотите, в очередной раз безадресно поделились личным опытом).

Sergey Ch

При более 200-300 тысяч записей наступают очень большие "тормоза", отсюда практический вывод - отказаться от этой RI либо использовть MS SQL Server 2005

Чисто практический интерес: а на каком количестве пользователей, на каких операциях, на каком качественном составе этих 200-300 тысяч записей, на каком железе такое наблюдается ? Без намеков, но бывает случаи, когда в триггеры и RI навешивают достаточное количество кода, которого там не должно быть в принципе (ибо логика что и где проверять все-таки должна быть разумной: контроль целостности данных отдельно, бизнес-логика отдельно).

Sergey Ch

опытом одной большой ERP

Не откроете секрет, какой именно ? В небезызвестной 1с(dbf-версия), например, выбран не фоксовый контейнер базы и организован не самый плохой подход для работы со словарем базы (хотя реализован однозначно не лучший способ с самими данными и журналами измеений). При этом работа со ссылочной целостностью в общем-то мало кого напрягает.
6 дек 06, 13:32    [3498876]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Cyv
Member

Откуда: Клайпеда
Сообщений: 164
Sergey Ch
А какой размер у Вас таблиц и используются ли они в дополнение с Ole DB Provider?

Таблиц в базе на сегодня ~250, размер основных рабочих таблиц (не справочников) 150-850 тыс.записей
Массированная вставка используется время от времени подготовленным человеком - администратором подсистемы и время работы определяется по большей части доп.проверками и
перекодированием. Основная работа программы организована с нормальным :) количеством
вставок/удалений и полным отсутствием тормозов на этой почве.

В модальных формах при вводе/редактировании отсутствуют дублирующие доп.проверки - перехватывается ошибка соответствующего триггера - всё мгновенно.

Никаких провайдеров, всё нативно :). Но повторюсь, по отношению ко мне - это "из прошлой
жизни". Наблюдаю со стороны уж скоро 2 года, всё работает и развивается.
6 дек 06, 22:02    [3501757]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
FOX_user
Чисто практический интерес: а на каком количестве пользователей, на каких операциях, на каком качественном составе этих 200-300 тысяч записей, на каком железе такое наблюдается ? Без намеков, но бывает случаи, когда в триггеры и RI навешивают достаточное количество кода, которого там не должно быть в принципе (ибо логика что и где проверять все-таки должна быть разумной: контроль целостности данных отдельно, бизнес-логика отдельно).
Задач было несколько, потому как я пытался честно "прикрутить" теоритические знания баз данных к FoxPro. Самый большой провал был у меня на задаче для call-centre, но там при вставке записи проверялось достаточно много, потому как форма была довольно большая и некоторые справочники заполнялись "на лету", активных пользователей не более 50... Но давно это было и FoxPro был 7.0 Сильно большие проблемы были с электронной торговлей (VFP 8.0 OleDB Provider + ASP.NET VB.NET 1.1), вплоть до отказа в доступе следующему клиенту (задачу переделали на MS SQL Server - все сразу ушло)... После этого я не стал это применять...
FOX_user
Не откроете секрет, какой именно ? В небезызвестной 1с(dbf-версия), например, выбран не фоксовый контейнер базы и организован не самый плохой подход для работы со словарем базы (хотя реализован однозначно не лучший способ с самими данными и журналами измеений). При этом работа со ссылочной целостностью в общем-то мало кого напрягает.

Это импортная система Opera Pegasus, но они потом отказались и вернули всю логику на клиента...

Сообщение было отредактировано: 6 дек 06, 23:04
6 дек 06, 23:01    [3501837]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
Cyv
Никаких провайдеров, всё нативно :). Но повторюсь, по отношению ко мне - это "из прошлой жизни". Наблюдаю со стороны уж скоро 2 года, всё работает и развивается.

Надеюсь, что у них все и дальше будет хорошо :)

Good luck!
6 дек 06, 23:03    [3501842]     Ответить | Цитировать Сообщить модератору
 Re: DataBase  [new]
MSDN
Guest
Все пьете и пьете )
7 дек 06, 00:01    [3501908]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить