Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
pkarklin Я считаю, что такое понятие как Разработчик хранилища, а еще круче Архитектор хранилища не должно иметь к себе приписку с названием и условностями той или иной системы. Я готов смириться с особенностями некоторых ERP систем, но вот с "условностями поддержки целостности", извините меня, смириться не могу. Мы, наверное, друг друга не поняли. Я ни в коем случае не рассматриваю отказ от в ФК как краеугольный принцип проектирования подобных систем. Речь идет о разумном, с моей точки зрения, компромиссе. Если проектировщик системы (не хранилища) заранее знает, что при использовании определенного API во всей системе в таблицу не попадут непротиворечивые данные, то зачем ему дополнительная страховка в виде ФК? Ей вполне можно пожертвовать в угоду производительности и прочих вещей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 14:43 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
OA UserРечь идет о разумном, с моей точки зрения, компромиссе. Отказ от использования внешних ключей я не считаю допустимым компромисом. OA UserЕсли проектировщик системы (не хранилища) заранее знает, что при использовании определенного API во всей системе в таблицу не попадут непротиворечивые данные, то зачем ему дополнительная страховка в виде ФК? И опять у Вас "Если..." не буду повторяться. авторЕй вполне можно пожертвовать в угоду производительности и прочих вещей. Замена FK (механизма, работающего на уровне реляционного движка) на самописные провекри на уровне какого-либо API никак не добавит производительности системы. И с этим спорить бесполезно. А вот про "прочие вещи", в угоду которым Вы готовы пожертвовать DRI я готов рассмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 15:02 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
С одним наверно все согласятся. Наличие внеших ключей - не гарантия целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 15:37 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
ModelRС одним наверно все согласятся. Наличие внеших ключей - не гарантия целостности. Эээ... 100% гарантию дает только бог. ;) Естественно, что если обременный правами человек отключил ограничения для проведения какой-либо затейлевой операции, а потом забыл их включить, или создал их без проверки на соответствие имеющихся данных новому ограничению, то да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 16:29 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
OA UserТут ведь и другой вариант возможен - система сделает запись в справочнике неактивной, и ничего удалять не придется, проблема, соответственно , не вылезет. Вылезет другая - например, по какой-нибудь операции типа "создать документ на основании документа" ссылка будет откопирована в новый документ, а там в комбобоксе такого варианта уже нет, поскольку запись в справочнике неактивна. Любое решение порождает свои проблемы, и отказ от FK, безусловно, кое-где помогает - но в целом..... мне довелось работать с разными структурами баз, в том числе более извращенными, чем с отсутствующими FK, но в "классической" мне комфортнее. Меньше проблем. OA UserКонечно, средствами БД удалить запись запросто, а на уровне бизнес-логики это уже не сделаешь. А мне, как пользователю системы, это ведь безразлично, правда? Главное, что ненужная для выборки запись в эту выборку не попадет. Вам, как пользователю системы, важно, чтобы в системе не было кривых данных. К примеру, мы проверили - в соответствующие формы ввода-просмотра эти записи не попадают, видимо битые ключи не пускают. А в каком-нибудь отчете, как опять же догадываетесь, наверняка суммируются. То есть данные не то что некорректны - противоречивы внутри бизнес-логики. И куда это годится? OA UserЯ хочу сказать, что дорабатывая некую ERP-систему, надо придерживаться определенных правил игры, Хм. Безусловно, разрабатывая кастомизацию, нужно следовать технологии, предложенной вендором и не плодить своих противоречащих ей решений. И я безусловно далек от мысли помочь клиенту, создав-таки внешние ключи на OEBS-ных таблицах. Но - вырабатывать эти правила игры тоже нужно с умом, и потом не забывать их регулярно просматривать и обновлять. Отсутствие внешних ключей - то правило, которое разработчикам стоило бы пересмотреть и потихоньку исключить. OA UserПовторюсь, но, по-моему, проверка заранее непротиворечивых данных не всегда имеет смысл. А где Вы нашли "заранее непротиворечивые данные"? Не всегда. Например, читая курс по хранилищам данных, я обсуждаю со студентами плюсы и минусы включенных проверок целостности. Но если огромная система отдается на модификацию хрен знает кому, и результатом является репутация корпорации Oracle - я бы не был столь беспечен. Собственно, сегодня один из ключевых пользователей во всеуслышанье сказал банальную фразу - "у Oracle есть один хороший продукт: база, а все остальное - полное ..." В общем-то это относилось в первую очередь к Collaboration Suite, и явно было вызвано не только и не столько FK, но тем не менее - названные Вами правила игры приводят к результату.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 16:43 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
ModelRЧем плохи общие рассуждения? Их легко довести до абсурда :). Для надежности может и проверку CRC всюду собственную засандалить. Доведение до абсурда - хороший критерий для анализа утверждений. В данном случае обратите внимание на "где не слишком напряжно". То есть там, где разумно по качество/цена. Я не очень в курсе, где в OEBS используется CRC и как, но например CRC-подобные возможности БД, исключающие, в частности, возможность легко и просто подправить руками файлы базы, вполне уместны, и отключение их, будь оно возможным, было бы глупостью. ModelRФК СУБД в этом случае греет воздух вхолостую - проверяет уже проверенное. Его единственное назначение - а вдруг кто пойдет в обход? Не единственное, хотя основное. Второе - защита от ошибок в бизнес-правилах и во внутренней реализации бизнес-логики. ModelRКстати, даже удаление может быть связано с логикой, не доступной DRI. Скажем, если ссылающийся объект "дешевый" - то CASCADE его, а иначе RESTRICT. Если извращаться из принципа, то DRI можно описать очень много :) Другой вопрос, что это не имеет практического смысла. Я нисколько не пытаюсь доказать, будто FK спасут от всех бед. Они всего лишь очень дешево спасут от некоторых реально существующих бед. И красивые рассуждения о централизованной проверке бизнес-правил нисколько не мешают мне любоваться кривыми записями, относительно которых никто не знает, что с ними делать, никто не признается, что это его работа и никто не хочет взять на себя смелость их грохнуть. ModelRНе внимательны, коллега. Вопрос не нужно/ненужно, а где проверять и сколько раз. Да не сказал бы, что именно я невнимателен, если учесть, что именно об этом говорил в первых фразах. ModelRСледуя Вашим примерам - Иногда нужно все-таки выходить из-под душа. А если повесить десяток запасок, боюсь будет тоже, что не брать парашют вообще. Дык ведь не следуя же. Вы предлагаете ни одной не вешать; один централизованный парашют и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 17:09 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
softwarerА где Вы нашли "заранее непротиворечивые данные"? Не всегда. Например, читая курс по хранилищам данных, я обсуждаю со студентами плюсы и минусы включенных проверок целостности. Но если огромная система отдается на модификацию хрен знает кому, и результатом является репутация корпорации Oracle - я бы не был столь беспечен. Собственно, сегодня один из ключевых пользователей во всеуслышанье сказал банальную фразу - "у Oracle есть один хороший продукт: база, а все остальное - полное ..." В общем-то это относилось в первую очередь к Collaboration Suite, и явно было вызвано не только и не столько FK, но тем не менее - названные Вами правила игры приводят к результату.. Тривиальный пример: Практически на любой транзакционной таблице в OEBS есть поля LAST_UPDATED_BY и CREATED_BY. Туда пишутся ID пользователей, которые модифицировали/создали данную запись. Есть табличка FND_USERS , там по ID расшифровывается вся информация, т.е. типичный справочник в данном случае. Текущий ID пользователя можно получить легко после авторизации через fnd_global.USER_ID (боюсь наврать, вроде так :)). Спрашивается, что даст наличие внешнего ключа, если пользователь уже авторизован в системе, т.е. ID заранее непротиворечив? Наличие FK все-таки некий перебор индексных ключей предполагает, не ошибаюсь? И я, кстати, говорил не о замене FK другим механизмом проверки, а об отсутствии такой проверки вообще там, где без нее можно обойтись. И таких ситуаций очень много. Кроме того, в зависимости от настроек системы некоторые ограничения могут и не потребоваться вообще. Что с ними делать? Включать/отключать каждый раз? :) По-моему, такого монстра поддерживать не проще будет, чем горы пакетов, пусть и сомнительного качества. P.S. А репутация Oracle пусть ее акционеров волнует, если честно. Пока вроде они не сильно расстраиваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 17:38 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
OA UserСпрашивается, что даст наличие внешнего ключа, если пользователь уже авторизован в системе, т.е. ID заранее непротиворечив? Вы пошутили, или действительно не понимаете, к чему может привести отсутствие контроля ссылочных ограничений?! OA UserТекущий ID пользователя можно получить легко после авторизации через fnd_global.USER_ID Можно, никто не спорит. Но кто запретит при написании пакета по недосмотру или злому умыслу взять и удалить из таблички FND_USERS запись о пользователи, который числиться в авторах изменений?! Что будет в этом случаи с "по ID расшифровывается вся информация"?! OA UserНаличие FK все-таки некий перебор индексных ключей предполагает, не ошибаюсь? Эээ... Скажем так, наличие индекса на полях, составляющих внешний ключ увеличивает скорость проверки. Впрочем, это поведение аналогично любому другому использованию индекса. OA UserИ я, кстати, говорил не о замене FK другим механизмом проверки, а об отсутствии такой проверки вообще там, где без нее можно обойтись. Приведенный Вами пример как раз описывает обратную ситуацию. Проверки нет там, где она должна была быть. :( OA UserИ таких ситуаций очень много. Кроме того, в зависимости от настроек системы некоторые ограничения могут и не потребоваться вообще. Что с ними делать? Включать/отключать каждый раз? :) По-моему, такого монстра поддерживать не проще будет, чем горы пакетов, пусть и сомнительного качества. Каких таких?! Если ограничение завасит от настроек системы, т.е. ограничение, зависящее от бизнесч логики, то естественно, оно не может быть реализовано в виде DRI. Здесь помогут, например, триггера. И включать\выключать ничего не надо будет и поодерживается это на раз-два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 17:54 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
softwarer ModelRЧем плохи общие рассуждения? Их легко довести до абсурда :). Для надежности может и проверку CRC всюду собственную засандалить. Доведение до абсурда - хороший критерий для анализа утверждений. В данном случае обратите внимание на "где не слишком напряжно". То есть там, где разумно по качество/цена.О. И я про тоже. softwarer Дык ведь не следуя же. Вы предлагаете ни одной не вешать; один централизованный парашют и все.Интересно, Вы вешаете еще и триггер, если уже есть ФК? а ну как отключат, а ну как в СУБД баг. Исходя из разумно по качество/цена иногда от запасок совсем отказываются. З.Ы.Сколько ни летал, ни разу парашюта собаки не дали:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 17:56 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
pkarklinВы пошутили, или действительно не понимаете, к чему может привести отсутствие контроля ссылочных ограничений?! Отчетливо понимаю, к чему может привести, если ДРУГИХ механизмов нет. Я пытаюсь донести мысль, что работа с СУБД и работа с некоей системой, в данном случае OEBS, реализованной пусть на той же СУБД - суть разные вещи. pkarklin Можно, никто не спорит. Но кто запретит при написании пакета по недосмотру или злому умыслу взять и удалить из таблички FND_USERS запись о пользователи, который числиться в авторах изменений?! Что будет в этом случаи с "по ID расшифровывается вся информация"?! Попробуйте это сделать средствами OEBS. pkarklin Эээ... Скажем так, наличие индекса на полях, составляющих внешний ключ увеличивает скорость проверки. Впрочем, это поведение аналогично любому другому использованию индекса. Не спорю, ФК - вещь декларативная, ее реализация - отдельный разговор. pkarklin Приведенный Вами пример как раз описывает обратную ситуацию. Проверки нет там, где она должна была быть. :( OA UserИ таких ситуаций очень много. Кроме того, в зависимости от настроек системы некоторые ограничения могут и не потребоваться вообще. Что с ними делать? Включать/отключать каждый раз? :) По-моему, такого монстра поддерживать не проще будет, чем горы пакетов, пусть и сомнительного качества. Каких таких?! Если ограничение завасит от настроек системы, т.е. ограничение, зависящее от бизнесч логики, то естественно, оно не может быть реализовано в виде DRI. Здесь помогут, например, триггера. И включать\выключать ничего не надо будет и поодерживается это на раз-два. Зачем это проверять еще раз? Можно попробовать навесить все внешние ключи, перенести максимум логики в триггеры и т.д. Не думаю, что работа типичной OLTP системы порадует Вас своей скоростью. Не уверен также, что логика, разбросанная по разным объектам базы данных будет поддаваться какому-либо сопровождению. В проектировании любых систем всегда имеет место компромисс, и эта история с внешними ключами - типичный тому пример. Видимо, при достижении определенного уровня сложности в бизнес-логике, требований к производительности, надежности и других критериев такое решение вполне имеет право на жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 18:27 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
OA UserТривиальный пример: Практически на любой транзакционной таблице в OEBS есть поля LAST_UPDATED_BY и CREATED_BY. Это пример полей, которые нафиг никому не нужны и которые никак (может быть за очень редкими исключениями) не влияют на работу системы. Относительно таких полей - я не буду возражать против отсутствия ключей, скорее наоборот. Но я не согласен, что таких примеров очень много; скорее - очень мало. Как правило в системе присутствуют таки реально нужные данные. OA UserКроме того, в зависимости от настроек системы некоторые ограничения могут и не потребоваться вообще. Что с ними делать? Включать/отключать каждый раз? Нафига? Там будут NULLы, которые не будут ни индексироваться, ни проверяться. OA UserПо-моему, такого монстра поддерживать не проще будет, чем горы пакетов, пусть и сомнительного качества. Не очень вижу, как этот вывод следует из ранее изложенного материала. Даже если зачем-то потребуется отключать лишние ключи - написать код, который делает это в одном месте, на два порядка технологичнее, нежели вручную затыкать каждое место, где используется таблица. OA UserА репутация Oracle пусть ее акционеров волнует, если честно. Пока вроде они не сильно расстраиваются. Это можно ставить эпитафией ко всему обсуждению. Что бы мы тут ни решили, OEBS от этого не изменится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 20:20 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
ModelR softwarerДык ведь не следуя же. Вы предлагаете ни одной не вешать; один централизованный парашют и все.Интересно, Вы вешаете еще и триггер, если уже есть ФК? Нет, не вешаю. Это прорва дополнительного кода, нуждающегося в поддержке, это большие траты производительности на переключения контекста, это возможность нарваться на table mutating - итого получается "напряжно". ModelRИсходя из разумно по качество/цена иногда от запасок совсем отказываются. Угу. Например, камикадзам парашютов не давали. Как раз тот случай :) ModelRЗ.Ы.Сколько ни летал, ни разу парашюта собаки не дали:) Угу. А я знаю ребят, приземлявшихся на запаске :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 20:31 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
OA UserОтчетливо понимаю, к чему может привести, если ДРУГИХ механизмов нет. Я пытаюсь донести мысль, что работа с СУБД и работа с некоей системой, в данном случае OEBS, реализованной пусть на той же СУБД - суть разные вещи. Я готов бы с Вами согласится, если бы работа с упомянутой системой происходила только на "среднем" уровне, т.е. не имелось бы в принципе возможности обхода ограничений, заложенных на этом уровне. Но на самом деле работа с системой подразумевает ПРЯМОЙ доступ разработчика к хранилищу (через написание пакетов, например, при кастомизации workflow) со всеми вытекающими отсюда последствиями в условиях отсутсвия ограничений. OA UserПопробуйте это сделать средствами OEBS. Эээ... Написание пакета в описанном мной выше случаи это разве не "средства OEBS". И что, "это средство OEBS" не даст мне наломать дров? OA UserЗачем это проверять еще раз? Что значит "проверять еще раз"?! Проверять надо в одном месте - там где данные храняться, а на среднем звене или классическом клиенте обрабатывать исключительные ситуации. OA UserМожно попробовать навесить все внешние ключи, перенести максимум логики в триггеры и т.д. Не думаю, что работа типичной OLTP системы порадует Вас своей скоростью. "Порадует скоростью" по сравнению с чем?! С системой (на уровне СУБД) совсем без триггеров, внешних ключей и т.п. И куда Вы вынесете эту обработку? В среднее звено? И что, при реализации этих возможностей на среднем уровне это не будет уменьшать быстродействие?! Абсурд!!! Рассматривать то надо общую производительность, а не производительность отдельно хранилища. А то по Вашей логике получается, что реализация проверки допустимости корреспонденции счетов или пересчет остатков будет работать гараздо быстрее, если его реализовать не в СУБД, а на среднем звене или совсем на клиенте. OA UserНе уверен также, что логика, разбросанная по разным объектам базы данных будет поддаваться какому-либо сопровождению. Гм... Опять позволю себе с Вами не согласится. Вся логика OEBS разбросана по куче пакетов (десятки тысяч), а не на мифическом "среднем" уровне. Такой же подход использую и я при разработке - использование хп (триггеров) для реализации бизнес-логики. Клиенту остается только в нужный момент вызвать нужную хп. И сопровождаются такие (классические 2ву звенки, даже с многотысячным числом объектов) гараздо проще, чем монстроподорбные N-звенки. IMHO. OA UserВ проектировании любых систем всегда имеет место компромисс, и эта история с внешними ключами - типичный тому пример. Видимо, при достижении определенного уровня сложности в бизнес-логике, требований к производительности, надежности и других критериев такое решение вполне имеет право на жизнь. Вот уже на протяжении 5ти страниц пока еще никто не привел аргументации, кроме надуманных проблем с производительностью и сложностью системы, которая действительно могла бы полсужить отправным моментом в отказе от использования контроля целостности на уровне СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 10:05 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
pkarklin OA UserОтчетливо понимаю, к чему может привести, если ДРУГИХ механизмов нет. Я пытаюсь донести мысль, что работа с СУБД и работа с некоей системой, в данном случае OEBS, реализованной пусть на той же СУБД - суть разные вещи. Я готов бы с Вами согласится, если бы работа с упомянутой системой происходила только на "среднем" уровне, т.е. не имелось бы в принципе возможности обхода ограничений, заложенных на этом уровне. Но на самом деле работа с системой подразумевает ПРЯМОЙ доступ разработчика к хранилищу (через написание пакетов, например, при кастомизации workflow) со всеми вытекающими отсюда последствиями в условиях отсутсвия ограничений. OA UserПопробуйте это сделать средствами OEBS. Эээ... Написание пакета в описанном мной выше случаи это разве не "средства OEBS". И что, "это средство OEBS" не даст мне наломать дров? Еще раз попробую объяснить. Дело не в n-звенности системы, а в самом подходе. Система не подразумевает, а допускает прямой доступ к данным, этого никто и не отрицает. Вы можете писать любые пакеты, процедуры и т.д. , качество работы будет напрямую зависеть от того, насколько вы хорошо знаете структуры таблиц, их взаимосвязи и т.д. Это есть работа средствами СУБД. С другой стороны, можно использовать тот функционал, который предлагает сама система, и который, кстати, она сама в своих формах использует. Например, если в AR нужно загрузить платежи, можно ведь средствами СУБД заполнить соответствующие таблицы, а можно изучить матчасть, заполнить интерфейсные таблицы, вызвать определенный пакет и система сама выполнит необходимые действия. Это есть работа средствами OEBS, те самые "правила игры". И если разработчики системы полагают, что эти правила будут соблюдаться, то они полностью вправе отказаться от ряда ограничений по целостности системы. Я сам довольно давно занимался разработкой подобного API для системы еще на dbf-файлах, сами понимаете, там пользователя никак нельзя было ограничить, так вот, после перевода пользотельского кода на этот API количество проблем с пользовательским кодом снизилось на порядок, и не потому что я такой мегапрограммист был, а потому, что поведение системы стало прогнозируемым, вот и все. Представьте, Вы отдаете свою систему на сторону, садится там очередной гений, ему неохота разбираться, что там OA User и pkarklin понаписали, он все, что надо, отключает и ваяет свое. Значит, он не будет соблюдать установленные Вами правила, и Вы гарантируете, что Ваша система будет работать? Пример с LAST_UPDATED_BY совсем не надуманный, кстати, потому что документы бывают разного свойства, в том числе и весьма щекотливого, и я бы не назвал эти поля бесполезными. Я - больше практик, и для меня надежность системы, грубо говоря, обратно пропорциональна количеству звонков на хелпдеск в единицу времени, и по моему опыту больше всего проблем создавали именно доработки, связанные с нарушением "правил игры", в том числе и триггеры, повешенные на транзакционные таблицы, дополнительные индексы, кривые блокировки и т.д. Проблем, вызванных отсутствием ФК, я не припомню. Посему и делаю вывод, что, как и наличие ФК не является панацеей от всех бед, так и отказ от них является не догмой, а разумным в данном случае компромиссом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 11:31 |
|
||
|
Внешние ключи в OEBS, SAP, Axapta и тд.
|
|||
|---|---|---|---|
|
#18+
OA UserЕще раз попробую объяснить. Дело не в n-звенности системы, а в самом подходе. Система не подразумевает, а допускает прямой доступ к данным, этого никто и не отрицает. Ды и я об этом говорю, что система "допускает". Ни более, ни менее. OA UserВы можете писать любые пакеты, процедуры и т.д. , качество работы будет напрямую зависеть от того, насколько вы хорошо знаете структуры таблиц, их взаимосвязи и т.д. Это есть работа средствами СУБД. И с этим не спорю. Но опять напомню, про заведомые условности при поддержке целосности. OA UserС другой стороны, можно использовать тот функционал, который предлагает сама система, и который, кстати, она сама в своих формах использует. Например, если в AR нужно загрузить платежи, можно ведь средствами СУБД заполнить соответствующие таблицы, а можно изучить матчасть, заполнить интерфейсные таблицы, вызвать определенный пакет и система сама выполнит необходимые действия. Это есть работа средствами OEBS, те самые "правила игры". И если разработчики системы полагают, что эти правила будут соблюдаться, то они полностью вправе отказаться от ряда ограничений по целостности системы. Хм... Вы привели пример, где действительно достаточно "уметь пользоваться интерфейсными таблицами", и где возможность наступания на грабли сведена к минимум. Можно привести другой пример, где надо действительно напрямую работать с таблицами (представлениями системы) и уже где возможность наступить на грабли отсутствия DRI возрастает. Я не утверждаю, что это обязательно случится, но спорить с тем, что это может произойти, надеюсь, Вы не будете. OA UserЯ сам довольно давно занимался разработкой подобного API для системы еще на dbf-файлах, сами понимаете, там пользователя никак нельзя было ограничить, так вот, после перевода пользотельского кода на этот API количество проблем с пользовательским кодом снизилось на порядок, и не потому что я такой мегапрограммист был, а потому, что поведение системы стало прогнозируемым, вот и все. Не кажется ли Вам, что ограничения на уровне СУБД можно представить тем самым "API", который как раз сведет кол-во проблем с целостностью к минимому? Так зачем тогда он него отказываться? OA UserПредставьте, Вы отдаете свою систему на сторону, садится там очередной гений, ему неохота разбираться, что там OA User и pkarklin понаписали, он все, что надо, отключает и ваяет свое. Значит, он не будет соблюдать установленные Вами правила, и Вы гарантируете, что Ваша система будет работать? С дуру можно любой орган человеческого тела сломать. ;) Про 100% гарантию я уже говорил и повторятся не буду. Я просто опять стараюсь сделать упор на то, что и softwarer говорил. Если знаешь место, где можно упасть, то соломки стоит подстелить заранее. OA UserЯ - больше практик, и для меня надежность системы, грубо говоря, обратно пропорциональна количеству звонков на хелпдеск в единицу времени, и по моему опыту больше всего проблем создавали именно доработки, связанные с нарушением "правил игры", в том числе и триггеры, повешенные на транзакционные таблицы, дополнительные индексы, кривые блокировки и т.д. Проблем, вызванных отсутствием ФК, я не припомню. Посему и делаю вывод, что, как и наличие ФК не является панацеей от всех бед, так и отказ от них является не догмой, а разумным в данном случае компромиссом. Хм... Спасибо, что отнесли меня к "теоретикам". :) Хотя все выводы, которые я здесь пытаясь привести, из чисто практического опыта. Разумная достаточность должна присутствовать в любом случаи, но существуют моменты, где лично я не готов идти на компромис. Резюмируя. По-моему, мы уже твердо определили точку зрения каждого из нас, и думаю, что каждый из нас в любом случаи останется при своей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 12:30 |
|
||
|
|

start [/forum/topic.php?fid=29&msg=33590680&tid=1528199]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 344ms |

| 0 / 0 |
