2. How three different governance approaches produce radically different models.
3. How modeling quality propagates into feature stores, training data, and ML model performance.
4. What a data operating model looks like at each governance maturity level.
This page is a companion to the Data Governance Scenarios visualization. The three scenarios referenced here (Ideal (Governed), Scenario 1 (Without Business Owners), and Scenario 2 (No Governance)) are defined in full on that page.
Six business entities form the backbone of ShaDey Inc.'s data landscape. Every data product draws from one or more of these.
ShaDey Inc. aims to produce seven governed data products. Each has a domain owner, defined consumers, and SLAs.
Conceptual Data Model
CDM- Purpose
- Define what the business cares about (entities, relationships, and domain boundaries) in business language.
- Audience
- Business Owners, Data Owners, CDO, Compliance, Data Architects
- Key Artifacts
- Entity definitions, glossary terms, ontology (IS-A, HAS-A, PART-OF), taxonomy, domain map, RACI matrix
- Technology
- None: completely technology-agnostic
- Answers
- "What are the things we need to know about, and how do they relate?"
Logical Data Model
LDM- Purpose
- Define what attributes each entity has, their data types, constraints, business rules, and valid values, independent of any database.
- Audience
- Data Owners, Data Architects, Data Modelers, Data Stewards
- Key Artifacts
- Attribute definitions, data types, constraints, business rules, quality rules, normalization (3NF), reference data lists
- Technology
- Database-agnostic: no specific vendor or engine
- Answers
- "What do we need to know about each thing, and what rules govern that data?"
Physical Data Model
PDM- Purpose
- Define how data is physically stored: table names, column types, indexes, partitions, and performance optimization.
- Audience
- Data Architects, Data Engineers, Data Modelers, DBAs
- Key Artifacts
- DDL (CREATE TABLE), naming conventions, indexes, partitions, SCD strategies, surrogate keys, storage optimization
- Technology
- Specific to target platform (Snowflake, Databricks, BigQuery, etc.)
- Answers
- "How do we implement this for performance, scalability, and governed access?"
All stakeholders collaborate at every layer. Business meaning flows from concept to pipeline with full metadata, ontology, and quality governance.
- Business Owners define entity meaning
- Data Owners validate rules and quality
- Data Architects design the model
- CDO approves domain structure
- Compliance reviews PII and regulatory scope
Data Architects and Modelers build the CDM and LDM in isolation. Business glossary terms are assumed, not validated. Engineering implements from a flawed blueprint.
- Business Owners: no entity validation
- Data Owners: no rule sign-off
- CDO: no domain approval
- Compliance: no PII review
Data Engineering builds pipelines and physical tables directly from source systems. No CDM, no LDM, no business glossary, no ontology, no metadata, no data contracts.
- Entire Conceptual layer: skipped
- Entire Logical layer: skipped
- Business glossary: does not exist
- Data contracts: does not exist
Business Owners, Data Owners, and Data Architects define what matters. Every entity has a glossary definition, domain owner, and ontology relationships.
B2C B2B Wholesale
Domain: Customer Management | Owner: VP, Customer Operations
POS E-Commerce B2B
Domain: Sales & Revenue | Owner: Head of Sales Operations
Ontology: Product IS-A MaterialItem; Product BELONGS-TO Category; Product HAS-MANY Variants
Domain: Merchandising | Owner: VP, Merchandising
Ontology: Store PART-OF Region; Region PART-OF Territory
Domain: Store Operations | Owner: VP, Retail Operations
Domain: Supply Chain | Owner: VP, Supply Chain
Ontology: Supplier PROVIDES Product; Supplier HAS-A Contract
Domain: Procurement | Owner: VP, Procurement
Governance artifacts at the CDM layer
- Business glossary with 6 entity definitions approved by domain owners
- Ontology relationships documented (IS-A, HAS-A, BELONGS-TO, PART-OF, PROVIDES)
- Taxonomy: Sales, Supply Chain, Finance, Customer, Merchandising, Procurement domains classified
- RACI matrix signed off by CDO
- PII scope identified (Customer entity: name, email, address)
- Regulatory scope: GDPR for EU customers, SOX for financial reporting
- Naming convention: full English words, PascalCase (Customer, SalesOrder, StoreLocation)
Data Owners and Data Modelers define every attribute with business definitions, data types, constraints, valid values, and quality rules. We show Customer and Supplier in detail.
| Attribute | Type | Constraint | Glossary / Business Rule |
|---|---|---|---|
customer_id | UUID | PK, NOT NULL | Globally unique identifier, system-generated |
full_name | VARCHAR(200) | NOT NULL | PII: requires masking in non-prod environments |
email | VARCHAR(255) | UNIQUE, NOT NULL | PII: consent required for marketing use (GDPR Art. 6) |
customer_type | ENUM | NOT NULL, DEFAULT 'B2C' | B2C | B2B | Wholesale: determines pricing tier and payment terms |
loyalty_tier | ENUM | NULLABLE | Bronze | Silver | Gold | Platinum: recalculated monthly from trailing 12-month spend |
registration_date | DATE | NOT NULL | Date of first purchase or explicit account creation |
preferred_channel | ENUM | NULLABLE | Store | Online | App: derived from behavioral analysis |
ltv_segment | ENUM | NULLABLE | High | Medium | Low: output of LTV model, refreshed quarterly |
primary_store_id | UUID | FK → Store | Most-frequented physical store (from transaction history) |
customer_typedetermines pricing tier and payment termsloyalty_tierrecalculated monthly from trailing 12-month spendemailmust be unique across all customer types- Customers inactive >24 months flagged for GDPR right-to-erasure review
| Attribute | Type | Constraint | Glossary / Business Rule |
|---|---|---|---|
supplier_id | UUID | PK, NOT NULL | Globally unique identifier |
supplier_name | VARCHAR(200) | NOT NULL | Legal entity name as registered |
supplier_type | ENUM | NOT NULL | Manufacturer | Distributor | Importer: determines lead time expectations |
country_code | CHAR(3) | NOT NULL | ISO 3166-1 alpha-3: used for trade compliance |
lead_time_days | INTEGER | NOT NULL | Average calendar days from PO to delivery at warehouse |
quality_rating | DECIMAL(3,2) | CHECK 0.00–5.00 | Rolling 12-month rating based on defect rate, fill rate, on-time delivery |
contract_start_date | DATE | NOT NULL | Effective date of current master agreement |
payment_terms | VARCHAR(20) | NOT NULL | Net30 | Net60 | Net90: from procurement agreement |
is_certified | BOOLEAN | DEFAULT FALSE | TRUE if supplier passed ShaDey Inc. quality audit in last 12 months |
primary_category_id | UUID | FK → ProductCategory | Primary product category this supplier provides |
quality_ratingcompleteness ≥ 99%, accuracy validated quarterlycountry_codevalidity = 100% against ISO reference datais_certifiedmust be refreshed annually; expired certifications auto-set to FALSE- Duplicate detection on
supplier_name+country_code
Order, Product, Store, Inventory attributes (click to expand)
| Attribute | Type | Constraint | Note |
|---|---|---|---|
order_id | UUID | PK | Unique per transaction |
customer_id | UUID | FK → Customer | Who purchased |
store_id | UUID | FK → Store | Where purchased |
order_date | TIMESTAMP | NOT NULL | Transaction timestamp (UTC) |
channel | ENUM | NOT NULL | POS | Web | App | Phone |
total_amount | DECIMAL(12,2) | NOT NULL | After discounts, before tax |
currency | CHAR(3) | DEFAULT 'USD' | ISO 4217 |
status | ENUM | NOT NULL | Placed | Shipped | Delivered | Returned |
| Attribute | Type | Constraint | Note |
|---|---|---|---|
product_id | UUID | PK | System-generated |
sku | VARCHAR(30) | UNIQUE, NOT NULL | Stock-keeping unit |
product_name | VARCHAR(200) | NOT NULL | Marketing name |
category | VARCHAR(100) | NOT NULL | From product hierarchy |
department | VARCHAR(100) | NOT NULL | Top-level grouping |
unit_cost | DECIMAL(10,2) | NOT NULL | Landed cost from supplier |
unit_price | DECIMAL(10,2) | NOT NULL | Retail selling price |
primary_supplier_id | UUID | FK → Supplier | Primary supply source |
| Attribute | Type | Constraint | Note |
|---|---|---|---|
store_id | UUID | PK | System-generated |
store_name | VARCHAR(100) | NOT NULL | Display name |
store_type | ENUM | NOT NULL | Physical | E-Commerce | Pop-Up |
region | VARCHAR(50) | NOT NULL | Geographic region |
territory | VARCHAR(50) | NOT NULL | Sales territory |
open_date | DATE | NOT NULL | Date store opened |
| Attribute | Type | Constraint | Note |
|---|---|---|---|
inventory_id | UUID | PK | Composite natural key: product + store + date |
product_id | UUID | FK → Product | Which product |
store_id | UUID | FK → Store | Which location |
quantity_on_hand | INTEGER | NOT NULL, ≥ 0 | Current sellable units |
quantity_on_order | INTEGER | DEFAULT 0 | Units in transit from supplier |
snapshot_date | DATE | NOT NULL | Date of stock count |
Dimensional model (star schema) with consistent naming, SCD Type 2 for slowly changing dimensions, governed naming conventions, and full lineage to the LDM.
fact_order, dim_product, dim_store, fact_inventory DDL (click to expand)
dim_prefix for dimensions,fact_for fact tables,ref_for reference data,stg_for staging_sksuffix for surrogate keys,_idfor natural keys,_codefor coded values- Snake_case, full words, no abbreviations
Pipelines implement ETL with full lineage, quality gates, and formal data contracts.
- Role-based access: Analyst, Engineer, Steward, Admin
- Column-level masking on PII fields
- Row-level security by region/territory
- Audit log for all data access
- Column-level lineage: source → staging → dim/fact
- Business glossary linked to every column
- Impact analysis for schema changes
- Automated data catalog (e.g., DataHub, Collibra)
- Schema version, SLA (freshness ≤ 15 min)
- Quality thresholds (null rate < 0.1%)
- Owner, consumers, breaking-change policy
- Automated enforcement via CI/CD
Entities are named after source system objects (SAP tables) rather than business concepts. No glossary validation, no ontology sign-off.
No distinction between B2C/B2B/Wholesale. No glossary. No domain owner assigned.
Ontology: Cust HAS-A AccountNumber (technical, not business relationship)
Named after source table. Includes orders, returns, and credit memos in a single entity (no business distinction).
Called "Material" (SAP term) instead of "Product" (business term). Missing: Category hierarchy, Variant concept, Department.
"Plant" is an SAP concept, not how the business thinks about stores. E-commerce not represented.
- Entity names mirror source system, not business language
- "Order" mixed with returns and credit memos in "SalesDoc"
- "Inventory" entity missing entirely, assumed to be a Plant attribute
- "Supplier" entity missing, treated as a field on Material
- No glossary, no ontology validation, no domain ownership, no PII identification
Attributes defined from data profiling only. No business validation. Abbreviated names, missing attributes, guessed business rules.
| Attribute | Type | Constraint | Problem |
|---|---|---|---|
cust_id | INT | PK | INT not UUID: tied to source system sequence |
nm | VARCHAR(50) | – | Truncated name, nullable, not flagged PII |
email | VARCHAR(100) | – | Not flagged PII, not unique, nullable |
tp | VARCHAR(10) | – | No valid values defined. Contains "1","2","3" |
reg_dt | DATE | – | Abbreviated name, inconsistent convention |
- Missing:
loyalty_tier,preferred_channel,ltv_segment,primary_store_id tpcontains "1","2","3": engineers guess these mean customer types (they're actually status codes)- No business rules documented: pricing tier logic unknown
- No quality rules: 15% of
emailvalues are NULL
Supplier LDM in Scenario 1 (click to expand)
Supplier is not modeled as a separate entity. Instead, a vendor_no field exists on the Material entity:
| Attribute | Type | Problem |
|---|---|---|
vendor_no | VARCHAR(10) | SAP vendor number, no link to supplier master. Cannot track lead time, quality, or contracts. |
vendor_nm | VARCHAR(50) | Denormalized on Material. If vendor changes name, must update every product. |
- No supplier entity: cannot build Supplier Scorecard data product
- No quality rating, lead time, or certification tracking
- No supplier-to-product relationship model
Tables built on the flawed LDM. No star schema, no SCD, no surrogate keys.
- Database-level grants only (no column masking)
- PII not identified: no masking rules
- No audit trail for data access
- Partial lineage (tool-generated, not validated)
- No business glossary linked to columns
- Schema changes documented informally in wiki
- Informal contracts: schema only, no SLA
- No quality thresholds enforced
- Consumers discover breaking changes after deployment
There is no shared definition of what "Customer", "Product", or "Supplier" means at ShaDey Inc. Each team and pipeline defines these concepts independently.
No shared attribute definitions, no data types, no business rules, no quality rules. Engineers infer structure from source system exports and Slack conversations.
Ad-hoc tables created per JIRA ticket by different engineers. No naming convention, no design, no documentation.
- 3 "customer" tables: different schemas, different IDs, different row counts (1.2M / 890K / 1.4M)
- No surrogate keys, no foreign keys, no referential integrity
- No naming convention:
_v2,_final_FINAL, single-letter columns - Supplier data: a CSV file on a shared drive, loaded manually once a quarter
- ML teams pick whichever table "looks right," and different models use different tables
- Shared service account for all pipelines
- PII flowing unmasked into ML training sets
- No audit log: GDPR violation risk
- No lineage: nobody knows where data comes from
- No catalog: discovery via Slack questions
- "Ask Priya, she might know that table"
- No contracts: schema changes break downstream
- No SLAs: pipelines fail silently
- No versioning: tables overwritten in place
| Dimension | Ideal: Governed | Scenario 1: Without Business | Scenario 2: No Governance |
|---|---|---|---|
| CDM Entities | 6 entities with glossary definitions, ontology, domain ownership, PII classification Complete | 4 entities named after source system (Cust, SalesDoc, Material, Plant). No glossary Degraded | Does not exist Missing |
| LDM Attributes | 9 Customer attrs, 10 Supplier attrs. Full types, constraints, valid values, business rules, quality rules Complete | 5 Customer attrs with abbreviations. No constraints, no business rules. Supplier = 2 fields on Material Incomplete | Does not exist Missing |
| PDM Design | Star schema: dim_/fact_. SCD2, surrogate keys, partitioned, naming convention, lineage Governed |
Flat tables: tbl_customer, tbl_sales. No SCD, FLOAT for money, mixed doc types Flawed |
3 conflicting customer tables, no design, no convention Chaotic |
| Master / Reference Data | Centrally managed reference tables (currency, country, product category). Single source of truth Managed | Hard-coded in pipelines. "1","2","3" for customer type with no reference lookup Ad-hoc | Each pipeline has its own enums. Inconsistent across teams Absent |
| Naming Convention | dim_customer, fact_order, customer_type, order_date |
tbl_customer, tbl_sales, tp, nm, amt |
customers, cust_data_v2, customer_export_final_FINAL |
| Access Control | Role-based, column-level PII masking, row-level security, audit log Controlled | Database-level grants only, no PII masking Partial | Shared service account, PII in ML training sets unmasked None |
| Metadata & Lineage | Full column-level lineage, business glossary linked, automated catalog Complete | Partial lineage (tool-generated), no glossary link, wiki docs Partial | No lineage, no catalog, discovery via Slack None |
| Data Contracts | Schema + SLA + quality thresholds + versioning on every pipeline output Enforced | Informal wiki page with schema only, no SLA, no quality gates Informal | No contracts. Schema changes break consumers silently None |
| PII Handling | Tagged at CDM, masked in non-prod, consent tracked Compliant | Not identified at modeling stage. Discovered during audit Risky | PII flowing into ML training sets unmasked Non-compliant |
| Supplier Data Product | Full dim_supplier with 10 attributes, quality rating, certification, lead time Available |
2 vendor fields on Material entity. Cannot build Supplier Scorecard Impossible | CSV on shared drive. Manual quarterly load Absent |
| Time to New Feature | 1–2 days (documented sources, clear lineage) | 1–2 weeks (reverse-engineer meaning, validate assumptions) | 3–6 weeks (archaeology: find table, guess schema, ask around) |
Predict which customers will stop purchasing within 90 days. Requires: demographics, RFM (recency/frequency/monetary), loyalty, channel, and store affinity features.
fact_order
Engineering
Store
Model
fact_order.order_datedim_customer.loyalty_tier (SCD2 current)tbl_sales
Engineering
Features
Model
tbl_sales.doc_dt (DATE, not TIMESTAMP)cust_data_v2?
Exercise
Features
Model
Score suppliers by risk of disruption based on lead time variance, defect rate, fill rate, and certification status.
dim_supplier.lead_time_days + PO historydim_supplier.quality_ratingSupplier is not a separate entity. Only
vendor_no and vendor_nm exist on the Material record. No lead time, quality rating, or certification data available.
Updated manually once a quarter. Contains vendor names and phone numbers. No structured data for ML consumption.
The ML Feature Store is the AI/ML training consumption layer, a governed, versioned repository of pre-computed features that all models draw from.
- Every feature has: name, description, source lineage, owner, SLA
- Features are versioned (v1, v2) with deprecation policy
- Data contracts: freshness ≤ 24h, null rate < 0.1%
- PII features are masked or excluded from training sets
- Single source of truth: all models share the same features
- Point-in-time correctness: no data leakage in training sets
- Features undocumented: logic in notebooks
- No versioning: feature logic changes silently
- No SLAs: stale features go unnoticed
- PII not identified in feature pipelines
- Feature duplication: 3 teams compute "recency" differently
- No feature store exists
- Each model computes features from scratch
- Features embedded in training notebooks (not reusable)
- PII in training data: regulatory violation
- No point-in-time correctness: data leakage endemic
- Model reproducibility: impossible
loyalty_tier is recalculated monthly from trailing 12-month spend is not a business detail; it's the strongest predictor of churn. When business rules are undocumented (Scenario 1) or nonexistent (Scenario 2), the most valuable features cannot be engineered.
| Metric | Ideal | Scenario 1 | Scenario 2 |
|---|---|---|---|
| Churn Model AUC | 92% | 74% | 61% |
| Supplier Risk Model | 89% AUC | Not Possible | Not Possible |
| Data Products Possible | 7 of 7 | 4 of 7 | 1 of 7 (degraded) |
| Feature Engineering Time | 1–2 days | 1–2 weeks | 3–6 weeks |
| Annual Cost Impact | Saves $3.3M | Wastes $3.8M | Wastes $4.5M+ |
| Governance Score | 95% | 40% | 10% |
For the companion visualization of these three governance scenarios with detailed stakeholder analysis, quality dimensions, certification gates, and remediation roadmaps, see Data Governance Scenarios. For the full product lifecycle from market need through continuous improvement, see the Product Lifecycle Journey.