Data Modeling & Design là knowledge area thứ ba của DAMA-DMBOK2 — quá trình khám phá, phân tích, mô tả và trực quan hoá yêu cầu dữ liệu dưới dạng mô hình chính xác (data model). Bài này đi qua ba cấp mô hình (Conceptual/Logical/Physical), sáu scheme mô hình (Relational, Dimensional, Object-Oriented, Fact-based, Time-based, NoSQL), normalization & denormalization, các notation, quy trình modeling và quản lý phiên bản mô hình.
Data Modeling là quá trình khám phá (discovering), phân tích (analyzing), phạm vi hoá (scoping) và mô tả (representing) các yêu cầu dữ liệu trong một dạng chính xác gọi là data model. Data model là tập hợp có tổ chức các ký hiệu văn bản & ký hiệu đồ hoạ (text + symbols) mô tả dữ liệu và cách dữ liệu được tổ chức để giao tiếp giữa các bên (nghiệp vụ, kỹ thuật).
DMBOK2 nhấn mạnh modeling không chỉ là bước kỹ thuật mà là công cụ giao tiếp & khám phá yêu cầu. Mô hình mô tả những gì quan trọng với tổ chức (things, concepts) và quan hệ giữa chúng.
Mục tiêu (Goals):
Một mô hình gồm các thành phần cơ bản (building blocks): Entity (thực thể — cái mà ta muốn lưu dữ liệu), Attribute (thuộc tính — đặc điểm của entity), Relationship (quan hệ giữa các entity), và Domain (miền giá trị hợp lệ của attribute).
DMBOK2 phân biệt ba cấp độ (level of detail) của mô hình dữ liệu, đi từ trừu tượng tới cụ thể:
| Tiêu chí | Conceptual | Logical | Physical |
|---|---|---|---|
| Mục đích | Nắm bắt phạm vi & khái niệm nghiệp vụ cốt lõi | Chi tiết hoá yêu cầu dữ liệu, độc lập công nghệ | Triển khai trên một DBMS/nền tảng cụ thể |
| Đối tượng | Entity nghiệp vụ, quan hệ ở mức cao | Entity, attribute, PK/FK, quan hệ chuẩn hoá | Table, column, data type, index, view, partition |
| Độc lập công nghệ? | Có (hoàn toàn) | Có (độc lập DBMS) | Không (phụ thuộc nền tảng) |
| Khán giả | Business, executives | BA, Data Modeler | DBA, Developer |
| Ví dụ chi tiết | "Khách hàng" đặt "Đơn hàng" | Customer(CustomerID, Name...), Order(OrderID, CustomerID FK...) | bảng CUSTOMER VARCHAR(100), index trên customer_id |
DMBOK2 liệt kê sáu scheme chính — mỗi kiểu phù hợp một mục đích và tuân theo tập quy tắc riêng:
| Scheme | Đặc điểm | Dùng khi |
|---|---|---|
| Relational | Dữ liệu tổ chức thành bảng (relation) gồm hàng/cột; quan hệ qua khoá; hướng tới giảm dư thừa (normalization). | Hệ thống giao dịch OLTP, dữ liệu có cấu trúc. |
| Dimensional | Tối ưu cho truy vấn phân tích: Fact (số đo) + Dimension (bối cảnh). Star / Snowflake schema. | Data warehouse, BI, OLAP. |
| Object-Oriented | Mô hình hoá theo class/object, kế thừa, encapsulation; ánh xạ tốt với ngôn ngữ OO. | Ứng dụng hướng đối tượng, ODBMS. |
| Fact-Based (Object-Role Modeling) | Biểu diễn dữ liệu bằng các fact nguyên tử & role, không dùng attribute; gồm ORM, FCO-IM. | Phân tích yêu cầu chi tiết, verbalization với người dùng. |
| Time-Based | Xử lý dữ liệu thay đổi theo thời gian & lịch sử: Data Vault, Anchor Modeling, temporal/SCD. | Kho dữ liệu cần theo dõi lịch sử, audit, temporal. |
| NoSQL | Mô hình cho CSDL phi quan hệ; schema linh hoạt, tối ưu scale ngang. Bốn dạng chính bên dưới. | Big data, dữ liệu bán cấu trúc/phi cấu trúc, scale lớn. |
Bốn dạng NoSQL:
| Dạng | Mô hình lưu trữ | Ví dụ |
|---|---|---|
| Document | Lưu tài liệu (JSON/BSON/XML) tự mô tả, schema linh hoạt. | MongoDB, Couchbase |
| Key-Value | Cặp khoá–giá trị đơn giản, truy cập cực nhanh theo key. | Redis, DynamoDB, Riak |
| Column-Family (Wide-Column) | Lưu theo họ cột, tối ưu ghi/đọc lượng lớn, thưa (sparse). | Cassandra, HBase |
| Graph | Node + edge + property; tối ưu cho quan hệ nhiều bậc, traversal. | Neo4j, Amazon Neptune |
Normalization (chuẩn hoá) là quá trình áp dụng quy tắc để tổ chức dữ liệu nhằm giảm dư thừa (redundancy) và tránh các bất thường khi thêm/sửa/xoá (update anomalies). Mỗi attribute phụ thuộc vào khoá — "the key, the whole key, and nothing but the key".
| Dạng chuẩn | Quy tắc |
|---|---|
| 1NF (First Normal Form) | Mỗi ô chứa một giá trị nguyên tử (atomic); không có nhóm lặp (repeating groups); có khoá chính xác định hàng. |
| 2NF (Second Normal Form) | Đạt 1NF và mọi attribute không khoá phụ thuộc toàn bộ khoá chính (loại bỏ partial dependency với khoá phức hợp). |
| 3NF (Third Normal Form) | Đạt 2NF và không có transitive dependency (attribute không khoá không phụ thuộc attribute không khoá khác). |
| BCNF (Boyce-Codd NF) | Phiên bản chặt hơn 3NF: mọi determinant (vế trái của phụ thuộc hàm) phải là một candidate key. |
| 4NF / 5NF | Xử lý multi-valued dependency (4NF) và join dependency (5NF) — hiếm dùng trong thực tế thường ngày. |
Denormalization là việc chủ ý đưa dữ liệu dư thừa trở lại (gộp bảng, lặp cột) để tăng tốc truy vấn đọc — đánh đổi giữa hiệu năng và toàn vẹn/không gian lưu trữ. Rất phổ biến trong dimensional modeling và data warehouse.
DMBOK2 giới thiệu nhiều notation (ký pháp) để vẽ mô hình; chọn notation tuỳ scheme và công cụ:
| Notation | Dùng cho | Đặc trưng |
|---|---|---|
| IE (Information Engineering) / Crow's Foot | Relational ERD | Ký hiệu "chân quạ" thể hiện cardinality (one/many, optional/mandatory). Phổ biến nhất. |
| IDEF1X | Relational (chuẩn liên bang Mỹ) | Phân biệt independent/dependent entity, identifying vs non-identifying relationship. |
| UML Class Diagram | Object-Oriented | Class, attribute, method, association, generalization/inheritance. |
| ORM / Fact-based notation | Fact-based (Object-Role Modeling) | Object + role + fact type, verbalization thành câu tự nhiên. |
| Dimensional (Star schema) | Dimensional | Fact ở trung tâm, dimension toả ra xung quanh như ngôi sao. |
Ví dụ ERD (crow's foot) — mô tả bằng chữ: Một Khách hàng (CUSTOMER) có thể đặt nhiều Đơn hàng (ORDER); mỗi Đơn hàng thuộc đúng một Khách hàng. Mỗi Đơn hàng gồm nhiều dòng (ORDER_LINE); mỗi dòng tham chiếu một Sản phẩm (PRODUCT).
Quan hệ (crow's foot): CUSTOMER ||──────o< ORDER (1 khách : 0..n đơn) ORDER ||──────|< ORDER_LINE (1 đơn : 1..n dòng) PRODUCT ||──────o< ORDER_LINE (1 sản phẩm : 0..n dòng) CUSTOMER ORDER ORDER_LINE ───────────── ───────────── ─────────────── PK customer_id PK order_id PK order_id (FK) name order_date PK line_no email FK customer_id FK product_id phone status quantity unit_price Ký hiệu: || = one (mandatory) o< = zero-or-many |< = one-or-many
Ví dụ Star schema (dimensional):
DIM_DATE DIM_CUSTOMER \ / \ / ┌───────────────────┐ │ FACT_SALES │ (bảng fact ở trung tâm) │ date_key (FK) │ │ cust_key (FK) │ │ product_key(FK) │ │ amount (measure) │ │ quantity(measure)│ └───────────────────┘ / \ / \ DIM_PRODUCT DIM_STORE
Quy trình modeling (Activities theo DMBOK2):
Data model management & versioning: mô hình là tài sản sống, cần được quản lý phiên bản như code. DMBOK2 khuyến nghị lưu mô hình trong repository, gắn version, ghi lại thay đổi (change log), và đồng bộ giữa mô hình logical/physical với database thực (drift detection). Naming standards nhất quán là điều kiện bắt buộc để tái sử dụng và tích hợp.
Metrics đo chất lượng mô hình (Data Model Scorecard® của Steve Hoberman gồm 10 tiêu chí):
| Nhóm tiêu chí | Ví dụ |
|---|---|
| Correctness | Mô hình có phản ánh đúng yêu cầu nghiệp vụ không? |
| Completeness | Đủ entity/attribute/metadata cần thiết chưa? |
| Scheme & Structure | Đúng cấu trúc (level of detail) và tuân thủ scheme đã chọn? |
| Standards | Tuân thủ naming & notation standards? |
| Readability / Definitions | Dễ đọc; định nghĩa (definitions) rõ ràng, đầy đủ? |
| Data reuse & consistency | Có tái sử dụng cấu trúc chung, nhất quán với enterprise model? |
Vai trò Data Modeler: chuyên gia chịu trách nhiệm khám phá yêu cầu dữ liệu, xây và duy trì mô hình ở cả ba cấp, đảm bảo tuân thủ chuẩn và đồng bộ với enterprise data model. Phối hợp với Data Architect (định hướng), Business SME (yêu cầu), DBA (triển khai physical) và Data Steward (định nghĩa & quy tắc).
| Vai trò | Trách nhiệm |
|---|---|
| Data Modeler | Xây conceptual/logical/physical model; áp dụng normalization & chuẩn. |
| Data Architect | Cung cấp bối cảnh EDM & chuẩn kiến trúc (từ KA2). |
| DBA | Hiện thực physical model, tối ưu index/partition. |
| Business SME / Steward | Cung cấp yêu cầu, quy tắc nghiệp vụ, định nghĩa dữ liệu. |
Best practices:
Pitfalls: