|
|
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Goffman Он вероятно предвидел все возможные проблемы связанные с констрейнтами. Скорее он предвидел проблемы связанные с их отсутствием. Просто дискуссия немного оторвалась от контекста аналитики и ушла в область ограничений целостности вообще. Высказывание на счёт "массированная закачка из других систем" не верно. Суть не в количестве данных, а в их качестве, т.е. опять же в соблюдении контракта программирования. Если данные по сути не требуют проверки, то и не надо тратить на это время. Если данные могут содержать критичные ошибки, то их надо проверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 21:19 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Goffman expla Goffman Если в дочерней компании поменялась бизнес-логика и ваши констрейнты в головном офисе ей уже не отвечают? Если набор констрейнтов в одной системе противоречит набору констрейнтов другой системы? Тут имеет место ошибка проектирования взаимодействующих систем. Даже если удасться впихнуть данные в БД целевой ситемы, не факт, что её приложения смогут их обработать. Если уж делать декларативные ограничения целостности, то для того, чтобы их реально использовать в runtime, а не на всякий случай. Мне думается, если системы выполняют свои задачи, то никакой ошибки проектирования нет. Конечно не факт, для того чтобы приложения смогли работать, нужно грамотно все спроектировать и разработать. Так ты определись, выполняют или нет. Если БД не принимает информацию, это проблема, но удаление ограничений целостности скорее всего её не решит (ведь создавались они не для того чтобы продемонстрировать грамотность разработчика). Если приложения не умеют работать с новыми данными, придётся и их дорабатывать. Другое дело, что аналитические приложения должны быть по возможности толерантны к такого рода изменениям в бизнесе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 21:26 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
expla, Я же привел пример противоречия, в одном из предыдущих постов, когда системы по своему хорошие, но данные в одну таблицу с ограничением на уникальность запихнуть невозможно. Тут нет никакой ошибки проектирования, это могут быть просто тонкости работы в двух разных компаниях. А от аналитики я не отрывался, с вашего позволения, я в каждом своем посте подчеркивал что отстутсвие ограничений в таблицах вполне возможно именно для этого класса задач. Вы представьте что данные стекаются из 50 филиалов (или цехов) и в каждом свои тонкости. При этом внешняя система развивается, и любое изменение какого нибудь важного констрейнта в каком нибудь филиале может легко сломать всю систему констрейнтов выстроенную в аналитике. Получается что, что филиал после изменения каких то своих бизнес-правил должен немедленно сообщать в центр, чтобы там успели перед загрузкой привести констрейнт в новое актуальное состояние. Потому что если они забудут это сделать, а руководство будет долбить "цигель цигель конец месяца", вам придется все ограничения отключать и закачивать как есть. Конечно при желании можно работать и так, но мне думается что на практике это очень неудобно. Дублирование функционала неадекватно увеличивает стоимость сопровождения системы. Гораздо проще организационными мерами заставить филиалы выдавать чистую информацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 22:08 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Goffmanexpla, Я же привел пример противоречия, в одном из предыдущих постов, когда системы по своему хорошие, но данные в одну таблицу с ограничением на уникальность запихнуть невозможно. Тут нет никакой ошибки проектирования, это могут быть просто тонкости работы в двух разных компаниях. Ну что ты всё вокруг да около. Если системы криво взаимодействуют (не важно в целом или в тонкостях), значит их криво спроектировали, в данном случае с точки зрения интеграции. Вообще, применительно ко всем системам, система долна иметь как можно более слабые предусловия и как можно более сильные постусловия. Это залог успеха построения систем без ошибок, в том числе и в плане интеграции. Навешивание ограничений целостности на БД противоречит первой части правила, но одновременно способствует выполнению второй части правила. Хорошая БД как обчно находтся гдето между двумя крайностями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 04:35 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Ладно по третьему кругу пошли, с Наступающим! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 06:00 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Goffman Дублирование функционала неадекватно увеличивает стоимость сопровождения системы. Гораздо проще организационными мерами заставить филиалы выдавать чистую информацию. Отсутствие констрейнтов может увеличить стоимость сопровождения системы в другом месте. Например, есть большая таблица - какая-то ведомость продаж, и к ней куча справочников-классификаторов - товары, контрагенты, всякие опции и т.д. По идее филиал должен согласовывать справочники с центром, и все должно быть хорошо. Но предположим, что произошла организационная ошибка - рассогласование справочников. Если в центральной БД есть соответствующие констрейнты (FK) - то имеем: ошибка обнаруживается администратором загрузки немедленно, сотрудники принимают осмысленные организационный меры к исправлению - либо временно отбрасывают плохие записи, с уведомлением заинтересованных лиц, что в отчете по продажам временно отсутствуют данные по рассогласованным позициям, и в налоговую везти их нельзя - либо временно снимают констрейнт, и получают дополнительные отчеты, четко понимая, какие из них верны срочно согласовывают справочники барышня на справочниках получает трындюлей программисты - ничего администратор загрузки - премию за своевременное обнаружение ошибки. Если в центральной БД нет соответствующих констрейнтов - то имеем: загрузка присходит успешно заинтересованные лица получают красивые отчеты по продажам, сдают в налоговую случайно обнаруживается расхождение итогов между отчетами в разрезе товаров, и в разрезе контрагентов зовут программистов, ейными отчетами им в харю тычут. после кучи суматошных проверок под бодрящие окрики начальства они находят в ведомости коды товаров, отстутствующих в справочнике, озвучивают проблему. сотрудники принимают осмысленные организационный меры к исправлению срочно согласовывают справочники начальство едет в налоговую проситься пересдавать отчеты после срока, привозит штрафы и мешок трындюлей. барышня на справочниках получае трындюлей, программисты - трындюлей, администратор загрузки - по идее ничего, на практике - трындюлей за компанию. Предвидя повторение ситуации, программисты во всех случаях, когда "По идее филиал должен согласовывать справочники с центром, и все должно быть хорошо", предвидят худшую ситуацию, и сотнями переписывают все связи во всех SQL-запросах на OUTER JOIN'ы, что усложняет систему и... (недостатки укажите сами). Именно это я подразумевал в первом предложении - отсутствие констрейнтов может увеличить стоимость сопровождения системы в другом месте. Ведь если доводить ситуацию до абсурда, то и в филиале констрейнты необязательны - они усложняют сопровождение системы в меняющихся бизнес-правилах, и гораздо проще организационными мерами заставить операторов вводить верные данные. Поставить немца с указкой, чтоб бил по рукам за "дер неправилен адресс". Но констрейнты для того и нужны, чтобы обнаруживать ошибки одних людей, и давать возможность другим людям строить запросы в убеждении, что данные подчинены определенным правилам. Вместо рассогласования справочников предположите, что филиал в своем справочнике снял констрейнт уникальности с кода товара и набил дублей - результаты запросов в центре будут еще веселее. Поэтому все-таки нужно выделить некий минимальный набор ограничений, в расчете на который строятся запросы, и поддерживать его как в филиалах, так и в центре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 12:11 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisher, хороший пример нехорошей системы! Нехорошесть заключается в основном в том, что заливка занных из филиалов идет в рабочие таблицы. Как сказал непомню кто - за это расстрел на месте. Долгими мытарствами пришел к следующей архитектуре по интеграции систем: 1) Система экспортер готовит пакет выгрузки данных. 2) Данные переливаются в интеграционные таблицы, записи которой преобретают (как минимум) два дополнительных поля: экземпляр пакета/перекачки, статус записи 3) Идентификация данных: для данных перелитых из гетерогенных источников определяются значения полей в системе-импортере, доопределяюся другие параметры, определяется корректность данных. Для этого шага иногда создаются достаточно сложные экспертные системы по определению корректных данных (если такова воля заказчика). Был даже случай, когда из 420 ошибок ввода система пропустила только 7 4) в систему-импортер, точнее в рабочие таблицы заливаются только корректные данные из экспортных таблиц. На каждом шаге, начиная со второго статусами записей определяется прохождение шагов для записей, а также корректность данных записи. Кроме этого, не перелитые данные всегда можно позже проанализировать. Данная архитектура не лишена недостатков, но большенство часто-случающихся проблем в ней нет. Возвращаясь к теме: система-импортер предназначена для аналитики, а значит функциональность системы перекачки и контроля данных ей особо не нужна, а когда начинает серьезно влиять на производительность, то ее (функциональность по контролю качества данных) нужно гнать из основной системы поганой метлой - в отдельную функциональность. Тем более, что не факт, что требования к закачиваемым данным полностью одинаковы с требованиями к данным в системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 13:15 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
KOT MATPOCKuH, я полностью согласен, что если в систему консолидации данных входит мощная подсистема экспорта-импорта, с экспертной системой по проверке даных, то подсистема аналитики может не заморачиваться проверкой данных. Но скажите мне честно, как кот коту - неужели Вы думаете, что автор вопроса имел в виду именно такую ситуацию? Я как-то не вижу намеков на это, а потому больше склоняюсь к мысли о бездумном переносе с MySQL или DBF, что достойно сожаления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 14:34 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisherнеужели Вы думаете, что автор вопроса имел в виду именно такую ситуацию?Интересно, а что автор подразумевал под этой фразой? авторИ самое главное -- все работает уже не один год. И это аргумент неопровержимый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 15:58 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherKOT MATPOCKuH, я полностью согласен, что если в систему консолидации данных входит мощная подсистема экспорта-импорта, с экспертной системой по проверке даных, то подсистема аналитики может не заморачиваться проверкой данных. Но скажите мне честно, как кот коту - неужели Вы думаете, что автор вопроса имел в виду именно такую ситуацию? Я как-то не вижу намеков на это, а потому больше склоняюсь к мысли о бездумном переносе с MySQL или DBF, что достойно сожаления. А подсистема экспорта-импорта вовсе не обязана быть супер-мега крутой. Эламентарная проверка корректности данных, например, даты или заполненность ключевых полей - проверить весьма не сложно. Простой пример: в перекачке (так ее назовем) основное - некая таблица с рабочими данными, но имеет FK (логический) на небольшой справочник. Проще в перекачку кинуть весь этот справочник (из системы-экспортера). Тогда в подсистеме экспорта-импорта нужно проверить для всех ли получаемых данных в этом справочнике в системе-импортере есть аналогичные записи. Если нет - добавить их туда с требованиями системы-импортера (например там больше полей) и для основной рабочей таблицы подправить (если нужно) идентификаторы-ссылки на обновленный справочник. А если в тупую заливать таблицы по-порядку в систему с констрейнтами, то далеко не всегда угадаешь с правильным порядком заливки таблиц и порядком заливки в них строк (вспомним свинное ухо). И особо это касается переливки данных из других систем, с другими типами полей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2008, 09:31 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
KOT MATPOCKuH А подсистема экспорта-импорта вовсе не обязана быть супер-мега крутой. Эламентарная проверка корректности данных... Крутой не крутой, но тогда она ОБЯЗАТЕЛЬНО должна реализовывать В ПОЛНОМ ОБЪЕМЕ: 1. Проверки на заполненность (NOT NULL) всех полей, для которых это необходимо. Иначе, во все запросы в сравнения придется добавлять [NOT] IS NULL, и продумать, что это будет означать. Например, если пользователь привычно нажал галочку "..и сумма не меньше 0" - то включать сюда "OR summa IS NULL" ? В общем случае не скажешь. 2. Проверки на ссылочную целостность по всем ключам. Иначе все JOIN'ы придется переделать на OUTER, и продумать, что это будет означать в отчетах. 3. Все проверки на уникальность. Иначе запросы молча начнут возвращать мусор. 4. Опциональные бизнес-правила. 5. Поддержку актуальности всех этих правил в соответствии с изменяющейся бизнес-логикой, в том числе и в удаленных филиалах. Кстати, замечаете, что пресловутая сложность сопровождения никуда не девается, просто переезжает в более подобающее для нее место? Если это есть, и если мы должны протелепатировать наличие этого между строк исходного сообщения, - то это нормальное решение. А без этого база без констрейнтов превращается, как говорили ранее, в "немножко ежика, немножко черепаху" - немножко базу данных, немножко мусорку, в которой некоторые запросы иногда могут дать немножко неправильные результаты. И дает ли это ощутимый выигрыш в производительности (за счет отсутствия проверок ссылочной целостности)? Насколько я понимаю, на скорость выполнения запроса наличие констрейнтов никак не влияет (разве что наличие неявно созданных индексов - но предполагается, что необходимые индексы проектировщик и так создаст). Констрейнты дадут ощутимые тормоза при закачке данных, вплоть до суток вместо десятков минут. Поэтому я бы склонился к компромиссному варианту - пусть данные предварительно проверяются системой импорта-экспорта, переливаются по промежуточным таблицам и т.д., но на базе аналитики все равно пусть стоят констрейнты. Перед закачкой в аналитическую базу констрейнты снять, после заливки - установить. В 99,9% случаев они установятся успешно. В 0,1 % случаев они крупно спасут чью-то задницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2008, 11:07 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherВ 0,1 % случаев они крупно спасут чью-то задницу. Не гоже разработчику спасать свою задницу таким путём. Нужно понимать, что проверки должны обеспечивать уровень целостности данных достаточный для корректной работы отчётов и прочих приложений. Но только эти отчёты и приложения, а не какие то там "бизнес-правила" определяют какие косяки в данных для них критичны. Ведь бывают же отчёты, которые выводят именно ошибки в данных. Тут говорили про outer join и прочие уловки. Но это лишь плод вашей фантазии. Вы придумали такой отчёт и теперь говорите, что его будет сложно сделать на БД с нарушеним правил ссылочной целостности. Но придумайте другие отчёты, которые будут ловко обходить или игнорировать эти нарушения и вы получите душевный покой. Типа. 31.12.2008. - Шеф, это отчёт, в котором отображаются целостные данные. - (шеф себе под нос) ухууу. Цел, цел, цел... - А вот тут отчёт с кривыми данными. - Что за кривые данные!? Вы ибу! - Мы работаем над их исправлением. - Быстранах! - Но ведь завтра Новый год! И ошибка маленькая. - Да!? (смотрит один отчёт, другой отчёт, хмурится) Ну тогда с Новым годом, господа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2008, 14:32 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
А я работал в Метрострое, там запуск одной системы (фокспрошной) начинался с проверки целостности. Индексы пересоздавались, и т.п. Чистка мусора, типа... А еще эта же процедура запускалась перед формированием отчетов. Снапшот, типа. ... Работало годами. И сейчас работает. И что хорошего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2008, 22:55 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherНасколько я понимаю, на скорость выполнения запроса наличие констрейнтов никак не влияет (разве что наличие неявно созданных индексов - но предполагается, что необходимые индексы проектировщик и так создаст). Констрейнты дадут ощутимые тормоза при закачке данных, вплоть до суток вместо десятков минут. Поэтому я бы склонился к компромиссному варианту - пусть данные предварительно проверяются системой импорта-экспорта, переливаются по промежуточным таблицам и т.д., но на базе аналитики все равно пусть стоят констрейнты. 1) В общем-то я об этом и хотел сказать. А именно: в базе аналитики пусть стоит только то, что ей необходимо для ее работы. 2) Некоторые констрейнты в некоторых случаях все-таки влияют на план выполнения запросов. В таких случаях они реально нужны. 3) (То же самое, но другими словами): БД+СУБД это компонент системы, а значит у него должен быть описанный стандартизованный интерфейс, типа такого: DML возможны только к интерфейсным таблицам (система импорта-экспорта), а запросы - к внутренним таблицам (всем?). Говорить о том, что некто когда-нибудь может воспользоваться каким-то инструментарием и мимо интерфейса осуществлять DML не считаю корректным. Это хакерство. Не пишите же Вы в коде: Код: plaintext 1. 2. Это дурь. Зачем же такие подходы плодить в БД? Описывайте интерфейсы, работайте только через них, если СУБД позволяет, то запретите использование неразрешенных входов. 4) В базе аналитики часто используют хранение денормализованных данных (например подсчитанные промежуточные итоги и др.) с целью ускорения выборок. Расчет таких данных - тоже одна из функций подсистемы импорта-эспорта 5) По поводу отключения-включения констрейнтов: строго не рекомендую такой подход. Если не хотите Новый год справлять в офисе с попыткой определить почему не включился констрент и процесс перекачки данных "встал"/"завершился с ошибкой". И еще: во многих системах некая единица информации складывается из нескольких строк в разных таблицах. Если из-за одной строки не включается констрейнт, то что это значит? Вся логическая единица не верна? А вообще вся закачка верна? Еще один важный вопрос: а как перезакачать ошибочные данные (например, подправили справочники)? Этот вариант (отключения-включения констрейнтов), скорее всего, приведет к еще большему порождению мусора, либо такие констрейнты с некоторого момента вообще включаться никогда не будут. Разгребание проблем в самой БД-аналитики задача гораздо сложнее (и опаснее - с ней же работают аналитики и могут сделать неправильные выводы), чем работа с интерфейсными данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2009, 07:57 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Goffmanэто могут быть просто тонкости работы в двух разных компаниях. Когда мне говорять "есть разные тонкости", я всегда отвечаю: - Эти "тонкости" в том, что вы используете не все возможные варианты, а только некоторые из них ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2009, 10:39 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
explaCane Cat FisherВ 0,1 % случаев они крупно спасут чью-то задницу. Не гоже разработчику спасать свою задницу таким путём. Нужно понимать, что проверки должны обеспечивать уровень целостности данных достаточный для корректной работы отчётов и прочих приложений. Но только эти отчёты и приложения, а не какие то там "бизнес-правила" определяют какие косяки в данных для них критичны. Ведь бывают же отчёты, которые выводят именно ошибки в данных. Из процитированного я понял, что Вы якобы утверждаете следующее: 1. Констрейнтов в БД ставить не нужно. 2. Каждый отчет (и прочие приложения) должны сами выполнить все проверки целостности, достаточные для их корректной работы, и обнаружить "критичные для них косяки". 3. Для этого нужно сделать ряд отчетов, которые показывали бы ошибки в данных. Подписываетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2009, 21:17 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
KOT MATPOCKuH Говорить о том, что некто когда-нибудь может воспользоваться каким-то инструментарием и мимо интерфейса осуществлять DML не считаю корректным. Это хакерство. Не пишите же Вы в коде: Код: plaintext 1. 2. Это дурь. Зачем же такие подходы плодить в БД? Хм. Как ни странно, такие подходы встречаются достаточно часто, если эти строки относятся к разным модулям большой сложной системы. Если некий модуль объявил правила обращения с собой, то проверить полученные извне параметры - святое дело. Особенно если система развивается, и возможны накладки. Но этот же подход при фанатичном подходе может превратиться в дурь, никак не оправдывающую себя, а лишь отвлекающую ресурсы. Когда именно - зависит конкретно от "величины" и "сложности" системы. Так вот, мне кажется, что большие системы консолидации данных - достаточно велики, сложны и изменчивы в своем развитии, чтобы не пожалеть лишнего слоя проверки, наряду со всеми другими, о которых здесь говорилось. KOT MATPOCKuH5) По поводу отключения-включения констрейнтов: строго не рекомендую такой подход. Если не хотите Новый год справлять в офисе с попыткой определить почему не включился констрент и процесс перекачки данных "встал"/"завершился с ошибкой". Вот этой логики я не понимаю. Получается, что констрейнты не нужны, поскольку все проверки заведомо выполнены другими модулями, и в то же время опасны, поскольку обязательно сработают под Новый год. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2009, 21:42 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
Тема плавно переросла в такую: при получении данных в систему из внешних источников необходима проверка корректности данных (в т.ч. целостности БД). Обсуждаются два крайних варианта: 1) Проверять данные констрейнтами 2) Проверять специально написанными программами Я правильно изрек? Cane Cat FisherKOT MATPOCKuH5) По поводу отключения-включения констрейнтов: строго не рекомендую такой подход. Если не хотите Новый год справлять в офисе с попыткой определить почему не включился констрент и процесс перекачки данных "встал"/"завершился с ошибкой". Вот этой логики я не понимаю. Получается, что констрейнты не нужны, поскольку все проверки заведомо выполнены другими модулями, и в то же время опасны, поскольку обязательно сработают под Новый год. Имелся ввиду первый вариант, при котором данные заливаются с отключенной проверкой корректности, а уже после заливки проводится анализ корректности - я не рекомендовал этот подход в решении 1 варианта. Как указано выше, 1 и 2 - крайние варианты, в конкретной реализации возможны смешанные варианты. Кроме того, некоторые констрейнты нужны самой системе-импортеру данных, для собственной работы. Резюмирую: а) на вопрос "нужны ли вообще в БД констрейнты?" - отвечаю НУЖНЫ, но с умом! б) Реализацию проверки корректности данных реализовать проще и качественнее кодом (ИМХО) в) Проверять данные в отчетах - не производительно и трудоемко для реализации (иногда приходится) ЗЫ Описанная мною выше технология консолидации данных кроме проверки корректности данных проверяет и разделяет сам процесс перекачки данных, ведь проблемы (теоретически) могут быть на разных участках, с сетью, например... Кроме того, когда делается снимок для перекачки в системе-экспортере нужно бывает максимально быстро его совершить и "отпустить" базу для работы пользователей. Аналогично в системе-импортере - нужно максимально быстро закачать уже проверенные, корректные данные. Отсюда и родилось такое разделение этапов процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 07:34 |
|
||
|
Отсутствие PK, FK....
|
|||
|---|---|---|---|
|
#18+
KOT MATPOCKuH Как указано выше, 1 и 2 - крайние варианты, в конкретной реализации возможны смешанные варианты. Я бы сказал - не только возможны, но и весьма желательны. Вообще, когда речь заходит о крайних вариантах "А давайте все-все сделаем только на {триггерах | процедурах | констрейнтах | XML}" - то обычно замышляют что-то недоброе. KOT MATPOCKuH Резюмирую: а) на вопрос "нужны ли вообще в БД констрейнты?" - отвечаю НУЖНЫ, но с умом! б) Реализацию проверки корректности данных реализовать проще и качественнее кодом (ИМХО) в) Проверять данные в отчетах - не производительно и трудоемко для реализации (иногда приходится) Подписываюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 09:44 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35742895&tid=1543491]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
191ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 514ms |

| 0 / 0 |
