|
|
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Друзья, нужна помощь в понимании концепции. Начну сразу с примера. В какой-либо организации заводим информацию сотрудниках. Информация стандартная: ФИО, адрес, паспортные данные, образование, воинская обязанность и т.д. Некоторые из этих полей свободны для ввода значений (ФИО, адрес), другие же имеет смысл делать списком (предоставлять выбор значений). Например, образование у нас имеет фиксированные и повторяющиеся значения, воинские звания, годность - аналогично. Соответственно возникает вопрос о создании справочников, таких как: "Вид образования", "Воинское звание", "Годность к службе". В общем, вопрос состоит в том, насколько корректно использование множества справочников, структура которых примитивна: 2 поля (ID и текстовое описание)? Множество это, разумеется, может быть приличным по объему. Вше я привел лишь несколько примеров. Дело в том, что руководитель считает использование подобных справочников бессмысленно. Однако альтернатив никаких не подсказывает. Откройте секрет, пожалуйста :) Благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:14 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1Друзья, нужна помощь в понимании концепции. Начну сразу с примера. В какой-либо организации заводим информацию сотрудниках. Информация стандартная: ФИО, адрес, паспортные данные, образование, воинская обязанность и т.д. Некоторые из этих полей свободны для ввода значений (ФИО, адрес), другие же имеет смысл делать списком (предоставлять выбор значений). Например, образование у нас имеет фиксированные и повторяющиеся значения, воинские звания, годность - аналогично. Соответственно возникает вопрос о создании справочников, таких как: "Вид образования", "Воинское звание", "Годность к службе". В общем, вопрос состоит в том, насколько корректно использование множества справочников, структура которых примитивна: 2 поля (ID и текстовое описание)? Множество это, разумеется, может быть приличным по объему. Вше я привел лишь несколько примеров. Дело в том, что руководитель считает использование подобных справочников бессмысленно. Однако альтернатив никаких не подсказывает. Откройте секрет, пожалуйста :) Благодарю! Любое "поле" связано с понятием "классификатора". Когда Вы введете в поле "Фамилия" значение "Петров" - Вы отнесете человека к классу людей, имеющих фамилию Петров. Аналогично по любому другому полю (формально - абсолютно по любому). Ваш руководитель, концептуально, прав - раз Вы не заводите справочник по Фамилии, почему его необходимо заводить по другим полям? Аргумент - ограниченное число значений - не является убедительным. Как провести границу? Несколько более убедительным (но тоже не достаточно) является аргумент, что два атрибута: код и наименование. В СУБД для таких случаев используется специальный тип свойства. Который как раз и отличается тем, что его значение состоит из двух атрибутов. Разумеется, можно так же использовать и стандартное решение с отдельными таблицами и "ключами". Поскольку СУБД в Вашем распоряжении просто нет именно его Вам и нужно использовать)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:24 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1, Использование справочников всегда оправдано, когда используются связи pk-fk. Но можно немного извернуться. Создается таблица с id_справочника, id значения, значение. (т.е. одна таблица на множество справочников) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:25 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1, Использование справочников всегда оправдано, когда используются связи pk-fk. Но можно немного извернуться. Создается таблица с id_справочника, id значения, значение. (т.е. одна таблица на множество справочников) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:26 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1В общем, вопрос состоит в том, насколько корректно использование множества справочников, структура которых примитивна: 2 поля (ID и текстовое описание)? если вы точно знаете, что количество значений и сами значения не изменятся никагда , то вполне можно обойтись перечислением, например есть только два пола: "муж" и "жен", если же значения могут добавляться/изменяться в процессе работы, то Пользователи должны иметь возможность делать это сами, а не искать программиста, и образование, и воинские звания я бы вынес в справочники - они могут измениться после какого-нить чиха любимого Правительства, либо на момент сдачи проги в эксплуатацию будут заполнены не все значения, либо они будут отличаться в другой от вашей стране, в которую вы захотите свою продать ИМХО - это единственный критерий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:35 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1В общем, вопрос состоит в том, насколько корректно использование множества справочников, структура которых примитивна: 2 поля (ID и текстовое описание)? если же вопрос состоит в том - сделать один справочник на всех, или по справочнику каждому... дело вкуса, мне EAV для таких задач очень не нравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:41 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1Соответственно возникает вопрос о создании справочников, таких как: "Вид образования", "Воинское звание", "Годность к службе". В общем, вопрос состоит в том, насколько корректно использование множества справочников, структура которых примитивна: 2 поля (ID и текстовое описание)? Множество это, разумеется, может быть приличным по объему. Вше я привел лишь несколько примеров. Дело в том, что руководитель считает использование подобных справочников бессмысленно. Однако альтернатив никаких не подсказывает.1. Названия значений могут меняться 2. Защита от неправильного ввода (это можно проверять чек-констрейном, но не полностью - в справочниках можно выделить актуальные значения для ввода, и при этом не запрещать существование старых значений) 3. Простота сопровождения кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:46 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
lLocustВ_поисках_1, Использование справочников всегда оправдано, когда используются связи pk-fk. Но можно немного извернуться. Создается таблица с id_справочника, id значения, значение. (т.е. одна таблица на множество справочников) Изворачиваться не нужно. Так как возникнут другие проблемы (например, поддержка ОЦ), то есть, Вы будете вовлечены в цепочку изворачиваний)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:47 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Бредятина, Это да, я то же не сторонник такого подхода... просто съакцентировался на авторОднако альтернатив никаких не подсказывает. Вот и предложил ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 14:06 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В общем, решил выложить текущую разработку. Если не сложно, гляньте одним глазком, пожалуйста. Просьба не пугаться - там все примитивно. Итак, в наличии аж 15 справочников: TSprOrg - список организаций (в которых ранее состоял сотрудник) TSprTown - список городов (где ранее работал сотрудник) TSprTypeOtp - виды отпуска (без сохранения, с сохр., ...) TSprStatus - виды родства (муж, жена, дочь, ...) TSprTypeDocEdc - виды документов об образовании (удостоверение, аттестат, диплом, ...) TSprProf - наименование профессий + привязка к подразделению TSprSemP - семейное положение (женат, замужем, холост, ...) TSprGr - гражданство TSprEdc - вид образования (среднее-специальное, высшее, ...) TSprServ - список подразделений TSprLang - список языков (какими владеет сотрудник) TSprLngLevel - уровень владения языком (со словарем, ...) TSprWarVz - воинское звание (рядовой, матрос, ...) TSprWarSpec - воинская специальность TSprWarGodn - категории годности к воинской службе Собственно, все справочки открыты для редактирования/добавления данных. И вот руководитель считает, что смысла в этих справочниках нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:14 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1И вот руководитель считает, что смысла в этих справочниках нет... А вбивать значения он сам будет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:02 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1И вот руководитель считает, что смысла в этих справочниках нет...я ничего радикально лишнего не увидел, разве что семейное положение да степень родства, их вполне можно делать перечислениями возникают вопросы из разряда " это где, зачем и кому нужны эти данные? " может и ваш руководитель именно это имеет в виду? что не нужна никому эта информация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:04 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Chop, хм... А может Вы и правы - может имелась в виду необходимость в семантическом плане. Уточню, спасибо :-) Насчет перечислений - не могли бы пояснить что имеется в виду? Хранение данных не в самой БД, а где-то еще? Ни разу не сталкивался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:39 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1 Вы все правильно делаете. Не хочу разводить тут теоретические измышления, просто на основании более чем 25-летнего опыта работы разработки ПО (со множеством разных СУБД), многократно убедился в том, что любые данные, которые можно представить в виде справочника, должны быть им представлены. И точка. Хотя бы потому, что все равно рано или поздно это придется сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:43 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1В общем, вопрос состоит в том, насколько корректно использование множества справочников, структура которых примитивна: 2 поля (ID и текстовое описание)? Абсолютно 100% корретктно. В_поисках_1Множество это, разумеется, может быть приличным по объему. Вше я привел лишь несколько примеров. Дело в том, что руководитель считает использование подобных справочников бессмысленно. Однако альтернатив никаких не подсказывает. Другое дело -- множество одинаковых справочников просто тупо долго делать. Альтернатива -- универсальные справочники (справочник, в котором в ПК хранится ещё и тип справочкика) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:05 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1Насчет перечислений - не могли бы пояснить что имеется в виду? Хранение данных не в самой БД, а где-то еще? Ни разу не сталкивался... В коде программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:06 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
_мод, понял, спасибо. MasterZiv, MasterZivДругое дело -- множество одинаковых справочников просто тупо долго делать. Альтернатива -- универсальные справочники (справочник, в котором в ПК хранится ещё и тип справочкика) Т.е положим есть множество справочников, у которых схожие поля => можно создать один справочник из этих повторяющихся полей и соединять данный универсальный справочник с другими "дочерними" справочниками, поля у которых уникальны по отношению друг к другу. Вы это имели в виду? d7i, d7iНе хочу разводить тут теоретические измышления, просто на основании более чем 25-летнего опыта работы разработки ПО (со множеством разных СУБД), многократно убедился в том, что любые данные, которые можно представить в виде справочника, должны быть им представлены. И точка. Хотя бы потому, что все равно рано или поздно это придется сделать. Я Вас понял. Просто хотелось бы выявить приемлемый аргумент (который бы устроил всяких профессоров-д.т.н.'ов), оправдывающий наличие справочников. Я вижу этот аргумент в таком виде - лень/удобство/экономия времени. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:21 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1Просто хотелось бы выявить приемлемый аргумент (который бы устроил всяких профессоров-д.т.н.'ов), оправдывающий наличие справочников. Я вижу этот аргумент в таком виде - лень/удобство/экономия времени.Написали несколько списков аргументов, они вполне подойдут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:33 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> в наличии аж 15 справочников Вы напрасно обозвали их справочниками. Статус официального административно-территориального деления - не то же самое, что ваши представления о языках или уровнях владения ими. > руководитель считает, что смысла в этих справочниках нет... Значит, он ничего не знает о проектировании. Так бывает, это нормально. Количество сущностей стандартных данных не должно вас смущать, на самом деле их гораздо - на порядки - больше пятнадцати. В вашей структуре не отражена контекстная зависимость. Скажем, однополые браки могут быть разрешены на части территории государства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:59 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1 Справочники используются для условно-постоянных данных. Позволяют (пишу с ходу): - структуризировать данные (более понятная, четкая структура БД) - обеспечить надежную идентификацию (исключает ошибки при вводе, так как вместо ввода данных используется выбор из справочника) - упростить обслуживание (модификацию), т.е. переложить ее на пользователя. К тому же данные в справочник вводятся однократно ,что упрощает их верификацию - получить большую безопасность (проще организовать разграниченный по уровням доступ к данным) Ну и многое другое, о чем с ходу и не упомнить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 18:02 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Идея универсального справочника (как и EAV) просто обязана придти в голову каждому начинающему проектировщику. Однако взамен сомнительного сокращения количества таблиц (кому оно мешало) получаем ослабление ссылочной целостности, лишнее связывание разнородных сущностей (а вдруг понадобится права по разному раздавать, или репликацию организовывать) и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 18:38 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1, я бы на вашем месте во всех справочниках сделал бы поля одинаково названными: ID и Name, например. Префиксы и суффиксы ничего полезного не несут, а хлопот в будущем могут доставить изрядно, начиная от написания запросов, и заканчивая разработкой универсального пользовательского интерфейса для такого рода справочников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 18:56 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> данные в справочник вводятся однократно ,что упрощает их верификацию Административно-территориальное деление, например, по сути своей имеет темпоральный характер. Глобальный смысл выделения условно постоянных данных - разные внешние источники данных, разный жизненный цикл данных, использование разного контекста. Ну, и стандартные правила проектирования, разумеется, - как обобщенный практический критерий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 19:23 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1 MasterZiv, MasterZivДругое дело -- множество одинаковых справочников просто тупо долго делать. Альтернатива -- универсальные справочники (справочник, в котором в ПК хранится ещё и тип справочкика) Т.е положим есть множество справочников, у которых схожие поля => можно создать один справочник из этих повторяющихся полей и соединять данный универсальный справочник с другими "дочерними" справочниками, поля у которых уникальны по отношению друг к другу. Вы это имели в виду? Наверняка я имел в виду не это, поскольку из этого я нихрена не понял. Я имел в виду следующее: Допустим, имеем справочники: NAME (id -> name) SURNAME (id -> name) PATRONYMIC (id -> name) GENDER( id-> name) Мы можем все эти справочники реализовать универсальным справочником: UNIDICT (id -> dict_type{'NAME','SURNAME','PATRONYMIC','GENDER'}, name) Нотация такая: ТАБЛИЦА ( первичный ключ -> поля атрибутов ) атрибут { список возможных значений через запятую } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 21:36 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1Насчет перечислений - не могли бы пояснить что имеется в виду? Хранение данных не в самой БД, а где-то еще? Ни разу не сталкивался...жестко заданный набор значений для поля, задается на этапе программирования системы, в 1С это отдельный тип метаданных, называется перечисление в отличие от справочника, в MySQL - тип поля SET/ENUM в других БД может еще как-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 22:42 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
SERG1257Идея универсального справочника (как и EAV) просто обязана придти в голову каждому начинающему проектировщику. Однако взамен ... получаем ...+1 я - противник EAV во всех случаях, когда без него можно обойтись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 22:46 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
В_поисках_1Просто хотелось бы выявить приемлемый аргумент (который бы устроил всяких профессоров-д.т.н.'ов), оправдывающий наличие справочников. Я вижу этот аргумент в таком виде - лень/удобство/экономия времени. Так? Самое главное - поиск объектов по их свойствам. При поиске значения тоже выбираются из тех же справочников. Фактически вы классифицируете оьбъекты при помощи классификаторов со всеми вытекающими последствиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 09:31 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
ChopSERG1257Идея универсального справочника (как и EAV) просто обязана придти в голову каждому начинающему проектировщику. Однако взамен ... получаем ...+1 я - противник EAV во всех случаях, когда без него можно обойтисьТогда ответь, для сабжевого случая можно обойтись ? С учетом, что будет тенденция к росту числа справочников до 30-50. Если не делать универсального справочника, то неизбежно нужно делать толковый конструктор отдельных справочников + обвязка безопасностью + автоматическая манипуляция этими справочниками в системе. Это немалый участок работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 10:32 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
ChopSERG1257Идея универсального справочника (как и EAV) просто обязана придти в голову каждому начинающему проектировщику. Однако взамен ... получаем ...+1 я - противник EAV во всех случаях, когда без него можно обойтись ЕАВ-подобные подходы хороши, когда надо организовать презентацию данных. Если каждый справочник вполне "заслуживает" отдельную таблицу, то для их визуализации, напротив, напрашивается одна универсальная форма типа таблицы СуррогатныйАйди - СтроковыйМнемокод - Номер для упорядочивания - Имя/Название - Комментарий/Описание (такова структура большинства простых плоских справочников). Для красивого и правильного отображения справочников в универсальной форме нужно обращаться к стандартным метаданным (словарям) СУБД или хранить собственные метаданные. Бывают случАи, когда без еав-подобных подходов трудно обойтись и в самой структуре данных. В этом случае тем более нужные какие-то метаданные, которые позволят настроить логику использования этой еавешной беспорядицы и обеспечат ее визуализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 10:43 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
LSV...ответь, для сабжевого случая можно обойтись ?можно с необходимостью использовать EAV столкнулся только один раз, да и то грешу на свои кривые руки, что не смог найти кошерного решения для задачи создания N-мерной матрицы :) LSVС учетом, что будет тенденция к росту числа справочников до 30-50. Если не делать универсального справочника, то неизбежно нужно делать толковый конструктор отдельных справочников + обвязка безопасностью + автоматическая манипуляция этими справочниками в системе. Это немалый участок работы.и с учетом этого - тоже структура БД проектируется один раз, потом только дорабатывается необходимости создавать по 30-50 справочников в месяц... хоть убей - моего воображения представить такое не хватает, с-но и толковый конструктор для этого не нужен универсальный справочник, EAV и толковый конструктор нужны разве что при создании тиражного решения всяко-разных интернет-магазинов, чтобы сайтоклепатель среднего уровня подготовки мог без труда и программирования создать все категории/свойства товара для очередного ларька и это - немалый участок работы, создать такой универсальный справочник... одноразово проще и быстрее, для меня во всяком случае, создать 10-к справочников, чем писать один универсальный на все случаи жизни, готов признать, что для того, кто такими универсальными справочниками занимается постоянно, может быть все наоборот но это все-равно не снимает сложности сопровождения таких монстров приходилось такое сопровождать - удовольствие еще то большинство моих справочников имеют стандартную структуру: 1. id 2. pid 3. caption 4. fullcaption +/- поля, которые необходимы для каждого конкретного случая, такой подход очень упрощает/ускоряет и разработку, и сопровождение я даже не задумываюсь о том, чтобы таблицы одинаковой структуры слить в одну как-то, вдохновенный 1С-м , пытался создать класс-шаблон для работы со справочниками, но как-то так руки не дошли закончить начатое, остановился на том, что на создание нового справочника с базовым ГУИ/КРУД уходило полчаса, на тот момент меня это устравивало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 10:56 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
универсальный справочник, EAV и толковый конструктор нужны разве что при создании тиражного решения всяко-разных интернет-магазинов, чтобы сайтоклепатель среднего уровня подготовки мог без труда и программирования создать все категории/свойства товара для очередного ларька и это - немалый участок работы, создать такой универсальный справочник...1. Ну у программиста должны быть "тиражные решения". Иначе он всю жизнь будет боянить в каждой системе одни и те же справочники. 2. При наличии универсального справочника+ EAV, заказчик может сам создать новый справочник и тут же его заюзать. Любая долгоживущая система (с уклоном в доработки время от времени) должна иметь подобный механизм. Тогда большая часть доработок будет настройками не меняя исх.код. И сама система и ее настройки смогут легко переноситься с одной системы в другую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 16:10 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
LSV1. Ну у программиста должны быть "тиражные решения". не уверен наработки - должны быть и есть, никуда от этого не денешься, а тиражные решения - как повезет LSV2. При наличии универсального справочника+ EAV, заказчик может сам создать новый справочник и тут же его заюзать.это просто продукт на продажу, в котором Заказчик сам себе настраивает справочники как хочет, без программиста :) если есть Заказчик на такой продукт, то почему бы и нет? не уверен, правда, что взялся бы за такой заказ :) LSVИначе он всю жизнь будет боянить в каждой системе одни и те же справочники.вы - противник повторного использования кода? :) нет пределов совершенствованию, никто не мешает создать свой класс/библиотеку функций/базовую структуру БД, и рефакторить ее хоть до пенсии LSVЛюбая долгоживущая система (с уклоном в доработки время от времени) должна иметь подобный механизм. Тогда большая часть доработок будет настройками не меняя исх.код. И сама система и ее настройки смогут легко переноситься с одной системы в другую.даже теоретически создание такого механизма, как и любого другого универсального решения, посложнее, чем решение нескольких частных случаев, насколько дороже... не знаю могу сказать, что если бы та система, которую мне пришлось сопровождать, была не на EAV, а обычная реляционная - то сопровождать и дорабатывать ее было бы значительно проще и дешевле, а так создаешь новый справочник/документ... это - просто новый айдишник/запись в общей таблице, вместо того, чтобы из самой структуры БД понять структуру данных, надо где-то хранить/документировать множество дополнительной информации об этой структуре, кто такое делает в боевых условиях? кто будет тратить треть времени на документирование того запроса, который написал? пока что кроме себя не встретил никого не столько думаешь о том, как оптимизировать запрос, сколько о том, в каком куске кода есть вероятность найти связи между данными, потому что до тебя с этой системой успел поработать не один программист, сколько и каких справочников насоздавали, и зачем - один леший знает пока нароешь где и что сидит... полтора года проработал с системой, а специалистом в ней так и не стал, с чем столкнулся сам, что накопал и задокументировал - то и знаю который будет отображать реальные соотношения между данными, либо жесткое документирование, что ничуть не дешевле, и тогда он становится ничуть не универсальней, чем стандартная реляционная схема, только гемора больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 17:47 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Вообще то говоря, сабж был не про ЕАВ, а про Единую таблицу для минисправочников. В средних системах таких справочников нужны сотни. В некоторых постоянно нужны новые (н-р параметры товара). Для этого вполне подойдет общая таблица. Совсем не значит, что это будет таблица для всех справочников системы. И ЕАВ предназначен не для всей системы , а для заранее неизвестных параметров. Т.е. ЕАВ это удобное дополнение к сущ. фиксированной схеме. Для постоянно эволюционирующей системы, работающей у неск. разных заказчиков, универсальный справочник и ЕАВ - реально нужные вещи. Любая приличная учетная система имеет нечто подобное, т.к. нужно максимальное отделение бизнес-логики от кода самой программы. Одноразовые простые проекты могут и обойтись без сабжа. Но это будет хардкод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 18:16 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Хорошо, давайте по EAV будем копья ломать в других топиках. LSV В средних системах таких справочников нужны сотниИ кого напрягает лишняя сотня таблиц? Мне кажется проблема здесь в том что выгоду получают одни, а риски несут другие. И первые вторых никогда не поймут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2013, 19:37 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
LSVВообще то говоря, сабж был не про ЕАВ, а про Единую таблицу для минисправочников. В средних системах таких справочников нужны сотни. В некоторых постоянно нужны новые (н-р параметры товара).ради интереса глянул ТиС 1С-а семерки... 2 десятка справочников, 3 десятка перечислений (которые можно назвать мини-справочниками) итого - полсотни штук, в ПУБ-е, если правильно помню, раза в полтора больше мне кажется вы несколько погорячились по поводу сотен ТиС для вас мелкая и нетиражная система? или не работает у нескольких клиентов? LSVЛюбая приличная учетная система имеет нечто подобное, т.к. нужно максимальное отделение бизнес-логики от кода самой программы.по поводу критериев, по которым определяется приличная система, спрашивать не буду :) а вот фразу " отделение бизнес-логики от кода самой программы " не понял, может вы имели в виду не программу, а БД? иначе мне не понятно, как и главное зачем, отделять бизнес-логику от программы, которая эту бизнес-логику реализует кстати, вчера забыл спросить, LSV, а что вы скажете по поводу нормализации, быстродействия БД и других страшных слов ДБА? если ваша сотня мелких справочников сидит в одной таблице, то это почти наверняка означает, что с этой таблицей работают если не все, то большинство Пользователей системы, как они ее поделят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 06:30 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Chop, ("свойства" - "атрибуты" должны жить сами по себе и у пользователя - модельщика должна быть возможность завести скоко надо таких "свойства" - "атрибуты") "таблички" (классификатор свойств-атрибутов) должны жить сами по себе и у пользователя - модельщика должна быть возможность завести скоко надо таких "табличек" кроме "табличек" должны быть классификаторы "табличек" (таблички табличек), классификаторы классификаторов,.... и у пользователя - модельщика должна быть возможность завести скоко надо таких классификаторов и "программный код" (в отличии от "бизнес кода" в понимании ЛСВ) должна автоматически интерпретировать, визуализировать и вести всю эту байду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 12:30 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
ДБА - тупой баран обычно по части структуризации знаний, технический специалист ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 12:31 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
СУБД , БД - инфраструктурная фигня, с которыми вынужденно приходиться общаться, как и с дисками и мониторами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 12:32 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
LSV Вообще то говоря, сабж был не про ЕАВ, а про Единую таблицу для минисправочников. В средних системах таких справочников нужны сотни. В некоторых постоянно нужны новые (н-р параметры товара). Для этого вполне подойдет общая таблица. Совсем не значит, что это будет таблица для всех справочников системы. И ЕАВ предназначен не для всей системы , а для заранее неизвестных параметров. Т.е. ЕАВ это удобное дополнение к сущ. фиксированной схеме. Для постоянно эволюционирующей системы, работающей у неск. разных заказчиков, универсальный справочник и ЕАВ - реально нужные вещи. Любая приличная учетная система имеет нечто подобное, т.к. нужно максимальное отделение бизнес-логики от кода самой программы. Одноразовые простые проекты могут и обойтись без сабжа. Но это будет хардкод. Простые с виду вначале справочники, со временем и ростом системы, обычно обрастают дополнительными аттрибутами и требованиями к ним. И такая помойка станет большой головной болью в перспективе. Не надо зарится на кусок сыра в мышеловке - он только с виду вкусный и легкодоступный, потом когда защимит морду - уже не сможешь от него отделаться!)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 14:55 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> должна автоматически интерпретировать, визуализировать и вести всю эту байду Другими словами, существует явная вспомогательная метамодель. Грандиозный минус - жёсткая привязка к СУБД. Идеологический минус - "размазанность" структуры. Предположим, есть необходимось представить содержимое базы данных в виде процессов. ОК, нет проблем. Теперь мы хотим описывать алгоритмы. ОК, тоже легко, но аргументами будут выступать уже сущности, их экземпляры (и подмножества) и процессы. Либо мы будем вынуждены дублировать описания процессов в новой метамодели (с необходимостью синхронизации и пр. геморроем). Можно по-другому - завести метаметамодель. И вот здесь засада: сложность решения начинает зашкаливать. Ни об одном практическом решении я не слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 15:02 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, метамоделей всего два - структурная и процессная субд (те, какими пользуемся) - уровень экземплярных моделей, и то куцые в плане реализации сложность не зашкаливает , а приближается к нормальному ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 15:22 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> метамоделей всего два - структурная и процессная Это сейчас две. Нет других задач - нет необходимости в других метамоделях. Понадобится, например, автоматизация поддержки принятия решений - простых вариантов реализации не будет. > сложность не зашкаливает , а приближается к нормальному Если бы была возможность всегда использовать только элементы одной модели как аргументы для всех метамоделей, - это было бы универсальным решением. На практике это сложно реализовать, для части аргументов потребуется предварительная интерпретация. Добавьте стандартные задачи - история изменений, локализация, разделение доступа и пр., - я бы не назвал сложность нормальной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 15:44 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, я дмуаю вот как струкурная модель дает понимание - как мир может быть обустроен (есть "чек" и есть "президент", имеется потенциальные возможности (связи) становления чеков и президентами) процессная модель - возможный граф состояний для актуализции потенции других моделей нет наверное, этих достаточно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 17:58 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> я дмуаю вот как Логично. Только структурных моделей очень много. Посмотрите, как может меняться ваша структурная модель. Может человек стать президентом? Да, если речь идет о лавке. Нет, если речь идёт о государстве: необходимо, чтобы человек был гражданином государства (опустим другие ограничения). Всегда ли президент государства - высшее должностное лицо? Нет, не всегда. Кроме того, структурные модели имеют свойство существовать параллельно. > процессная модель - возможный граф состояний Я добавлю к вашим состояниям ещё два: прогнозируемое значение и пересмотренное значение. Простота моделей сразу куда-то исчезла. ;) Сложно говорить об абстрактно предпочтительном использовании какого-то конкретного подхода, - только в контексте конкретных задач и конкретных ограничений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 18:18 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, привязка ко времени и пространству важно, конечно структура - всевозможные альтернативы (в динамике) процесс - возможность актуализации альтернатив как грила одна дама - "это мое временное мнение", но уже давно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 18:31 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> структура - всевозможные альтернативы (в динамике) > процесс - возможность актуализации альтернатив Вы меня правильно поняли, спасибо. Ключевой вопрос - отражать ли эту динамику в структуре данных? Если отражать, то как именно? Темпоральность может быть независимой, а может быть связанной, - как обеспечить корректный доступ к истории? Логическое структурирование может быть любым, - как описывать и сопоставлять варианты? Для этих задач можно найти решения, но imho вы погорячились, назвав сложность обычной. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 20:13 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, динамика должна отражаться в струтуре динамически классифицировали объект как темпоральный, указали какие свойства темпоральны, задали политики отбора состояний объекта... (последнее по времени, вес набор значений темпоральных свойств , вес набор значений темпоральных свойств в диапазоне,...) ну вроде и все с темпоральностью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 21:42 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
доступ к истории - политики, описываемые в метаописании объекта по моему это воще тривиальная задача ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 21:44 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> динамика должна отражаться в струтуре динамически Хорошее замечание. В IV квартале были пересмотрены результаты II квартала и на основании этих данных произведены некоторые действия, не описанные в терминах текущей модели. Знакомо, да? Темпоральны и данные, и модель. И никто не обещал идентичности аргументов и явного полного описания моделей. Причём, модель может оказаться темпоральной неожиданно для вас. > доступ к истории - политики, описываемые в метаописании объекта События могут быть независимы и могут быть связаны. Изменения могут иметь причиной как событие, так и подмножество событий. Тривиальнейшая задача, чего и говорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 22:24 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, я ж не спорю, что модель должна разиваться речь иет о том, что хорошо бы иметь инструмент, позволяющий развивать модель не меняя концепцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 02:47 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
LSV1. Ну у программиста должны быть "тиражные решения". Иначе он всю жизнь будет боянить в каждой системе одни и те же справочники. 2. При наличии универсального справочника+ EAV, заказчик может сам создать новый справочник и тут же его заюзать. Любая долгоживущая система (с уклоном в доработки время от времени) должна иметь подобный механизм. Тогда большая часть доработок будет настройками не меняя исх.код. И сама система и ее настройки смогут легко переноситься с одной системы в другую. А при чем тут ЕАВ?? В тиражной системе должен быть интерфейс создания сущностей, связей, ограничений и всего прочего!! ЕАВ действительно ну жен в очень редких условиях и когда нужно чтоб быстро, но в реальных больших системах ЕАВ просто зло - быстро в начале - задница в конце! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:08 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
spLSV1. Ну у программиста должны быть "тиражные решения". Иначе он всю жизнь будет боянить в каждой системе одни и те же справочники. 2. При наличии универсального справочника+ EAV, заказчик может сам создать новый справочник и тут же его заюзать. Любая долгоживущая система (с уклоном в доработки время от времени) должна иметь подобный механизм. Тогда большая часть доработок будет настройками не меняя исх.код. И сама система и ее настройки смогут легко переноситься с одной системы в другую. А при чем тут ЕАВ?? В тиражной системе должен быть интерфейс создания сущностей, связей, ограничений и всего прочего!! ЕАВ действительно ну жен в очень редких условиях и когда нужно чтоб быстро, но в реальных больших системах ЕАВ просто зло - быстро в начале - задница в конце! Не в тиражной системе, а в СУБД. Иначе это не СУБД)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:21 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> хорошо бы иметь инструмент, позволяющий развивать модель не меняя концепцию Конечно. Но инфологические аспекты на пару порядков важнее функциональных. Рассматривайте базу данных как набор инфологических ограничений. Чем меньше ограничений, тем больше информационная ценность базы данных (в том числе потенциальная), но выше сложность и трудоёмкость проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:24 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, ну так устроена РМД, набор чего то + мощный язык интерпретации путь в никуда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:28 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> ну так устроена РМД, набор чего то + мощный язык интерпретации Спасибо, что напомнили. > путь в никуда Это не соответствует действительности. Видите ли, мир меняется быстрее, чем наши представления о нём. Роль внешних источников данных за последние десять лет изменилась принципиально. Задачи проектирования изменились не менее принципиально, но можно уверенно констатировать, что даже осознание этого ещё не стало тенденцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 17:39 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, я понимаю конечно, хорошо бы агрегировать чужие знания и информацию, всякие там сервисы но в таком виде эти сервисы привносят хаос думаю публичные сервисы надо стандартизировать не в плане протокола обмена а содержательно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 18:14 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
> хорошо бы агрегировать чужие знания и информацию Не просто хорошо: это реальный способ радикально снизить издержки на поддержку информационной системы. > не в плане протокола обмена а содержательно Именно, Сахават, именно. Поэтому важность элементарных ограничений - атомарности, контекстов, локализации и пр. - сложно переоценить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 18:49 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621, я согласен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 19:21 |
|
||
|
Необходимость в использовании множества справочников
|
|||
|---|---|---|---|
|
#18+
Chopкстати, вчера забыл спросить, LSV, а что вы скажете по поводу нормализации, быстродействия БД и других страшных слов ДБА? если ваша сотня мелких справочников сидит в одной таблице, то это почти наверняка означает, что с этой таблицей работают если не все, то большинство Пользователей системы, как они ее поделят?Сотня мелких справочников будет занимать пару тыщ строк. При выборке по ключу никаких проблем нет. Тем более большинство из них ридонли, т.е. заполнены один раз (сполпотворения на запись не будет). Производительность действительно будет хуже, чем в привычных отдельных справочниках. Но насколько это критично ? В подавляющем числе случаев потеря даже незаметна. 20 справочников+ 30 перечислений это смех. У меня сравнительно маленькая система и в ней ок. 60 справочников и с полсотни перечислений. В доработанных УПП эта цифра под две сотни. Во всяческих специализированных конфигурациях - тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 10:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541113]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 556ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...