2010-01-26 6 views
1

У меня вопрос о том, как лучше всего выполнить эту операцию: У меня есть база данных, предположим, что она имеет 4 таблицы (число таблиц может увеличиться намного выше), когда Я хочу выполнять любые операции CRUD (Insert, update, delete) для table1, table2 и table3. Я должен выполнять те же операции с таблицей 4, теперь таблица4 очень важна, поэтому я должен убедиться, что все операции являются точными и быстрыми, в конце концов это таблица будет использоваться для получения системных отчетов, поэтому мне нужно, чтобы это было быстро Теперь, какой из двух способов будет лучше:, что это лучший способ сделать эту операцию

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

. Второй способ выполняется в программном коде (asp.net и C#), когда любая операция выполняется для любой таблицы (таблица1 , table2, table3) Я делаю ту же операцию в таблице4, используя класс или любой код для этого.

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

благодаря

ответ

1

Если вы имеете в виду, что только Таблица 4 для чтения, используемого только для создания отчетов, это должно быть представление, а не таблица. Но если это должна быть таблица, делать это на уровне базы данных с помощью триггеров - это хорошо. Поскольку это быстрее, безопасно и в будущем, если какие-либо другие приложения обновляют другие таблицы, данные автоматически обновляются в таблице 4, и логика приложения не должна быть повторно реализована.

0

Мне нравится идея Teja использовать представление для таблицы4, если это работает (т. Е. Эта таблица не содержит данных, не содержащихся в таблице 1, таблице2 или таблице3).

При рассмотрении использования хранимых процедур подумайте о том, что произойдет, если что-нибудь изменится в схеме любой из таблиц. Что делать, если вам пришлось пересмотреть каждую хранимую процедуру и изменить ее? Если их много, это может принести много усилий и создать возможности для создания ошибок.

Триггеры легче изменить, чем хранимые процедуры. Но они несут стоимость исполнения. Они могут действительно замедлить ваше приложение, если у множества таблиц есть триггер для каждой операции записи.

+0

спасибо всем за ваш быстрый ответ ,,, я понимаю, что с помощью триггера является хорошим вариантом в какой-то момент, но я думал, что, если: Я создающих функцию (вставка/обновление/удаление) в tableC и эта функция может быть вызвана из любой хранимой процедуры, которая (вставка/обновление/удаление) tableA и tableB. Это позволило бы мне управлять одной функцией, если требуется изменение вместо изменения кода в каждой хранимой процедуре. Кроме того, я могу использовать транзакцию в каждой хранимой процедуре, чтобы данные были совместимы во всех таблицах. – students

+0

Мне очень нравится ваша идея. Это позволяет избежать накладных расходов на использование триггеров и сохраняет один кусок кода (в функции или хранимой процедуре, вызываемой другими хранимыми процедурами), поэтому ее легко поддерживать. И тест. Кроме того, вы можете включить данные, недоступные для триггера, если это окажется желательным. Повезло тебе! – DOK

Смежные вопросы