|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Сюда ещё не постил. Работаю над ПО для доступа к различным БД ( sss1024.narod.ru ). Основная идея: отразить бизнес-логику в схеме данных и хранимых процедурах, интерфейс может строиться по связям между таблицами. На данный момент у разрабатываемой программы есть поддержка VFP, MS SQL, PostgreSQ и клонов Interbase, для полноты добавил визуальный конструктор БД (это конечно не ЕРВин, но БД генерирует сразу со всеми необходимыми ключами и default value). Когда пытался программу обсуждать, то бурю эмоции вызвала сама возможность реализации бизнес-логики средствами сервера а не клиента. Вполне жизненный пример: есть таблицы Типы_товаров<-Товары, соответственно в таблицу Товары ввести данные без указания связанной записи из Типы_товаров сервер не позволит. Или ещё пример: при вставке или обновлении записи срабатывает триггер (например Before insert в клонах Interbase) и вставляет в соответствующие поля имя подключившегося пользователя и дату. Вроде бы это и есть реализация бизнес-логики. Или это что-то другое? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 11:57 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Привет! Всегда казалось (и обычно получалось) что бизнес-логика д.б. реализована на сервере. Оттого, что на некоторых SQL-серверах это сложно получается, народ придумал 3-х звенку Но если сервер позволяет это - там ей и место ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 12:05 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Вообще наверное все вместе - и связи, и процедуры, и триггеры. Если все это есть конечно и хоть чего-то делает. Только что где-то бизнес-логика заключается в проверке значений полей и связей, а где-то идет большая обработка данных при каких-то действиях. Только по поводу связей - не везде они есть как именно связь в понятии сервера, где-то она поддерживается на уровне триггеров. И тут уж ты никак не поймешь (что собственно и получилось при тесте) что таблица А связана с таблицей Б. Заставлять переписывать все - не пойдет, т.к. либо много, либо стиль такой. А если sql-сервер позволяет построить свзяь используя триггер - значит так делать вправе любой разработчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 12:41 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Вообще-то это, скорее, не бизнес логика, а просто ограничения целостности (хотя и связанные с бизнес-логикой). А бизнес-логика - это когда при добавлении некоторых документов, при некоторых условиях формируются проводки, или взымается комиссии и тп. Основной момент здесь - то что таких условий м.б. несколько, изменения могут затронуть разные таблицы. Реализовать такую логику путем только связей невозможно. А сама идея реализации БЛ на сервере, по-моему, даже обсуждению не подлежит. Трехзвенка - в этом смысле - нисколько не противоречит, там тоже сервер, только приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 12:55 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Дык я же не говорил, что бизнес-логика - это связи. Их я привел именно отнеся к продукту от 1024. Естественно, все что делается на сервере- можно назвать бизнес-логикой. Просто смотря какой вкладывать смысл. Хотя и целостность данных - тоже в какой-то мере. А так - и связи, и процедуры, и триггеры ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 13:06 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2aag Это какую-такую логику реализовать невозможно? Создаётся или обновляется запись, срабатывает триггер и выполняет какие-то действия. Причём тут разные базы данных? Триггер это обычная программа срабатывающая по определённому событию, она может обращаться к любым таблицам из любых баз данных (ну, с некоторыми ограничениями). Зачем делать на клиенте то что можно делать на сервере? По-моему реляцонная модель данных как раз и предназначена для удобного отражения реальных объектов в структуре БД. Или такой термин как "Справочник". Пользователь редактирует запись в таблице Товары, выбирает тип товара из таблицы Типы_товаров и выбранный тип товара копируется в редактируюмую запись. Зачем так делать? Можно просто связать таблицы. Про трёхзвенку: давайте смотреть на вещи трезво. Это в системе продаж железнодорожных билетов она необходима, а в небольшой системе на несколько десятков пользователей не обязательна. 2tygra Как-то сумбурно у вас всё. Поставлю вопрос несколько иначе. Что побуждает разработчиков делать не как надо, а как обычно? Поиск каких-то непреходящих ценностей или банальный непрофессионализм? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 13:30 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Сумбурно, да. Смешал два вопроса вместе - вот и все :) А что значит не как надо, а как обычно ? Это надо уточнить. Например те же связи сежду таблицами можно сделать двумя способами: либо действительно связями (Relationship) либо триггерами. Оба метода возможны и правильны. Только при втором методе ты извне не узнаешь никак, что таблицы связаны. Но тут уж извини - какой из двух методов хочу, тот и использую ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 13:53 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Вот в этом и вопрос. Связать две таблицы можно одной командой, дальше сервер сам будет разбираться чё можно вставлять и чё нельзя. Делать триггер и писать в нём кучу кода - зачем?!! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 14:00 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
1024 Делать триггер и писать в нём кучу кода - зачем?!! Потому, что жизнь и примеры из книг вещи разные. Далеко не все можно решить - просто устанавливая связи. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 14:14 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Не надо передёргивать, я имел ввиду делать триггер только затем чтоб реализовать ограничения foreign key как зачем-то хотел tygra. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 14:22 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Ну например ErWin 3 не умеет делать связи. Можно конечно там подправить,чтобы вместо триггеров создавались связи, но это будет через одно место. Ну и еще - сообщение об ошибке (при ошибке связей, ткак сказать) очень тяжело выдать в нормальном виде используя связи. А из триггера - пожалуйста: "В таблицу А нельзя вставить данные т.к. нет значения из таблицы Б". Текущая технология - не будешь же менять на середине проекта. А как обычно новый начинается до того, пока не закончился старый - так все и идет по наследству, пока не надоест. Ну может еще чего ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 15:30 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Итого: 1.Можно использовать устаревшие средства рисования диаграмм 2.Не нужно делать обработку ошибок с понятными пользователю сообщениями Взамен получаем все прелести плохих проектов: невозможность масштабирования, трудности в развёртывании и поддержке и т.п. По-моему это слишком большая цена. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 16:37 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Взамен получаем все прелести плохих проектов: невозможность масштабирования, трудности в развёртывании и поддержке и т.п. Это кто тебе сказал? Как связано 1 и 2 и трудности? Трудности у твоего визуалера? Ну так это у него, не у меня. У меня все хорошо - и масштабируется,и развертывается, и работает. Уж какой проект работает ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 17:28 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Видимо, я неправильно твой вопрос понял - если, конечно, его вообще можно правильно понять :) Если про реализацию бизнес логики именно на сервере - то, разумеется, именно там она и должна быть реализована. Трехзвенка - просто как пример, я ее и не пропагандировал. Другое дело, что реализовать такую логику без кода - только через связи, структуры и пр. невозможно. Если же вопрос про практичность/эффективность построения интерфейса через связи - то, по-моему, это неудобно и нежизнеспособно. И по причинам, указанным tigra , и потому, что часто универсальность просто неудобна. И кстати метод связи через триггеры - более гибкий ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 18:03 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Господа, а можно вопрос про проверку ссылочной целостности через триггеры: насколько она проигрывает (если конечно это так) в скорости relationships. Про удобства спорить нечего, триггеры в большинстве случаев удобнее, так как с их помощью можно создать гораздо более гибкую логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 07:58 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2tygra Всегда так делал и дальше делать буду? Да, это веский довод (я совершенно серьёзно). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 08:44 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
VladSh Всегда казалось (и обычно получалось) что бизнес-логика д.б. реализована на сервере. Оттого, что на некоторых SQL-серверах это сложно получается, народ придумал 3-х звенку Но если сервер позволяет это - там ей и место Дата: вчера, 12:05 Хочу высказать полное согласие с данным высказыванием, вся логика и вычисления длжны делаться на сервере, а клиентское приложение, только формой для ввода и отображения данных, и не важно на чем ты его уже будеш писать, даже если в дополнение к обычным приложениям решишь написать WEB или еще чего будет та же ситуация. А вот когда делают универсальные системы для работы с разными СУБД (типа ERP) там и придумали сервер приложений, реализующий всю бизнес логику, но вэтом случае все возможности самой СУБД херяться (не знаю как еще выразиться) и там уже глубоко пофигу будет это mySQL , MSSql, Oracle, Interabse можно и DBF если в сервере приложений реализоввывать многопользевательскую архитектуру. Но ИМХО это неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 09:14 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Иногда только на триггерах и можно реализовать ссылочную целостность... к сожалению... Например когда хочется форенкей на 2 таблицы с одного поля... или может я не знаю как это нарисовать? тогда подскажите плиз? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 09:15 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2StarWind ФК к двум таблицам с одного поля? Хочется или нужно? Вероятно лучше просто схему более грамотно составить. Что там за данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 09:29 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 1024 Странно, но и в этом топике у тебя все сходится к одному: если делать так, как ты умеешь и делаешь - значит это правильно. Если делать не так - неправильно. А я вот наоборот думаю - у тебя все неправильно. Я не обязан подстраиваться под какого-то там универсального клиента, который видите ли умеет таблицы связывать тольео через связи. Мне наплевать - я пишу работающую систему теми средствами, какие мне дает SQL сервер. И они все хороши. Иначе давай все сведем к простому утверждению - я пишу на Delphi, ты на VFP - следовательно для меня все, что ты написал, даже если оно работает - неправильно. Потому что не так, как у меня. И надо уж все же принять тебе - все, что есть на сервере, работающее с помощью стандартных средств сервера, все оно и есть бизнес-логика. И никуда ты тут не денешься. А уж советы давать мне о том, что клиент видите ли не поддерживает возможность ссылки поля таблицы сразу на две других - поэтому предлагает переделать :) - хе-хе, значит плохой клиент. ФК к двум таблицам с одного поля? Хочется или нужно? Вероятно лучше просто схему более грамотно составить. Что там за данные? А о правильности построения схем мы уж сами позаботимся - а то подсказчиков таких сотни, да толку то мало. Значит так нужно. А если все же хочешь следить за правильностью построеня - иди работать в прокуратуру, у них как раз такая работа - следить за соблюдением законов. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 11:43 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Нужно есть древовидный список групп людей и есть список людей. Они лежат в разных таблицах. Между ними отношение многие ко многим, а по сему объеденены они через третью таблицу. Все красиво, все связи прокладываются. А теперь встает проблема общаться что с группой людей что с конкретным человеком как с одной сущностью. Вот тут и появляется эта ерунда. Например, есть таблица безопасности в которой можно прописать разрешения на что либо как на группу так и на конкретного человека. Но ссылка на две таблицы не лезет. Вот и приходится баловаться с кодом на триггере или забивать на это на свой страх и риск... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 11:48 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Браво 1024! Я тобой восхищаюсь! И как тебе ёщё не надоело доказывать этим недалёким трёхзвенщикам, что ты прав. Лучше бы вместо пустого флейма доводил до ума своё замечательное ПО. Зачем делать на клиенте то что можно делать на сервере? Чтобы содрать побольше денег с заказчика. Чтобы обеспечить работой студентов, которые ничего не умеют, кроме C++. Чтобы после разработки иметь ещё кучу бобов на установке, настройке и поддержке. Просто потому, что некоторые товарищи не умеют по другому. Откуда растут ноги трёхзвенки? Тупой дата лейер + мощный мидл + тупой презентейшн. Тупой дата лейер даёт два преимущества. 1. Независимость платформы, может использоваться любой ODBC источник. 2. При изменениях платформы, практически не затрагивается бизнес логика. Но это и является его главным минусом - возможности сервера БД задействуются на 20% (токо не надо выспрашивать откуда цифра), отсюда тормоза, лишний сетевой трафик и прочие проблемы связанные, например, с использованием внешнего механизма транзакций. DNA Architecture - вчерашний день, господа, бросьте заниматься хернёй и обратите своё пристальное внимание на SQL сервер, ибо это не есть тупое хранилище данных, как вы привыкли ошибочно полагать. Научитесь его правильно использовать и все проблемы отпадут сами собой. Единтвенная правильная трёхзвенка, если её можно так назвать, MSSQL + ASP + IE. Если же сюда ещё подключить XML, то вообще лучше не придумаешь. При этом надо стараться вытеснить из ASP всю бизнес логику в MSSQL и использовать его лишь как интерфейс к юзверю. ЗЫ Хотя про большие проекты этого сказать не могу, там без ООП сложновато, надо изучать .NET :( ЗЫЫ 1024, я с тобой! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 16:09 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
>Нужно есть древовидный список групп людей и есть список людей. Они лежат в разных таблицах. Между ними отношение многие ко многим, а по сему объеденены они через третью таблицу. Все красиво, все связи прокладываются. А теперь встает проблема общаться что с группой людей что с конкретным человеком как с одной сущностью. Вот тут и появляется эта ерунда. Например, есть таблица безопасности в которой можно прописать разрешения на что либо как на группу так и на конкретного человека. Но ссылка на две таблицы не лезет. Вот и приходится баловаться с кодом на триггере или забивать на это на свой страх и риск... Не нужно. Ничего страшного не появляется. Достаточно, например, завести таблицу GroupUser, кторая будет типа первичным ключем для юзеров и групп (отношение 1:0) и ссылаться уже на нее. Туда же можно общие поля сложить, еще и место сэкономишь. Насчет выноса логики в сервер приложений или клиент. За: -возможность распараллелить обработку запросов, в том числе работать с несколькими серверами. Тут есть много ньюансов, может и медленнее получиться. -возможность относительно легко перейти на другой SQL сервер (умозрительная по-моему, хотя я слышал о переносе сложной системы вроде бы с оракла на мсскл за пару дней, но что-то не сильно верится). Это только при условии, что выносится вся логика, а в БД остаются только таблицы, да и то не сильно навороченные. -куча недорогих темных студентов, типа знающих C++ (ASP, VB, .NET..., нужное подчеркнуть); -меньше работы датабазному программеру и меньше ответственности; (только при условии, что зряплата не страдает); Против: -на sql-е многие вещи легче пишутся, например те же пользователи-группы с правами доступа; -возможность относительно легко перейти на другой клиент (умозрительная, я о таком даже не слышал), добавить доступ через веб; -если систему строить в лоб, без плясок с бубнами, то наверное производительность системы получится выше. Я не знаю как лучше, но ИМХО оставить логику в SQL сервере правильнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2003, 01:03 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Привет, ааг, акуз - поддерживаю вас в следующем: 1. Целостность данных НЕ есть бизнес-логика. Если база не будет следить за целостностью, то база - дура. (что и есть ответ на изначальный вопрос 1024) 2. Бизнес-логику можно писать в пл/скл пакетах или снаружи (С-шарп, жава, итд). Внутри - быстрее, снаружи - более ООПисто, маштабно и можно работать с кучей других ресурсов 3. Триггеры НЕ задуманы для бизнес-логики. ЙЙ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2003, 09:49 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Вот, блин, слово модное, "бизнес-логика". А что это такое? Что под этим понимаем мы, что под этим понимают разработчики СУБД? Я долго пытался понять, что под этим понимают писатели БОЛ. Итак, бизнес-правила, так как это понял я. Система отслеживающая ввод данных. В зависисмости от вводимых данных могут применяются разные алгоритмы обработки. Как эти алгоритмы реализованы - не суть важно. Когда производители SQL-серверов возвещают, что они могут делать бизнес-правила, то это не более чем трюк. Классический пример. Он есть почти во всех описаниях БЛ. Якобы не давать клиенту кредита, выше установленой цифры. Сами понимаете, это можно реализовать по разному. НО. Не бывает застывших схем ведения бизнеса. Сегодня порог 1000 тугриков, а завтра - 2000. Разумеется, это можно реализовать, но причем тут логика? Так что, красивое слово "бизнес-логика" сводится к банальному - ограничение на ввод. И использовать его надо крайне осторожно. Я бы не рискнул закладывать в базу ограничение на тринадцатый месяц. А вдруг календарь поменяется? =========== Не надо мне говорит про бизнес-процессы. Это совсем другая область. И относится к технологиям обработки уже введенной информации. ======= Кога хрена я это написал? То что про БЛ говорил 1024, не имет никакого смысла. Вернее, он совсем не понимает, что такое БЛ. Как я почти не понимаю, что он хочет сделать. Универсального клиента? ====== 1024>Совершенно без стеба. Глянь Paradox 8-9. Там есть и подключение к разным базам, и диаграммы связей, и автопостроение форм и отчетов. А теперь со стебом. Только вот ни один пользователь этим богатством возможностей не пользуется. ========== Я так чувствую, что VFP не менее крут в этом отношении. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2003, 17:53 |
|
|
start [/forum/topic.php?fid=32&fpage=182&tid=1547015]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 235ms |
total: | 372ms |
0 / 0 |