Chapter 18 · Capstone: Design a Production-Ready Database

Conceptual and Logical Model Review

Review and defend a conceptual and logical data model by checking entity boundaries, identifiers, cardinalities, optionality, temporal meaning, business rules, naming, and stakeholder readability.

Beginner75–105 minutesConceptual/logical model reviewLast reviewed: August 2026

Learning outcomes

A capstone model should be reviewed before implementation. The goal is not to admire the diagram; it is to challenge its meaning. Every entity, relationship, optionality marker, identifier, and temporal rule should trace back to a requirement.

01

Review entity boundaries and row grain.

02

Review cardinality, participation, and temporal meaning.

03

Review candidate keys and business identifiers.

04

Run a structured stakeholder/domain review.

Conceptual model sketch

AssetOwnership introduces time between Customer and Asset.

Review row grain

EntityOne row means...
CustomerOne tenant-scoped customer identity
AssetOne physical/serviceable asset
AssetOwnershipOne ownership interval
WorkOrderOne repair/service case
AssignmentOne technician-role interval on one order
PartUsageOne recorded use of one part on one order

Entity boundary review

Ask whether any entity is merely an attribute group with no independent identity or lifecycle. Conversely, ask whether repeated facts are hidden inside columns or JSON and deserve their own entity.

Customer and Asset

Current relationship alone:

is insufficient if ownership history matters. Logical model:

with temporal non-overlap constraints.

WorkOrder and Technician

Many technicians can work on many WorkOrders over time. The associative entity WorkOrderAssignment stores:

model · example
role_codestarted_atended_atis_primary / role semantics

PartUsage is not a direct M:N shortcut

PartUsage carries facts:

model · example
quantitycharged_unit_pricerecorded_atrecorded_by

Therefore it is a first-class associative entity.

Optionality review

Questions:

  • Can an Asset exist before owner assignment?
  • Can WorkOrder exist before technician assignment?
  • Can a WorkOrder have zero PartUsage?
  • Can a DiagnosticCapture exist without a WorkOrder?

Optionality should reflect workflow, not drawing convenience.

Candidate keys

EntitySurrogate PKAlternate key
Customercustomer_id(tenant_id, customer_number)
Assetasset_id(tenant_id, manufacturer_id, serial_number)
WorkOrderwork_order_id(tenant_id, work_order_number)
Partpart_id(tenant_id, sku)
Techniciantechnician_id(tenant_id, employee_number)

Tenant ownership

Decide whether tenant_id is:

  • stored on every tenant-owned table;
  • part of composite unique constraints;
  • part of tenant-aware foreign keys;
  • used in row-level security and indexes.

Temporal review

For AssetOwnership:

model · example
valid_from inclusivevalid_to exclusiveat most one active owner per assetbackdating allowed?future-dated ownership allowed?

These are model rules, not implementation details.

Status review

Separate:

model · example
WorkOrder.status_code        -- current stateWorkOrderStatusEvent         -- transition historyWorkOrderStatus              -- reference metadata

Each has a different role.

Reference data review

Candidate reference entities:

  • WorkOrderStatus;
  • AssignmentRole;
  • FailureCategory;
  • PartCategory;
  • DiagnosticSeverity.

JSON boundary review

DiagnosticCapture.payload_json is acceptable because payloads vary by source. But promote:

model · example
captured_atsource_systemschema_versionseverity_code

into stable typed columns.

Naming review

Use consistent names:

model · example
customer_idwork_order_idopened_atclosed_atstatus_codevalid_fromvalid_to

Avoid synonyms such as customer/account/client unless they mean different concepts.

Diagram readability review

Create one conceptual diagram for business stakeholders and a separate logical diagram for engineering detail. Do not overload one diagram with every index, data type, and audit column.

Stakeholder walkthrough

Use scenarios:

  1. Customer buys an Asset.
  2. Asset changes owner.
  3. WorkOrder is opened.
  4. Two technicians are assigned.
  5. Parts are consumed.
  6. WorkOrder closes.
  7. Auditor asks who changed status.

If the model cannot narrate these scenarios clearly, it is not ready.

Model-review checklist

  • Every entity has one clear grain.
  • Every relationship has named semantics.
  • Cardinality and optionality are explicit.
  • Business keys are identified.
  • Temporal facts are not overwritten accidentally.
  • Tenant boundaries are visible.
  • JSON does not hide core relations.
  • Reference data has ownership.

Checkpoint

Spot the modeling error

WorkOrder has columns technician1_id, technician2_id, technician3_id. Why is this poor design?

Review answer

It encodes a repeating relationship into fixed columns, imposes an arbitrary maximum, complicates role/timing attributes, and violates the natural many-to-many relationship. Use WorkOrderAssignment.

Summary and next lesson

A logical model is ready when its grain, keys, cardinalities, time semantics, and ownership rules survive stakeholder scenarios and engineering scrutiny. The next lesson normalizes and implements this model as a relational schema.

References

  • Course Chapters 2–5 for entity, relationship, notation, and relational mapping.
  • Ramez Elmasri and Shamkant B. Navathe, Fundamentals of Database Systems.
  • Thomas Connolly and Carolyn Begg, Database Systems.

Keep knowledge open

Help the academy stay free and grow.

If these tutorials save you time, a small donation supports new lessons, technical review, diagrams, examples, and long-term maintenance.

ETHEthereum / ERC-20 only
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0

Send only assets compatible with the Ethereum/ERC-20 network. Do not send TRC-20/TRON assets.