AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Прочие вопросы
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2005, 15:26   #1  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Code&ID
С чем связанно что в аксапте принято ссылаться по коду а не ID записи?
Старый 17.10.2005, 15:37   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
ID записи может и поменяться, допустим, при экспорте-импорте справочника. И вообще, ссылаться на служебную переменную, идентифицирующую запись - это ОЧЕНЬ ПЛОХОЙ ТОН!
В Аксе есть места, где есть связка по RecId, многие от этого страдают. Не делайте так.

С Уважением,
Георгий
Старый 17.10.2005, 15:44   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Посмотрите на EDT и его узел Relations - с помощью этого механизма обеспечивается логическая связь м-ду таблицами (а так же Relations на самих таблицах)
__________________
Axapta v.3.0 sp5 kr2
Старый 17.10.2005, 15:52   #4  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Я не правильно сформулировал вопрос. Я хотел узнать почему вообще разработчики Аксапты решили делать ссылки по коду а не например по автоинкрементному ID или что нибудь в этом стиле. Я понимаю что это вопрос больше к разработчикам но все же
Старый 17.10.2005, 16:15   #5  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от vavkin
Я не правильно сформулировал вопрос. Я хотел узнать почему вообще разработчики Аксапты решили делать ссылки по коду а не например по автоинкрементному ID или что нибудь в этом стиле. Я понимаю что это вопрос больше к разработчикам но все же
Хм. А при переносе данных Вы сможете таким механизмом гарантировать целостность данных? Если да, то Вам впору писать собственную ERP
Кстати, этот вопрос очень часть встречается от людей, которые приходят на Axapta с 1С. 1С ники из-за ссылочных таблиц, кроме всего прочего, хлебнули и с производительностью

С Уважением,
Георгий
Старый 17.10.2005, 16:33   #6  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Цитата:
Сообщение от George Nordic
Хм. А при переносе данных Вы сможете таким механизмом гарантировать целостность данных?
Если имеется ввиду полный перенос то да, при переносе не обязательно сразу пользоваться autoincrement, можно вначале просто копировать данные а потом включить уже включить autoincrement. Если имеется ввиду объединение баз то int могут совпасть ровно с таким же успехом как и Code. И у Code здесь нет преимуществ.
И вообще почему бы не использовать uniqueidentifier (GUID)
Старый 17.10.2005, 16:44   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от vavkin
Если имеется ввиду объединение баз то int могут совпасть ровно с таким же успехом как и Code. И у Code здесь нет преимуществ.
И вообще почему бы не использовать uniqueidentifier (GUID)
Вам же сказали:
-Упрощение сопровождения
-Уменьшение размера БД
-Увеличение скорости выборки данных
-Увеличение скорости обновления данных
-В системе с ЕК меньше JOIN`ов, следовательно, запросы проще и разработка удобнее
-Введение СК нарушает третью нормальную форму
-Таблицы в системе с ЕК информативнее

Если есть контрпримереры - давай поспорим. Действительно, есть спорные моменты.
Ведь, как я понимаю, это чисто теоритический спор? Или Вы планируете использоватть GUIN в качестве ключа при разработке собственных таблиц?
Лично мне нравится в виде ключа видеть "МИ-АКС-НОГ(40) 100х20", чем 123579 или 1657-AB10-C548F-4564-BD20

С Уважением,
Георгий.
Старый 17.10.2005, 17:28   #8  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Цитата:
Сообщение от George Nordic
-Упрощение сопровождения
-Уменьшение размера БД
-Увеличение скорости выборки данных
-Увеличение скорости обновления данных
-В системе с ЕК меньше JOIN`ов, следовательно, запросы проще и разработка удобнее
-Введение СК нарушает третью нормальную форму
-Таблицы в системе с ЕК информативнее

