AgentSkillsCN

data-modeling

维度建模、规范化和分析模式设计。

SKILL.md
--- frontmatter
name: data-modeling
description: Dimensional modeling, normalization, and schema design for analytics.

Data Modeling

Dimensional Modeling

Star Schema

code
        ┌─────────────┐
        │ dim_date    │
        └──────┬──────┘
               │
┌──────────┐   │   ┌──────────────┐
│dim_store │───┼───│  fct_sales   │
└──────────┘   │   └──────────────┘
               │
        ┌──────┴──────┐
        │dim_product  │
        └─────────────┘

Fact Tables

sql
CREATE TABLE fct_sales (
    sale_id BIGINT PRIMARY KEY,
    date_key INT REFERENCES dim_date(date_key),
    store_key INT REFERENCES dim_store(store_key),
    product_key INT REFERENCES dim_product(product_key),
    quantity INT,
    unit_price DECIMAL(10,2),
    total_amount DECIMAL(10,2),
    _loaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Dimension Tables

sql
CREATE TABLE dim_product (
    product_key INT PRIMARY KEY,
    product_id VARCHAR(50),  -- Natural key
    name VARCHAR(255),
    category VARCHAR(100),
    subcategory VARCHAR(100),
    brand VARCHAR(100),
    -- SCD Type 2 fields
    valid_from DATE,
    valid_to DATE,
    is_current BOOLEAN
);

SCD Types

TypeDescriptionUse Case
Type 1OverwriteCorrections
Type 2New row + versioningTrack history
Type 3Previous value columnLimited history

Normalization

FormRule
1NFAtomic values, no repeating groups
2NF1NF + no partial dependencies
3NF2NF + no transitive dependencies

Naming Conventions

  • dim_ prefix for dimensions
  • fct_ prefix for facts
  • stg_ prefix for staging
  • int_ prefix for intermediate
  • Snake_case for columns