22.01.2003, 14:23 | #1 |
Модератор
|
Чем грозит использование RecId в качестве ПК?
Создается новая таблица. Нужен первичный ключ. Но не хочется создавать новую номерную серию, запихивать ее еще в одни "настройки", которых и так немало. Зато есть замечательное поле RecId, насквозь уникальное в пределах компании. Возникает естественное желание выбрать его в качестве ключа.
Плюсы: меньше программирования на одно поле меньше, запись меньше места занимает join по целочисленым полям будет шустрее, чем по строкам Минусы: пока что вижу только одни грядущие грабли. RecID при экспорте-импорте не восстанавливаются, так что связи таблиц надо будет как-то восстанавливать. Если больше минусов нет, буду думать, как с этим бороться. Если я еще чего-то серьезного не вижу, ткните пожалуйста носом, выброшу это из головы и буду делать как все |
|
22.01.2003, 14:31 | #2 |
Участник
|
RECID при экспорте/импорте восстанавливаются.
Однако бывают в этом алгоритме глюки, если у тебя два поля с RECID и/или ты включаешь/исключаешь твою таблицу в коллекцию. На RecID не повесишь свой нумератор. Никто не гарантирует, что нумерация RecID будет сплошная без дыр. Кстати, никто не гарантирует, что нумерация RecID монотонно возрастает по времени RECID сугубо программистский инструмент. Если ты завязываешься на него, то тебе нужно будет придумывать, как показывать наименование вместо кода. А Аксапта сделана в расчете, что код является значимым для пользователя. Уж извиини за ссылку http://www.mazzy.ru/axapta/hints/autonumber/index.html По RECID не будет работать VisualMorphXplorer. По RecID не будет работать алгоритм изменения кода. По RecID не будет работать DynaLink. Да и вообще автосвязь между таблицами работать не будет. Будет меньше информации в перекрестных ссылках. В общем, чего тебе не нравится свой код? Лениво? Думаю, что потеряешь ты больше, чем приобретешь. |
|
22.01.2003, 14:36 | #3 |
Продавец игрушек
|
То, что они теряются при импорте, пожалуй, самое неприятное.
Ещё неприятности могут возникнуть при объединении данных - перенос из компаний в виртуальные компании. Напирмер, некий справочник заводишь как уникальный для каждой из 2-х компаний, а потом понимаешь, что он должен быть единым. Но есть и более значимый, с моей точки зрения, минус: - тебе придётся использовать два подхода: ссылки по ключу и ссылки по RecId. Чем меньше подходов, тем стройнее разработка. Однако, в самой Аксапте есть места, где ссылаются по RecId. Но это не пример для подражания.
__________________
С уважением, Роман Кошелев. |
|
22.01.2003, 14:55 | #4 |
Moderator
|
Цитата:
То, что они теряются при импорте, пожалуй, самое неприятное.
InventSettlement - InventTrans CustSettlement - CustTrans VendSettlement - VendTrans В этих таблицах связка происходит именно по RecId. Допустим мне нужно перейти на новую базу данных. Ну например я перехожу на новую версию. Рассуждая, приходим к тому, что что связь между этими таблицами при экспорте/импорте исчезнет. И что делать ? Заново вручную проводить сопоставление ? Та это ж офигеешь. Или плюнуть на историю ? |
|
22.01.2003, 15:01 | #5 |
Участник
|
Нет. Если с этими таблицами не происходило существенных изменений, то импорт происходит более-менее корректно.
Плохо будет, если одна из таблиц, участвующих в сопоставлении, станет общей. Или в данных экспорта будут присутствовать не все таблицы, учатсвующие в сопоставлениии. Я открыл тему RecID при экспорте-импорте не восстанавливаются? Может туда? |
|
22.01.2003, 16:27 | #6 |
Модератор
|
Цитата:
На RecID не повесишь свой нумератор
Цитата:
Никто не гарантирует, что нумерация RecID будет сплошная без дыр. Кстати, никто не гарантирует, что нумерация RecID монотонно возрастает по времени
Цитата:
RECID сугубо программистский инструмент. Если ты завязываешься на него, то тебе нужно будет придумывать, как показывать наименование вместо кода. А Аксапта сделана в расчете, что код является значимым для пользователя. Уж извиини за ссылку http://www.mazzy.ru/axapta/hints/autonumber/index.html
Цитата:
По RecID не будет работать DynaLink. Да и вообще автосвязь между таблицами работать не будет.
Цитата:
В общем, чего тебе не нравится свой код? Лениво?
|
|
22.01.2003, 16:35 | #7 |
Участник
|
Цитата:
Изначально опубликовано Vadik
Собственно от нумератора я и пытался избавиться Цитата:
Изначально опубликовано Vadik
Придумывать ничего не надо, просто пристыковывать больше таблиц приходится. Ну и лукапы надо будет переписывать. Представь, что клиенты у тебя имеют вместо AccountNum код RecID. Тогда ВЕЗДЕ, где показываются клиенты нужно будет делать связь. И в отчетах, и в формах. Например, в заказах сейчас грид работает по одной таблице и показывает поле из этой же таблицы - Sales.AccountNum. А тебе придется делать join и показывать CustTable.Name. Кроме того, подумай о поиске! Как ты организуешь пользовательский поиск? Пользователь у тебя сможет искать только по НАИМЕНОВАНИЮ! Со всеми вытекающими Если "больше таблиц" - это две таблицы вместо одной, то работа увеличивается вдвое! По меньшей мере |
|
22.01.2003, 16:46 | #8 |
Модератор
|
В общем, убедили
Всем, кто ответил, спасибо. Буду ломать старые привычки, ничего не поделаешь 2Mazzy: Цитата:
RECID сугубо программистский инструмент
|
|
22.01.2003, 16:50 | #9 |
Участник
|
Это неправильно поставленный вопрос
В Аксапте, как правило, решение достигается гораздо эффективнее БЕЗ программирования. Но если приходится, то могу и программировать. Если ты спрашиваешь про Анкету, то я ответил, что отношу себя к людям, которые настраивают/внедряют. |
|
23.01.2003, 11:47 | #10 |
Шаман форума
|
Цитата:
Изначально опубликовано Vadik
Дырки - на здоровье, мне не жалко |
|
23.01.2003, 12:28 | #11 |
Продавец игрушек
|
Лишь бы не комплексные.
__________________
С уважением, Роман Кошелев. |
|
23.01.2003, 13:50 | #12 |
Moderator
|
Надо добавить, что в Axapta 3, при выполнении операции "Проверить идентификаторы записей" в форме SQL-Администрирование, может выполняться перенумерация recid, с соответствующей коррекцией всех ссылок по recid.
Процесс этот проходит очень неспешно, но проблемы отрицательных recid и пропусков в нумерации recid он решает. |
|
23.01.2003, 13:55 | #13 |
Moderator
|
Цитата:
Надо добавить, что в Axapta 3, при выполнении операции "Проверить идентификаторы записей" в форме SQL-Администрирование, может выполняться перенумерация recid, с соответствующей коррекцией всех ссылок по recid.
|
|
08.03.2004, 08:13 | #14 |
Участник
|
Нет, это не так.
|
|
Теги |
recid, как правильно |
|
|