Skip to content

A conceptual model linked to a logical one

What this example shows

What a finished conceptual data model looks like, and how a logical model records which concepts it realizes.

It is the end state of Conceptual Modeling. Clone it if you want to see where that tutorial lands before - or instead of - doing it.

Branch: examplesdata-modelingconceptual

Realizes on the logical Customer entity, pointing at the conceptual Customer

What's in the workspace

On top of the BrightGreen base, this example adds a BrightGreen Concepts data model of type Conceptual, and modifies Example DWH to point at it.

Object What it demonstrates
BrightGreen Concepts (data model) A data model whose Type is Conceptual rather than Logical
Customer (concept) A conceptual entity: name, description and attributes, and nothing about storage
Order (concept) A second concept, so the relationship has two ends
Customer to Order A conceptual relationship with roles and cardinalities, and no join columns
Example DWH dependency The declared dependency that brings the concepts into scope
Example DWHCustomer A logical entity whose Realizes points at the Customer concept

What to look at

  • Open a concept and a logical entity side by side. The conceptual Customer has Name, Type and Description on its attributes. The logical Customer in Example DWH has Datatype, Length, Precision, Scale and the identifier and mandatory flags as well. The difference is the whole point of the tier: a concept says what something is, and stops before saying how it is stored.

  • Look at the file extensions. Conceptual objects are .entity.ccm and .relationship.ccm; logical ones are .entity.cm. The extension is what routes the file to the conceptual grammar, which is why both can keep the same entity: keyword inside.

  • Read Example DWH's dependency list. BrightGreen Concepts sits alongside JuiceERP, PreciseFinance, OptimalERP and dwh-definitions. That single entry is what makes the concepts selectable in the Realizes dropdown. Remove it and the dropdown goes empty, which is the most common reason a reference field appears broken.

  • Follow the direction of realizes. The link is stored on the logical entity, pointing up at the concept, never the other way round. That is what lets several logical entities in different source systems realize the same concept, which is the situation this example is built around.

  • Check the qualified reference in the code editor. The logical Customer carries realizes: BrightGreen_Concepts.Customer. References across models are always qualified by the data model id, which is why the dependency has to exist first.

No conceptual diagram yet (as of v1.10.0)

Conceptual models are authored through the Model Explorer and the form editor. A diagram canvas for the conceptual tier is planned for a future release. The logical models in this workspace do have system diagrams, so you can compare a drawn model with a form-only one.