In the high-stakes environment of industrial mining, data integrity is not just a database requirement; it is a critical safety and compliance imperative. Accurate measurement of ore throughput tonnage and precise calibration of conveyor belt scales are the backbone of operational efficiency and financial reconciliation. When a mining operation processes thousands of tons of material daily, even minor discrepancies in weightometer readings can lead to significant inventory errors, regulatory fines, or safety hazards. The challenge lies in capturing the complex, interdependent relationships between physical assets—crushers and conveyors—and the digital records of their performance, calibration history, and material characteristics.

Visualizing this intricate data landscape through a well-structured Entity Relationship Diagram (ERD) allows architects and engineers to define clear boundaries for data collection, traceability, and quality assurance. By adopting a diagram-as-code approach with PlantUML within VPasCode, teams can create living documentation that evolves with the system. This method ensures that the data model for tracking material flow from the crusher through to the final shift log is not only technically accurate but also easily maintainable, testable, and shareable across global engineering teams without the friction of manual drawing tools.
Understanding the Model: Purpose, Scope & Problem Framing
This ERD is specifically designed to address the data modeling needs of a mining operation’s material handling and quality control systems. Unlike generic database schemas, this model focuses on the lifecycle of ore processing, from the physical crushing stage to the final calibrated weight measurement.
Diagram Abstraction & Representation
As an Entity Relationship Diagram, this model abstracts physical hardware into logical database entities. It represents the Crusher and Conveyor Belt as the primary assets driving the process. The Belt Scale is modeled as a dependent entity, emphasizing that a scale is physically attached to a specific conveyor and cannot exist independently in this context. The core of the model is the Throughput Record, which acts as the central transactional table, linking the physical equipment (crusher, conveyor, scale) with the material being processed (Material Type) and the specific time of measurement.
Target Domain Scope & Scenario
The scope of this diagram is strictly limited to the operational data required for throughput tracking and scale calibration compliance. It covers the flow of data from raw ore input (Material Type) through the crushing and transport process, capturing real-time tonnage and flow rates. Crucially, it includes the Calibration Event and Calibration Test Weight entities, which are essential for maintaining the accuracy of the measurement system over time. The model also incorporates a Shift Log to aggregate data for shift-based reporting and operator accountability.
Key Takeaways & Educational Insights
By studying this diagram, readers will gain insights into how to structure data for traceability. You will learn how to model one-to-many relationships (e.g., one crusher having many throughput records) and how to link calibration history directly to the specific scale being tested. This ensures that any deviation in tonnage can be traced back to a specific calibration event, providing a robust audit trail for quality assurance.
Complete Diagram & Full Source Code
Before diving into the construction steps, review the complete visual representation of the system below. This diagram illustrates the logical connections between all entities, ensuring that the data flow from the crusher to the final shift report is accurately captured.

