powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Бизнес-логика
57 сообщений из 57, показаны все 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
Бизнес-логика
    #32120673
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to: Cat2

Ну давайте так, в нашем контексте (СУБД) - ВСЕ есть обработка введенной информации.

Вводиться это приходный ордер в базу, контроль целостности, по коду (названию, группе каких то реквизитов) делаеться жуткая обработка, с элементами экспертной системы создаеться куча выходных данных и т.д.

Так вот реализация может быть (упрощенно)
- клиентское приложение которое делает запрос и ковыряет это все само
- сервер приложений который делает тоже самое
- а можно это делать средствами сервера.

Обсуждения достоинств и недостатков см. выше.

А насчет бизнес логики, так мы говорим о проектировании приложений и баз данных, которые позволяют автоматизировать некоторые бизнесс процессы.

А если ты говориш о бизнесс процессах как самих по себе, так это наверное не в этот форум.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120684
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DimaR> Вы очень хорошо сформулировали. И я с удовольствием поговорю на эти темы: БП и БЛ. Где, как и когда это нужно делать.

Только вот к заглавному постингу БЛ и БП не имеют никакого отношения. Что я и хотел сказать в своем постинге. Прошу прощения, что не смог ясно донести свою мысль.

То, что 1024 считает "бизнес-логикой", таковой НЕ ЯВЛЯЕТСЯ.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120824
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127

Я так понял ввести табличку одно поле которой ссылается на юзера, второе на группу, а на третье ссылается таблица безопасности? А Join'ы писать не замучиешься в связках? по мойму это получается тормоз да и путаница при занесении данных. Особенно после того как к твоей базе решат написать второго клиента, причем писать будет не разработчик.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120859
Shev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

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

Я сам год назад сделал создал подобный конструктор для справочников (только гораздо примитивнее) и в нескольких проектах удачно использовал. При этом значительно упростил себе жизнь и сократил сроки создания ПО.

Давно думаю над созданием уже мощного конструктора/каркаса для реализации стандартных операций и интерфейса приложений БД.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120865
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
2 Shev: И чем Access+ODBC хуже? Пиши логику, а с интерфейсом проблем не будет (ложь, конечно, но красивая). Да и пофункциональнее будет, чем Междумордие.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120928
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Chev

Ну если ты не знаешь, что такое ООП или вообще программировать не умеешь - то конечно пиши что-то левое, правда я так и не понял, про что ты говорил Ты никак пользователям свой интерфейс давать собрался?


По поводу бизнес-логики: давайте все-таки решим, что в данном контексте БЛ - это вся возможная обработка данных средствами сервера .
...
Рейтинг: 0 / 0
Бизнес-логика
    #32120936
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
2 Tygra: полностью согласен.

К тому же я не знаю что есть такого, что нельзя сделать средствами БД (я имею ввиду бизнес-логику) - в конце концов и DLL подключить можно.

А реализовывать БЛ на клиенте - неаккуратненько как-то Напишет какой-нить продвинутый юзверь свой клиент...
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121004
gringo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу пользователей и групп. У нас уже заведен ОБЩИЙ справочник пользователей + таблица связей (многие ко многим). Внутри справочник пользователей по спец. реквзииту определяем группа это или нет (можно также это узнать через связи). И мороки никакой нет, права вешаем или на пользователя или группы, все логично и удобно.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121196
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2

Бизнес-логика на сервере?
Есть такое дело. Где-то на ГФ встречал скрипт, который рассчитывает зарплату . О правилах ввода в этом случае и речи быть не может. Скорее - правила обработки .

Вот и получается, что на сервере можно реализовать немало процедур обработки, которые и будут представлять из себя тот самый слой БЛ и поставлять клиенту "полуфабрикаты" данных, возлагая на него (клиента) только функции представления информации и ввода/коррекции.

Мое понимание:
БЛ на сервере (СУБД) - примитивные процессы обработки информации (в том числе и правила ввода), согласованные с предметной областью и реализованные с помощью RI, SP, Views, Defaults etc.

Ведь это несколько "интеллектуальней", чем просто контроль целостности/ввода?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121281
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to: Jimmy

А почему примитивные ?
И кто будет делать не примитивные?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121290
Shev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 tygra

>Ну если ты не знаешь, что такое ООП или вообще программировать не умеешь - то конечно пиши что-то левое, правда я так и не понял, про что ты говорил Ты никак пользователям свой интерфейс давать собрался?

