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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2011, 02:15   #1  
Blog bot is offline
Blog bot
Участник
 
25,475 / 846 (79) +++++++
Регистрация: 28.10.2006
axdaily: Table inheritance
Источник: http://axdaily.blogspot.com/2011/04/...heritance.html
==============

AX 2012 supports table inheritance.


Table inheritance is controlled by the following properties:

  1. SupportInheritance – specifies if a table is a part of a hierarchy.
  2. InstanceRelationType – specifies the field that is used as a type discriminator. TableIds of concrete types are used as values of the InstanceRelationType field.
  3. Abstact – specifies if a table is abstract. Tables without derived tables cannot be abstract.
  4. Extends – specifies table’s parent.
Polymorphism is supported for table methods. All tables instance methods are virtual.

There is also client support for table hierarchies. Whenever a table that has derived tables is added on a form as a datasource, all its children are added under the derived datasources node. Fields from derived datasources can be bound to form controls and derived datasources can be used in form query construction, e.g. other datasources can be joined to derived ones.


Whenever a “New record” action is invoked on a form control that is bound to an abstract table, the following dialog will be presented to user where it is possible to select the concrete type of the record being created.



Источник: http://axdaily.blogspot.com/2011/04/...heritance.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 28.04.2011, 12:27   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Интересно, что никто ничего про это изменение не говорит.
Что думаете, полезно или как?
Старый 28.04.2011, 12:31   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
пока кажется что полезно.
но непонятно. такое ощущение, что как-то вывернуто наизнанку

хотя возможно, чего то еще не понимаю.
__________________
полезное на axForum, github, vk, coub.
Старый 28.04.2011, 12:45   #4  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Вообще-то в разных СУБД (ну например PostgreSQL или Оракла) наследование таблиц существует достаточно давно!
Правда, интересуясь на профильных форумах, я не увидел ни одного человека, кто-бы это использовал в реальных проектах. Может дело в привычке разработчиков, а может в кривизне реализации - не знаю.
Как здесь применять - я пока не знаю - может все ограничится уменьшением кол-ва дублированного кода.
__________________
Axapta 3.0 sp - хз какой, kr2
Старый 28.04.2011, 12:46   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,894 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
А те кто это уже видел - могут сказать как оно внутри устроено ? В родительской таблице есть поле с типом ? Или считается что джойна на дочернюю таблицу достаточно ?
Кроме того - не очень понятно что будет если я только дочернюю таблицу в на форму помещу...
Старый 28.04.2011, 13:04   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от fed Посмотреть сообщение
А те кто это уже видел - могут сказать как оно внутри устроено ? В родительской таблице есть поле с типом ? Или считается что джойна на дочернюю таблицу достаточно ?
Кроме того - не очень понятно что будет если я только дочернюю таблицу в на форму помещу...
Да, есть поле определяющее тип в базовой таблице.
Зависит от того, какие поля вытащишь показывать и как настроишь. Если вытащишь из базовой таблицы в том числе, она автоматически приджойнится к дочерней. Если не вытащишь, то только из дочерней будут выбираться поля.
Старый 28.04.2011, 13:44   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Интересно, что никто ничего про это изменение не говорит.
Что думаете, полезно или как?
Первая мысль, которая пришла в голову от этой фразы - разработчики в MS (не российском) - явно хотели похвастаться этой реализованной идеей (ну оцените же наш запал!) .... А вот бурных возгласов на нашем форуме как-то и не слышно . Абыдно .

Посмотрим по жизни как все это будет работать в плане быстродействия. Пока придерживаюсь мнения
Цитата:
Сообщение от mazzy Посмотреть сообщение
пока кажется что полезно.
но непонятно. такое ощущение, что как-то вывернуто наизнанку

