Heavy Equipment BOM Structure (WW)
Overview
A modelled heavy-equipment manufacturer's complete service parts catalogue, built the way parts systems actually behave and sized to test them. Six machine families (tracked excavator, rigid and articulated dump trucks, crawler dozer, wheel loader, motor grader), 16 models, 39 variants whose differences are expressed as serial effectivity ranges rather than duplicated trees. The bill of materials nests four to six levels from machine to part with a materialised path column that makes tree queries cheap, and the README ships the recursive query that walks a full machine and returns rolled-up part demand. Over a million item rows sit on 124,337 parts; fasteners, seals and filters are genuinely shared, with hundreds of parts used in forty or more places, which is what a where-used query needs to be worth testing. The where-used table is derived from the same in-memory graph the rest of the dataset is written from, so it reconciles exactly, and rolled-up quantity equals the product of assembly quantities down each path. Supersession chains run two and three deep with one deliberate, documented loop; interchange records, service kits with interval-based contents, remark codes and effectivity splits complete the mechanics. The tables reconcile by construction and the build re-verifies every one of the guarantees. Built for testing parts-catalogue logic, tree UIs, where-used and supersession handling, ETL over deep hierarchies and BI on service-parts demand. The licence and disclosure sections state the provenance of the data.
Row Counts by Table
Counted from the files that ship, not estimated.
| Table | Rows |
|---|---|
| heq_bom_headers | 27,725 |
| heq_bom_items | 1,123,640 |
| parts | 124,337 |
| part_where_used | 751,785 |
| part_supersessions | 5,049 |
| part_interchange | 14,908 |
| equipment_families | 6 |
| equipment_models | 16 |
| equipment_variants | 39 |
| assembly_groups | 62 |
| service_kits | 193 |
| service_kit_items | 2,285 |
| uom_codes | 18 |
| part_classes | 20 |
| remark_codes | 40 |
Table Relationships
One parent record and seven child tables, each joined back on the same key.
Schema
Every table ships with typed columns, referential integrity, and documentation.
| Column | Type | Description |
|---|---|---|
| header_id | varchar(8) | Tree node key. Primary key. |
| variant_id | varchar(8) | The variant whose tree this node belongs to. |
| group_id | varchar(24) | The assembly group of the node. Empty on the machine and system levels. |
| parent_header_id | varchar(8) | The parent node. Empty on the root; the path column is asserted consistent with this chain. |
| bom_level | integer | Depth in the tree: 1 machine, 2 system, 3 assembly, 4 sub-assembly, 5 and 6 detail. |
| path | varchar(48) | Materialised path from the variant root, dot separated. The column that makes subtree queries a prefix match. |
| sequence_in_parent | integer | Position of the node within its tree, in walk order. |
+6 more columns in heq_bom_headers. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| item_id | varchar(16) | Item row key. Primary key. |
| header_id | varchar(8) | The leaf node this item hangs under. |
| part_id | varchar(16) | The part at this callout. |
| callout_position | integer | The number on the parts diagram. One position may split into serial ranges. |
| quantity_per | integer | Quantity of the part per one parent assembly. |
| unit_of_measure | varchar(16) | Unit the quantity counts, from uom_codes. |
| effective_from_serial | varchar(8) | First machine serial this row applies to. |
+5 more columns in heq_bom_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| part_id | varchar(16) | Part key. Primary key. |
| part_number | varchar(24) | Generated checksum-bearing part number. Follows no real manufacturer scheme; the build asserts it against real designation patterns. |
| part_name | varchar(64) | The part in words. One name is deliberately carried by two interchangeable, unlinked parts. |
| part_description | varchar(80) | The part in words with its application. |
| class_code | varchar(8) | Part class, from part_classes. |
| class_name | varchar(40) | The class in words. |
| material_code | varchar(8) | Coded material of the part. |
+6 more columns in parts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| where_used_id | varchar(16) | Where-used key. Primary key. |
| part_id | varchar(16) | The part being located. |
| header_id | varchar(8) | The leaf node the part appears under. |
| variant_id | varchar(8) | The variant of that tree. |
| group_id | varchar(24) | The top-level assembly group above the usage. |
| bom_level | integer | Depth of the node the part appears at. |
| quantity_per | integer | Quantity per one parent assembly, as on the item row. |
+2 more columns in part_where_used. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| supersession_id | varchar(8) | Supersession key. Primary key. |
| part_id | varchar(16) | The superseded part. |
| superseded_by_part_id | varchar(16) | The successor part. Chains run two and three deep; exactly one documented loop exists. |
| effective_date | date | Date the supersession took effect. |
| reason_code | varchar(8) | Coded supersession reason. |
| reason_description | varchar(40) | The reason in words. |
| chain_depth | integer | Position of this link in its chain, derived. |
+1 more columns in part_supersessions. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| interchange_id | varchar(16) | Interchange key. Primary key. |
| part_id | varchar(16) | The part the record starts from. |
| interchangeable_with_part_id | varchar(16) | The part it interchanges with. |
| direction | varchar(16) | mutual or one_way. |
| note_code | varchar(8) | Optional remark code qualifying the interchange. |
| Column | Type | Description |
|---|---|---|
| family_id | varchar(8) | Family code. Primary key: EXC, RDT, ADT, DOZ, WHL or GRD. |
| family_name | varchar(32) | The machine family in words. |
| machine_class | varchar(16) | earthmoving, hauling, loading or grading. |
| family_description | varchar(96) | What the family covers in this catalogue. |
| Column | Type | Description |
|---|---|---|
| model_id | varchar(8) | Model number. Primary key. |
| family_id | varchar(8) | The family the model belongs to. |
| model_name | varchar(16) | Invented wordmark plus series number. No real designation scheme; the build asserts it. |
| operating_weight_kg | integer | Operating weight in kilograms. |
| engine_power_kw | integer | Engine power in kilowatts. |
| introduced_year | integer | First year of production. |
| withdrawn_year | integer | Last year of production. Empty while current. |
+2 more columns in equipment_models. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| variant_id | varchar(8) | Variant number. Primary key; the unit a BOM tree belongs to. |
| model_id | varchar(8) | The model this variant configures. |
| variant_code | varchar(16) | Family, weight class and configuration suffix. |
| variant_description | varchar(48) | The variant in words. |
| serial_from | integer | First serial number this variant covers. |
| serial_to | integer | Last serial number this variant covers. |
| climate_package | varchar(24) | temperate, arctic or high_altitude. |
+2 more columns in equipment_variants. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| group_id | varchar(24) | Assembly group code, family plus system plus a checksum-bearing sequence. Primary key. |
| system_code | varchar(8) | The machine system: ENG, HYD, UND, ELC, CAB, DRV or WRK. |
| system_name | varchar(32) | The system in words. |
| group_description | varchar(64) | The group in words, per family. |
| sort_order | integer | Catalogue sort position. |
| Column | Type | Description |
|---|---|---|
| kit_id | varchar(8) | Kit key. Primary key. |
| kit_part_number | varchar(16) | Generated checksum-bearing kit number. |
| kit_name | varchar(40) | The kit in words. |
| service_interval_hours | integer | Service interval the kit covers, in machine hours. |
| variant_id | varchar(8) | The variant the kit applies to. |
| Column | Type | Description |
|---|---|---|
| kit_item_id | varchar(16) | Kit item key. Primary key. |
| kit_id | varchar(8) | The kit this line belongs to. |
| part_id | varchar(16) | The part included, drawn from the variant tree. |
| quantity | integer | Quantity included in the kit. |
| sequence | integer | Line position within the kit. |
| Column | Type | Description |
|---|---|---|
| uom_code | varchar(8) | Unit key. Primary key. |
| uom_description | varchar(16) | The unit in words. |
| dimension | varchar(16) | count, length, volume or mass. |
| Column | Type | Description |
|---|---|---|
| class_code | varchar(8) | Class key. Primary key. |
| class_name | varchar(40) | The class in words. |
| class_description | varchar(40) | Whether the class is shared hardware or family specific. |
| class_kind | varchar(16) | COMMON for hardware shared across all families, FAMILY for family-specific classes. |
| Column | Type | Description |
|---|---|---|
| remark_code | varchar(8) | Remark key. Primary key. |
| remark_description | varchar(80) | The fitment remark in words. |
Sample Data
A snapshot of real rows from the dataset (values are fully synthetic).
| item_id | header_id | part_id | callout_position | quantity_per | unit_of_measure | effective_from_serial | effective_to_serial | remark_code |
|---|---|---|---|---|---|---|---|---|
| BI0000001 | H00004 | P025323 | 1 | 4 | EA | 11001 | 17564 | |
| BI0000002 | H00004 | P009155 | 2 | 2 | EA | 11001 | 17564 | |
| BI0000003 | H00004 | P003327 | 3 | 3 | EA | 11001 | 13187 | RM01 |
Version History
| v1.0.1 | 2026-08-12 | Maintenance release. The three code tables are now declared, enforced foreign keys: unit_of_measure and remark_code on the item lines and class_code and unit_of_measure on the part master reference uom_codes, remark_codes and part_classes, so the relationship diagram and the SQL edition carry the constraints the data always satisfied. Data unchanged. |
Related Datasets
Automotive Manufacturing Sales (EU)
ManufacturingA European automotive sales dataset across the electric transition: 12 brands, 112 models, 20 markets, four channels and five customer segments, monthly from 2016 to mid 2026, in which eight legacy European brands peak, crash, and lose a fifth of the market to battery electric entrants while their net debt climbs.
EV Battery Passport Degradation and Circularity Analytics Set (EU)
ManufacturingEU EV battery passport data linking materials, manufacturing, vehicle use, degradation, safety, second life, recycling and circular recovery.
Manufacturing Production and Orders (ASIA)
ManufacturingAn Asian manufacturing panel: 18 sectors, 90 manufacturers, 468 plants across 12 economies, with monthly production at line grain, orders and backlogs, shipments, an exact inventory identity, employment and producer prices from 2016 to mid 2026 across the decade's full cycle.