То что я написал, как раз и реализуется средствами ООП. А конкретнее - создать например объект "справочник" реализующий стандартные операции присущие любому справочнику и далее - наследование.

Прекрасный тому пример 1С - справочники, журналы, документы делаются за 5 мин. и с большой функциональностью.

Создаваемый интерфейс в данном случае только для показа данных. БЛ, как и полагается должна быть на сервере.

Вот это я имел ввиду.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121337
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что то ПО, которое создает 1024 призвано уйти от рутинного формоклепства, которое присутствует при создании приложений БД. Ведь сколько раз приходится заново рисовать справочники, делать поиски, придумывать работу фильтров. Почему бы эту проблему не решить раз и навсегда (или хотя бы надолго и для большинства случаев). Мне кажется каждый программист БД должен иметь в своем арсенале подобные наработки и работать над созданием самой модели приложения, нежели в очередной раз биться над отображением табличек.

А это что тогда? При чем тут ПО 1024 и разработка?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121348
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Jimmy писал:... Бизнес-логика на сервере?
Есть такое дело. Где-то на ГФ встречал скрипт, который рассчитывает зарплату. О правилах ввода в этом случае и речи быть не может. Скорее - правила обработки ...

Абсолютно правильно, jimmy! Бизнес-логика != правила ввода! Именно ПРАВИЛА ОБРАБОТКИ!
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121634
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gringo
теоретически да, а практически группы древовидные и каждый пользователь может находится в нескольких группах. Равно как и несколько пользователей могут быть в одной группе. Хотел бы я посмотреть на таблицу (одну) в которой это возможно.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121701
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2StarWind

В самих описанных условиях содержится противоречие: если есть группа Разработчики которой разрешено устанавливать ПО и группа Пользователи которой запрещено устанавливать ПО, то если разработчик Иванов одновременно является и пользователем, то независимо от того в каком виде представлены данные совершенно непонятно, имеет он право устанавливать ПО или нет.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121781
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 DimaR

Можно, конечно, и не примитвные процессы реализовать. Попробовать, во всяком случае :0)

Но вот вопрос: Во что это в конечном итоге выльется?

Ведь речь идет о СУБД, язык которой - SQL. Он хорош для определнного класса операций (табличных). А как, к примеру, с помощью SQL решить нелинейное дифференциальное уравнение четвертого порядка, которое может описывать часть предметной области?
Я просто не знаю и не стал бы пытаться, а воспользовался готовой библиотекой, которую прикрутил к клиенту.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32121791
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Jimmy, лучше уж прикрутить эту "готовую библиотеку" к серверу (а не к клиенту). Так надежнее будет.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122003
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 1024:
Безотносительно к тому, хорошие или нет описанные решения, никакого принципиального противоречия лично я не вижу - необходимо просто определить алгоритм разрешения такой ситуации, т.е. приоритет. Напр., в данном случае, если Иванов - разработчик, то устанав. ПО можно, даже если он пользователь.

2 Jimmy
Есть технология - клиент-сервер, а есть языки СУБД - TSQL, etc., разумеется с ограничениями. Клиент-серверная техн. преполагает реализация всей БЛ на сервере - а вопрос, как именно, уже вторичен. Т.е., как и писал eNose. На MSSQL диффуры, напр. можно прикрутить при помощи extended proc. К счастью, в жизни они (диффуры) редко встречаются.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122021
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 aag
Есть технология - клиент-сервер, а есть языки СУБД - TSQL

К чему это? Флейм раздуть, можно ли считать язык СУБД частью сервера?
Или все же Вы пытаетесь меня убедить, что на сервере можно сделать все ?

Так я уже сказал - все дело в цене. Хочется решать дифуры или алгоритмы с нечеткой логикой поднимать на сервере - флаг в руки. Лично я - сторонник разумного баланса средств и возможностей.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122029
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Причем здесь "разумный балланс"?
Все ограничения, связи и прочая логика ДОЛЖНА реализововаться на сервере.
А вот где сделать расчет для какого-нить отчета - тут уж на усмотрение разработчиков.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122050
gringo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 StarWind
у нас 2 таблицы - справочник юзеров-групп + таблица связей между ними (ParentID, ChildID), иначе, естесственно, то что когда пользователь входит в несколько групп, непонятно как хранить это в одной таблице (без извращений, конечно)
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122054
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Jimmy
а когда эта вот нечеткая логика должна орабатывать гигабайты информации, а я такое видел, например экспертные системы, то что прикажите делать?

