Skip to content

Cơ sở dữ liệu

Cloudflare D1, database conan-compass.

FileNội dung
0001_init.sqlBảng lõi: năng lực, Brand, đánh giá, người dùng, nhật ký
0002_seed.sqlSinh tự động từ scripts/model.mjs
0003_execution.sqlTầng thực thi và chuyển đổi
0004_execution_seed.sqlSinh tự động từ scripts/execution.mjs

capabilities — mô hình chuẩn

CộtKiểuGhi chú
idTEXT PKCAP-02-01-03 — bản thân ID thể hiện cây
codeTEXT UNIQUEslug dùng trong URL
levelINTEGER1–3
parent_idTEXT FKNULL với L1
sortINTEGERthứ tự hiển thị
name_en / name_viTEXTsong ngữ
definition_en / definition_viTEXTmô tả WHAT
statusTEXTactive · draft · deprecated

Khoá ngoại parent_id dùng ON DELETE RESTRICT: không thể xoá một năng lực còn con.

brands

id dạng BRD-nemo12, code là slug, tên và mô tả song ngữ, statusactive · draft · archived.

brand_capabilities — thực tế của Brand

Một dòng ở đây nghĩa là Brand đã kích hoạt năng lực đó.

CộtGhi chú
importance, priority, health, maturity, target_maturity1–5, cho phép NULL
likelihood, impact, detectability1–5, ba nguyên nhân của risk
ownertên người chịu trách nhiệm
rationalebắt buộc khi priority = 5
notesghi chú tự do

UNIQUE (brand_id, capability_id) đảm bảo mỗi Brand chỉ có một đánh giá cho mỗi năng lực.

Điểm rủi ro không được lưu thành cột. Nó là tích của ba nguyên nhân và được tính khi hiển thị — lưu lại chỉ tạo cơ hội để nó lệch khỏi nguồn.

users

CộtGhi chú
emailPK, khớp với email trong Access JWT
rolearchitect · executive · brand_owner · viewer
brand_idphạm vi của brand_owner

audit_log

actor, action, entity, entity_id, before, after (JSON), created_at. Mọi thao tác ghi đều tạo một dòng. Bảng này không bao giờ bị xoá.

Tầng thực thi (0003_execution.sql)

BảngVai trò
value_streams, value_stream_stagesChuỗi giá trị và các chặng
stage_capabilitiesChặng phụ thuộc vào năng lực nào
processesQuy trình L4, gắn với một năng lực, brand_id rỗng nghĩa là dùng chung
activitiesBước trong quy trình, có thứ tự
applicationsDanh mục ứng dụng, có vòng đời
data_entitiesThực thể dữ liệu, có steward và mức phân loại
technologiesCông nghệ nền
capability_applications, capability_dataNăng lực ↔ ứng dụng, năng lực ↔ dữ liệu
application_technologies, application_dataỨng dụng ↔ công nghệ, ứng dụng ↔ dữ liệu

Công nghệ không có bảng nối trực tiếp tới năng lực. Quan hệ đó được suy ra qua ứng dụng, nên không thể xuất hiện mâu thuẫn giữa hai đường dẫn.

Chuyển đổi

BảngVai trò
initiativesSáng kiến, trạng thái, giai đoạn, đầu tư, tiến độ
initiative_capabilitiesSáng kiến cải thiện năng lực nào
kpisBaseline / current / target cho một năng lực, tuỳ chọn theo Brand

Quy ước brand_id

Với processes, applications, value_streams, initiativeskpis, brand_id = NULL nghĩa là dùng chung toàn doanh nghiệp, không phải "thiếu dữ liệu". Giao diện hiển thị nhãn Dùng chung, và khi xem ở phạm vi một Brand thì các bản ghi dùng chung vẫn hiện.

Nạp lại dữ liệu

bash
cd api.conan1.com
node scripts/seed.mjs   # sinh lại 0002 và 0004 từ scripts/model.mjs + scripts/execution.mjs
npm run db:local        # nạp toàn bộ migrations vào D1 local
npm run db:remote       # nạp vào D1 production

DANGER

Các file seed bắt đầu bằng DROP TABLE IF EXISTSDELETE FROM. Chạy chúng trên production sẽ xoá sạch dữ liệu hiện có. Chỉ dùng khi khởi tạo lần đầu, hoặc khi chủ đích muốn dựng lại từ đầu. Thay đổi schema về sau nên viết thành file migration mới, tăng số thứ tự.