powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Бизнес-логика
25 сообщений из 57, страница 1 из 3
Бизнес-логика
    #32119118
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сюда ещё не постил.

Работаю над ПО для доступа к различным БД ( sss1024.narod.ru ). Основная идея: отразить бизнес-логику в схеме данных и хранимых процедурах, интерфейс может строиться по связям между таблицами. На данный момент у разрабатываемой программы есть поддержка VFP, MS SQL, PostgreSQ и клонов Interbase, для полноты добавил визуальный конструктор БД (это конечно не ЕРВин, но БД генерирует сразу со всеми необходимыми ключами и default value).

Когда пытался программу обсуждать, то бурю эмоции вызвала сама возможность реализации бизнес-логики средствами сервера а не клиента.

Вполне жизненный пример: есть таблицы Типы_товаров<-Товары, соответственно в таблицу Товары ввести данные без указания связанной записи из Типы_товаров сервер не позволит. Или ещё пример: при вставке или обновлении записи срабатывает триггер (например Before insert в клонах Interbase) и вставляет в соответствующие поля имя подключившегося пользователя и дату. Вроде бы это и есть реализация бизнес-логики. Или это что-то другое?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119137
VladSh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Всегда казалось (и обычно получалось) что бизнес-логика д.б. реализована на сервере.
Оттого, что на некоторых SQL-серверах это сложно получается, народ придумал 3-х звенку
Но если сервер позволяет это - там ей и место
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119196
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще наверное все вместе - и связи, и процедуры, и триггеры. Если все это есть конечно и хоть чего-то делает. Только что где-то бизнес-логика заключается в проверке значений полей и связей, а где-то идет большая обработка данных при каких-то действиях.

Только по поводу связей - не везде они есть как именно связь в понятии сервера, где-то она поддерживается на уровне триггеров. И тут уж ты никак не поймешь (что собственно и получилось при тесте) что таблица А связана с таблицей Б. Заставлять переписывать все - не пойдет, т.к. либо много, либо стиль такой. А если sql-сервер позволяет построить свзяь используя триггер - значит так делать вправе любой разработчик.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119226
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то это, скорее, не бизнес логика, а просто ограничения целостности (хотя и связанные с бизнес-логикой). А бизнес-логика - это когда при добавлении некоторых документов, при некоторых условиях формируются проводки, или взымается комиссии и тп. Основной момент здесь - то что таких условий м.б. несколько, изменения могут затронуть разные таблицы.
Реализовать такую логику путем только связей невозможно.

А сама идея реализации БЛ на сервере, по-моему, даже обсуждению не подлежит. Трехзвенка - в этом смысле - нисколько не противоречит, там тоже сервер, только приложений.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119244
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык я же не говорил, что бизнес-логика - это связи. Их я привел именно отнеся к продукту от 1024.

Естественно, все что делается на сервере- можно назвать бизнес-логикой. Просто смотря какой вкладывать смысл. Хотя и целостность данных - тоже в какой-то мере.

А так - и связи, и процедуры, и триггеры
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119294
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2aag

Это какую-такую логику реализовать невозможно? Создаётся или обновляется запись, срабатывает триггер и выполняет какие-то действия. Причём тут разные базы данных? Триггер это обычная программа срабатывающая по определённому событию, она может обращаться к любым таблицам из любых баз данных (ну, с некоторыми ограничениями). Зачем делать на клиенте то что можно делать на сервере? По-моему реляцонная модель данных как раз и предназначена для удобного отражения реальных объектов в структуре БД. Или такой термин как "Справочник". Пользователь редактирует запись в таблице Товары, выбирает тип товара из таблицы Типы_товаров и выбранный тип товара копируется в редактируюмую запись. Зачем так делать? Можно просто связать таблицы.

Про трёхзвенку: давайте смотреть на вещи трезво. Это в системе продаж железнодорожных билетов она необходима, а в небольшой системе на несколько десятков пользователей не обязательна.

2tygra
Как-то сумбурно у вас всё.

Поставлю вопрос несколько иначе. Что побуждает разработчиков делать не как надо, а как обычно? Поиск каких-то непреходящих ценностей или банальный непрофессионализм?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119324
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сумбурно, да. Смешал два вопроса вместе - вот и все :)