to eNose :
да и расчет для отчета должен делаться на сервере, а пользователю выдавать конечный результат, таким образом обеспечиваеться наибольшая акутальность данных. (есть конечно ньюансы, некоторые вещи на клиенте бывает проще решить, но если это не связано с большим объемом информации)
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122061
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
DimaR писал:... да и расчет для отчета должен делаться на сервере ...
Это зависит от многих факторов. Но в общем случае ДА. Однако иногда сервер нагружать (и при этом тормозить работу клиентов) нельзя, и лучше на клиенте сделать.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122077
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а когда эта вот нечеткая логика должна орабатывать гигабайты информации, а я такое видел, например экспертные системы, то что прикажите делать?

Я ничего никому не пытась ни приказывать, ни навязывать. Все зависит от обстоятельств.

Допустим, имеется БД с шахматными этюдами и т.п. Как средствами СУБД организовать алгоритм выбора оптимального хода с перебором, например, прогнозов для 5 последующих ходов?

ЗЫ Можно не отвечать - вопрос риторический. Просто не нужно бескомпромиссных решений.
Возможно, что реализуем такой алгоритм на какой-то СУБД, но разумнее пользоваться средствами, специально предназначенными для этого .
Все.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122273
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так если в СУБД присутствуют средства именно для этого и предназначенные.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122506
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 и ссылку на себя. Тут это уже обсуждалось. А нужно ли?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122517
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gringo
как правило у групп и у юзеров свой набор атрибутов, какой-то сопровождающей инфо... так что мы тогда получим что для группы или для юзеров окажется куча ненужных полей

c127
я забыл уточнить что структура без извращений.... а так в принципе и всю БД можно в 1 таблицу запихать, это верно

1024
я думаю достаточно точно объяснили. Хочется лишь добавить, что если в твоем примере есть притиворечие, то это не знаит что оно будет всюду. Давай так же как и у тебя двее группы, разработчик и пользователь. А так же группы по отделам, например есть группа бугалтера. Это те же самые юзеры из группы пользователи...
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122577
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>как правило у групп и у юзеров свой набор атрибутов, какой-то сопровождающей инфо... так что мы тогда получим что для группы или для юзеров окажется куча ненужных полей

Третий раз медленно. Общие поля кладешь в "commonKey" (если они есть, я там многоточие специально поставил) , уникальные для юзера - в "user", уникальные для группы - в "group". Это то же, что gringo предлагал, только вид сбоку. Ссылаешься куда хочешь, ключ у двух таблиц общий. Где тут лишние поля? Это же стандартная техника - приведение к нормальной форме называется, не помню правда к какой.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122813
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, дошло )Дерево в одной таблице, а остальное по разным и ссылаются на это самое древо, грубо говоря вынесен первичный ключ в отдельную таблицу, или я опять что-то не понял?
...
Рейтинг: 0 / 0
Бизнес-логика
    #32122967
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jimmy:
а воспользовался готовой библиотекой, которую прикрутил к клиенту.

Я пытался ответить тебе, тоже что сказал eNose - суть в том, каким языком, какими ср-вами обрабатывать, а том что перенос - хотя бы частичный логики на клиента порождает массу проблем с согласованием версий, поддержкой и пр. Расчет для какого-нить отчета, кстати, тоже часть бизнес-логики (хотя, конечно, часто его можно рассматривать как часть интерфейса).
Если у тебя БД с шахматными этюдами и ты прикрутишь библиотечку к КЛИЕНТУ , - а на базе сидит штук 50 шахматистов - это может привести к большому геморрою. С другой стороны, прикрутив ее к серверу - что, конечно, несколько сложнее - ты найдешь золотую середину.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32123285
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Дерево в одной таблице, а остальное по разным и ссылаются на это самое древо, грубо говоря вынесен первичный ключ в отдельную таблицу, или я опять что-то не понял?

Все правильно. Потом можно дерево, можно много ко многим, это уже не важно. Основная идея была - построить общий первичный ключ для нескольких таблиц.
...
Рейтинг: 0 / 0
Бизнес-логика
    #32123294
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с127
Спасибо большое, а то у меня стереотип сложился и об этом я как-то не подумал :)
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Бизнес-логика
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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