Если есть контрпримереры - давай поспорим. Действительно, есть спорные моменты.
Ведь, как я понимаю, это чисто теоритический спор? Или Вы планируете использоватть GUIN в качестве ключа при разработке собственных таблиц?
Лично мне нравится в виде ключа видеть "МИ-АКС-НОГ(40) 100х20", чем 123579 или 1657-AB10-C548F-4564-BD20
Это не теоретический спор. Практический, и для меня даже очень.
Теперь по пунктам.
"Упрощение сопровождения" - не вижу никаких преимуществ одного перед другим.
"Уменьшение размера БД" - за счет чего она уменьшится? если использовать int то при code размер будет больше, если GUID который 16 символов то тоже меньше чем если Code который 20, я могу ошибиться в кол-ве символов, да на самом деле не так уж это важно, будет на 2 % больше размер или меньше. У этого пункта нет преимуществ, точнее по этому пункту Code проигрывает
"Увеличение скорости выборки данных" за счет чего? При выводе связанной информации int по крайней мере не медленнее чем Code и я сильно сомневаюсь что GUID медленне чем Code. По этому пункту Code выигрывает только в том случае если он сам по себе достаточен и не нужен join, как только появляется связь (а она появится) то Code не выигрвает а скорее проигрывает.
"Увеличение скорости обновления данных" честно говоря вообще не понятно за счет чего, можно поподробнее?
"В системе с ЕК меньше JOIN`ов, следовательно, запросы проще и разработка удобнее" проще только разработка форм и то в том случае когда опять же коды самодостаточны. При разработке модификации как таковой вообще не вижу преимуществ у Code, ведь значения кодов не сипользуются в тексте модификации и значит мне как программеру все равно что там в нем ID или Code. В системе с ЕК меньше join'ов только при выводе формы, в отчетах все равно надо связываться со связынными таблицами.
"Введение СК нарушает третью нормальную форму" каким образом?
"Таблицы в системе с ЕК информативнее" они информативнее только в том случае если их смотреть через Enterprise manager, но как правило их смотрят через систему и система могла бы сама выполнить автоматически join и тогда пользователю становится все равно как хранятся данные внутри.
"Или Вы планируете использоватть GUIN в качестве ключа при разработке собственных таблиц?" По крайней мере вижу причин не использовать их
"Лично мне нравится в виде ключа видеть "МИ-АКС-НОГ(40) 100х20", чем 123579 или 1657-AB10-C548F-4564-BD20" это относится к информативности и я уже высказался выше.
Старый 17.10.2005, 15:56   #9  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
В Axapta'е используется концепция естественных ключей, т.е. по самому ключу можно определить характер записи. По-этому и применяются символьные поля в качестве ключевых
__________________
Axapta v.3.0 sp5 kr2
Старый 17.10.2005, 16:19   #10  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Цитата:
Сообщение от AndyD
В Axapta'е используется концепция естественных ключей, т.е. по самому ключу можно определить характер записи. По-этому и применяются символьные поля в качестве ключевых
Не совсем понял что имеется ввиду под словом "характер записи", что это за поле клиент или договор видно из названия поля, а информацию о записи (номер, фамилию) ERP система могла бы получить join'ом или вложенным запросом
Старый 17.10.2005, 16:33   #11  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,254 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от vavkin
ERP система могла бы получить join'ом или вложенным запросом
Пример: Форма Заказ, в ней указаны Клиент, Счет На, Валюта, Аналитика и еще десяток параметров. Все они допускают фильтрацию, сортировку и т.д. Представляете, во что превратится эта задача, если для получения этих значений будет использоваться join? Кроме того, усложняется механизм добавления записей/редактирования.
Для эксперимента попробуйте добавить хотя бы одно подобное поле. Засеките время которое потратите. Сравните быстродействие ;-)
Цитата:
Сообщение от vavkin
Превратиться в сложный процесс в плане написания модификации или в плане производительности?
Обычно, модификации писать вообще не нужно, все делается стандартным импортом. В данном случае, придется заменять текстовые id, на числовые, а затем заменять их в связанных таблицах, что не тривилано. Производительность, в данном случае, особой роли не играет, т.к. импорт/экспорт обычно разовая операция
P.S. Кстати, проблемы с быстродействием возникают вовсе не из-за текстовых ключей ;-)
__________________
Isn't it nice when things just work?

Последний раз редактировалось macklakov; 17.10.2005 в 16:39.
Старый 17.10.2005, 16:43   #12  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Цитата:
Сообщение от macklakov
Пример: Форма Заказ, в ней указаны Клиент, Счет На, Валюта, Аналитика и еще десяток параметров. Все они допускают фильтрацию, сортировку и т.д. Представляете, во что превратится эта задача, если для получения этих значений будет использоваться join? Кроме того, усложняется механизм добавления записей/редактирования.
Для эксперимента попробуйте добавить хотя бы одно подобное поле. Засеките время которое потратите. Сравните быстродействие ;-)
Дело в том что часто видеть просто код недостаточно, зачастую он мало о чем говорит. Получается что по любому надо выводить дополнительную информацию и тогда надо связывать с другой таблицей, и тогда join предпочтительнее чем display метод который будет вызываться на каждую запись и по которому нельзя сделать фильтр. Получается что код хорош только в том случае когда достаточно видеть только его и никакой дополнительной информации.
Старый 17.10.2005, 17:51   #13  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,254 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от vavkin
Дело в том что часто видеть просто код недостаточно, зачастую он мало о чем говорит.
При правильной настройке, код говорит много о чем. По хорошему, систему вообще не нужно модифицировать, а только настраивать. В этом аспекте, удобство программирования и эффективность отступает на второй план, перед наглядностью и удобством настройки.
Цитата:
Сообщение от vavkin
Получается что по любому надо выводить дополнительную информацию .
Не полюбому, а только тогда, когда идентификаторы синтетические. А это скорее исключение, чем правило
Цитата:
Сообщение от vavkin
Получается что код хорош только в том случае когда достаточно видеть только его и никакой дополнительной информации.
Повторюсь, в случае текстовых ключей, импортировать данные, в несколько связанных таблиц, сможет любой консультант и даже конечный пользователь. И целостность данных не нарушится, а в случае инкремента даже программист может ошибиться.
Цитата:
Сообщение от vavkin
В системе с ЕК меньше join'ов только при выводе формы, в отчетах все равно надо связываться со связынными таблицами.
Да, но основная нагрузка на базу идет не от отчетов, а именно от форм и обработок. И быстродействие отчетов обычно не критично(за исключением печатных форм), чего нельзя сказать про формы.
__________________
Isn't it nice when things just work?