А что значит не как надо, а как обычно ? Это надо уточнить.

Например те же связи сежду таблицами можно сделать двумя способами: либо действительно связями (Relationship) либо триггерами. Оба метода возможны и правильны. Только при втором методе ты извне не узнаешь никак, что таблицы связаны. Но тут уж извини - какой из двух методов хочу, тот и использую
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119334
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в этом и вопрос. Связать две таблицы можно одной командой, дальше сервер сам будет разбираться чё можно вставлять и чё нельзя. Делать триггер и писать в нём кучу кода - зачем?!!
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119356
AISOFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1024
Делать триггер и писать в нём кучу кода - зачем?!!

Потому, что жизнь и примеры из книг вещи разные. Далеко не все можно решить - просто устанавливая связи.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119368
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо передёргивать, я имел ввиду делать триггер только затем чтоб реализовать ограничения foreign key как зачем-то хотел tygra.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119464
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну например ErWin 3 не умеет делать связи. Можно конечно там подправить,чтобы вместо триггеров создавались связи, но это будет через одно место.
Ну и еще - сообщение об ошибке (при ошибке связей, ткак сказать) очень тяжело выдать в нормальном виде используя связи. А из триггера - пожалуйста: "В таблицу А нельзя вставить данные т.к. нет значения из таблицы Б".

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

Ну может еще чего
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119541
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итого:
1.Можно использовать устаревшие средства рисования диаграмм
2.Не нужно делать обработку ошибок с понятными пользователю сообщениями

Взамен получаем все прелести плохих проектов: невозможность масштабирования, трудности в развёртывании и поддержке и т.п.

По-моему это слишком большая цена.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119584
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взамен получаем все прелести плохих проектов: невозможность масштабирования, трудности в развёртывании и поддержке и т.п.

Это кто тебе сказал? Как связано 1 и 2 и трудности?
Трудности у твоего визуалера? Ну так это у него, не у меня. У меня все хорошо - и масштабируется,и развертывается, и работает. Уж какой проект работает
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119624
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, я неправильно твой вопрос понял - если, конечно, его вообще можно правильно понять :)
Если про реализацию бизнес логики именно на сервере - то, разумеется, именно там она и должна быть реализована. Трехзвенка - просто как пример, я ее и не пропагандировал. Другое дело, что реализовать такую логику без кода - только через связи, структуры и пр. невозможно.
Если же вопрос про практичность/эффективность построения интерфейса через связи - то, по-моему, это неудобно и нежизнеспособно. И по причинам, указанным tigra , и потому, что часто универсальность просто неудобна.
И кстати метод связи через триггеры - более гибкий
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119797
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Господа, а можно вопрос про проверку ссылочной целостности через триггеры:
насколько она проигрывает (если конечно это так) в скорости relationships.

Про удобства спорить нечего, триггеры в большинстве случаев удобнее, так как с их помощью можно создать гораздо более гибкую логику.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119815
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2tygra
Всегда так делал и дальше делать буду? Да, это веский довод (я совершенно серьёзно).
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119840
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladSh
Всегда казалось (и обычно получалось) что бизнес-логика д.б. реализована на сервере.
Оттого, что на некоторых SQL-серверах это сложно получается, народ придумал 3-х звенку
Но если сервер позволяет это - там ей и место
Дата: вчера, 12:05


Хочу высказать полное согласие с данным высказыванием, вся логика и вычисления длжны делаться на сервере, а клиентское приложение, только формой для ввода и отображения данных, и не важно на чем ты его уже будеш писать, даже если в дополнение к обычным приложениям решишь написать WEB или еще чего будет та же ситуация.

А вот когда делают универсальные системы для работы с разными СУБД (типа ERP) там и придумали сервер приложений, реализующий всю бизнес логику, но вэтом случае все возможности самой СУБД херяться (не знаю как еще выразиться) и там уже глубоко пофигу будет это mySQL , MSSql, Oracle, Interabse можно и DBF если в сервере приложений реализоввывать многопользевательскую архитектуру.
Но ИМХО это неправильно.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119843
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда только на триггерах и можно реализовать ссылочную целостность... к сожалению... Например когда хочется форенкей на 2 таблицы с одного поля... или может я не знаю как это нарисовать? тогда подскажите плиз?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119860
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2StarWind

