Logical Data Modeling
Logical data modeling is the second phase of database design, translating a conceptual model into a detailed, DBMS-independent blueprint of the data structure. It defines entities, attributes, keys, relationships, and normal forms without specifying physical storage details.
What It Defines
| Element | Description |
|---|---|
| Entities / Tables | Named objects with defined attributes |
| Attributes / Columns | Properties with [[SQL Data Types |
| [[Primary Key | Primary keys]] |
| [[Foreign Key | Foreign keys]] |
| Normalization | Decomposition to eliminate redundancy (typically to 3NF/BCNF) |
| Database Constraints | NOT NULL, UNIQUE, CHECK, referential actions |
Expressed Through
- Entity-Relationship Diagram (ERD) — Crow’s Foot / IE notation is the standard for logical models
- SQL DDL — CREATE TABLE statements (though this overlaps with physical modeling)
- Data modeling tools — MySQL Workbench, pgModeler, LucidChart, ERDPlus
Conceptual → Logical Translation
The same conceptual model maps differently depending on the target database paradigm:
| Conceptual Element | Relational Logical | Document Logical | Graph Logical |
|---|---|---|---|
| Entity | Table | Collection | Node |
| Relationship | Foreign Key / Junction Table | Embedded doc or reference | Edge |
| Attribute | Column | Field | Property |
| Generalization | Discriminator column or table-per-type | Type field | Label |
Position in Design Workflow
graph LR A["[[Conceptual Data Modeling|Conceptual]]<br/>(UML / domain model)"] --> B["Logical<br/>(ERD / normalized schema)"] B --> C["[[Physical Data Model|Physical]]<br/>(DDL / indexes / partitions)"]