|
|
|
Триггер или многотабличное ограничение?
|
|||
|---|---|---|---|
|
#18+
Предисловие. Данная задача уже решена мною в Аксессе, с использованием VBA. Но, сами понимаете, со временем скорость работы приложения, разработанного в Аксессе падает, по мере увеличения базы и количества юзеров, коннектящихся к ней. Уточняю - изначально я сделал не ADP-проект, а простое клиент-серверное приложение (на локальных компах установлен mdb-файл клиент, а на серваке, в общей папке лежит mdb-файл с таблами, к которому все и коннектятся). Сами видите - вариант приложения наихудший но тем не менее прошу строго не судить - это первое приложение, относительно серьезное, которое я написал... Создать из имеющейся базы ADP-проект не вариант, т.к. в коде я везде использовал модель DAO, а MS SQL Server ее не приемлет. Ему нужна ADO. Т.о. Проще написать новую прогу. Чем я сейчас и занимаюсь. Так как возможности MS SQL Server намного выше возможностей Аксесса - хочу их использовать по максимуму. В первую очередь - все проверки данных должен проверять сам MS SQL Server, а не написанный мною программный код, следовательно создаю все необходимые чеки, триггеры и... assertion (о нем речь далее). Эскиз ситуации. Тематика: Строительство Общая информация. Для того, чтобы посчитать стоимость строительства объекта, составляется смета . Смета, в свою очередь, состоит из разделов (т.е. общестроительные работы, монтажные работы, сантехнические работы и т.п.). Каждый раздел содержит в себе конкретный набор работ. И наконец - работа содержит в себе определенный набор строительных материалов , которые нужно заказать и купить, дабы их можно было вовлечь в производство. Далее идет интересный момент: Для того, чтобы заказать материал, нужно создать заявку (на материалы). Заявка должна содержать позиции материалов (взятых из сметы - т.е. заказать можно только те наименования материалов, которые присутствуют в смете) но это, понятное дело, еще не все. Заказать материал можно не более остатка, (разницы количества данного материала в составе сметы и количества уже проведенного др. заявками). Т.о. необходимо осуществить такую проверку. *********************************************** Вижу 2 варианта организации этой проверки: 1. Самый простой - триггеры 2. Теоретически более быстрый (т.к. check (во всяком случае табличный) работает быстрее триггера) - многотабличное ограничение (CREATE ASSERTION ...) Выкладываю принтскрин схемы (фрагмент) и исходники таблов (дабы видны были ограничения таблов). Заодно показываю "стадию" на которой я пока что запнулся на процессе написания многотабличного ограничения... А вопрос сейчас такой: Являются ли многотабличные ограничения так же более быстрые как и обычные check, или же не стоит заморачиваться - писать триггер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 15:36 |
|
||
|
Триггер или многотабличное ограничение?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 15:36 |
|
||
|
Триггер или многотабличное ограничение?
|
|||
|---|---|---|---|
|
#18+
CREATE ASSERTION - это в какой субд вы почерпнули? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 15:39 |
|
||
|
Триггер или многотабличное ограничение?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 15:40 |
|
||
|
Триггер или многотабличное ограничение?
|
|||
|---|---|---|---|
|
#18+
набросок межтабличного чека (пока не доведенный до ума...): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 15:42 |
|
||
|
Триггер или многотабличное ограничение?
|
|||
|---|---|---|---|
|
#18+
iSestrinCREATE ASSERTION - это в какой субд вы почерпнули? SQL-92 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 15:42 |
|
||
|
Триггер или многотабличное ограничение?
|
|||
|---|---|---|---|
|
#18+
Вы уж простите, Compositum, но написано коряво до безобразия. Ощущение, что это курсовая работа из разряда "сдать и забыть". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 17:19 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35020822&tid=1544124]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 418ms |

| 0 / 0 |
