↓ Chuyển đến nội dung chính
Sơ đồ ERD với các bảng và quan hệ trên màn hình
  1. Bài viết/

ERD cho BA: đọc được sơ đồ dữ liệu mà không cần là dev

·
Đặng Đức Quân
Tác giả
Đặng Đức Quân
Chuyện nghề BA trong lĩnh vực sản xuất. Viết cho mình, và cho cả những ai đang muốn dấn thân vào con đường này.

Cập nhật lần cuối:

Lỗi hay gặp của BA mới với ERD là lướt qua luôn, coi đó là việc của dev, mà hậu quả thì tới muộn, viết yêu cầu xem lịch sử mua hàng của khách mà không biết dữ liệu nằm ở bảng nào, nên chẳng hỏi được mấy câu quan trọng kiểu một khách có thể có mấy địa chỉ giao hàng. Đọc ERD ở mức BA không cần biết code, chỉ cần bốn bước và một ví dụ.

ERD trong ba câu
#

ERD (Entity Relationship Diagram) là sơ đồ mô tả dữ liệu được lưu thế nào, có những thực thể nào (entity), mỗi thực thể có thuộc tính gì (attribute), và chúng quan hệ với nhau ra sao, trong BABOK Guide v3 việc này thuộc kỹ thuật Data Modelling (10.15). Với BA, ERD giúp trả lời mấy câu dữ liệu stakeholder hay hỏi, một khách có thể có bao nhiêu đơn, một đơn chứa bao nhiêu sản phẩm, số điện thoại khách lấy ở đâu, hiểu được dữ liệu thì viết yêu cầu không bị sai về bản chất.

đọc ERD theo bốn bước
#

Bước một là tìm entity chính, thường là một danh từ nghiệp vụ như Khách hàng, Đơn hàng, Sản phẩm, xem sơ đồ xoay quanh cái gì, hay là thực thể có nhiều đường nối tới nhất.

Bước hai là tìm khóa, khóa chính (primary key) là trường định danh duy nhất một bản ghi, ví dụ mã khách hàng, còn khóa ngoại (foreign key) là trường trỏ sang khóa chính của bảng khác để nối hai bảng lại.

Bước ba là đọc quan hệ, 1-n nghĩa là một bên có thể có nhiều bên kia, như một khách có nhiều đơn hàng, còn n-n là nhiều-nhiều, một đơn có nhiều sản phẩm và một sản phẩm nằm trong nhiều đơn.

Bước bốn là đặt câu hỏi nghiệp vụ, mỗi quan hệ đọc được thì thử biến thành câu hỏi, vậy muốn biết khách này mua gì thì phải đi qua những bảng nào, tới lúc này ERD mới bắt đầu có ích thật.

ví dụ đơn hàng và dòng đơn
#

Lấy ví dụ kinh điển gồm Khách hàng, Đơn hàng, Dòng đơn, Sản phẩm. Một khách có nhiều đơn, đó là quan hệ 1-n giữa Khách hàng và Đơn hàng, mỗi đơn lại chứa nhiều dòng, mỗi dòng là một sản phẩm kèm số lượng, đơn giá.

Vì sao cần bảng Dòng đơn ở giữa, vì giữa Đơn hàng và Sản phẩm là quan hệ n-n, mà muốn lưu n-n thì người ta tách ra một bảng trung gian, mỗi dòng ghi đơn này chứa sản phẩm này, số lượng bao nhiêu. Hiểu chuyện này rồi thì bạn sẽ hiểu vì sao khi viết yêu cầu hiển thị danh sách sản phẩm trong đơn, dữ liệu thật ra nằm ở bảng Dòng đơn chứ không phải bảng Đơn hàng hay Sản phẩm.

từ ERD sang câu SQL JOIN
#

Mỗi đường nối giữa hai bảng trên ERD là một chỗ bạn có thể cần JOIN trong SQL, muốn lấy tên khách và tổng số đơn của họ thì JOIN Khách hàng với Đơn hàng qua khóa ngoại, muốn lấy danh sách sản phẩm trong đơn X thì JOIN ba bảng Đơn hàng, Dòng đơn, Sản phẩm. Nắm ERD thì hiểu vì sao cần JOIN và JOIN cái gì với cái gì, cách viết SQL cho BA thì đọc SQL cho BA: SELECT, JOIN, GROUP BY là đủ sống.

góc ERP, vì sao migration hay vỡ ở khóa ngoại
#

