powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / EAV - это выворачивание реляционной модели наизнанку.
25 сообщений из 136, страница 2 из 6
EAV - это выворачивание реляционной модели наизнанку.
    #37160139
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVlockyКак узнать при написании новой процедуры, что существует некая "логическая СЦ" и правильно её учесть?Точно также, как для вставки СЦ в СУБД.
Тот, кто пишет ХП должен знать, что пишет. И нужный (справочный) код должен быть рядом.
У нас все в скриптах. Более 800 файлов. Пи этом однозначно ясно где и что искать. На каждый модуль своя папка, а там на каждую по смыслу группу ХП отдельный файл. Например ХХХХcheck, XXXXSpec, XXXXfunc, ХХХReports и т.д.
А все это в стартиме за 3 последних года.
ну надо же! "должен знать!"
как насчет "Как узнать в некотором фрагменте кода, что там может сработать некая декларация ?" в виде "как узнать в некотором фрагменте кода, что там должна сработать некая проверка"?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37160294
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVРазница есть.
Как узнать в некотором фрагменте кода, что там может сработать некая декларация ?
Никак. Нужно руцями полесть в тулзу и зачитать наличие или отсутствие таковой. И так каждый раз.

Декларация - противопоставляется коду: она не в фрагменте кода.
В частности, она в словаре БД. Т.е. с помощью декларативных же запросов можно посмотреть все ОЦ. И это сделать может тулса по проектированию БД, и нарисовать диаограмму. Например, ERwin.




LSVКстати этим же неудобны триггеры. Их нужно смотреть в другом месте.

Тригерра это ХП. И место просмотра играет, скорее всего, меньшую роль, чем что смотреть: код или объявление.

Но раз Вы к триггерам так относитесь, то у Вас проверяющую ХП вызывает клиент? Но БД в силу природы весчей предназначена для многих программ. Я намекаю, что админ или кто-то может залезть не стого клиента, и проверяющая ХП не запустится.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37160852
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky"как узнать в некотором фрагменте кода, что там должна сработать некая проверка"?Обычно места для проверок заранее известны, т.е. известно где искать проверку.
А вот в случае триггера или СЦ сначала нужно проверить есть ли они в таблице и что делают. Причем не в одной таблице а возможно в нескольких.

у Вас проверяющую ХП вызывает клиент?Нет. Ее вызов вставлен в другую ХП. Вся работа происходит только через ХП. Поэтому, дёргая ХП, невозможно вывести систему из целостности.

Замена ХП на лету безболезненна. В отличие от триггеров и установки СЦ.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37160914
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVlocky"как узнать в некотором фрагменте кода, что там должна сработать некая проверка"?Обычно места для проверок заранее известны, т.е. известно где искать проверку.
А вот в случае триггера или СЦ сначала нужно проверить есть ли они в таблице и что делают. Причем не в одной таблице а возможно в нескольких.

Офигеть, дайте две.
Значит, в случае "ручных проверок" знание о "местах, где их нужно делать" мы получаем "сакральным, внечувственным путём" - "они заранее известны".
А в случае DRI - "неизвестно где и что должно сработать"?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37160915
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVНет. Ее вызов вставлен в другую ХП. Вся работа происходит только через ХП. Поэтому, дёргая ХП, невозможно вывести систему из целостности.

Замена ХП на лету безболезненна. В отличие от триггеров и установки СЦ.
Имея DRI невозможно вывести систему даже не дергая процедуры, а напрямую пытаясь модифицировать данные
И, учитывая что триггер есть особый вид процедуры - не вижу, с чего бы это процедуру заменить легко, а триггер - сложно
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37160963
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyИмея DRI невозможно вывести систему даже не дергая процедуры, а напрямую пытаясь модифицировать данные
И, учитывая что триггер есть особый вид процедуры - не вижу, с чего бы это процедуру заменить легко, а триггер - сложноНевозможно что именно ? Я говорил о логической целостности в приложении, что совершенно не то, что СЦ.
Допустим документ проводить нельзя, т.к. нет оплаты или наличия товара. Делать подобные проверки в триггерах неразумно, а временами крайне неудобно, т.к. документ может меняться во многих местах (шапка/спецификация/доп.свойства) и неодновременно.
У нас в транзакции делается куча изменений и в последний момент сложная проверка. Если запрет, то роллбек.

