OLHub

Schema design

Data types, constraints, normalization 1NF→3NF, denormalization tradeoff, surrogate vs natural key (UUID/ULID), migration với Atlas.

6 bài · ~116 phút

Nội dung

Danh sách bài học

  1. 01

    Data types — vì sao TIMESTAMPTZ thay TIMESTAMP cứu deploy multi-region

    PG types: int variants, TEXT vs VARCHAR(n), TIMESTAMPTZ vs TIMESTAMP, NUMERIC vs FLOAT (money), UUID, BYTEA, ARRAY, RANGE. 4 type pitfall production.

    ~18 phút
  2. 02

    Constraints — DB last line of defense, không trust app validation

    NOT NULL, UNIQUE, PK, FK, CHECK, EXCLUDE, deferred constraint. Cascading. Vì sao app-level validate race-prone, DB-level enforce safe.

    ~18 phút
  3. 03

    Normalization 1NF→3NF — refactor TaskFlow tags TEXT thành junction table

    1NF atomic value, 2NF no partial dependency, 3NF no transitive dependency. Codd 1970-1972. Pitfall over-normalize. TaskFlow refactor demo step-by-step.

    ~22 phút
  4. 04

    Denormalization tradeoff — khi nào break 3NF có chủ đích

    Read vs write amplification. 3 pattern: cached column (denormalized FK label), counter table (precomputed COUNT), materialized view. Sync mechanism trigger/app/CDC.

    ~18 phút
  5. 05

    Surrogate vs natural key — UUIDv7 thay UUIDv4 cứu B-tree page split

    Bigserial vs UUID v4 vs UUIDv7 vs natural key. Page split cost, enumeration attack risk, distributed system tradeoff. Snowflake context.

    ~18 phút
  6. 06

    Migration với Atlas — declarative state thay Flyway/Liquibase imperative

    Atlas declarative workflow + 50+ lint rules. Vì sao thay Flyway 2025-2026. Liquibase chuyển FSL. Demo apply + revert + CI gate.

    ~22 phút