05.12.2012, 23:30 | #1 |
Участник
|
Surrogate foreign keys в InventDim
Что думаете, есть в этом смысл или нет?
Новую аналитику думаю добавить так. |
|
06.12.2012, 08:55 | #2 |
Участник
|
Технически реализуемо. Но только ради чего? Расскажите.
У вас новая аналитика является составной? Тогда такой шаг может быть оправдан. Только нужно понимать что это будет пусть сложная но единая аналитика. Т.е. в настройках групп аналитик нельзя будет назначить разные свойства на отдельные части этой составной аналитики. Какая версия системы? В AX2009 я бы всё таки использовал "псевдоестественный" ключ - автоматически генерируемый номерной серией. В AX2012 уже можно, пользуясь встроенной поддержкой разименовывания, делать связь по RecId. |
|
06.12.2012, 12:29 | #3 |
Участник
|
Если под термином "суррогатный ключ" подразумевается некий внтуренний идентификатор записи, который не видит пользователь (например, RefRecId), то до версии Ax2012 - это нарушение BestPrictices
Если же этот самый "суррогатный ключ" будет видеть пользователь, то это ничем не отличается от того, что есть сейчас. Ведь и так, например, "Склад" в складской аналитике - это foreign Keys на запись справочника складов.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
06.12.2012, 12:37 | #4 |
Участник
|
"Склад" в складской аналитике - это foreign Keys на запись справочника складов - Согласен, но это никак не делает его суррогатным. Идентификатор склада вполне естественный код.
|
|
06.12.2012, 13:01 | #5 |
Участник
|
Термины "суррогатный" и "естесственный" ключи - не есть термины теории реляционных баз данных. Это значит, что каждый вкладывает в это понятие некий свой собственный, "сокровенный" смысл. Лично я для себя даю такое определение
Суррогатный ключ - это идентификатор записи, сформированный внутри приложения и никак, никоим образом, не (!) зависящий от "внешнего мира". Естесственный ключ - это идентификатор записи, пришедший из вне приложения и зависящий (!) от "внешнего мира". Т.е. если значение ключа поменялось во вне приложения, то его надо будет изменить и внутри приложения. Т.е. для меня "суррогатный" отличается от "естесственного" только фактом зависимости его значения от "внешнего мира". И на этом все. Никакие другие характеристики не имеют никакого отношения к его "суррогатности" или "естественности". В том числе и способ формирования. Какая разница как именно он был сформирован? Из номерной серии или введен руками. Например, ИНН (номер паспорта, ГТД, код города) - это номерная серия или руками вводился? А если по умолчанию код записи справочника формируется из номерной серрии, но Вы можете его изменить в момент создания записи - код перестает быть суррогатным? Т.е. часть записей таблицы имеет суррогатный ключ, а часть естесственный?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
06.12.2012, 13:01 | #6 |
Участник
|
Я бы не стал этого делать.
Я не пробовал, но скорее всего придется дописывать кастомный код везде, для обработки суррогатных ключей, плюс нет гарантии что оно отобразится нормально (reference group control) на формах. Должно, но, опять же, я не пробовал. Тем более что ничего особо "плохого" в текущем подходе с использованием строковых значений нет. |
|
06.12.2012, 13:09 | #7 |
Участник
|
В АХ 2012 термин суррогатный ключ - это ключ основанный на RecId
Естественный ключ - строковой ключ, который может быть прочитан (и понят) человеком. Номерные серии я бы отнес к суррогатным, но я не помню, чтобы это кто-либо делал в процессе разработки АХ 2012 |
|
06.12.2012, 13:59 | #8 |
Участник
|
AX2012 конечно, Surrogate key - это RecId. Для новых таблиц в AX2012 он по умолчанию является Primary key. Но в AX2012 сделали так, что его значение может разыменовываться в Natural Key и вместо int64 отображается именно значение Natural Key
|
|
06.12.2012, 14:01 | #9 |
Участник
|
Цитата:
Сообщение от kashperuk
Я бы не стал этого делать.
Я не пробовал, но скорее всего придется дописывать кастомный код везде, для обработки суррогатных ключей, плюс нет гарантии что оно отобразится нормально (reference group control) на формах. Должно, но, опять же, я не пробовал. Тем более что ничего особо "плохого" в текущем подходе с использованием строковых значений нет. Дописывать наверное нужно будет код, который к контролам аналитики напрямую обращался, чтобы была поддержка ReferenceGroup. Больше на вскидку ничего не могу припомнить, может я что-то упускаю, что реально бы затруднило? Последний раз редактировалось lvan; 06.12.2012 в 14:11. |
|
06.12.2012, 15:07 | #10 |
Участник
|
Я не в курсе, в Ax2012 остался функционал по динамической настройке того, какие именно поля из складской аналитики отображать в строках документов и отчетах? Имею в виду, например, в строках заказа в Ax2009 кнопка "Запасы" \ Отображать аналитики. Классы-наследники от InventDimCtrl. Или именно это и реализовано через ReferenceGroup?
Ссылка через суррогатный ключ ведь будет отображать собственно значение суррогатного ключа. Или там более хитрый функционал?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
06.12.2012, 15:09 | #11 |
Ищущий знания...
|
это в AX2012 осталось.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
06.12.2012, 15:15 | #12 |
Участник
|
Владимир Максимов, вы видимо не в курсе изменений в AX2012
Рекомендую ознакомиться, это обсуждалось полтора года назад axdaily: Surrogate keys in AX 2012 |
|
06.12.2012, 15:30 | #13 |
Участник
|
Цитата:
Сообщение от lvan
Владимир Максимов, вы видимо не в курсе изменений в AX2012
Рекомендую ознакомиться, это обсуждалось полтора года назад axdaily: Surrogate keys in AX 2012 ================== Вот теперь дошло. Т.е. кроме замены ссылок на RecId придется перелопатить кучу форм и отчетов и заменить поля типа String на поля типа ReferenceGroup. Мда... Работенка еще та предстоит... Только вот по прежнему не понятно, фильтрация по полям типа ReferenceGroup возможна или они как дисплейные методы - только отображают, но не дают фильтровать?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 06.12.2012 в 16:00. |
|
07.12.2012, 03:15 | #14 |
Участник
|
В том то и дело, что ReferenceGroup автоматически создается (в случае автоматической группы полей - а аналитика в подавляющем большинстве случаев именно через группу полей отображается)
Т.е. вручную вроде ничего не надо менять. По крайней мере с формами так, про отчеты не знаю Последний раз редактировалось lvan; 07.12.2012 в 03:17. |
|
07.12.2012, 05:55 | #15 |
Участник
|
Готовьтесь что отчеты придется все переписывать(добавлять туда новую аналитику). никаких групп полей как в 2009 теперь нет. по крайней мере так было в 2012CU2. не знаю изменили ли они движок вывода аналитик в R2
|
|
|
|