Вариант на триггерах и СЦ рассматривался, но оказался жутко неудобным в поддержке и наглядности.

Замена триггера (в МССКЛ) блокирует схему, что нередко приводит к блокировкам, если система в продакшене.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37160971
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так, вот тут я снова потерялася
только что мы обсуждали о реализации СЦ ручками и деларативно, и вдруг как ультима ратио всплывает запрет бизнес-операций
Вы случайно там ничего не путаете? одно с другим и всё такое
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37161008
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyтак, вот тут я снова потерялася
только что мы обсуждали о реализации СЦ ручками и деларативно, и вдруг как ультима ратио всплывает запрет бизнес-операций
Вы случайно там ничего не путаете? одно с другим и всё такоеЯ не путаю. Именно бизнес-операции я и имел ввиду.
Какая разница, что нарушит целостность, удаленный справочник или нехватка товара на складе ?!!!
Именно поэтому я пытаюсь довести, что проверки на уровне средств СУБД недостаточны или неудобны для сложных случаев.

Делать два эшелона проверок "моя" и "СУБД" ?
Это может привести к путанице и избыточности, учитывая, что нет четкой грани между ними.

Безусловно это не означает, что подобные средства в СУБД не нужны. Конечно нужны. Для них есть применение.
Наличие возможности это лучше ее отсутствия. (с)
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37161061
Фотография pilot911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EAV в пределах базы, в принципе, понятен

другой вопрос - взаимодействие, то есть выборка данных и дальнейшее манипулирование

в Java используют Hibernate, в NET - NHibernate.. отсюда вопрос - у нас 200 справочников, как с ними быть ? 200 классов объектов создавать в java ?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37161084
Фотография Chop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не почему то кажется, что ограничения бизнес-процессов и ограничения СЦ БД - несколько разные вещи...
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37161101
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chopне почему то кажется, что ограничения бизнес-процессов и ограничения СЦ БД - несколько разные вещи...Разные.
Но мы обсуждаем применение СЦ в автоматизации. В частности для БП.
Я именно это имел ввиду, упоминая сложные проверки для реальной жизни.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37161210
Фотография Chop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVChopне почему то кажется, что ограничения бизнес-процессов и ограничения СЦ БД - несколько разные вещи...Разные.
Но мы обсуждаем применение СЦ в автоматизации. В частности для БП.
Я именно это имел ввиду, упоминая сложные проверки для реальной жизни.
чет не понимаю, если мы обсуждаем СЦ и ты согласен с мнением "...."
то при чем тут примеры из бизнес-процессов?

зы. имхо бизнес-процессы можно попытаться отразить и структурой БД, но...
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37161271
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVу Вас проверяющую ХП вызывает клиент?Нет. Ее вызов вставлен в другую ХП. Вся работа происходит только через ХП. Поэтому, дёргая ХП, невозможно вывести систему из целостности.

Ну а кто вызовет эту "другую ХП"? Я намекаю, что это ничего не меняет та или другая но все равно ХП. Ее кто-то должен вызвать. Раз не триггер ее вызывает, то кто?

Кроме того, Вы как-то не прояснили вопрос с декларативными ОЦ. Т.е. которые моно просто объявить? Не в каком ни в коде.
Если ОЦ не удается навязать декларативно, тогда триггер.
Но целосность отношения (уникальность), СЦ и ограничения на значения можно навязать декларативно.