хотя возможно, чего то еще не понимаю.
__________________
Возможно сделать все. Вопрос времени
Старый 28.04.2011, 16:17   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Первая мысль, которая пришла в голову от этой фразы - разработчики в MS (не российском) - явно хотели похвастаться этой реализованной идеей (ну оцените же наш запал!) .... А вот бурных возгласов на нашем форуме как-то и не слышно . Абыдно .
Да не. Это ж не мы делали. А ребята из Редмонда. Так что хвастаться нечем.
А интересно лично мне, потому что мне фича нравится, но чувствую, что где-то есть подвох (не учитывая перформанс)
Старый 28.04.2011, 16:25   #9  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,894 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Да не. Это ж не мы делали. А ребята из Редмонда. Так что хвастаться нечем.
А интересно лично мне, потому что мне фича нравится, но чувствую, что где-то есть подвох (не учитывая перформанс)
Меня удивила возможность помещать базовую таблицу на форму и на лету указывать тип создаваемой записи. Может это и полезно иногда, но почему-то мне странным кажется. Как-то я привык к тому что присутствует жёсткий джойн от одной листовой таблицы до корневой.
Кроме того - я не понял как там решили вопрос с тремя уровнями наследования. Вот скажем есть у меня таблица "Клиенты", потом "Стратегические клиенты", потом "Стратегические клиенты на поддержке". Могу я таблицу Клиенты на форму поместить ?
И если у меня два уровня наследования, меня система два раза спрашивать будет ?
Кроме того непонятно как синтаксически делается запрос по дочерней таблице. Должен ли я джойн к супер-таблице добавлять или синтаксически считается что дочерняя таблица содержит все поля родительской ? (И ядро это в join превращает).

Кроме того, интересно насколько данную фичу использовали при проектировании структур данных. А то интерфейсы поддержали еще в версии 3.0, поминится, а на практике они используются местах в 5-7...
P.S. Кстати надо бы уж тогда выработать какую-то терминологию для наследования таблиц, а то термины 'родительский' и 'дочерний' в реляционной терминологии уже используются, причем для отношений в нормальных формах, а не для наследования

Последний раз редактировалось fed; 28.04.2011 в 16:30.
Старый 28.04.2011, 17:15   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от fed Посмотреть сообщение
Меня удивила возможность помещать базовую таблицу на форму и на лету указывать тип создаваемой записи. Может это и полезно иногда, но почему-то мне странным кажется. Как-то я привык к тому что присутствует жёсткий джойн от одной листовой таблицы до корневой.
Кроме того - я не понял как там решили вопрос с тремя уровнями наследования. Вот скажем есть у меня таблица "Клиенты", потом "Стратегические клиенты", потом "Стратегические клиенты на поддержке". Могу я таблицу Клиенты на форму поместить ?
И если у меня два уровня наследования, меня система два раза спрашивать будет ?
Кроме того непонятно как синтаксически делается запрос по дочерней таблице. Должен ли я джойн к супер-таблице добавлять или синтаксически считается что дочерняя таблица содержит все поля родительской ? (И ядро это в join превращает).

Кроме того, интересно насколько данную фичу использовали при проектировании структур данных. А то интерфейсы поддержали еще в версии 3.0, поминится, а на практике они используются местах в 5-7...
P.S. Кстати надо бы уж тогда выработать какую-то терминологию для наследования таблиц, а то термины 'родительский' и 'дочерний' в реляционной терминологии уже используются, причем для отношений в нормальных формах, а не для наследования
У нас их называют Super type and sub type.
Да, будет спрашивать два раза, насколько я помню. Поэтому для products, где такая ситуация присутствует, сделали отдельный диалог кастомный.
Синтаксически все поля базовых таблиц доступны с дочерней в коде. Ядро потом само разберет, что приджойнить. Но и явно джойтить тоже можно, вроде без проблем.
Используется в довольно большом кол-ве новых (2012) таблиц.
Адреса, Party, Продукты, т.д.
Старый 29.04.2011, 01:09   #11  
gigz is offline
gigz
Участник
MCBMSS
Соотечественники
 
19 / 43 (2) +++
Регистрация: 15.09.2008
не, два раза показываться не будет. в примере как раз такая иерархия (Product Variants (EcoResDistinctProductVariant) подтип Products (EcoResDistinctProduct)).

с запросами по дочерним таблицам все просто. никаких джойнов не нужно руками писать (ни на формах ни в коде) ядро само все сделает.
Теги
ax2012, inheritance, table inheritance

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Халтура в AX2009: идентификаторы из USR в GLS, GLP и даже SYS-слоях EVGL DAX: Программирование 2 21.02.2011 19:44
emeadaxsupport: Identifying damaged Table objects in the AOT MetaData Blog bot DAX Blogs 0 16.03.2010 21:05
PatrickChua: Temporary table Blog bot DAX Blogs 0 04.05.2009 14:05
Axapta Lessons: Export a table to a file Blog bot DAX Blogs 0 28.10.2006 18:22
PatrickChua: Temporary table Blog bot DAX Blogs 0 28.10.2006 18:14

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:09.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.