|
![]() |
#1 |
Участник
|
Судя по описанию не делается.
Т.е. в табличке UnitOfMeasureConversion содержится как поле с суррогатным ключом (refRecId) так и поле с ItemID. Поля работают в паре. Для отображения юзеру используется ItemId. Для поиска джоинов, основного индексирования используется суррогат refrecId. При этом ядро само отображает вместо refrecId - соответствующий ему ItemID (ради это группа контролов заводится) но без подзапросов и джоинов к родительской табличке. (Я при этом не понял если задать из кода refrecID, то ItemId ядро автоматом подтянет или нет ? Если автоматом. то вообще красавцы ![]() По-моему очень разумный компромисс между требованиями обеспечения производительности и удобством отображения для пользователя. Самое интересное что несколько лет назад что-то подобное придумал когда решал проблемы производительности на проекте, но быстро отказался от изменений, так как было очевидно что нужны изменения в ядре, а на X++ слишком громоздкая и неудобная реализация была бы. Поразительно как мысли сходятся. |
|
![]() |
#2 |
Участник
|
А можно цитату?
Я что-то очень сомневаюсь в том что происходит повсеместное дублирование данных ради исключения джойна. А как вы себе это представляете для случая, когда естественный ключ будет составным (это в примере индекс Symbolidx содержит одно поле, но на сколько я понимаю, ReplacementKey может быть и составным)? |
|
![]() |
#3 |
Участник
|
Цитата:
тем более, что возможно разыменование в несколько полей см. mfp: Microsoft Dynamics AX Technical Conference Recordings |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
![]() |
#4 |
Участник
|
Цитата:
Then on any form where ItemId should be displayed (let’s say on the SalesTable) an extra join to InventTable will be needed to fetch the ItemId. And what if user can change the item? Then even more custom logic is needed to resolve the entered ItemId to the corresponding surrogate key value and write it to the SalesLine.
This inconvenience actually was a showstopper. But not anymore. AX 2012 got kernel support for surrogate key substitution. And not only in forms, but in Axd document services and even in the debugger. Интересно, что именно имеется в виду под поддржкой сурогатных ключей дебагером. Наверное сделали возможность провалится по recId к соответствующей строке подчинённой таблицы |
|
![]() |
#5 |
Участник
|
Цитата:
раз поддерживается ядром - разработчики системного слоя и локализаторы конечно же этим воспользуются. при проектировании будет заложено наличие такого функционала. это значит "лишние join" будут встречаться очень часто. а раз заложено при проектировании, то и избавиться от лишних Join будет чертовски сложно. ================ достаточно посмотреть в одну из уже существующих СОП (систем отечественного производства) |
|
![]() |
#6 |
Участник
|
Цитата:
|
|
![]() |
#7 |
Участник
|
Цитата:
Я чо-то сомневаюсь что там внесли серьезные изменения без тестирования на больших объемах данных. Может мы просто привыкли по старинке работать и не видим плюсов от нового подхода. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#8 |
Участник
|
Цитата:
Сообщение от S.Kuskov
![]() А можно цитату?
Я что-то очень сомневаюсь в том что происходит повсеместное дублирование данных ради исключения джойна. ... А как вы себе это представляете для случая, когда естественный ключ будет составным (это в примере индекс Symbolidx содержит одно поле, но на сколько я понимаю, ReplacementKey может быть и составным)? ![]() |
|
Теги |
ax2012, eav, полезное, суррогатный ключ, что нового |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|