Bài 03: Mô hình dữ liệu mạng

Nếu bạn là người bắt đầu tìm hiểu lập trình nói chung và mới tìm hiểu về cơ sở dữ liệu nói riêng thì bài này sẽ hơi khó hiểu cho bạn vì nội dung của mô hình dữ liệu là khái niệm khá mới mẽ đối với bạn. Nhưng nếu bạn là dân code và đã từng đọc qua khái niệm kỹ thuật lập trình hướng đối tượng thì đây là một lợi thế rất lớn vì trong mô hình CSDL thì ta có thể liên hệ với đối tượng, mỗi đối tượng có thể hiểu là một mẩu tin trong mô hình dữ liệu mạng

Trong những bài trước chúng ta đã nói đến khái niệm cơ bản về cơ sở dữ liệu và những lợi thế khi sử dụng hệ quản trị CSDL nhưng chúng ta vẫn chưa hình dung được nó là gì, vậy thì trong bài này chúng ta sẽ tìm hiểu các thành phần trong đó như thế nào và cách xây dựng mô hình dữ liệu như thế nào để thể hiện những ưu điểm đó.

1. Mô hình dữ liệu là gì?

Mô hình dữ liệu là sự trừu tượng hóa dữ liệu trong thế giới thực và được biểu diễn ở mức quan niệm. Hiện nay có những mô hình dữ liệu thông dụng sau:

  • Mô hình dữ liệu mạng
  • Mô hình dữ liệu phân cấp
  • Mô hình dữ liệu thực thể mối kết hợp
  • Mô hình dữ liệu quan hệ
  • Mô hình dữ liệu hướng đối tượng

Trong bài này chúng ta sẽ tìm hiểu mô hình mạng trước.

2. Mô hình dữ liệu mạng là gì ?

Mô hình dư liệu mạng (Network Data Model) là mô hình được biểu diễn bởi những mẫu tin (record)loại mẫu tinloại liên hệ giữa các mẫu tin và bản số của mẫu tin. Ngoài cái tên mô hình dữ liệu mang ra thì nó còn có những cái tên khác như mô hình mạng, mô hình lưới. Bây giờ ta tìm hiểu chi tiết cụ thể nhé:

Mẫu tin:  Là tin mô tả một đối tượng trong thế giới thực. Ví dụ sinh viên Nguyễn Văn A sẽ có các thông tin tên sinh viên, ngày sinh, tuổi, ... và mỗi sinh viên chính là một mẫu tin.

Loại mẫu tin: Chính là tên của đối tượng. Ví dụ NHANVIEN là một loại mẫu tin, PHONG là một loại mẫu tin. Để thể hiện một loại mẫu tin trong sơ đồ thì ta dùng ký hiệu dưới đây để thể hiện.

Loại liên hệMô tả mối liên hệ giữa các loại mẫu tin, ví dụ mỗi sinh viên sẽ học trong một lớp và một lớp có nhiều sinh viên. Ký hiệu của nó là:

Bản số: chỉ ra số lượng các mẫu tin tham gia trong các mối liên hệ, chúng ta sẽ có những mối liên hệ sau đây:

  • (1:1) (one-to-one): mỗi mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên.
  • (1:n) (one-to-many): mỗi mẫu tin của loại mẫu tin chủ kết hợp với 1 hay nhiều mẫu tin thành viên.
  • (n:1) (many-to-one): nhiều mẫu tin của loại mẫu tin chủ kết hợp với những 1 mẫu tin của loại mẫu tin thành viên. 
  • (Recursive): một loại mẫu tin chủ cũng có thể đồng thời là loại mẫu tin thành viên với chính nó.

Để rõ hơn các bạn nhìn vào hình dưới đây: (Các bạn chú ý hướng đường mũi tên đi nhé)


Sơ đồ mô hình dữ liệu mạng

 

Giải thích:

  • Mỗi phòng có nhiều nhân viên (n) và mỗi nhân viên chỉ thuộc một phòng (1), vậy đây là mối quan hệ (1-n)
  • Mỗi nhân viên có một lý lịch (1) và mỗi lý lịch thuộc về một nhân viên (1), đây là quan hệ (1-1)
  • Mỗi nhân viên làm nhiều công việc (n) và mỗi công việc có một nhân viên (1) làm, đây là mối quan hệ (n-1)
  • Môi nhân viên sẽ có một người quản lý trực tiếp (trưởng nhóm), và mỗi nhóm có thể có nhiều nhân viên, đây là mối quan hệ (Recursive) vì nó tự chỉ đến nó

Các bạn nhớ để ý luồng đi của mũi tên nhé, nó đi theo hướng cấp cao đến cấp thấp. Ví dụ đi từ PHONG đi đến NHANVIEN vì NHANVIEN là con của PHONG,  từ NHANVIEN đi đến LYLICH vì mỗi lý lịch thuộc về NHANVIEN. Từ mũi tên đó ta sẽ tìm được mối quan hệ (1-n) (n-1) (1,1)(Recursive) một cách dễ dàng.

3. Ví dụ về mô hình dữ liệu mạng

Đề bài:

Kết quả khảo sát hệ thống quản lý nhân sự và tiền lương tại một công thu được những thông tin sau:

  • Mỗi nhân viên có một mã nhân viên duy nhất, và có họ tênngày tháng năm sinh và được lãnh lương theo hệ mức lương của mình. đồng thời một nhân viên thì chỉ thuộc biên chế của một và chỉ một phòng ban. Ví dụ: Nhân viên tên A có mã số NV1 thuộc biên chế phòng Tổng Hợp (với mã phòng TH) sinh năm 1986 lãnh lương chuyên viên chính. 
  • Thông tin cần quản lý về phòng ban bao gồm: tên phòng banmã phòng ban và số lương nhân viên và người trưởng phòng.Ví dụ: phòng Tổng Hợp có mã TH, số lượng nhân viên là 5 có trưởng phòng là Nhân Viên A.
  • Mức lương gồm tênsố tiền và mô tả yêu câu công việc. Ví dụ: Mức lương chuyên viên chính là 2,5 triệu VND, cần tối thiểu 5 năm kinh nghiệm. 

Vẽ sơ đồ CSDL quản lý Nhân Sự Tiền Lương nói trên theo mô hình mạng.

Bài giải: Hướng giải tìm mô hình cơ sở dữ liệu

Trước tiên ta cần tìm danh sách các mẫu tin, loại mẫu tin và loại liên hệ, sau đó ta sẽ vẽ một mô hình mạng tương ứng. 

Danh sách mẫu tin

  • Nhân Viên (manv, hoten, ngaysinh, mucluong)
  • Phòng Ban (maphong, tenphong, sluongnhanvien, truongphong) 
  • Mức Lương (ten, sotien, motacongviec)

Danh sách Loại mẫu tin:

  • NHANVIEN (nhân viên)
  • PHONGBAN (phòng ban)
  • MUCLUONG (mức lương)

Danh sách loại liên hệ và bản số:

  • Ta thấy ở PHONGBAN có mẫu tin số lượng nhân viên nên ta có thể hiểu mỗi PHONGBAN có nhiều NHANVIEN (n) và mỗi NHANVIEN thuộc biên chế của một PHONGBAN (1), đây là mối liên hệ (1-n). Hướng mũi tên đi từ PHONGBAN đến NHANVIEN.
  • Mỗi MUCLUONG có thể áp dụng cho nhiều nhân viên (n), mỗi NHANVIEN chỉ có đúng một mức lương (1), đây là mối liên hệ (1-n). Hướng mũi tên đi từ MUCLUONG đến NHANVIEN.
  • Mỗi PHONGBAN sẽ có một người trường phòng (1), và mỗi NHANVIEN chỉ được làm trưởng phỏng của một phòng ban (1), đây là mối liên hệ (1-1). Hướng đi từ NHANVIEN đến PHONGBAN. Lưu ýtrưởng phòng ở đây chính là nhân viên của công ty.

Mô hình dữ liệu mạng:


Mô hình dữ liệu mảng mô tả dữ liệu quản lý nhân viên công ty

4. Lời kết

Hiểu được mô hình dữ liệu mạng thì qua những mô hình cao cấp hơn bạn sẽ rất dễ dàng nắm bắt nên hãy đọc và làm ví dụ kỹ nhé. Thông thường vẽ sơ đồ này ta sẽ dùng phần mềm VISIO của bộ office sẽ rất đẹp và chuẩn, hiện tại máy tôi chưa cài nên tôi vẽ bằng chương trình Paint có sẵn trong máy nên không đẹp lắm, mong bạn thông cảm.

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Group Facebook để được hỗ trợ nhanh nhất.