|
Бизнес-логика
|
|||
---|---|---|---|
#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 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
to: Cat2 Ну давайте так, в нашем контексте (СУБД) - ВСЕ есть обработка введенной информации. Вводиться это приходный ордер в базу, контроль целостности, по коду (названию, группе каких то реквизитов) делаеться жуткая обработка, с элементами экспертной системы создаеться куча выходных данных и т.д. Так вот реализация может быть (упрощенно) - клиентское приложение которое делает запрос и ковыряет это все само - сервер приложений который делает тоже самое - а можно это делать средствами сервера. Обсуждения достоинств и недостатков см. выше. А насчет бизнес логики, так мы говорим о проектировании приложений и баз данных, которые позволяют автоматизировать некоторые бизнесс процессы. А если ты говориш о бизнесс процессах как самих по себе, так это наверное не в этот форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2003, 18:38 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
DimaR> Вы очень хорошо сформулировали. И я с удовольствием поговорю на эти темы: БП и БЛ. Где, как и когда это нужно делать. Только вот к заглавному постингу БЛ и БП не имеют никакого отношения. Что я и хотел сказать в своем постинге. Прошу прощения, что не смог ясно донести свою мысль. То, что 1024 считает "бизнес-логикой", таковой НЕ ЯВЛЯЕТСЯ. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2003, 19:25 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
c127 Я так понял ввести табличку одно поле которой ссылается на юзера, второе на группу, а на третье ссылается таблица безопасности? А Join'ы писать не замучиешься в связках? по мойму это получается тормоз да и путаница при занесении данных. Особенно после того как к твоей базе решат написать второго клиента, причем писать будет не разработчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 04:12 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Привет! Я так понимаю, что то ПО, которое создает 1024 призвано уйти от рутинного формоклепства, которое присутствует при создании приложений БД. Ведь сколько раз приходится заново рисовать справочники, делать поиски, придумывать работу фильтров. Почему бы эту проблему не решить раз и навсегда (или хотя бы надолго и для большинства случаев). Мне кажется каждый программист БД должен иметь в своем арсенале подобные наработки и работать над созданием самой модели приложения, нежели в очередной раз биться над отображением табличек. Я сам год назад сделал создал подобный конструктор для справочников (только гораздо примитивнее) и в нескольких проектах удачно использовал. При этом значительно упростил себе жизнь и сократил сроки создания ПО. Давно думаю над созданием уже мощного конструктора/каркаса для реализации стандартных операций и интерфейса приложений БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 09:13 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 Shev: И чем Access+ODBC хуже? Пиши логику, а с интерфейсом проблем не будет (ложь, конечно, но красивая). Да и пофункциональнее будет, чем Междумордие. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 09:21 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 Chev Ну если ты не знаешь, что такое ООП или вообще программировать не умеешь - то конечно пиши что-то левое, правда я так и не понял, про что ты говорил Ты никак пользователям свой интерфейс давать собрался? По поводу бизнес-логики: давайте все-таки решим, что в данном контексте БЛ - это вся возможная обработка данных средствами сервера . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 10:29 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 Tygra: полностью согласен. К тому же я не знаю что есть такого, что нельзя сделать средствами БД (я имею ввиду бизнес-логику) - в конце концов и DLL подключить можно. А реализовывать БЛ на клиенте - неаккуратненько как-то Напишет какой-нить продвинутый юзверь свой клиент... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 10:41 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
По поводу пользователей и групп. У нас уже заведен ОБЩИЙ справочник пользователей + таблица связей (многие ко многим). Внутри справочник пользователей по спец. реквзииту определяем группа это или нет (можно также это узнать через связи). И мороки никакой нет, права вешаем или на пользователя или группы, все логично и удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 12:13 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 Cat2 Бизнес-логика на сервере? Есть такое дело. Где-то на ГФ встречал скрипт, который рассчитывает зарплату . О правилах ввода в этом случае и речи быть не может. Скорее - правила обработки . Вот и получается, что на сервере можно реализовать немало процедур обработки, которые и будут представлять из себя тот самый слой БЛ и поставлять клиенту "полуфабрикаты" данных, возлагая на него (клиента) только функции представления информации и ввода/коррекции. Мое понимание: БЛ на сервере (СУБД) - примитивные процессы обработки информации (в том числе и правила ввода), согласованные с предметной областью и реализованные с помощью RI, SP, Views, Defaults etc. Ведь это несколько "интеллектуальней", чем просто контроль целостности/ввода? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 14:44 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
to: Jimmy А почему примитивные ? И кто будет делать не примитивные? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 15:36 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 tygra >Ну если ты не знаешь, что такое ООП или вообще программировать не умеешь - то конечно пиши что-то левое, правда я так и не понял, про что ты говорил Ты никак пользователям свой интерфейс давать собрался? То что я написал, как раз и реализуется средствами ООП. А конкретнее - создать например объект "справочник" реализующий стандартные операции присущие любому справочнику и далее - наследование. Прекрасный тому пример 1С - справочники, журналы, документы делаются за 5 мин. и с большой функциональностью. Создаваемый интерфейс в данном случае только для показа данных. БЛ, как и полагается должна быть на сервере. Вот это я имел ввиду. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 15:42 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Я так понимаю, что то ПО, которое создает 1024 призвано уйти от рутинного формоклепства, которое присутствует при создании приложений БД. Ведь сколько раз приходится заново рисовать справочники, делать поиски, придумывать работу фильтров. Почему бы эту проблему не решить раз и навсегда (или хотя бы надолго и для большинства случаев). Мне кажется каждый программист БД должен иметь в своем арсенале подобные наработки и работать над созданием самой модели приложения, нежели в очередной раз биться над отображением табличек. А это что тогда? При чем тут ПО 1024 и разработка? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 16:14 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Jimmy писал:... Бизнес-логика на сервере? Есть такое дело. Где-то на ГФ встречал скрипт, который рассчитывает зарплату. О правилах ввода в этом случае и речи быть не может. Скорее - правила обработки ... Абсолютно правильно, jimmy! Бизнес-логика != правила ввода! Именно ПРАВИЛА ОБРАБОТКИ! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 16:22 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
gringo теоретически да, а практически группы древовидные и каждый пользователь может находится в нескольких группах. Равно как и несколько пользователей могут быть в одной группе. Хотел бы я посмотреть на таблицу (одну) в которой это возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 05:30 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2StarWind В самих описанных условиях содержится противоречие: если есть группа Разработчики которой разрешено устанавливать ПО и группа Пользователи которой запрещено устанавливать ПО, то если разработчик Иванов одновременно является и пользователем, то независимо от того в каком виде представлены данные совершенно непонятно, имеет он право устанавливать ПО или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 09:11 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 DimaR Можно, конечно, и не примитвные процессы реализовать. Попробовать, во всяком случае :0) Но вот вопрос: Во что это в конечном итоге выльется? Ведь речь идет о СУБД, язык которой - SQL. Он хорош для определнного класса операций (табличных). А как, к примеру, с помощью SQL решить нелинейное дифференциальное уравнение четвертого порядка, которое может описывать часть предметной области? Я просто не знаю и не стал бы пытаться, а воспользовался готовой библиотекой, которую прикрутил к клиенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 10:27 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Jimmy, лучше уж прикрутить эту "готовую библиотеку" к серверу (а не к клиенту). Так надежнее будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 10:31 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 1024: Безотносительно к тому, хорошие или нет описанные решения, никакого принципиального противоречия лично я не вижу - необходимо просто определить алгоритм разрешения такой ситуации, т.е. приоритет. Напр., в данном случае, если Иванов - разработчик, то устанав. ПО можно, даже если он пользователь. 2 Jimmy Есть технология - клиент-сервер, а есть языки СУБД - TSQL, etc., разумеется с ограничениями. Клиент-серверная техн. преполагает реализация всей БЛ на сервере - а вопрос, как именно, уже вторичен. Т.е., как и писал eNose. На MSSQL диффуры, напр. можно прикрутить при помощи extended proc. К счастью, в жизни они (диффуры) редко встречаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 12:54 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 aag Есть технология - клиент-сервер, а есть языки СУБД - TSQL К чему это? Флейм раздуть, можно ли считать язык СУБД частью сервера? Или все же Вы пытаетесь меня убедить, что на сервере можно сделать все ? Так я уже сказал - все дело в цене. Хочется решать дифуры или алгоритмы с нечеткой логикой поднимать на сервере - флаг в руки. Лично я - сторонник разумного баланса средств и возможностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:06 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Причем здесь "разумный балланс"? Все ограничения, связи и прочая логика ДОЛЖНА реализововаться на сервере. А вот где сделать расчет для какого-нить отчета - тут уж на усмотрение разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:12 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 StarWind у нас 2 таблицы - справочник юзеров-групп + таблица связей между ними (ParentID, ChildID), иначе, естесственно, то что когда пользователь входит в несколько групп, непонятно как хранить это в одной таблице (без извращений, конечно) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:21 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
to Jimmy а когда эта вот нечеткая логика должна орабатывать гигабайты информации, а я такое видел, например экспертные системы, то что прикажите делать? to eNose : да и расчет для отчета должен делаться на сервере, а пользователю выдавать конечный результат, таким образом обеспечиваеться наибольшая акутальность данных. (есть конечно ньюансы, некоторые вещи на клиенте бывает проще решить, но если это не связано с большим объемом информации) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:23 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
DimaR писал:... да и расчет для отчета должен делаться на сервере ... Это зависит от многих факторов. Но в общем случае ДА. Однако иногда сервер нагружать (и при этом тормозить работу клиентов) нельзя, и лучше на клиенте сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:27 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
а когда эта вот нечеткая логика должна орабатывать гигабайты информации, а я такое видел, например экспертные системы, то что прикажите делать? Я ничего никому не пытась ни приказывать, ни навязывать. Все зависит от обстоятельств. Допустим, имеется БД с шахматными этюдами и т.п. Как средствами СУБД организовать алгоритм выбора оптимального хода с перебором, например, прогнозов для 5 последующих ходов? ЗЫ Можно не отвечать - вопрос риторический. Просто не нужно бескомпромиссных решений. Возможно, что реализуем такой алгоритм на какой-то СУБД, но разумнее пользоваться средствами, специально предназначенными для этого . Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:46 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Так если в СУБД присутствуют средства именно для этого и предназначенные. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 16:22 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2StarWind >Я так понял ввести табличку одно поле которой ссылается на юзера, второе на группу, а на третье ссылается таблица безопасности? А Join'ы писать не замучиешься в связках? по мойму это получается тормоз да и путаница при занесении данных. Особенно после того как к твоей базе решат написать второго клиента, причем писать будет не разработчик. Ты не так понял, я наверное плохо сформулировал. Правда gringo с уже ответил, но я все-же попробую еще более формально. create table commonKey ( id int not null identity primary key, ...... ); create table "user" ( id int not null primary key references commonKey(id), ..... ); create table "group" ( id int not null primary key references commonKey(id), ..... ); И если нужно чтоб что-то ссылалось на юзера или группу, то ссылайся на commonKey. >теоретически да, а практически группы древовидные и каждый пользователь может находится в нескольких группах. Равно как и несколько пользователей могут быть в одной группе. Хотел бы я посмотреть на таблицу (одну) в которой это возможно. Желания исполняются: create table hGroups ( "group" int not null references commonKey(id), "member" int not null references commonKey(id), ..... primary key ("group","member") ); Вместо ссылки на commonKey в этой таблице можно ставить ссылки на любую таблицу из множества {"user","member"} в зависимости от той же разнесчастной бизнес логики. В одну таблицу вообще все на свете запихнуть можно, достаточно создать поля всех типов, первичный ключ типа identity и ссылку на себя. Тут это уже обсуждалось. А нужно ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2003, 00:35 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
gringo как правило у групп и у юзеров свой набор атрибутов, какой-то сопровождающей инфо... так что мы тогда получим что для группы или для юзеров окажется куча ненужных полей c127 я забыл уточнить что структура без извращений.... а так в принципе и всю БД можно в 1 таблицу запихать, это верно 1024 я думаю достаточно точно объяснили. Хочется лишь добавить, что если в твоем примере есть притиворечие, то это не знаит что оно будет всюду. Давай так же как и у тебя двее группы, разработчик и пользователь. А так же группы по отделам, например есть группа бугалтера. Это те же самые юзеры из группы пользователи... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2003, 03:18 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
>как правило у групп и у юзеров свой набор атрибутов, какой-то сопровождающей инфо... так что мы тогда получим что для группы или для юзеров окажется куча ненужных полей Третий раз медленно. Общие поля кладешь в "commonKey" (если они есть, я там многоточие специально поставил) , уникальные для юзера - в "user", уникальные для группы - в "group". Это то же, что gringo предлагал, только вид сбоку. Ссылаешься куда хочешь, ключ у двух таблиц общий. Где тут лишние поля? Это же стандартная техника - приведение к нормальной форме называется, не помню правда к какой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2003, 09:05 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
Сорри, дошло )Дерево в одной таблице, а остальное по разным и ссылаются на это самое древо, грубо говоря вынесен первичный ключ в отдельную таблицу, или я опять что-то не понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2003, 12:26 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
2 Jimmy: а воспользовался готовой библиотекой, которую прикрутил к клиенту. Я пытался ответить тебе, тоже что сказал eNose - суть в том, каким языком, какими ср-вами обрабатывать, а том что перенос - хотя бы частичный логики на клиента порождает массу проблем с согласованием версий, поддержкой и пр. Расчет для какого-нить отчета, кстати, тоже часть бизнес-логики (хотя, конечно, часто его можно рассматривать как часть интерфейса). Если у тебя БД с шахматными этюдами и ты прикрутишь библиотечку к КЛИЕНТУ , - а на базе сидит штук 50 шахматистов - это может привести к большому геморрою. С другой стороны, прикрутив ее к серверу - что, конечно, несколько сложнее - ты найдешь золотую середину. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2003, 14:40 |
|
Бизнес-логика
|
|||
---|---|---|---|
#18+
>Дерево в одной таблице, а остальное по разным и ссылаются на это самое древо, грубо говоря вынесен первичный ключ в отдельную таблицу, или я опять что-то не понял? Все правильно. Потом можно дерево, можно много ко многим, это уже не важно. Основная идея была - построить общий первичный ключ для нескольких таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2003, 00:27 |
|
|
start [/forum/topic.php?all=1&fid=32&tid=1547015]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 239ms |
total: | 530ms |
0 / 0 |