Последний раз редактировалось macklakov; 17.10.2005 в 17:55.
Старый 17.10.2005, 22:07   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от vavkin
Дело в том что часто видеть просто код недостаточно, зачастую он мало о чем говорит.
http://axapta.mazzy.ru/lib/autonumber/
__________________
полезное на axForum, github, vk, coub.
Старый 17.10.2005, 16:15   #15  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,254 / 980 (37) +++++++
Регистрация: 03.04.2002
Импорт/экспорт данных гораздо удобнее становится. Есть вероятность, что в другой системе id окажется не числовым, и тогда загрузка связанных таблиц может превратиться в достаточно сложный процесс. Кроме того, есть такая удобная вещь, как "переход к основной таблице"
__________________
Isn't it nice when things just work?
Старый 17.10.2005, 16:26   #16  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Цитата:
Сообщение от macklakov
Импорт/экспорт данных гораздо удобнее становится. Есть вероятность, что в другой системе id окажется не числовым, и тогда загрузка связанных таблиц может превратиться в достаточно сложный процесс. Кроме того, есть такая удобная вещь, как "переход к основной таблице"
Превратиться в сложный процесс в плане написания модификации или в плане производительности? "переход к основной таблице" можно было бы сделать и при ссылке по ID. Мне кажется по этим двум перечисленным пунктам использование Code вместо ID ничуть не усложняют и не улучшают ничего, здесь нет у них преимуществ
Старый 17.10.2005, 16:18   #17  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,254 / 980 (37) +++++++
Регистрация: 03.04.2002
Вообщем можно резюмировать следующим образом:
RecId следует использовать только совместно с TableId
__________________
Isn't it nice when things just work?
Старый 17.10.2005, 16:30   #18  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Тема рассмотрена в
Естественные ключи против исскуственных ключей, Синтетические и естественные ключи. [обсуждение темы БП] .
Оба подхода имеют своих сторонников. Лично мне ближе прозрачное использование СК - абстрагирует механизм идентификации записей.
Старый 17.10.2005, 17:38   #19  
vavkin is offline
vavkin
Участник
 
12 / 10 (1) +
Регистрация: 28.09.2005
Цитата:
Сообщение от belugin
Тема рассмотрена в
Естественные ключи против исскуственных ключей, Синтетические и естественные ключи. [обсуждение темы БП] .
Оба подхода имеют своих сторонников. Лично мне ближе прозрачное использование СК - абстрагирует механизм идентификации записей.
За ссылки спасибо
Старый 17.10.2005, 16:35   #20  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Ну, во-первых, из названия поля видно только к какой таблице оно относится (да и то не факт), но не видно, что это за клиент или договор. Цифровой абстрактрый код здесь мало поможет

Во-вторых, из одного столбца разные записи одной и той-же таблицы могут ссылаться на разные связанные таблицы (как пример - поле Кор.счет в журналах Главной книги)
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 17.10.2005 в 16:37.
Теги
renameprimarykey, естественный ключ, искусственный ключ

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics Mobile: How to code your own barcode enabled tasklets (Motorola and Intermec devices) Blog bot DAX Blogs 1 03.06.2014 06:34
Kashperuk Ivan: Tool for protecting your Dynamics AX source code Blog bot DAX Blogs 0 12.12.2008 04:07
axStart: Starting the code profiler from code Blog bot DAX Blogs 0 17.03.2008 15:05
mfp: Writing less code: The "else" statement Blog bot DAX Blogs 15 25.02.2008 17:54
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:09.