|
|
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
ecv wrote: > достоинства известны > недостаток - не покатит большой объем > 100000 объектов в одном спр > триггера или прикладнуха - за все надо платить даа? У меня max > 500000 - нормально усё... правда, пришлось работать напильником, это да. пока руку набил.... -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 16:46 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
И речь идет о том, чтобы не писать запросы для каждого справочника в явном виде, а спрятать это от программиста. Если я правильно тебя понял.А кто будет конфигурировать справочники ? Юзеры ? Конфигурацией системы должны заниматься специалисты. Иначе - бардак. У меня SQL-запрос писать нужно. Это единственное, что есть от программирования и это по силам даже начинающему программисту-студенту. И это пожалуй единственный спопоб сделать и просто и эффективно. Сделать мощный визард и исключить SQL в явном виде во первых сложно, и во вторых снизит эффективность работы с данными. Будет очередная 1С Речь идёт не только о справочниках. Указанная технология УНИВЕРСАЛЬНА и позволяет отображать любую списочную и древоподобную информацию в т.ч. и с посторонних таблиц (соседних баз). Справочник с единой структурой и интерфейсом менее универсален, хотя и является неплохим решением. Кстати, у меня он тоже есть, хотя упрощённый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 18:19 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
LSV И речь идет о том, чтобы не писать запросы для каждого справочника в явном виде, а спрятать это от программиста. Если я правильно тебя понял.А кто будет конфигурировать справочники ? Юзеры ? Конфигурацией системы должны заниматься специалисты. Иначе - бардак. У меня SQL-запрос писать нужно. Это единственное, что есть от программирования и это по силам даже начинающему программисту-студенту. И это пожалуй единственный спопоб сделать и просто и эффективно. Сделать мощный визард и исключить SQL в явном виде во первых сложно, и во вторых снизит эффективность работы с данными. Будет очередная 1С Речь идёт не только о справочниках. Указанная технология УНИВЕРСАЛЬНА и позволяет отображать любую списочную и древоподобную информацию в т.ч. и с посторонних таблиц (соседних баз). Справочник с единой структурой и интерфейсом менее универсален, хотя и является неплохим решением. Кстати, у меня он тоже есть, хотя упрощённый Именно юзеры (по требованиям :) ). Юзеры особо выдресированные, которые имеют звание админа, скорее всего. Они могут создать/удалить справочник, добавить/удалить/изменить поле, не говоря уже о самих значениях. Система у меня такая. Конечно, будут какие-то предопределенные справочники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 18:46 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
vinniPoohА когда на вновь созданный справочник должна ссылаться таблица с данными, она как-то модифицируется? во-первых для этого в таблице с данными должно быть соотвествующее поле. если оно есть, то на него накладывается внешний ключ на справочник, если его нет, то оно добавляется и см. п.1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 06:53 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
Для эффективной работы всё равно нужно знать и базовый SQL и РСУБД. Всё равно система оперирует запросами, а не какими-то модными объектными подходами. Если юзеры офигенно продвинутые, то что им мешает освоить базовый SQL ? Визард для создания таблиц/процедур/предстаалений можно заваять. Вот только зачем ? Всё уже изобретено. Аналогично и с конструкторами запросов. Навигационный подход к данным, как практикуется в dBase/1C/Navision и т.п. считаю безнадёжно устаревшим, хотя он обеспечивает независимость от СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 10:25 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
LSVДля эффективной работы всё равно нужно знать и базовый SQL и РСУБД. Всё равно система оперирует запросами, а не какими-то модными объектными подходами. Если юзеры офигенно продвинутые, то что им мешает освоить базовый SQL ? Визард для создания таблиц/процедур/предстаалений можно заваять. Вот только зачем ? Всё уже изобретено. Аналогично и с конструкторами запросов. Навигационный подход к данным, как практикуется в dBase/1C/Navision и т.п. считаю безнадёжно устаревшим, хотя он обеспечивает независимость от СУБД. Так-то оно так, но у меня в спецификации явно прописано: пользователи могут создавать справочники. Тут уж ничего не попишешь. Вот я и думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 11:42 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
>> но у меня в спецификации явно прописано: пользователи могут создавать справочники Если справочники простые, то для этого можно придумать древоподобную таблицу, где узлы это новые справочники. Корнем справочника есть некий узел дерева (можно где-то его объявить). Справочник может быть либо плоским либо древовидным. Хотя с произвольным набором полей будет посложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 12:19 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
vinniPooh Есть два варианта решения: 1. Использовать SQL DDL для создания/изменения таблиц в рантайме. Создавать таблицы, триггеры, ключи, таблицы с историей и т.д. Использовался этот подход. Правда пользователи не имеют доступ к изменению справочников, это делали программисты и администраторв готовых систем. Вкратце, добавлялся новый тип справочника (документа) в репозиторий, описывались параметры (поля) справочника (тип, наименование, значения по умолчанию и пр). Описывались связи между полями. Потом нажималась кнопка, которая создавала таблицы, поля, компилила автоматом процедуры по внесению, изменению, просмотру справочника. Триггера и связи БД не использовались. Вся логика зашивалась в процедуры. При компиляции определялась целевая БД и синтаксис процедур генерился в зависимости от синтаксиса SQL диалекта. Оказалась достаточно удобная схема позволяющая разрабатывать и внедрять продукты достаточно быстро. Но в отличии от подхода с одной универсальной таблицей проще синтаксис для отчетов и выше производительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 14:02 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
Estets vinniPooh Есть два варианта решения: 1. Использовать SQL DDL для создания/изменения таблиц в рантайме. Создавать таблицы, триггеры, ключи, таблицы с историей и т.д. Использовался этот подход. Правда пользователи не имеют доступ к изменению справочников, это делали программисты и администраторв готовых систем. Вкратце, добавлялся новый тип справочника (документа) в репозиторий, описывались параметры (поля) справочника (тип, наименование, значения по умолчанию и пр). Описывались связи между полями. Потом нажималась кнопка, которая создавала таблицы, поля, компилила автоматом процедуры по внесению, изменению, просмотру справочника. Триггера и связи БД не использовались. Вся логика зашивалась в процедуры. При компиляции определялась целевая БД и синтаксис процедур генерился в зависимости от синтаксиса SQL диалекта. Оказалась достаточно удобная схема позволяющая разрабатывать и внедрять продукты достаточно быстро. Но в отличии от подхода с одной универсальной таблицей проще синтаксис для отчетов и выше производительность. Очень интересно. А сколько времени разрабатывалась система? Могла ли структура таблицы изменятся после создаиня в рантайме? Были ли проблемы с откатом изменений таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 14:29 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
Проблем с откатом не может не быть. При откате меняется часть логики и она может не соответствовать общей инф. модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 17:06 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
Оправдала себя на практике система справочников, принятая в БАС . Все справочники в одной таблице. В общем, все они содержат относительно не много записей, поэтому эта таблица не растет на столько, что бы заметно было при выборках данных. Огромное преимущество - не засоряется база данных мелкими таблицами. Например, только в одной Зарплате более сотни разных справочников. Другое преимущество - элементарное добавление новых справочников в живой работающей системе, без остановки, без возни с исходными текстами и последующей перегенерации системы. Третье преимущество - программисты сопровождения должны выучить одну таблицу и правила работы с ней - это происходит за полчаса. Следующее - для ввода в данных в справочники и для выбора из них значений используется одна и та же функция - упрощение самой системы. Вот так выглядит настройка справочника: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:00 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
PVP Огромное преимущество - не засоряется база данных мелкими таблицами. Например, только в одной Зарплате более сотни разных справочников. Другое преимущество - элементарное добавление новых справочников в живой работающей системе, без остановки, без возни с исходными текстами и последующей перегенерации системы. Третье преимущество - программисты сопровождения должны выучить одну таблицу и правила работы с ней - это происходит за полчаса. Следующее - для ввода в данных в справочники и для выбора из них значений используется одна и та же функция - упрощение самой системы. Одно из решений, которое я, возможно, буду использовать - это статичная структура таблиц. Сейчас я предполагаю использование 5-ти таблиц. (Справочник, Запись, Поле, Значение, Тип). Если я понимаю, твоя таблица хранит деревья. Справочник является корнем дерева, поля - его ветвями, значения - листвой. Так ли это? Не возникает ли проблем с проходом по всему дереву (справочнику) для выбора небольшого количества полей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:25 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
PVP Огромное преимущество - не засоряется база данных мелкими таблицами. Например, только в одной Зарплате более сотни разных справочников. Другое преимущество - элементарное добавление новых справочников в живой работающей системе, без остановки, без возни с исходными текстами и последующей перегенерации системы. Третье преимущество - программисты сопровождения должны выучить одну таблицу и правила работы с ней - это происходит за полчаса. Следующее - для ввода в данных в справочники и для выбора из них значений используется одна и та же функция - упрощение самой системы. Расскажи плиз как устроена твоя таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:27 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
vinniPoohОдно из решений, которое я, возможно, буду использовать - это статичная структура таблиц. Сейчас я предполагаю использование 5-ти таблиц. (Справочник, Запись, Поле, Значение, Тип).На мой взгляд, это перебор в статичности. В БАС таблица, содержащая данные, условно статическая. Т.е. во время работы она статическая. При настройке, если в какой либо справочник добавляется такое поле, которого еще нет ни в одном справочнике, то структура таблицы меняется системными средствами - в нее добавляется новое поле. Есть некоторая избыточность. Но это не страшно, так как в общем объеме базы данных эта таблица пренебрежительно мала. vinniPoohЕсли я понимаю, твоя таблица хранит деревья. Справочник является корнем дерева, поля - его ветвями, значения - листвой. Так ли это? Да обычная таблица. Нужны деревья, помещай поля "Код вершины" и "Код источника" и работай с деревьями. А вообще, в самом начале разработки была допущена ошибка постановки, и работа с деревьями вынесена в отдельный модуль. Хотя ничего не мешает работать с древовидными справочниками в одщей системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:33 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
vinniPoohРасскажи плиз как устроена твоя таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:35 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
Ошибся. Предыдущий рисунок под руку попался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:37 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
Таблица SSprLst - список спраовочников. SSprGrup - друвовидная структура справочников SSprVar - имена полей, входящих в справочник с их свойствами. SSprData - данные всех справочников. До поля Pr_Str_Table - поля системные. За этим полем - набираются динамически при настройке по мере включения в них разных параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:40 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
Остальные таблицы общие для всей системы. Они используются для управления структурой других рабочих таблиц. Их еще несколько - операции, лицевые счета, и еще пара, которые уже практически не используются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 18:41 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
PVPОстальные таблицы общие для всей системы. Они используются для управления структурой других рабочих таблиц. Их еще несколько - операции, лицевые счета, и еще пара, которые уже практически не используются. Примерно так я это и представлял. Но мне бы не хотелось связываться с модификацией таблицы и потом - с избыточностью полей. Я предпочитаю внести еще один уровень - таблицу Значение, которая ссылается на таблицу Поле. Это избавляет от избыточности, но усложняет запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 19:15 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
vinniPoohНо мне бы не хотелось связываться с модификацией таблицы и потом - с избыточностью полей. Я предпочитаю внести еще один уровень - таблицу Значение, которая ссылается на таблицу Поле. Это избавляет от избыточности, но усложняет запросы.Усложнение запросов - это еще пол беды. А вот увеличение времени выборки данных - это уже савсем беда. На счет избыточности. Допустим она равна 100%. Это приведет к тому, что таблица со справочными данными будет, грубо говоря, в два раза больше по объему. Вопрос - как увеличится размер все базы данных в целом? Ответ - он не изменится. Т.к. в серьезной работающей системе Вы будете оценивать размер до 1 ГБ. Вряд ли, точнее. К тому, же на практике, если работать аккуратно с полями, то избыточность на самом деле не большая. Одно и то же поле, например K01, в может использоваться в разных справочниках и при этом иметь совершенно различный смылс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 19:21 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
PVPУсложнение запросов - это еще пол беды. А вот увеличение времени выборки данных - это уже савсем беда. А может и не пол беды, а больше. Если делать программу для продажи, то сложные запросы отобьют охоту у внедренцев работать с такой системой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 19:23 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
PVPВсе справочники в одной таблице. В общем, все они содержат относительно не много записей, поэтому эта таблица не растет на столько, что бы заметно было при выборках данных. доводилось сталкиваться с таким подходом и есть замечания: 1. Как быть с внешними ключами? Если в большой таблице есть записи из нескольких справочников, то как на уровне СУБД ограничить ввод в таблицу данных значений из конкретного справочника? Можно конечно ставить диапазон, но будут проблемы с добавлением значений. Можно во внешний ключ ввести ещё дополнительное поле, но тоже как-то имхо некрасиво. 2. Засорение базы сотней мелких таблиц - это конечно плохо, но есть и плюс - все таблицы имеют свои собственные имена и их можно предсказать при переносе между системами. А в Вашем подходе какое имя будет у справочника если Вы его передадите в стороннюю систему? Вобщем то оба эти замечания скорее религиозные (эмоциональные) чем технические и речь идёт о некой абстрактной красоте системы, но лично мне кажется, что красоту можно считать косвенным показателем качества ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 10:48 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
PVP PVPУсложнение запросов - это еще пол беды. А вот увеличение времени выборки данных - это уже савсем беда. А может и не пол беды, а больше. Если делать программу для продажи, то сложные запросы отобьют охоту у внедренцев работать с такой системой. Справочники, по идее, не сильно затормозят работу системы, ведь обращения к ним происходят достаточно редко, а отчеты по ним вообще не строятся. Насчет внедренцев - это скорее у программистов охота отобъется, так как они будут упрятывать запросы так, что их нигде не будет видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 10:49 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
vinniPooh Очень интересно. А сколько времени разрабатывалась система? Могла ли структура таблицы изменятся после создаиня в рантайме? Были ли проблемы с откатом изменений таблиц? Так называемое "Ядро документооборота" включающее собственно сам документооборот, модуль счетов-проводок и разработка тонкого клиента потребовал где-то 2 человеко-года. Что значит "изменятся после создания" если администратор удалил поле в таблице, или сменил его тип и не отразил изменение в репозитории, то он сам себе "злобный буратино" хранимые процедуры по работе с этим документом не скомпилятся или будут некорректно работать. Откатов как таковых нет ;) соответственно нет и проблем с ними, если администратор удалил параметр документа, то это отразится на ХП, но физически поле в таблице останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 11:23 |
|
||
|
Непостоянное число справочников с редактируемыми числом и типом полей
|
|||
|---|---|---|---|
|
#18+
стоит пожалуй более конкретно написать что не нравится в этом подходе, а точнее попробую указать на несостоятельность преимуществ PVP Огромное преимущество - не засоряется база данных мелкими таблицами. Например, только в одной Зарплате более сотни разных справочников. в чём трудность хранения в базе 100-150 дополнительных таблиц, если не считать затрат на придумывание имён для этих таблиц? с именами конечно есть проблемы, но они достаточно легко разруливаются системными соглашениями. PVP Другое преимущество - элементарное добавление новых справочников в живой работающей системе, без остановки, без возни с исходными текстами и последующей перегенерации системы. если в ТЗ на систему сразу стоит ограничение типа "должна быть возможность добавления новых справочников и создания документов, имеющих ссылки на эти справочники", то все перечисленные трудности не зависят от выбранного подхода. Выполнение одного CREATE TABLE никак не проблемнее чем INSERT INTO bigtable... и будет "возня с исходными текстами" или нет тоже лежит целиком на совести разработчика. PVP Третье преимущество - программисты сопровождения должны выучить одну таблицу и правила работы с ней - это происходит за полчаса. ... не только выучить одну таблицу, но и запомнить какие значения имеют одни и те же поля для разных справочников. А вот это уже никак не полчаса для "более сотни справочников". При наличии большого количества мелких таблиц с _одинковой_ общей частью на их освоение тоже уйдёт полчаса. А вот нестандартные дополнительные поля придётся учить и там и там. PVP Следующее - для ввода в данных в справочники и для выбора из них значений используется одна и та же функция - упрощение самой системы. Вот тут поподробнее, пожалуйста - как функция ввода может совпадать с функцией выбора?! Вероятно имеется в виду некая функция пользовательского интерфейса, но это тоже детали... Вобщем итоговое ИМХО - трудности, связанные с неоднозначностью интерпретации значения из большого мега-справочника, а именно ответ на вопрос "Какому под-справочнику принадлежит значение с кодом ХХХХ?", на мой взгляд перевешивают призрачные приимущества, которые указаны в качестве плюсов данного подхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 11:34 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33400174&tid=1545541]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 443ms |

| 0 / 0 |
