Bỏ qua

Thuộc Thiết Kế CSDL — Nhóm Căn cứ Pháp lý & Danh mục

Chi Tiết Entity — Căn Cứ Pháp Lý & Danh Mục

Bảng: legal_document, reference_catalog, reference_item


Lưu trữ danh sách các nghị định, thông tư pháp lý là căn cứ ban hành bộ dữ liệu. Được liên kết 1-nhiều tới các data_element.

CREATE TABLE legal_document (
    id              BIGSERIAL PRIMARY KEY,
    public_id       UUID NOT NULL DEFAULT uuidv7(), -- ID public cho API/external integration
    document_number TEXT UNIQUE NOT NULL,        -- Số hiệu (VD: 60/2024/QH15)
    title           TEXT NOT NULL,               -- Trích yếu (VD: Luật Dữ liệu)
    issued_date     DATE,                        -- Ngày ban hành
    effective_date  DATE,                        -- Ngày có hiệu lực
    issued_by       TEXT,                        -- Cơ quan ban hành (VD: Quốc hội)
    document_url    TEXT,                        -- Link tra cứu
    is_active       BOOLEAN NOT NULL DEFAULT TRUE,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE UNIQUE INDEX idx_ld_public_id ON legal_document (public_id);
CREATE INDEX idx_ld_active ON legal_document (is_active) WHERE is_active = TRUE;

Business Rules: - Ghi nhận đầy đủ nguồn gốc căn cứ dữ liệu để phục vụ kiểm toán Data Governance theo mô hình chuẩn DAMA-DMBOK. - Không xóa cứng, chỉ đánh dấu is_active = FALSE.


reference_catalog

Danh mục dùng chung (Bộ mã ngành, Bộ mã loại hình...). Thay thế cho các cấu trúc Check Constraint Hardcode trong Codebase.

CREATE TABLE reference_catalog (
    id              BIGSERIAL PRIMARY KEY,
    public_id       UUID NOT NULL DEFAULT uuidv7(), -- ID public cho API/external integration
    catalog_code    TEXT UNIQUE NOT NULL,        -- Mã danh mục (VD: LOAI_TTHC)
    name            TEXT NOT NULL,               -- Tên danh mục (VD: Loại thủ tục hành chính)
    description     TEXT,                        -- Mô tả
    source_system   TEXT,                        -- Hệ thống cung cấp gốc (VD: CSDL Quốc gia, local)
    is_active       BOOLEAN NOT NULL DEFAULT TRUE,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE UNIQUE INDEX idx_rc_public_id ON reference_catalog (public_id);

Business Rules: - Khóa đóng vai trò quy chuẩn nhóm dữ liệu Enumeration (thanh vì define thủ công trong Java Enum, toàn bộ nạp lên database). - Code phải là DUY NHẤT.


reference_item

Phần tử chi tiết nằm trong mỗi mảng của Danh mục dùng chung (Reference Catalog).

CREATE TABLE reference_item (
    id                    BIGSERIAL PRIMARY KEY,
    public_id             UUID NOT NULL DEFAULT uuidv7(), -- ID public cho API/external integration
    reference_catalog_id  BIGINT NOT NULL REFERENCES reference_catalog(id) ON DELETE CASCADE,
    item_code             TEXT NOT NULL,         -- Mã phần tử (VD: TTHC_1)
    item_value            TEXT NOT NULL,         -- Giá trị hiển thị
    display_order         INTEGER DEFAULT 0,     -- Thứ tự sắp xếp
    is_active             BOOLEAN NOT NULL DEFAULT TRUE,
    created_at            TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at            TIMESTAMPTZ NOT NULL DEFAULT NOW(),

    UNIQUE(reference_catalog_id, item_code)
);

CREATE UNIQUE INDEX idx_ri_public_id ON reference_item (public_id);
CREATE INDEX idx_ri_catalog ON reference_item (reference_catalog_id);
CREATE INDEX idx_ri_code ON reference_item (item_code);

Business Rules: - item_code phải duy nhất trong từng collection (từng danh mục) nhưng có thể trùng lặp giữa các danh mục khác nhau. - Chỉ cung cấp qua cached bộ nhớ Redis hoặc cơ chế read-replica để đảm bảo API truy xuất nhanh.


Cập nhật lần cuối: 2026-04-11