Sơ đồ ERD (sơ đồ quan hệ thực thể) là bản vẽ cho thấy dữ liệu của bạn gồm những đối tượng nào và chúng nối với nhau ra sao: mỗi hộp là một bảng, mỗi đường nối là một quan hệ, ký hiệu ở đầu đường nối cho biết một hay nhiều. Vẽ nó trước khi tạo bảng giúp bạn phát hiện thiếu bảng, thừa cột và quan hệ sai khi việc sửa còn chỉ là tẩy một nét bút.
Bài này dùng ví dụ giả định của một trung tâm ngoại ngữ nhỏ ở Huế quản lý học viên, lớp và giáo viên. Bạn sẽ đọc được ba kiểu quan hệ, hiểu vì sao quan hệ nhiều–nhiều luôn cần một bảng ở giữa, đọc ký hiệu chân quạ và cách nhờ trợ lý AI vẽ bản nháp từ mô tả công việc — rồi kiểm bản nháp đó bằng những câu nói bình thường.
ERD là gì và vì sao nên vẽ trước khi tạo bảng
Mô hình thực thể liên kết được Peter Chen trình bày năm 1976 và đến nay vẫn là cách phổ biến nhất để mô tả cấu trúc dữ liệu trước khi xây. Ba khái niệm gốc rất gần đời thường. Thực thể là loại đối tượng bạn cần lưu thông tin: học viên, lớp, giáo viên. Thuộc tính là những thông tin của thực thể đó: họ tên, ngày sinh, trình độ đầu vào. Quan hệ là cách các thực thể dính vào nhau: học viên ghi danh vào lớp, giáo viên phụ trách lớp.
Cái lợi của việc vẽ là bạn thấy toàn cảnh mà bảng tính không cho thấy. Khi dữ liệu nằm rải ở năm trang tính, rất khó nhận ra rằng không có chỗ nào ghi giáo viên dạy thay buổi nào, hoặc một học viên học hai lớp cùng lúc thì bị ghi thành hai người. Trên sơ đồ, những chỗ hổng đó hiện ra như một đường nối còn thiếu hay một hộp chưa có.
Sơ đồ cũng là tài liệu để nói chuyện. Chủ trung tâm không cần biết khoá ngoại là gì vẫn đọc được câu "một lớp có nhiều học viên, một học viên có thể học nhiều lớp" và xác nhận đúng hay sai. Người được thuê làm phần mềm sau này cũng đọc sơ đồ nhanh hơn đọc mười trang mô tả. Với doanh nghiệp nhỏ, một ERD vẽ tay chụp lại bằng điện thoại, lưu cạnh tệp dữ liệu, đã đủ giá trị.
Ba kiểu quan hệ giữa các bảng
Mọi đường nối trong ERD rơi vào một trong ba kiểu. Bảng dưới lấy ví dụ từ trung tâm ngoại ngữ giả định và cho biết mỗi kiểu được thể hiện thế nào khi thành bảng thật.
| Kiểu quan hệ | Ví dụ | Câu đọc kiểm | Thể hiện bằng bảng |
|---|---|---|---|
| Một–một | Giáo viên và hồ sơ hợp đồng | Mỗi giáo viên có đúng một hồ sơ hợp đồng hiện hành; mỗi hồ sơ thuộc đúng một giáo viên | Thường gộp chung một bảng; tách riêng khi phần hồ sơ cần hạn chế người xem |
| Một–nhiều | Giáo viên chủ nhiệm và lớp | Một giáo viên chủ nhiệm nhiều lớp; mỗi lớp có đúng một giáo viên chủ nhiệm | Bảng lop có cột ma_gv trỏ về bảng giao_vien |
| Nhiều–nhiều | Học viên và lớp | Một học viên học nhiều lớp; một lớp có nhiều học viên | Thêm bảng trung gian ghi_danh gồm ma_hv, ma_lop và các thông tin của lần ghi danh |
Quy tắc thể hiện quan hệ một–nhiều rất đơn giản: cột mã luôn nằm ở phía "nhiều". Bảng lớp mang mã giáo viên, chứ bảng giáo viên không mang danh sách mã lớp — vì một ô chỉ chứa một giá trị. Người mới hay làm ngược, thêm cột "các lớp phụ trách" vào bảng giáo viên rồi ghi nhiều mã cách nhau dấu phẩy; đó là dấu hiệu quan hệ đang bị đặt sai phía.
Quan hệ nhiều–nhiều luôn cần một bảng ở giữa
Học viên và lớp là quan hệ nhiều–nhiều điển hình. Không thể đặt mã lớp vào bảng học viên vì một người có thể học hai lớp; cũng không thể đặt mã học viên vào bảng lớp vì lớp có hai mươi người. Cách duy nhất giữ được mỗi ô một giá trị là thêm một bảng thứ ba, mỗi dòng ghi một lần một học viên vào một lớp. Bảng này có thể gọi là ghi_danh, và nó mang cả ma_hv lẫn ma_lop.
Điều thú vị là bảng trung gian hiếm khi chỉ có hai cột mã. Lần ghi danh có ngày ghi danh, có trạng thái đang học, bảo lưu hay đã nghỉ, có ghi chú của tư vấn viên. Những thông tin này không thuộc về học viên (vì người đó học lớp khác thì trạng thái khác) cũng không thuộc về lớp. Khi bạn thấy một thông tin chỉ có nghĩa khi biết cả hai phía, đó là tín hiệu nó thuộc về bảng trung gian.
Ở cửa hàng, quan hệ sản phẩm và đơn hàng cũng là nhiều–nhiều, và bảng chi tiết đơn chính là bảng trung gian của nó, mang số lượng và đơn giá bán. Sản phẩm và nhà cung cấp cũng vậy nếu một món hàng lấy từ nhiều nơi: bảng trung gian ghi mã hàng, mã nhà cung cấp, mã hàng phía nhà cung cấp và thời gian giao thường lệ. Một khi nhận ra khuôn này, bạn sẽ gặp nó ở khắp nơi: nhân viên và dự án, khách và chương trình khuyến mãi, bệnh nhân thú y và mũi tiêm.
Bắt buộc hay tuỳ chọn: đọc ký hiệu chân quạ
Hai câu hỏi cho mỗi đầu đường nối. Mỗi đầu của đường quan hệ trả lời hai câu: tối thiểu bao nhiêu và tối đa bao nhiêu. Một lớp có tối thiểu bao nhiêu học viên — có thể là không, khi lớp vừa mở chưa ai ghi danh. Một lần ghi danh thuộc tối thiểu và tối đa bao nhiêu học viên — đúng một.
Ký hiệu chân quạ. Ở kiểu vẽ phổ biến trong công cụ hiện nay, vạch thẳng nghĩa là một, vòng tròn nghĩa là không, ba nét toả ra giống chân con quạ nghĩa là nhiều. Ghép lại: vạch và chân quạ là một hoặc nhiều; vòng tròn và chân quạ là không hoặc nhiều; hai vạch là đúng một.
Ký hiệu của Chen. Sách giáo khoa cũ hay dùng kiểu vẽ của Chen: thực thể là hình chữ nhật, quan hệ là hình thoi, bản số ghi bằng chữ như 1 và N. Hai kiểu diễn đạt cùng ý; chọn một kiểu và dùng nhất quán trong một sơ đồ.
Vì sao chi tiết này quan trọng. Bắt buộc hay tuỳ chọn quyết định cột mã có được để trống hay không. Nếu mỗi lớp bắt buộc có giáo viên chủ nhiệm, cột ma_gv trong bảng lớp không được trống, và bạn phải có giáo viên trước khi mở lớp. Nếu là tuỳ chọn, lớp có thể mở trước rồi gán người sau. Đây là quy tắc vận hành của trung tâm, phải hỏi người quản lý chứ không tự đoán.
Nhờ AI vẽ bản nháp ERD từ mô tả công việc
Trợ lý AI chuyển mô tả bằng lời thành danh sách thực thể và quan hệ khá nhanh. Nhiều công cụ vẽ sơ đồ hiện nhận cú pháp dạng văn bản (như Mermaid hoặc DBML), nên bạn có thể nhờ AI viết theo cú pháp đó rồi dán vào công cụ để ra hình. Tính năng từng công cụ thay đổi, cần kiểm phiên bản hiện hành.
- Viết mô tả công việc bằng lời thường, không cần dữ liệu thật: trung tâm có những ai, làm những việc gì, mỗi việc ghi lại thông tin gì. Không đưa tên học viên, số điện thoại phụ huynh hay hồ sơ giáo viên thật vào câu lệnh.
- Gửi câu lệnh mẫu: "Dựa trên mô tả nghiệp vụ dưới đây của một trung tâm ngoại ngữ nhỏ, liệt kê các thực thể, thuộc tính chính và quan hệ. Với mỗi quan hệ, ghi kiểu một–một, một–nhiều hay nhiều–nhiều, bắt buộc hay tuỳ chọn ở từng phía, kèm một câu đọc kiểm bằng tiếng Việt. Quan hệ nhiều–nhiều thì đề xuất bảng trung gian. Sau đó viết sơ đồ theo cú pháp erDiagram của Mermaid."
- Đọc phần liệt kê bằng chữ trước khi xem hình. Hình đẹp dễ làm người xem bỏ qua lỗi; câu chữ thì bắt lỗi dễ hơn.
- Sửa trực tiếp những câu đọc kiểm sai, gửi lại và yêu cầu AI cập nhật sơ đồ cho khớp.
- Lưu cả bản chữ lẫn bản hình cùng ngày vẽ, đặt cạnh tệp dữ liệu.
Bản nháp AI thường thiếu những thực thể chỉ người trong nghề mới biết, chẳng hạn buổi học bù, giáo viên dạy thay hay học viên chuyển lớp giữa khoá. Hỏi thêm nó "còn tình huống vận hành nào làm thiết kế này không ghi lại được" là cách tốt để lộ ra các chỗ thiếu.
Đọc lại ERD bằng câu nói thường và những lỗi hay gặp
Cách kiểm hiệu quả nhất không cần kiến thức kỹ thuật: đọc mỗi đường nối thành hai câu theo hai chiều, rồi hỏi người làm việc thật xem câu đó có đúng không. Những lỗi dưới đây hay lộ ra trong lúc đọc.
- Quan hệ ngược chiều: câu đọc ra "mỗi giáo viên thuộc đúng một lớp" trong khi thực tế một giáo viên dạy nhiều lớp. Gốc lỗi là đặt cột mã nhầm bảng.
- Bỏ sót nhiều–nhiều: vẽ "mỗi lớp có một giáo viên" nhưng trung tâm có lớp do hai giáo viên dạy luân phiên. Khi đó cần bảng phân công giữa giáo viên và lớp.
- Thiếu chiều thời gian: sơ đồ chỉ ghi được trạng thái hiện tại, không ghi được học viên đã chuyển từ lớp nào sang lớp nào. Nếu lịch sử quan trọng, quan hệ đó cần bảng có ngày bắt đầu và ngày kết thúc.
- Thực thể trùng tên khác nghĩa: "khoá học" lúc là chương trình học (khung nội dung), lúc là một đợt mở lớp cụ thể. Hai nghĩa đó là hai thực thể khác nhau.
- Gộp người với vai trò: một người vừa là phụ huynh vừa là học viên lớp người lớn. Tách bảng người và vai trò hay để hai bản ghi là quyết định phải nói rõ.
Mỗi lỗi sửa trên sơ đồ chỉ mất vài phút. Cùng lỗi đó phát hiện sau khi đã nhập hai năm dữ liệu thì có thể mất cả tuần dọn dẹp.
Từ sơ đồ sang bảng tính hoặc cơ sở dữ liệu
Chuyển ERD thành bảng theo bốn luật gần như máy móc. Mỗi thực thể thành một bảng với một cột khoá chính. Quan hệ một–nhiều thành một cột khoá ngoại ở bảng phía nhiều. Quan hệ nhiều–nhiều thành một bảng trung gian mang hai khoá ngoại và các thuộc tính của chính quan hệ. Quan hệ một–một thường gộp vào một bảng, trừ khi có lý do tách như phân quyền xem.
Nếu vẫn dùng bảng tính, mỗi bảng là một trang tính, khoá ngoại là cột mã được chọn từ danh sách để tránh gõ sai. Nếu chuyển sang phần mềm cơ sở dữ liệu, khai báo khoá ngoại để phần mềm tự chặn những dòng trỏ tới mã không tồn tại; đây là một trong những lợi thế lớn nhất so với bảng tính.
Sơ đồ không phải vẽ xong là cất. Mỗi khi thêm một trang tính hay một cột mã mới, cập nhật sơ đồ và ghi ngày sửa. Bước tiếp theo nên làm là một từ điển dữ liệu: giải thích từng cột trong từng bảng, định dạng và ai chịu trách nhiệm nhập. ERD cho thấy khung xương; từ điển dữ liệu ghi lại phần thịt. Hai thứ đó đủ để một người mới vào trung tâm hiểu dữ liệu trong một buổi chiều thay vì một tháng hỏi han.
Câu hỏi thường gặp
Có cần phần mềm chuyên dụng để vẽ ERD không?
Không cần. Giấy bút, bảng trắng hay công cụ vẽ sơ đồ thông thường đều được. Điều quan trọng là thể hiện đúng thực thể, quan hệ và bản số. Công cụ nhận cú pháp văn bản tiện ở chỗ dễ sửa và lưu cùng tài liệu, nhưng không bắt buộc với dữ liệu nhỏ.
ERD và sơ đồ quy trình công việc khác nhau thế nào?
Sơ đồ quy trình mô tả các bước diễn ra theo thời gian: tiếp nhận, tư vấn, ghi danh, xếp lớp. ERD mô tả dữ liệu cần lưu và cách chúng liên quan, không có thứ tự thời gian. Hai sơ đồ bổ sung nhau; quy trình thường gợi ra thực thể mà ERD còn thiếu.
Một bảng trung gian có được có khoá chính riêng không?
Được. Nhiều người thêm một cột mã riêng cho mỗi dòng ghi danh để tiện tham chiếu, đồng thời đặt ràng buộc không cho trùng cặp học viên và lớp nếu một người không thể ghi danh hai lần vào cùng một lớp.
Khi nào quan hệ một–một nên tách thành hai bảng?
Khi một phần thông tin cần quyền xem khác, như lương và hợp đồng của giáo viên; khi phần đó chỉ có ở một số ít bản ghi; hoặc khi phần đó do bộ phận khác quản lý. Ngoài các trường hợp này, gộp chung một bảng thường gọn hơn.
AI vẽ ERD có đúng với nghiệp vụ của mình không?
Chỉ đúng tới mức mô tả bạn đưa vào đủ rõ. AI hay giả định quy tắc phổ biến thay vì quy tắc riêng của đơn vị bạn. Đọc lại từng câu quan hệ với người làm việc thật là bước bắt buộc trước khi tạo bảng.