@startuml
!include https://static.visual-paradigm.com/web/resources/plantuml-stdlib/themes/vp.puml
/'
Diagram Context:
This ERD models the data structure for tracking ore crusher throughput tonnage
and calibrating conveyor belt scales in a mining operation. The system captures
material flow from crushing through conveyor transport, records weightometer
readings, and manages calibration events that ensure accurate tonnage measurement.
Core entities include the Crusher, Conveyor Belt, Belt Scale, Throughput Record,
Calibration Event, Calibration Test Weight, Material Type, and Shift Log. The model
supports traceability from raw ore input to final measured output, including
calibration history for compliance and quality assurance.
'/
title Mining Ore Crusher Throughput Tonnage and Conveyor Belt Scale Calibration System - ERD
entity "Crusher" as crusher {
* crusher_id : INT <<PK>>
--
crusher_name : VARCHAR
location : VARCHAR
max_capacity_tph : DECIMAL
status : VARCHAR
}
entity "Material_Type" as material {
* material_id : INT <<PK>>
--
material_name : VARCHAR
density_kgm3 : DECIMAL
moisture_pct : DECIMAL
}
entity "Conveyor_Belt" as conveyor {
* conveyor_id : INT <<PK>>
--
belt_name : VARCHAR
length_m : DECIMAL
speed_mps : DECIMAL
crusher_id : INT <<FK>>
}
entity "Belt_Scale" as scale {
* scale_id : INT <<PK>>
--
scale_model : VARCHAR
serial_number : VARCHAR
install_date : DATE
conveyor_id : INT <<FK>>
}
entity "Throughput_Record" as throughput {
* record_id : INT <<PK>>
--
timestamp : DATETIME
tonnage_tons : DECIMAL
flow_rate_tph : DECIMAL
material_id : INT <<FK>>
crusher_id : INT <<FK>>
conveyor_id : INT <<FK>>
scale_id : INT <<FK>>
}
entity "Calibration_Event" as calibration {
* calibration_id : INT <<PK>>
--
calibration_date : DATETIME
calibration_type : VARCHAR
result : VARCHAR
error_pct : DECIMAL
technician : VARCHAR
scale_id : INT <<FK>>
}
entity "Calibration_Test_Weight" as testweight {
* test_id : INT <<PK>>
--
weight_kg : DECIMAL
reference_standard : VARCHAR
pass_fail : VARCHAR
calibration_id : INT <<FK>>
}
entity "Shift_Log" as shift {
* shift_id : INT <<PK>>
--
shift_date : DATE
shift_name : VARCHAR
operator : VARCHAR
total_tonnage : DECIMAL
record_id : INT <<FK>>
}
crusher ||--o{ conveyor
conveyor ||--o{ scale
crusher ||--o{ throughput
material ||--o{ throughput
conveyor ||--o{ throughput
scale ||--o{ throughput
scale ||--o{ calibration
calibration ||--o{ testweight
throughput ||--o{ shift
@enduml Step-by-Step Architectural Walkthrough
Phase 1: Canvas Configuration & Layout Directives
The foundation of any professional PlantUML diagram lies in its setup. In this manufacturing context, we prioritize clarity and standard compliance. We begin by including the Visual Paradigm standard library theme. This ensures the diagram renders with a consistent, modern aesthetic that aligns with enterprise documentation standards.
Next, we define the diagram type and title. The @startuml directive initializes the canvas, while the title command provides a clear, descriptive header that immediately informs the reader of the diagram’s scope: Mining Ore Crusher Throughput Tonnage and Conveyor Belt Scale Calibration System.
@startuml
!include https://static.visual-paradigm.com/web/resources/plantuml-stdlib/themes/vp.puml
title Mining Ore Crusher Throughput Tonnage and Conveyor Belt Scale Calibration System - ERD
Phase 2: Declaring Core Entities, Actors, and Boundaries
The core of an ERD is the definition of entities. In PlantUML, we use the entity keyword. Each entity represents a physical or logical object in the mining system. We define the Crusher and Material_Type as independent entities because they exist regardless of a specific transaction. The Crusher entity includes attributes like crusher_id (Primary Key) and max_capacity_tph to define its operational limits.
We then define dependent entities. The Conveyor_Belt and Belt_Scale are defined next. Notice the use of INT < for the crusher_id in the conveyor entity. This syntax explicitly marks the relationship, indicating that a conveyor belt is physically linked to a specific crusher. Similarly, the Throughput_Record is the central transactional entity, requiring foreign keys to link back to the crusher, conveyor, scale, and material type.
entity "Crusher" as crusher {
* crusher_id : INT <>
--
crusher_name : VARCHAR
location : VARCHAR
}
entity "Conveyor_Belt" as conveyor {
* conveyor_id : INT < >
--
crusher_id : INT <>
}
Phase 3: Mapping Data Flows & Key Interactions
Once the entities are defined, we must establish the relationships that govern the data flow. In this manufacturing scenario, the flow is hierarchical. A Crusher can feed multiple Conveyor Belts, and a Conveyor Belt can have multiple Belt Scales (or one-to-many). We use the ||--o{ syntax to represent a one-to-zero-or-more relationship. This means one crusher can have zero or many conveyors.
We also model the critical calibration chain. A Belt Scale triggers a Calibration_Event, which in turn is associated with specific Calibration_Test_Weight records. This ensures that every measurement reading in the Throughput_Record can be audited against a valid calibration history.
crusher ||--o{ conveyor
conveyor ||--o{ scale
scale ||--o{ calibration
calibration ||--o{ testweight
Phase 4: Grouping, Annotations & Visual Polish
To enhance readability and context, we utilize the comment block syntax /' ... '/ immediately after the theme inclusion. This block provides a narrative description of the diagram’s purpose without cluttering the visual output. It describes the problem context, the core entities, and the traceability goals. This is a best practice for technical documentation, ensuring that anyone reading the code understands the “why” behind the “what”.
Finally, we ensure all attributes are typed correctly (e.g., DECIMAL for tonnage, DATETIME for timestamps) to reflect the precision required in mining operations. The Shift_Log entity aggregates data from the Throughput_Record, closing the loop on daily reporting.
Syntax & Keyword Deep Dive
To fully leverage PlantUML for industrial ERDs, it is essential to understand the specific syntax used to define data structures and relationships.
entity: The fundamental keyword used to define a table or object. It is followed by a display name (e.g., "Crusher") and an alias (e.g.,as crusher) used for referencing in relationships.*(Primary Key Marker): Placed before an attribute name (e.g.,* crusher_id), this indicates that the field is the Primary Key, uniquely identifying each record in the entity.<and> <(Stereotypes): These annotations explicitly label fields as Primary Keys or Foreign Keys, making the schema self-documenting and easier to read at a glance.> ||--o{(Relationship Cardinality): This arrow notation represents a one-to-zero-or-many relationship. The double line||indicates "one" and the crow's footo{indicates "zero or many". This is crucial for modeling the physical hierarchy of mining equipment./' ... '/(Comment Block): This syntax allows for multi-line text descriptions that are rendered in the diagram's context or metadata but do not interfere with the visual layout of the entities.--(Separator): Used within an entity block to separate attributes (fields) from the header, visually grouping the data properties.
Best Practices & Pitfalls to Avoid
When constructing ERDs for complex manufacturing systems like mining operations, adherence to best practices ensures the diagram remains useful over time.
- Maintain Consistent Naming Conventions: Use clear, descriptive names for entities (e.g.,
Throughput_Recordinstead ofTR) and attributes. Avoid abbreviations that might not be understood by all stakeholders, especially in cross-functional teams. - Separate Logic from Physical Constraints: While the
Conveyor_Beltentity links to theCrusher, ensure that the data model reflects the logical relationship. If a conveyor can be moved between crushers, consider if a junction table is needed instead of a direct Foreign Key, though in this static model, a direct FK is appropriate. - Document Relationships Explicitly: Don't rely solely on visual proximity. Use the
||--o{syntax to explicitly define cardinality. Ambiguous relationships can lead to database design errors during implementation. - Use Contextual Comments: As demonstrated in the Phase 4 section, always include a comment block explaining the diagram's scope. This is vital for onboarding new engineers or for auditing purposes where the "why" is as important as the "how".
Start Building Manufacturing ERDs Faster with VPasCode
Design, test, and refine your mining data models instantly in your browser with VPasCode's free PlantUML editor—no installation required.