02.09.2008, 10:05 | #1 |
Участник
|
Принципы построения базы данных
Здравствуйте.
В организации, где я работаю, идет внедрение Axapta. Нас, программистов, посылали на курсы. Компанию, которая нас обучала, здесь называть не буду. В процессе учебы смутило следующее: было сказано, что в Axapta вся логика выведена из базы в приложение. Т.е. в базе данных нет генераторов, триггеров, внешних ключей... а вся генерация, проверка целостности данных и прочее производится непосредственно в приложении. Скажите, так ли это? Или это просто некомпетентность обучающих? На мой взгляд, если делать действительно так, то каждый модуль приложения будет неоправданно увеличиваться в объеме, да и вообще, неверно это, логика работы базы должно реализовываться в базе. |
|
02.09.2008, 10:37 | #2 |
Модератор
|
Цитата:
Компанию, которая нас обучала, здесь называть не буду. В процессе учебы смутило следующее: было сказано, что в Axapta вся логика выведена из базы в приложение. Т.е. в базе данных нет генераторов, триггеров, внешних ключей... а вся генерация, проверка целостности данных и прочее производится непосредственно в приложении. Скажите, так ли это?
Цитата:
На мой взгляд, если делать действительно так, то каждый модуль приложения будет неоправданно увеличиваться в объеме, да и вообще, неверно это, логика работы базы должно реализовываться в базе
__________________
-ТСЯ или -ТЬСЯ ? |
|
02.09.2008, 10:39 | #3 |
MCT
|
Скорее всего речь шла об использовании прямых запросов и использование вычислительных ресурсов на сервере базы данных. Это актуально в таких приложениях как 1С.
__________________
Axapta book for developer |
|
02.09.2008, 10:42 | #4 |
Участник
|
Неправильный вывод. Все связи контролирует ядро, которое едино для всех модулей.
|
|
02.09.2008, 11:10 | #5 |
Участник
|
Цитата:
А также ветка на sql.ru, в которой я принимал участие http://sql.ru/forum/actualthread.aspx?tid=105796 |
|
02.09.2008, 11:12 | #6 |
Участник
|
На самом деле, насколько я понимаю, действительно было бы более разумным использовать приемущества и существующие средства самой базы данных.
Думаю, причина, по которой это сделано не так, проста - на тот момент, когда это делалось, пришлось бы выбирать: либо поддержка нескольких СУБД, либо привязка к только одной, и использование ее встроенных средств. Сейчас СУБД, используемые АХ (Оракл и СКЛ) обе обеспечивают все необходимые функции, поэтому, возможно, когда-то мы будем использовать и внешние ключи, и триггера |
|
02.09.2008, 11:41 | #7 |
Участник
|
Раз в базе не реализована никакая бизнес-логика, то возможна такая ситуация: В базу заходит человек с правами sa, но с нулевым пониманием того, что он делает.(не надо спрашивать у меня, откуда у него такие права :о)) Заходит не из приложения, а используя SQL Server Management Studio. Спокойно удаляет все данные из одной таблицы. В других таблицах остаются данные, которые ссылаются на удаленные данные, но, т.к. внешних ключей нет, получается нарушенная целостность. Имхо, "защиту от дурака" все-таки лучше реализовать на сервере БД, это защищает и от попыток что-то сломать из приложения, и от таких же попыток непосредственно на сервере БД.
|
|
02.09.2008, 11:50 | #8 |
Участник
|
Цитата:
Сообщение от Гужанов Павел
Раз в базе не реализована никакая бизнес-логика, то возможна такая ситуация: В базу заходит человек с правами sa, но с нулевым пониманием того, что он делает.(не надо спрашивать у меня, откуда у него такие права :о)) Заходит не из приложения, а используя SQL Server Management Studio. Спокойно удаляет все данные из одной таблицы. В других таблицах остаются данные, которые ссылаются на удаленные данные, но, т.к. внешних ключей нет, получается нарушенная целостность.
Цитата:
Представьте что на сервер заходит человек с правами administrator (не надо спрашивать, откуда у него такие права ), останавливает сервис MS SQL и (о, ужас!) удаляет файлы с расширением mdf... Вывод: тщательно думайте когда раздаете права. |
|
02.09.2008, 11:51 | #9 |
Участник
|
Бекапы никто не отменял
На самом деле бизнес-логика в Аксапте не огрничивается простыми связями между таблицами, не уверен, что можно посмотроить ту же логику в СУБД, что и в приложении Аксапты. А если и можно - то это потребует колоссальных трудозатрат при поддержке. ИМХО.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
02.09.2008, 12:03 | #10 |
Участник
|
Цитата:
Представьте что на сервер заходит человек с правами administrator (не надо спрашивать, откуда у него такие права ), останавливает сервис MS SQL и (о, ужас!) удаляет файлы с расширением mdf...
|
|
02.09.2008, 12:08 | #11 |
Участник
|
Цитата:
В серверную заходит мужик в маске и с автоматом. Тут и не спросишь |
|
|
За это сообщение автора поблагодарили: Poleax (1). |
05.09.2008, 16:47 | #12 |
Участник
|
Цитата:
Сообщение от Гужанов Павел
логика работы базы должна реализовываться в базе.
Вообще ведь использование "низкоуровневых" возможностей БД не запрещено (вызов ХП, например, часто используется). Но часть из них (триггер...), просто не переживёт синхронизацию. Цитата:
Сообщение от Weez
не уверен, что можно посмотреть ту же логику в СУБД, что и в приложении Аксапты.
Цитата:
Сообщение от Гужанов Павел
В базу заходит человек с правами sa, но с нулевым пониманием того, что он делает.
|
|