Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Господа! Кто использует ОО и СКЛ в Каше, скажите.. Есть три способа указания связей (reference, relationship или foreign key), но не совсем понятно какой из них и когда следует использовать. На первый взгляд наилучшим способом выглядит relationship, но.. Отношения 1-к-1 [пока?] не поддерживаются. Обнулить ссылку в дочерних объектах при удалении получилось только в методе %OnDelete, триггер Delete ваще не запускается (что теперь, удалять через хранимые процедуры??) Вобщем, какие есть рекомендации? (К сожалению надыбать литературу пока не получается((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 21:15 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Hi! Юрий Куклачев Господа! Кто использует ОО и СКЛ в Каше, скажите.. Есть три способа указания связей (reference, relationship или foreign key), Связь - штука относительная, как и мед. Как только она есть, так ее сразу нет. В том смысле, что когда говорят о связи, подразумевают ссылочную целостность в условиях изолирования множества конкурирующих транзакций. И тут есть много нюансов ;) Юрий Куклачев но не совсем понятно какой из них и когда следует использовать. Изучить недостатки всех трех и придумать свой ;) Юрий Куклачев Отношения 1-к-1 [пока?] не поддерживаются. И это правильно. Отношения 1-к-1 - плохой стиль проектирования. Юрий Куклачев Обнулить ссылку в дочерних объектах при удалении получилось только в методе %OnDelete, триггер Delete ваще не запускается (что теперь, удалять через хранимые процедуры??) Метод %OnDelete запускается, при удалении объектным способом ##class(SomeClass).%DeleteId(567). А триггер запускается при удалении реляционным способом &sql(DELETE FROM SomeClass WHERE ID=567) или при обращении через ODBC,JDBC. Это если использовать стандартный метод хранения CacheStorage. Собственно, чтобы не дублировать код в двух местах, удобнее создать метод класса SomeDeleteId() и просто вызывать его как из триггера, так и из %OnDelete() Юрий Куклачев (К сожалению надыбать литературу пока не получается((( А ее и не надо дыбать по причине отсутствия. Надо изучить исходники системных классов, пока еще есть возможность (Интерсистемз теперь стал их старательно прятать) и разобрать те файлы *.INT, которые генерит компилятор для ваших классов. ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 03:55 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
авторИзучить недостатки всех трех и придумать свой ;)Ну спасибо ;) Это в третьем то тысячелетии будем сочинять рукоблудие для ссылочной целостности?! обычную ссылку сразу отбрасываем, как не поддерживающую целостность. остатеся relationship и foreign key. авторА триггер запускается при удалении реляционным способом &sql(DELETE FROM SomeClass WHERE ID=567) угу! в том то и дело, что если отношение ONE-MANY, а удаление типа DELETE FROM OneSideClass WHERE Name %STARTSWITH "A", то что-то происходит не совсем понятное((( С другой стороны, если использовать foreign key, то все отрабатывает вроде корректно как при удалении через ОО, так и через СКЛ по условию. авторСобственно, чтобы не дублировать код в двух местах, удобнее создать метод класса SomeDeleteId() и просто вызывать его как из триггера, так и из %OnDelete()Да, уже знаком с такой методой. Будем надеятся когда-нибудь обработчики будут автоматом сопоставлены триггерам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 16:58 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Юрий КуклачевБудем надеятся когда-нибудь обработчики будут автоматом сопоставлены триггерам. Чтобы вызвать объектный обработчик нужно поднять объект с диска в память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 17:05 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
ну яЧтобы вызвать объектный обработчик нужно поднять объект с диска в память.даже classmethod?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 17:11 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Юрий, Мне кажется перед обсуждением этой темы в форуме, стоит посмотреть документацию. Вы установили Cache', соответственно, установилась и документация. Есть документация и в Интернете. Если Вас интересуют объекты, почитайте Using Caché Objects . Если хочется почитать на русском, то есть материалы на нашем сайте: http://www.intersystems.ru/cache/education/docs.htmlhttp://www.intersystems.ru/cache/education/docs.html%5B/url] Обратите внимание на ObjectQS . Есть там и учебное пособие про объекты. Есть у InterSystems и курсы по разработке на Cache'. На курсах вы можете узнать все об объектах. Надеюсь, Вы используете какую-то новую версию - Cache' 5.2. или Cache' 2007.1. Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 17:24 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Вадим, все это уже прочитано. When an object is deleted and there are objects related to it, the related objects are deleted (parent/child cardinality) or the delete operation fails (one/many cardinality).или связанные объекты удаляются вместе с родителем или родитель вообще не удаляется и выдает ошибку. третьего не дано((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 17:47 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Чаще используются отношения One-to-Many. В этом случае классы хранятся независимо. При этом поддерживается ссылочная целостность. Если компания связана с сотрудниками отношением one-to-many нельзя удалить компанию, пока у нее есть сотрудники. Отношения проецируется в SQL . Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 19:58 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Ну разумеется! А если все-таки надо удалять сотрудников при удалении компании или ставить им пустое (или по-умолчанию) значение в свойство "Компания"? Можно вписать нужный код в %OnDelete и в триггер перед удалением или даже запускать один и тот же статический метод из них обоих, как многие делают, но.. 1) Триггер не срабатывает при удалении по условию типа WHERE Name LIKE '%Вася%' 2) Если вместо отношения использовать внешний ключ, можно обойтись без триггеров и методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 20:43 |
|
||
|
reference, relationship или foreign key?
|
|||
|---|---|---|---|
|
#18+
Hi! аТЙК лХЛМБЮЕЧ оХ УРБУЙВП ;) ьФП Ч ФТЕФШЕН ФП ФЩУСЮЕМЕФЙЙ ВХДЕН УПЮЙОСФШ ТХЛПВМХДЙЕ ДМС УУЩМПЮОПК ГЕМПУФОПУФЙ?! ПВЩЮОХА УУЩМЛХ УТБЪХ ПФВТБУЩЧБЕН, ЛБЛ ОЕ РПДДЕТЦЙЧБАЭХА ГЕМПУФОПУФШ. ПУФБФЕУС relationship Й foreign key. чУЕЗДБ РПЦБМХКУФБ ;) чЩ ХЦЕ ЧЩСУОЙМЙ, ЮФП ПВЩЮОБС УУЩМЛБ ГЕМПУФОПУФШ ОЕ ПВЕУРЕЮЙЧБЕФ. хЦЕ ОЕРМПИП ДМС ОБЮБМБ. еУМЙ ВЩ чЩ ЛПРОХМЙ ЗМХВЦЕ Ч *.INT ЛПД Й Ч РПФТПИБ УЙУФЕНОЩИ ЛМБУУПЧ, ЛБЛ С УПЧЕФПЧБМ, ФП чЩ ВЩ ЧЩСУОЙМЙ, ЮФП ГЕМПУФОПУФШ ОЕ ПВЕУРЕЮЙЧБЕФ ОЙ ПДЙО ЙЪ ФТЕИ УРПУПВПЧ ХЛБЪБОЙС УЧСЪЙ, УХЭЕУФЧХАЭЙИ Ч Cache. пОБ ОЙЛПЗДБ ОЕ РПДДЕТЦЙЧБМБ, ОЕ РПДДЕТЦЙЧБЕФ Й ОЕ ВХДЕФ РПДДЕТЦЙЧБФШ ГЕМПУФОПУФШ ДБООЩИ. оЕ ДПДЕМБЧ ухвд, йОФЕТУЙУФЕНЪ ЧУЕ УЙМЩ ВТПУЙМ ОБ ЧЕВ-ФЕИОПМПЗЙЙ. оХЦОП РТПУФП ХЮЙФЩЧБФШ ЬФПФ ОАБОУ Ч УЧПЕК ТБВПФЕ. тБУУЮЙФЩЧБФШ НПЦОП ФПМШЛП ОБ ЗПМЩК н-ДЧЙЦПЛ. пО ТБВПФБЕФ УФБВЙМШОП Й ДПЛХНЕОФБГЙС РП ОЕНХ ЕУФШ. б ЛМБУУЩ, ПВЯЕЛФЩ, SQL - ЫЕМХИБ. йНЕООП РП ЬФПНХ С УПЧЕФПЧБМ УПЮЙОЙФШ УПВУФЧЕООПЕ ТХЛПВМХДЙЕ ДМС УУЩМПЮОПК ГЕМПУФОПУФЙ. ьФП ОБДЕЦОЕЕ Й УФБВЙМШОЕЕ Ч ХУМПЧЙСИ ПФУХФУФЧЙС ЮЕФЛПК ДПЛХНЕОФБГЙЙ ОБ РТПДХЛФ. ____________________________ у ХЧБЦЕОЙЕН, мЙУЕЕЧ дНЙФТЙК. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 23:13 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=34327882&tid=1559409]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 348ms |

| 0 / 0 |