Есть, возможно, ситуации када сложные БП не совсем типа ОЦ. Например, это разные правила для разного персонала. Ну тада тока ХП или вообще на стороне сервера приложений или клиента.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37161518
strizh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chop, посмотри на реализацию БД в MS CRM 4. Там применяется ссылочная целостность на уровне СУБД, настройки конкретного
инстанса вместо EAV реализованы на уровне DDL (модификация структур таблиц, индексов и т.д. сложными ХП, дергаемыми из
сервера приложений).
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37163030
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а кто вызовет эту "другую ХП"? Ту "другую" вызывает приложение.
Я намекаю, что это ничего не меняет та или другая но все равно ХПНамёк не понят. Что не меняет ?
Проверяющая ХП является единственной точкой всех проверок любой сложности в этом документе/справочнике.
Ее можно удобно вызвать не только в модифицирующей процедуре. Ее можно вызвать "просто так", допустим с целью проверить документ, если было сделано к-л действие в другом д-те, кот. может как-то повлиять на целостность этого.
Разумеется это в целях диагностики и отладки.
Процедура умеет передавать не только ошибки, но и всякие варнинги и инф. сообщения пользователю.

Реализовать такое на триггерах и констрайнтах может и возможно, но это месиво из кучи трудноуправляемого кода и настроек в разных местах.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37163135
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVНамёк не понят. Что не меняет ?

Как раз наоборот, ничего не меняет: как устроена ХП не имеет значения. Вызывается из клиента: детали ХП ниче не меняют.
У Вас ОЦ из приложения контролируются.

А доступ к БД возможен, например, с административных клиентов, которые не вызовут этих ХП. Тогда как триггеры и декларативные ОЦ сработают.

LSVПроверяющая ХП является единственной точкой всех проверок любой сложности в этом документе/справочнике.

Показать все деклараттивные ОЦ моно одним запросами, что луче всяких точек и кода.
Да и триггера тока вызывают ХП. Моно опять разрабатывать чтобы удобно смотреть было.


LSVРеализовать такое на триггерах и констрайнтах может и возможно, но это месиво из кучи трудноуправляемого кода и настроек в разных местах.

Наверное, Вы констрайнтами называете ОЦ, которые моно объявить. Но на самом деле констренты это ОЦ. Декларативные, триггерные и те что Вы пытаетесь реализовыавть из приложения.
В любом случае Вы отказываетесь от достижений технологий БД.
Там МД - фундамент, а Вы ОЦ выносите на уровеннь приложения, хотя и храните код в БД. Но поскоку без приложениях ОЦ нет, то к МД их не отненсти. Возможно, для встроенных БД это и ниче, но када клиентов много это шанг назад к файловым системам (то что было до БД для таких задач).

Буржуа создали СУБД, способные поддерживать важнейшие для РМД ОЦ декларативно, и триггера для остальных, а Вы это не юзаете. Т.е. не используете важных возможностей СУБД. Зато пишите свой код для этого же, т.е. конкурируете в этом с производитенлями СУБД, а не студентами их юзающими. Т.е. даете этим студентам фору, поскоку превзойти производителей СУБД в этом все еще проблематично.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37163221
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буржуа создали СУБД, способные поддерживать важнейшие для РМД ОЦ декларативно, и триггера для остальных, а Вы это не юзаете.Каждый юзает, то что ему больше подходит.
Подавляющее большинство ERP-систем использует БД как свалку таблиц (за исключенем м.б. ОЕБС).
Никаких констрайнтов и триггеров.
Сначала мне казалось это глупым....но со временем я понял, что это было сделано не спроста и на это были весомые аргументы.

У любого решения есть недостатки. Приходится выбирать...
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37163469
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 04.03.2011 16:31, Chop wrote:

> я - согласен с озвученной мыслью

Я - нет.
EAV реализует метамодель данных. При этом делает он средствами
обычной реляционной модели, никуда за её рамки не выходя.
Поэтому ничуть ничего не выворачивается. Это просто другой подход.
Ты работаешь не с данными, а с метаданными.

Можно скажем в С++ (или Java) точно так же описывать данные в виде
классов и их членов, можно составить списки атрибутов и значений.

> киньте кто сцилкой на доку по этому поводу, *EAV & реляционная модель*
> либо просто на вики-определение-формулировку

Поищи волшебное ключевое слово "Тенцер".

Преимущество в EAV одно -- можно динамически создавать новые атрибуты
сущностей. Это очень мощное преимущество и собственно единственная
причина EAV применять. Если это нужно, то без EAV не обойтись.

