SAP Material Master data model
Third-normal-form mirror of the SAP material master as it lands from the source ERP. Each organizational view (plant, storage, valuation, sales, UoM) becomes its own entity hanging off the MARA general record by foreign key, matching SAP's view-per-org-level segmentation; the bill of material is normalized into header (STKO) and item (STPO) tables.
Normalized replica of the SAP ECC/S4HANA material master multi-view tables for a warehouse staging/replication layer: general data (MARA), descriptions (MAKT), plant (MARC), storage location (MARD), valuation (MBEW), sales (MVKE) and unit-of-measure conversions (MARM), plus BOM header (STKO) and item (STPO) — keyed by the real SAP business keys (matnr, werks, lgort, bwkey, vkorg, meinh, stlnr) and anchored to T134/material-group/UoM/plant check tables. It is a normalized (3NF) relational model that mirrors the source system, suited to operational databases and to landing source data faithfully.
- 13
- tables
- 103
- columns
- 12
- relationships
- 1
- PII columns
Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: PostgreSQL). Edit it in plain English or on the canvas, then ship it to any supported warehouse.
Subject areas
Design decisions
View-per-organizational-level normalization mirrors SAP
SAP maintains the material master in segments keyed by organizational level — MARA (client), MARC (plant), MARD (storage location), MBEW (valuation area), MVKE (sales org/channel); replicating each segment as its own table preserves that multi-view structure losslessly.
Descriptions and UoM conversions split out
MAKT (one row per language) and MARM (one row per alternative unit) are 1:many off the material; separate tables avoid repeating the general data and respect 3NF by removing the multi-valued language/UoM dependency.
Bill of material normalized into header and item
SAP stores BOMs as STKO (header, keyed by stlnr/stlal) → STPO (item); replicating that header/item split keeps component lists out of the material master and supports alternative/variant BOMs.
Check tables modeled as lookups
Material type (T134), material group, base UoM and plant (T001W) are slow SAP check tables; modeling them as lookups without an audit trail keeps reference data clean and avoids re-keying every material segment row.
Tables in the SAP Material Master model
Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.
Tables (9)
material_general
Grain: one row per material (matnr)
SAP MARA — material master general data.
| Column | Type | Keys |
|---|---|---|
| material_general_key | bigint | PK |
| material_type_key | bigint | |
| material_group_key | bigint | |
| base_uom_key | bigint | |
| matnr | varchar | BK |
| mtart | varchar | |
| matkl | varchar | |
| meins | varchar | |
| mbrsh | varchar | |
| brgew | decimal | |
| ntgew | decimal | |
| gewei | varchar | |
| ersda | date | |
| ernam | varchar | PII |
| lvorm | boolean |
material_description
Grain: one row per material per language (matnr, spras)
SAP MAKT — material descriptions.
| Column | Type | Keys |
|---|---|---|
| material_description_key | bigint | PK |
| material_general_key | bigint | |
| matnr | varchar | BK |
| spras | varchar | BK |
| maktx | varchar |
material_plant
Grain: one row per material per plant (matnr, werks)
SAP MARC — material master plant data.
| Column | Type | Keys |
|---|---|---|
| material_plant_key | bigint | PK |
| material_general_key | bigint | |
| plant_key | bigint | |
| matnr | varchar | BK |
| werks | varchar | BK |
| ekgrp | varchar | |
| dismm | varchar | |
| dispo | varchar | |
| beskz | varchar | |
| plifz | decimal | |
| eisbe | decimal | |
| lvorm | boolean |
material_storage
Grain: one row per material per storage location (matnr, werks, lgort)
SAP MARD — material master storage location/batch segment.
| Column | Type | Keys |
|---|---|---|
| material_storage_key | bigint | PK |
| material_plant_key | bigint | |
| matnr | varchar | BK |
| werks | varchar | BK |
| lgort | varchar | BK |
| labst | decimal | |
| insme | decimal | |
| speme | decimal | |
| lvorm | boolean |
material_valuation
Grain: one row per material per valuation area (matnr, bwkey, bwtar)
SAP MBEW — material valuation.
| Column | Type | Keys |
|---|---|---|
| material_valuation_key | bigint | PK |
| material_general_key | bigint | |
| matnr | varchar | BK |
| bwkey | varchar | BK |
| bwtar | varchar | BK |
| vprsv | varchar | |
| verpr | decimal | |
| stprs | decimal | |
| peinh | decimal | |
| salk3 | decimal | |
| waers | varchar |
material_sales
Grain: one row per material per sales org/channel (matnr, vkorg, vtweg)
SAP MVKE — material master sales data.
| Column | Type | Keys |
|---|---|---|
| material_sales_key | bigint | PK |
| material_general_key | bigint | |
| matnr | varchar | BK |
| vkorg | varchar | BK |
| vtweg | varchar | BK |
| dwerk | varchar | |
| ktgrm | varchar | |
| mtpos | varchar | |
| taxm1 | varchar | |
| lvorm | boolean |
material_uom
Grain: one row per material per alternative UoM (matnr, meinh)
SAP MARM — units of measure for material.
| Column | Type | Keys |
|---|---|---|
| material_uom_key | bigint | PK |
| material_general_key | bigint | |
| matnr | varchar | BK |
| meinh | varchar | BK |
| umrez | decimal | |
| umren | decimal | |
| eannr | varchar |
bom_header
Grain: one row per BOM header (stlnr, stlal)
SAP STKO — BOM header.
| Column | Type | Keys |
|---|---|---|
| bom_header_key | bigint | PK |
| stlnr | varchar | BK |
| stlal | varchar | BK |
| stlty | varchar | |
| bmein | varchar | |
| bmeng | decimal | |
| datuv | date | |
| stlst | varchar |
bom_item
Grain: one row per BOM item (stlnr, stlkn)
SAP STPO — BOM item.
| Column | Type | Keys |
|---|---|---|
| bom_item_key | bigint | PK |
| bom_header_key | bigint | |
| component_material_key | bigint | |
| stlnr | varchar | BK |
| stlkn | varchar | BK |
| posnr | varchar | |
| idnrk | varchar | |
| menge | decimal | |
| meins | varchar | |
| postp | varchar |
Lookup tables (4)
material_type
Grain: one row per material type
SAP T134 / T134T — material type check table.
| Column | Type | Keys |
|---|---|---|
| material_type_key | bigint | PK |
| mtart | varchar | BK |
| mtbez | varchar | |
| mbrsh | varchar |
material_group
Grain: one row per material group
SAP T023 / T023T — material group check table.
| Column | Type | Keys |
|---|---|---|
| material_group_key | bigint | PK |
| matkl | varchar | BK |
| wgbez | varchar |
base_uom
Grain: one row per unit of measure
SAP T006 / T006A — unit of measure check table.
| Column | Type | Keys |
|---|---|---|
| base_uom_key | bigint | PK |
| meins | varchar | BK |
| msehl | varchar | |
| dimid | varchar |
plant
Grain: one row per plant
SAP T001W — plant/branch check table.
| Column | Type | Keys |
|---|---|---|
| plant_key | bigint | PK |
| werks | varchar | BK |
| name1 | varchar | |
| land1 | varchar | |
| bukrs | varchar |
Relationships
Each relationship is a foreign key on the first table referencing the second.
- material_general.material_type_key → material_type (many-to-one)
- material_general.material_group_key → material_group (many-to-one)
- material_general.base_uom_key → base_uom (many-to-one)
- material_description.material_general_key → material_general (many-to-one)
- material_plant.material_general_key → material_general (many-to-one)
- material_plant.plant_key → plant (many-to-one)
- material_storage.material_plant_key → material_plant (many-to-one)
- material_valuation.material_general_key → material_general (many-to-one)
- material_sales.material_general_key → material_general (many-to-one)
- material_uom.material_general_key → material_general (many-to-one)
- bom_item.bom_header_key → bom_header (many-to-one)
- bom_item.component_material_key → material_general (many-to-one)
Related templates
All templates →From requirements to AI-ready context, in one platform.
Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.
