|
|
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
При EAV модели, данные от разных объектов хранятся в одной таблице. Триггеры по определению не должны производить те же изменения на ту же таблицу, а это необходимо для организации логики. Как вывернуться? Есть какойто общий подход, чтобы избежать зацикливаний? В Postgresql есть правила (rule), но в них нет переменных которые предоставляет триггер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 18:15 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Алексей Ключников Как вывернуться? Есть какой то общий подход, чтобы избежать зацикливаний? Зависит от БД. В MSSQL, например, есть INSTEAD OF триггеры. Можно, например, нужные срезы базовой таблицы создать в виде view и действия производить с view на которые навешаны INSTEAD OF - триггеры делающие изменения в базовой таблице. Вобщем же случае рекомендации такие - не использовать триггеры ни в EAV модели, ни в "нормальной" реляционной, а использовать хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 21:45 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Роман ДынникВобщем же случае рекомендации такие - не использовать триггеры ни в EAV модели, ни в "нормальной" реляционной, а использовать хранимые процедуры.IMHO, спорная рекомендация, особенно в общем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 23:32 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Роман ДынникВобщем же случае рекомендации такие - не использовать триггеры ни в EAV модели, ни в "нормальной" реляционной, а использовать хранимые процедуры. В принципе да - использовать триггеры только в крайнем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2006, 11:45 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Используются хранимые процедуры, только кто их будет запускать если не триггер. С представлением и триггером instead off на нем, понятно, спасибо за идею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2006, 12:24 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
мод Роман ДынникВобщем же случае рекомендации такие - не использовать триггеры ни в EAV модели, ни в "нормальной" реляционной, а использовать хранимые процедуры. В принципе да - использовать триггеры только в крайнем случае. что "да"? вы все еще не можете обойтись без хранимых процедур? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2006, 12:37 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
* вы все еще не можете обойтись без хранимых процедур? А зачем без них обходится ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2006, 13:15 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
модА зачем без них обходится ? надо. это рекомендация. так делают все реальные пацаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2006, 13:22 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
мод Роман ДынникВобщем же случае рекомендации такие - не использовать триггеры ни в EAV модели, ни в "нормальной" реляционной, а использовать хранимые процедуры. В принципе да - использовать триггеры только в крайнем случае. +1 триггеры - прошлое тысячилетие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 10:43 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Petro123 мод Роман ДынникВобщем же случае рекомендации такие - не использовать триггеры ни в EAV модели, ни в "нормальной" реляционной, а использовать хранимые процедуры. В принципе да - использовать триггеры только в крайнем случае. +1 триггеры - прошлое тысячилетие :) А что же делать? Событийный подход хотелось реализовать.. Апликейшн сервер делать? А проблема в том, что надо хранить два типа сущьностей. 1. Объекты 2. Связи между объектами. Первое хорошо решается моделью EAV. Второе тоже EAV или как угодно ибо важно быстродействие. А проблема в том что каждая связь несет с собой действие (метод или если конкретно то соответствующую ХП). Активизировать эту ХП может только триггер! Если триггеры прошлый век, то весь подход не верный? Второй вариант, данные в объекты передавать посредством соответствующих ХП. И уже в самих ХП определять все последующие действия согласно связям между объектами. Какие плюсы минусы у этих подходов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 11:06 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Petro123 триггеры - прошлое тысячилетие И давно??? З.Ы Ссылку не кинете почитать...для просветления? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 11:15 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Алексей КлючниковА что же делать? Событийный подход хотелось реализовать.. Если источник событий клиент - то обработка этих событий процедурами. Если источник событий сама БД - то обработка этих событий триггерами. Алексей КлючниковА проблема в том что каждая связь несет с собой действие Непонятно что, кто и куда несет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 11:22 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
мод Алексей КлючниковА проблема в том что каждая связь несет с собой действие Непонятно что, кто и куда несет. хм. есть связи информационные, которые ничего никуда не несут, а используются только для работы третьесторонных функций. А есть изменяющие связи, такие подразумевают наличие ХП при активизации связи. такая связь активизируется при изменении данных одного из связываемых объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 11:39 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Алексей Ключников мод Алексей КлючниковА проблема в том что каждая связь несет с собой действие Непонятно что, кто и куда несет. хм. есть связи информационные, которые ничего никуда не несут, а используются только для работы третьесторонных функций. А есть изменяющие связи, такие подразумевают наличие ХП при активизации связи. такая связь активизируется при изменении данных одного из связываемых объектов. IMHO EAV мало где применяется. Очень часто вместо EAV делают усечённый EAV, а остальную объектность и логику несут ХП - серверПриложений или клиент. Вы уверены что Ваша задача именно для EAV? Путано всё. авторПри EAV модели, данные от разных объектов хранятся в одной таблице. Триггеры по определению не должны производить те же изменения на ту же таблицу, а это необходимо для организации логики. Привели бы структуру БД и задчу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 12:20 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Алексей Ключников такая связь активизируется при изменении данных одного из связываемых объектов. Ну вот вам и первичное событие - его и надо обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 12:52 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Алексей КлючниковТриггеры по определению не должны производить те же изменения на ту же таблицу А почему собственно ? Да еще и так жестко: "изменения". Update одной колонки это тоже "изменение" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 13:36 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
мод Алексей Ключников такая связь активизируется при изменении данных одного из связываемых объектов. Ну вот вам и первичное событие - его и надо обрабатывать. Угу, только вот в таблице 1000 объектов, на них наложено 2000 связей, 100 разных типов связей. Т.е. на измнение данных в одном из обьектов отрабатывает тригер, запускающий ХП, которая выясняет все взаимосвязи этого обекта и запускает соответствующие ХП (что то типа коллектора получается). ХП в свою очередь производят уже следующую волну изменени в ту же таблицу. Все это взято с потолка потому что не реализовано и не протестировано, но уже видно что поддержка целостности (в смысле обеспечение отсутствия зацикливаний), задача не тривиальная. Или тривиальная? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 16:31 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Алексей Ключников100 разных типов связей. Например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 16:39 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
что за мега система с 1000 объектов ООП в РСУБД? А клиент - просто тупой браузер? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 16:44 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
007. Алексей Ключников100 разных типов связей. Например? 1. переложить данное обекта 5 параметра 10 в обект 7 параметр 11 2. добавить данное обекта 5 параметра 10 к данному в обекте 7 параметр 11 3. если данное обекта 5 параметра 1 = 4, обнулить парметры 30,25,35 у объекта 6 4. объект 1 подключен к обекту 2 (как пример информационной связи) И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 16:44 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Petro123что за мега система с 1000 объектов ООП в РСУБД? А клиент - просто тупой браузер? Да, просто тупой браузер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 16:47 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Алексей Ключников 007. Алексей Ключников100 разных типов связей. Например? 1. переложить данное обекта 5 параметра 10 в обект 7 параметр 11 2. добавить данное обекта 5 параметра 10 к данному в обекте 7 параметр 11 3. если данное обекта 5 параметра 1 = 4, обнулить парметры 30,25,35 у объекта 6 4. объект 1 подключен к обекту 2 (как пример информационной связи) И т.д. это не связи, а бизнес-процедуры и должны лежать в ХП: Напр.: - В ослике КонтекстноеМеню - "ОбъеденитьОбъекты" - В ХП с именем ОбъеденитьОбъекты(id1, id2, ....) Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 17:07 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
ещё лучше если вы ЭТО назовёте бизне-логикой в виде методов объектов-классов. Т.к. в РСУБД нет такого, то: - написать на Net в MS SQL Server - написать в сервере приложений. - взять готовые маппинг-трансформаторы (тут проскакивало) ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 17:11 |
|
||
|
Использование триггеров в EAV
|
|||
|---|---|---|---|
|
#18+
Petro123ещё лучше если вы ЭТО назовёте бизне-логикой в виде методов объектов-классов. Т.к. в РСУБД нет такого, то: - написать на Net в MS SQL Server - написать в сервере приложений. - взять готовые маппинг-трансформаторы (тут проскакивало) Это все не бизнес логика. и тут нет присутствия MS. маппинг-трансформаторы вроде как происходит попытка изобрести свой маппинг-трансформаторы, со своей спецификой. Связь подразумевает ХП, или ХП подразумевает связь, от перемены мест слагаемых, в данном случае, ничего не меняется. Ускользает только смысл отличия свяи от объекта, получаются некие перекрывающие друг друга объекты. Перекрывающие друг друга объекты -- звучит.. слабо предложить структуру под это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 17:20 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34158476&tid=1544867]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 521ms |

| 0 / 0 |