ФК к двум таблицам с одного поля? Хочется или нужно? Вероятно лучше просто схему более грамотно составить. Что там за данные?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119992
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 1024

Странно, но и в этом топике у тебя все сходится к одному: если делать так, как ты умеешь и делаешь - значит это правильно. Если делать не так - неправильно.

А я вот наоборот думаю - у тебя все неправильно. Я не обязан подстраиваться под какого-то там универсального клиента, который видите ли умеет таблицы связывать тольео через связи. Мне наплевать - я пишу работающую систему теми средствами, какие мне дает SQL сервер. И они все хороши.

Иначе давай все сведем к простому утверждению - я пишу на Delphi, ты на VFP - следовательно для меня все, что ты написал, даже если оно работает - неправильно. Потому что не так, как у меня.

И надо уж все же принять тебе - все, что есть на сервере, работающее с помощью стандартных средств сервера, все оно и есть бизнес-логика. И никуда ты тут не денешься. А уж советы давать мне о том, что клиент видите ли не поддерживает возможность ссылки поля таблицы сразу на две других - поэтому предлагает переделать :) - хе-хе, значит плохой клиент.

ФК к двум таблицам с одного поля? Хочется или нужно? Вероятно лучше просто схему более грамотно составить. Что там за данные?

А о правильности построения схем мы уж сами позаботимся - а то подсказчиков таких сотни, да толку то мало. Значит так нужно. А если все же хочешь следить за правильностью построеня - иди работать в прокуратуру, у них как раз такая работа - следить за соблюдением законов. :)
...
Рейтинг: 0 / 0
Бизнес-логика
    #32119999
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно
есть древовидный список групп людей и есть список людей. Они лежат в разных таблицах. Между ними отношение многие ко многим, а по сему объеденены они через третью таблицу. Все красиво, все связи прокладываются.
А теперь встает проблема общаться что с группой людей что с конкретным человеком как с одной сущностью. Вот тут и появляется эта ерунда.
Например, есть таблица безопасности в которой можно прописать разрешения на что либо как на группу так и на конкретного человека. Но ссылка на две таблицы не лезет. Вот и приходится баловаться с кодом на триггере или забивать на это на свой страх и риск...
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120339
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Браво 1024!
Я тобой восхищаюсь! И как тебе ёщё не надоело доказывать этим недалёким трёхзвенщикам, что ты прав. Лучше бы вместо пустого флейма доводил до ума своё замечательное ПО.

Зачем делать на клиенте то что можно делать на сервере?
Чтобы содрать побольше денег с заказчика.
Чтобы обеспечить работой студентов, которые ничего не умеют, кроме C++.
Чтобы после разработки иметь ещё кучу бобов на установке, настройке и поддержке.
Просто потому, что некоторые товарищи не умеют по другому.

Откуда растут ноги трёхзвенки?
Тупой дата лейер + мощный мидл + тупой презентейшн.
Тупой дата лейер даёт два преимущества.
1. Независимость платформы, может использоваться любой ODBC источник.
2. При изменениях платформы, практически не затрагивается бизнес логика.
Но это и является его главным минусом - возможности сервера БД задействуются на 20% (токо не надо выспрашивать откуда цифра), отсюда тормоза, лишний сетевой трафик и прочие проблемы связанные, например, с использованием внешнего механизма транзакций.

DNA Architecture - вчерашний день, господа, бросьте заниматься хернёй и обратите своё пристальное внимание на SQL сервер, ибо это не есть тупое хранилище данных, как вы привыкли ошибочно полагать. Научитесь его правильно использовать и все проблемы отпадут сами собой.

Единтвенная правильная трёхзвенка, если её можно так назвать, MSSQL + ASP + IE. Если же сюда ещё подключить XML, то вообще лучше не придумаешь. При этом надо стараться вытеснить из ASP всю бизнес логику в MSSQL и использовать его лишь как интерфейс к юзверю.

