M2 Logical Data Model
A metamodel for logical data modelling — defining the structure of data independent of any specific database technology. Based on standard practices from Len Silverston’s Data Model Resource Book and the DAMA DMBOK.
Element Types (2)
Section titled “Element Types (2)”Data Elements Layer
Section titled “Data Elements Layer”| Type | Shape | Colour | Description |
|---|---|---|---|
| Entity | rectangle | #B5D4FF (light blue) | A concept about which data is recorded. Renders with name and attributes compartments. |
| Attribute | rectangle (subordinate) | #D4E8FF | A named, typed property of an Entity. Owned element — renders inside the Entity’s attributes compartment. |
Entity Compartments
Section titled “Entity Compartments”Entity renders with two compartments:
- Name — entity name in bold, with
<<Entity>>stereotype - Attributes — owned Attribute elements displayed using the template
{name} : {Data Type}{Is Primary Key? [PK]:}
Attribute Properties
Section titled “Attribute Properties”| Property | Type | Required | Description |
|---|---|---|---|
| Data Type | Enumeration | Yes | String, Integer, Real, Boolean, Date, DateTime, Text |
| Is Primary Key | Boolean | No | Marks the attribute as part of the entity’s primary key |
| Is Required | Boolean | No | NOT NULL equivalent |
Relationship Types (1)
Section titled “Relationship Types (1)”| Relationship | Line Style | Markers | Description |
|---|---|---|---|
| Related | solid | none | Association between two Entities with cardinality |
Related Properties
Section titled “Related Properties”| Property | Type | Description |
|---|---|---|
| Cardinality | Enumeration | 1:1 (one-to-one), 1:N (one-to-many), M:N (many-to-many) |
Multiplicities and role names are shown on diagram edges.
Enumerations (2)
Section titled “Enumerations (2)”- Data Type — String, Integer, Real, Boolean, Date, DateTime, Text
- Cardinality — 1:1, 1:N, M:N
Design Principles
Section titled “Design Principles”This metamodel is designed for third normal form (3NF) data modelling:
- Each entity represents a single concept
- Attributes depend only on the entity’s primary key
- Relationships capture associations with cardinality