Trong ERP, sau một màn hình trông đơn giản có thể là hàng chục bảng liên kết, một đơn mua kéo theo bảng đơn mua, dòng đơn mua, nhà cung cấp, vật tư, đơn vị tính, kho, cộng thêm một đống bảng cấu hình. Chính mạng khóa ngoại dày đặc này làm data migration hay vỡ, chuyển dữ liệu từ hệ cũ sang mà chỉ một khóa ngoại trỏ sai, mã vật tư không tồn tại hay mã kho bị trùng chẳng hạn, là cả bảng không nạp được. Hiểu ERD giúp bạn thấy trước mấy chỗ dễ vỡ này, bài Data migration: những cái bẫy không ai nói trước nói kỹ hơn.

BA vẽ ERD tới mức nào
#

Bạn không cần vẽ chi tiết như kiến trúc sư dữ liệu, có ba mức và BA thường dừng ở hai mức đầu. Mức khái niệm (conceptual) chỉ vẽ entity và quan hệ, chưa quan tâm kiểu dữ liệu, mức logic (logical) thêm thuộc tính và khóa cho từng entity, còn mức vật lý (physical) gắn kiểu dữ liệu, tên bảng, chỉ mục thì để dev. Vẽ được ở mức logic là đủ trao đổi với cả nghiệp vụ lẫn dev, công cụ thì dbdiagram.io hoặc draw.io là đủ dùng.

Có một hiểu lầm theo chiều ngược lại, đọc được ERD rồi thì tự thiết kế database cho dev, theo mình đừng, BA dùng ERD để hỏi đúng câu nghiệp vụ, còn chuẩn hóa bảng, đặt chỉ mục là việc của người thiết kế dữ liệu.

đủ để hỏi đúng câu về dữ liệu
#

Bạn không cần thành chuyên gia database, chỉ cần đọc được ERD để hiểu dữ liệu nằm đâu, quan hệ ra sao, vậy là đủ viết yêu cầu chính xác và nói chuyện được với dev. Đọc được dữ liệu rồi thì bước tiếp là ghi field và rule vào tài liệu yêu cầu, bài BRD, SRS, FS khác nhau thế nào chỉ chỗ đặt chúng.

Bạn gặp ERD lần đầu có bị ngợp không? Kể mình nghe qua Facebook hoặc LinkedIn nhé.

Bài viết liên quan

BA có cần biết SQL không? SELECT, JOIN, GROUP BY là đủ sống

·
Trả lời ngắn: BA không bắt buộc phải biết SQL, nhưng nên biết ở mức SELECT, JOIN, GROUP BY, mức đó đủ để tự trả lời phần lớn câu hỏi dạng bao nhiêu, mấy cái, theo từng tháng, và đủ để kiểm tra requirement với dữ liệu thật, không cần học tới mức developer. Thử hình dung cuộc họp với phòng kinh doanh, trưởng phòng hỏi tháng trước có bao nhiêu đơn bị khách trả lại, chủ yếu là sản phẩm nào, bạn hứa sẽ gửi số, về chỗ nhắn dev nhờ lấy, dev đang chạy deadline nên ba ngày sau mới có file, mà tới lúc đó câu hỏi đã đổi, cuộc họp tiếp theo cũng đã diễn ra rồi. Tình huống kiểu này là lý do nhiều BA bắt đầu học SQL, và câu hỏi là học tới đâu thì vừa, để khỏi mất cả năm cày khóa database.

BPMN cho người mới: vẽ as-is/to-be từ ghi chú workshop

·
Giả sử bạn vừa bước ra khỏi buổi workshop hai tiếng với phòng mua hàng, cầm về tờ giấy chi chít chữ, ai gửi yêu cầu, ai duyệt, mức nào phải lên giám đốc, lúc nào thì chạy Excel ngoài, giờ phải vẽ lại thành một sơ đồ cho cả team nhìn chung một bức tranh, mở công cụ lên rồi đứng hình. Bài này đi từ đúng tờ giấy đó ra một sơ đồ BPMN dùng được, kèm mấy lỗi hay biến sơ đồ thành tranh treo tường.

BRD, SRS, FS khác nhau thế nào? Dự án thật dùng cái nào

·
Lỗi hay gặp của fresher với BRD, SRS, FS là thuộc lòng ba định nghĩa mà vẫn viết sai tài liệu. Giả sử ngày đầu đi làm bạn được giao viết SRS cho module này, trong khi tuần trước có người vừa gửi BRD, cả team thì cứ nói FS, ba cái tên mà câu hỏi thật chỉ có một, tài liệu này ai đọc và để quyết định việc gì.