|
|
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
Делаю небольшую базу данных, но с сложной бизнесс логикой, и следовательно ограничениями на данные (например фиксироваться документ об оплате для слушателя одного вуза может только в виде плаётжного поручения, для другого только в виде квитанции..... невозможно зарегистрировать слушателя невыставив ему счёт (исключение: форма оплаты бесплатно и взаимозачёт) и т.д.) Подскажите на каком уровне (тригеры, хранимые процедуры, клиентское приложение) лучше реализовывать эти ограничения. Сейчас я пишу тригеры, но если всё эти ограничения ещё раз проверять в хранимых процедурах (добавления, удалия данных) которые будет вызывать клиенское приложение потребуется много времени, или достаточно только тригеров и констраитов..? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 16:22 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
Не нужно фанатично использовать только одно средство. По обстоятельствам нужно. Плюс -- насколько "по-взрослому" должно быть все сделано. Например, если поле принимает только значение от 10 до 100, то можно просто на клиенте при вводе фильтровать. А если думать о будущем, то лучше еще и constraint прописать. Тогда даже обновляя таблицы вручную UPDATE'ом нельзя будет "испортить" данные. Триггерами лучше обновлять кумулятивные данные, например сумму в "шапке" документа обновлять через триггер, повешенный на "строки" документа. Сложные проверки, типа "если вася пришел на работу пьяный, но принес с собой много пива и шеф в команлдировке, то банкет продалжается.... если вася пришел трезвый с пивом, то..." конечно же делать надо в хранимках. ИМХО снаружи должны быть видны только хранимки, чтобы все выполнялось через них, а не на прямую с таблицами. Многие проверки будут дублироваться на сервере и на клиенте. Проверки на сервере будут ганатировать логическую целостность данных, проверки на клиенте будут упрощать работу пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:22 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
СержИМХО снаружи должны быть видны только хранимки, чтобы все выполнялось через них, а не на прямую с таблицами. Имеется ввиду только изменение и модификация данных? Выборку данных я хотел организовать через представления (за исключением совсем простых запросов к таблицам) , а выборку с параметрами через функции(т.е. создать параметризированое представление) P.S. спасибо за ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:45 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
Alexey123Имеется ввиду только изменение и модификация данных? Не только. Если по таблицам и столбцам можно каждому юзеру разрешить/запретить выполнять select/update, то по строкам этого не сделать. Следовательно грамотный пользователь откроет какой-нибудь query analyzer, сделает select из всей таблицы. Что дальше он будет делать с этой информацией не знаю. Может в налоговую понесет ;) Чтобы такого не происходило нужно и чтение организовать либо через view (что не всегда возможно), либо через хп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 06:20 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
А как вы относитесь к использованию табличных функций в качестве параметризированных представлений? Соит их использовать или лучше создавать просто view и уже из него делать нужную выборку (в этом случае есть возможность создать индекс) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 09:59 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
А что такое Alexey123табличных функций в качестве параметризированных представлений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 11:49 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
Alexey123А как вы относитесь к использованию табличных функций в качестве параметризированных представлений? Соит их использовать или лучше создавать просто view и уже из него делать нужную выборку (в этом случае есть возможность создать индекс) 1 в теории табличные функции (inline, не multistatement, это важно) успешно обрабатываются оптимизатором и вообще при разработке как раз и назывались параметризированные view. Функциями их назвали перед выходом 2000 сервера. 2 на практике у нас был один проект, где inline табл. функции использовались очень активно и были тормоза. Хочу подчеркнуть, что я не утверждаю, что тормоза были из-за функций, а не из-за кривизны рук, однако те же самые руки до этого сделали проект с массированным использованием view, и с производительностью все было ok. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 12:39 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
СержА что такое Alexey123табличных функций в качестве параметризированных представлений? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 12:45 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov[quot Alexey123] в теории табличные функции (inline, не multistatement, это важно) успешно обрабатываются оптимизатором А multistatement? Возможно их использовать вместо хп, служаших для возвращения данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 12:50 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
Alexey123 Alexey Kudinov[quot Alexey123] в теории табличные функции (inline, не multistatement, это важно) успешно обрабатываются оптимизатором А multistatement? Возможно их использовать вместо хп, служаших для возвращения данных? Вот и еще http://www.microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx Consider limiting use of multi-statement TVFs and table variables Multi-statement table-valued functions (TVFs) have no statistics. The optimizer must guess the size of their results. Similarly, table variables don\'t have statistics, and the optimizer must resort to guesses for their cardinality. If a bad plan results because of these guesses, consider using a standard table or temporary table as a temporary holding place for the results of the TVF, or a replacement for the table variable. This will allow the optimizer to use better cardinality estimates. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 12:59 |
|
||
|
Целостность данных
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 13:18 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=131&tid=1544969]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 352ms |

| 0 / 0 |