ЗЫ Хотя про большие проекты этого сказать не могу, там без ООП сложновато, надо изучать .NET :(

ЗЫЫ 1024, я с тобой!
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120592
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Нужно
есть древовидный список групп людей и есть список людей. Они лежат в разных таблицах. Между ними отношение многие ко многим, а по сему объеденены они через третью таблицу. Все красиво, все связи прокладываются.
А теперь встает проблема общаться что с группой людей что с конкретным человеком как с одной сущностью. Вот тут и появляется эта ерунда.
Например, есть таблица безопасности в которой можно прописать разрешения на что либо как на группу так и на конкретного человека. Но ссылка на две таблицы не лезет. Вот и приходится баловаться с кодом на триггере или забивать на это на свой страх и риск...


Не нужно. Ничего страшного не появляется. Достаточно, например, завести таблицу GroupUser, кторая будет типа первичным ключем для юзеров и групп (отношение 1:0) и ссылаться уже на нее. Туда же можно общие поля сложить, еще и место сэкономишь.

Насчет выноса логики в сервер приложений или клиент.
За:
-возможность распараллелить обработку запросов, в том числе работать с несколькими серверами. Тут есть много ньюансов, может и медленнее получиться.
-возможность относительно легко перейти на другой SQL сервер (умозрительная по-моему, хотя я слышал о переносе сложной системы вроде бы с оракла на мсскл за пару дней, но что-то не сильно верится). Это только при условии, что выносится вся логика, а в БД остаются только таблицы, да и то не сильно навороченные.
-куча недорогих темных студентов, типа знающих C++ (ASP, VB, .NET..., нужное подчеркнуть);
-меньше работы датабазному программеру и меньше ответственности; (только при условии, что зряплата не страдает);

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

Я не знаю как лучше, но ИМХО оставить логику в SQL сервере правильнее.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120616
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет,

ааг, акуз - поддерживаю вас в следующем:

1.
Целостность данных НЕ есть бизнес-логика. Если база не
будет следить за целостностью, то база - дура.
(что и есть ответ на изначальный вопрос 1024)

2.
Бизнес-логику можно писать в пл/скл пакетах или
снаружи (С-шарп, жава, итд). Внутри - быстрее, снаружи -
более ООПисто, маштабно и можно работать с кучей
других ресурсов

3.
Триггеры НЕ задуманы для бизнес-логики.

ЙЙ
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120667
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот, блин, слово модное, "бизнес-логика". А что это такое? Что под этим понимаем мы, что под этим понимают разработчики СУБД?
Я долго пытался понять, что под этим понимают писатели БОЛ.
Итак, бизнес-правила, так как это понял я.
Система отслеживающая ввод данных. В зависисмости от вводимых данных могут применяются разные алгоритмы обработки. Как эти алгоритмы реализованы - не суть важно. Когда производители SQL-серверов возвещают, что они могут делать бизнес-правила, то это не более чем трюк.

Классический пример. Он есть почти во всех описаниях БЛ. Якобы не давать клиенту кредита, выше установленой цифры. Сами понимаете, это можно реализовать по разному. НО. Не бывает застывших схем ведения бизнеса. Сегодня порог 1000 тугриков, а завтра - 2000. Разумеется, это можно реализовать, но причем тут логика?
Так что, красивое слово "бизнес-логика" сводится к банальному - ограничение на ввод. И использовать его надо крайне осторожно. Я бы не рискнул закладывать в базу ограничение на тринадцатый месяц. А вдруг календарь поменяется?
===========
Не надо мне говорит про бизнес-процессы. Это совсем другая область. И относится к технологиям обработки уже введенной информации.
=======
Кога хрена я это написал? То что про БЛ говорил 1024, не имет никакого смысла. Вернее, он совсем не понимает, что такое БЛ. Как я почти не понимаю, что он хочет сделать. Универсального клиента?
======
1024>Совершенно без стеба. Глянь Paradox 8-9. Там есть и подключение к разным базам, и диаграммы связей, и автопостроение форм и отчетов.
А теперь со стебом. Только вот ни один пользователь этим богатством возможностей не пользуется.
==========
Я так чувствую, что VFP не менее крут в этом отношении.
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Бизнес-логика
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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