Data modelling in Archimate

Started by pmduque, September 15, 2022, 11:54:40 AM

Previous topic - Next topic

pmduque

Hi,

I struggling with basic data modelling in Archimate.

I use:
  • Composition to represent a 1:n relationship and
  • Aggregation to represent a 0:n relationship
but:
  • what type of relationship do you use to represent a 1:1? two compositions back to back? an association?
  • what about an n:n relationship? do you need to use a connecting data object?

Jean-Baptiste Sarrodie

Hi,

Data modelling in ArchiMate is a long story and there's no standard way of doing it because several conventions might exist. That being said...

The typical relationships used are specialization, composition, aggregation and association. By definition:
- composition is a [0..1]:n relationship (maximum one parent, but potentially none)
- aggregation is a n:n relationship, but I wouldn't use it for all n:n relationship as it implies that one data somewhat contains the other, and this is not always wanted.
- association implied no specific cardinality, and can be use whenever neither composition and aggregation do the job. So association can be used for both 1:1 and n:n.

There's no standard way to define cardinality because this notion doesn't even really make sense in ArchiMate (a Business or Data Object is neither a class nor an instance as it all depends on the usage). My approach is simple: don't use cardinality, but instead use self explicit relationships' name wich include both the semantic of the relationship and some hint of the cardinality. This usually makes it easier to read for non architects because Object-Relationship-Object can then be read as a sentense (e.g. "Customer --Creates multiple--> Order", "Order --Leads to only one--> Invoice"...). Of course, make sure associations are directed so that people know which way it points. This works especially well with conceptual/business models.

If you really have to (or want to) use cardinality, then store it in a property, and define a custom (and dynamic) label to make it visible in a view (e.g. "${name} [${property:Cardinality}]").

Regards,

JB
If you value and use Archi please consider making a donation! https://www.archimatetool.com/donate

rchevallier

You can also use a specialization instead of a property to specify cardinality

pmduque

Thank you for your answers.

After posting I did some further investigation on the subject and got into this great discussion on the subject: https://community.opengroup.org/archimate-user-community/workgroups/archimate-31-feedback/-/issues/18.

I'll review my model and try to be cardinality agnostic!

Best regards,
Pedro Duque