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
legal_document¶
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