Hi, I question the concept of Generalization in Mendix. For my understanding Generalization in Mendix suppose to work like inheritance. For example: System.User Entity has Name and Password; Administration.Account Entity has Email; Administration.Account inherits from System.User. I expect the Administration.Account database table in my PostgreSQL would have ID, Name, Password and Email. However, as a matter of fact the Administration.Account database table only have ID and Email; as for the System.User database table have ID, Name, Password and system members. System members “owner” would store the value of ID of the row from Administration.Account. It looks more like some sort of foreign key mapping than generalization/inheritance to me. Can any moderators give some clarification on the concept of generalization vs foreign key mapping or perhaps cross-module association in Mendix?
Teoh Ming Sui
Using foreign keys is a strategy in setting up your databases for inheritance. There are various ways to do this, and Mendix chose this one. For example, see this article that discusses various strategies for implementing inheritance: How to Model Inheritance in a Database
What mendix does here is employ the “One Table Per Entity” strategy, while what you're describing seems more like the “One Table Per Entity with All Attributes” strategy. Each of these have their own advantages and disadvantages as outlined in the article.