19 May 1996 updated

The meta-model on which PowerDesigner is based is highly object oriented and well normalized. This can be seen directly by inspecting the tables in an instance of the MetaWorks repository. Those tables are also reflected in the layouts of the PAM, CDM, and PDM model text files.
The resulting physical meta schema (below) is poorly understood by most users of PowerDesigner.

Many users who are not uneducated in formal modeling concepts do not understand the purpose, value, and pitfalls of the three levels of Domain, Data Item, and Attribute.
There has been extensive discussion about PowerDesigner's enforcement of methodology requiring that every data item CODE value be unique - without regard to its placement as an attribute of an entity. This becomes a problem in reverse engineering many legacy databases where the same column code has been used in different tables with different definitions and structures.
This point is the first step in adding more flexibility to the product. It allows customers to parameterize PowerDesigner behavior in certain cases.
PowerDesigner today forces users to conform to some design rules in order to guarantee easy reading and maintenance of models. We want to give to customers more flexibility, particularly when re-engineering legacy databases. To suit this requirement, as an option, we will modify the identifier of a data item. In this mode the identifier of a data item is its code plus the code of the entity to which it belongs. So, several data items could have the same name and code. A data item will be linked to only one entity. The « Add » button from the attribute lists will copy any data item already existing in the entity. In all list views, the code entity will always be added to the data item code.
PowerDesigner 4.2.1 already allows the same name for two different relationships. To increase our flexibility, as an option, the identifier of a relationship will become the relationship code plus the codes of both entities to which it is related.
In release 5.0, the relationship code will gain more importance. First, the relationship name and code will always be used as the reference name and code in the physical model. Second, the relationship code will be used as the default constraint name for the foreign key.
In the PDM, the reference identifier will be the reference code plus the codes of both tables to which it is related. The table generation will be modified in order to ensure the fact that two tables should not have the same code.The constraint generation names will be modified in order to ensure that default constraint names are still unique.
The relationship labels, whose contents are not controlled, should be used to complete the relationship definition.
See also Hooking a lexicon into PowerDesigner