|
![]() |
#1 |
Участник
|
Цитата:
Возьмем связку InventTrans - SalesLine или InventTrans - SalesTable Раньше (ax4 - ax2009) были связи : Для SalesLine \Data Dictionary\Tables\InventTrans\Relations\SalesOrderLine условия: InventTrans.InventTransId == SalesLine.InventTransId при этом неявно подразумевалось Fixed условие InventTrans.TransType == 0 Для SalesTable \Data Dictionary\Tables\InventTrans\Relations\SalesOrderNum условия: InventTrans.TransType == 0 InventTrans.TransRefId == SalesTable.SalesId Для фильтрации / связи всегда добавлялось условие по InventTrans.TransType В 2012-й придумали промежуточную табличку со связью InventTransOriginSalesLine т.е. чтобы перейти от InventTransOrigin к SalesLine идет джоин InventTransOrigin - InventTransOriginSalesLine - SalesLine В каждой связи нет Fixed условия по InventTransOrigin.ReferenceCategory (это аналог InventTrans.TransType). Его заменила InventTransOriginSalesLine. т.е. вместо фильтра по полю с типом записи мы просто джоиним нужную табличку сязей. От InventTransOrigin к InventTransOriginSalesLine связь InventTransOriginSalesLine.InventTransOrigin == InventTransOrigin.RecId а от InventTransOriginSalesLine к SalesLine : InventTransOriginSalesLine.SalesLineDataAreaId == SalesLine.dataAreaId InventTransOriginSalesLine.SalesLineInventTransId == SalesLine.InventTransId Ну в вашем случае, аналогия такая atest -- InventTransOrigin atest_cust -- InventTransOriginSalesLine atest_vend -- InventTransOriginPurchLine CustTable -- SalesLine VendTable -- PurchLine atest_cust новая табличка связей поля CustAccount (если извращаться то refRecId ссылка на atest) atest_Vend поля VendAccount (если извращаться то refRecId ссылка на atest) Ну и в случае фильтрации / связи вместо условия на atest.CustVendCode делаем джоин либо с atest_cust либо с atest_vend А поле atest.CustVendCode как бы и не нужно. Правда если табличка atest не предполагает других полей, то нужна ли она вообще ? Ее можно заменить union вьюхой от atest_cust и atest_vend Все это выглядит несколько громоздко и не очень удобно. Зачем они так сделали ? Возможно хотели упростить работу оптимизатора запросов SQL. Если предположить что в нашей табличке для клиентов миллионы записей, а для поставщиков - десятки, то возможно оптимизатору проще будет запросы строить и не промахиваться с оценками. Последний раз редактировалось Logger; 27.01.2021 в 19:08. |
|
|
За это сообщение автора поблагодарили: sukhanchik (6). |
Теги |
best practice, enforcefkrelation, forein key, relation |
|
|