Недостаток -- большая сложность работы с данными.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37163730
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

+500
EAV - почти идеальное средство для постоянно развивающихся систем, особенно в продакшене 7/24.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37163843
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv При этом делает он средствами
обычной реляционной модели, никуда за её рамки не выходя.
Поэтому ничуть ничего не выворачивается.

Но это как раз можно увидеть выворачивание: средства от другой (РМД) МД прикручены к EAV.
Ожидались свои средства.

MasterZiv
Преимущество в EAV одно -- можно динамически создавать новые атрибуты
сущностей.

Возможно, за счет того, что эти самые атрибуты по сути превращены (вывернуты) в данные.
Ну а данные в РМД можно менять.
Это преимущество слабоструктурированных МД перед сильно структурированными.
По взрослому это пытаются решить с помощью соотвтующего типа МД, например, XML.
Ну типа там и средства свои.

MasterZivНедостаток -- большая сложность работы с данными.

Ну правильно, средства РМД (манипулирование, ОЦ ) расчитаны на соответсвтие струтуры МД структуре предметной области.
А струкура EAV (таблицы и атрибуты) далеки от этого в общем случае. Имена атрибутов из EAV в SQL не подставишь. Декларативные ОЦ не навяжешь.

Конечно, на практике возможны компромисы (недостатки слабо проявляются, а атрибуты не известны заранее для какой-то части БД), но на идеальное EAV вряд ли претендует.
Ей бы тада, скорее всего, подошли специальные какие-то свои средства а не от РМД.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37165083
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на идеальное EAV вряд ли претендует. Не претендует. Идеалов пока не существует.

А собственно, кто претендует ?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37165195
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVна идеальное EAV вряд ли претендует. Не претендует. Идеалов пока не существует.

А собственно, кто претендует ?
Ну извините, по сранению не тока с РМД, ООМД, ХМД, но даже там с иерархическими образца 1970 года, она, скорей всего, смотрица в заду. Она, скорей, как вынужденная затычка для РМД в некоторых ситуациях имеет смысл.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37165217
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoНу извините, по сранению не тока с РМД, ООМД, ХМД, но даже там с иерархическими образца 1970 года, она, скорей всего, смотрица в заду. Она, скорей, как вынужденная затычка для РМД в некоторых ситуациях имеет смысл.1. Что такое ХМД ?
2. А сами ООМД разве не в заду (если мы обсуждаем СУБД) ?
Только не надо тут про "успехи" CACHE. Ок ?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37165290
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV1. Что такое ХМД ?
Опечатка. Имелось в виду XML (буквы Д и L на одной клавише, вот и ошибся)

LSV2. А сами ООМД разве не в заду (если мы обсуждаем СУБД) ?

Ну даже если ООМД в заду, то EAV в значительно большем. Так или иначе ООСУБД есть: Версант, ГемСтоун или типа того. Да и всякие стандарты и проч. А EAV СУБД хде? РСУБД в EAV не переименуется из-за того что там кто-то налабает три таблы и назовет это EAV. Да и сами же видите, что средства от РМД. Вы их и не юзаете: ХП пишете вместо декларативных ОЦ. Ну что это за МД?
В толстых книгах про EAV тоже что-то не попадалось, в отличии от перечисленных.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37167012
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так или иначе ООСУБД есть: Версант, ГемСтоун или типа того.Чихать на них. Бесперспективная экзотика. Не то, что не сталкивался, я даже не слышал. И нет желания.
Отомрут сами за ненадобностью.
А EAV СУБД хде?Странный вопрос. А зачем для этого отдельные СУБД ? EAV это методика. Не универсальная, но удобная для ряда задач.
Ниодна методика в чистом виде неприменима или неудобна. Всегда используется набор методик и приёмов.
ХП пишете вместо декларативных ОЦ.Думаю, не ошибусь, если предположу, что 80-90% прикладных решений не используют декларативную ОЦ. И на это есть много объективных причин.
...
Рейтинг: 0 / 0
25 сообщений из 136, страница 2 из 6
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / EAV - это выворачивание реляционной модели наизнанку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]