So I'm trying to implement the following simple domain model as part of a proof-of-concept.
The NM_Nomenclature, NM_NomenclatureKind and NM_ValidityPeriod CDT's have been created as visualized in the domain model as can be seen below, id fields have been added as primary keys.
When adding the MostRecentValidityPeriod relationship to the NM_Nomenclature CDT as follows.
This generates a warning message stating that: "Multiple levels of nested data types detected. Consider creating a flat data type relationship instead to avoid nesting data types more than one level deep. Multiple levels of nested data types can complicate data access at child levels and reduce query performance."
This particular design choice is made as a denormalization because I expect frequent access to the relationship MostRecentValidityPeriod and this allows for a one-to-one access relationship to the most recent validity period without having to consider/filter the ValidityPeriods collection.
I don't understand right now what the warning is actually telling me, this doesn't seem like an illogical design choice to me but perhaps given the way Appian apps work I am in fact doing something which is implemented differently in Appian? I am new to Appian so it is well possible that I'm missing some of the more subtle concepts.
Thanks in advance for any clarification here!
Discussion posts and replies are publicly visible
The warning just tells you, you are choosing a cdt to be nested which contains already a nested CDT itself
The warning just informs you about the risks for your design choice. Performance and accessibility could suffer. But thats all the purpose of this message.If its still fine for you: "know the rules, break the rules". Just ensure the quality of your code and performance with this structure.
You can still do it freely.
Perhaps the following guideline will help to understand the recommended pattern by appiandocs.appian.com/.../cdt_design_guidance.html
Thank you for the quick reply, the link you provided in your post clarified the risk for me. In my specific case I estimate the risk to be very small as the amount of rows present will be rather small and will need to often be displayed together.
Hi Roel,just as last hint:Keep an eye on the performance of your data base queries and queryentities. With higher amount of data stored in the database it can have a performance impact. not necesserily appearing and i think pretty small chance, but the risk is still there and worth to be checked once in a while.
Have great day and good success for you.
© 2021 Appian. All rights reserved.