KHỞI ĐẦU
CÁC MÔ HÌNH CSDL
ĐẠI SỐ QUAN HỆ
TỐI ƯU DỮ LIỆU
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

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 đó.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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 tin, loại liên hệ giữa các mẫu tinbả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: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.

mau tin so do mang png

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à:

2 PNG

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é)

mo hinh du lieu mang png
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ên, ngà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 ban, mã phòng bansố lương nhân viênngườ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ên, số tiềnmô 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:

mo hinh du lieu mang quan ly nhan vien png
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.

Cùng chuyên mục:

Phiên làm việc là gì trong SQL

Phiên làm việc là gì trong SQL

Trong bài viết này mình sẽ giải thích phiên làm việc là gì trong SQL…

Ràng buộc Check trong SQL

Ràng buộc Check trong SQL

Bài này bạn sẽ được học cách tạo ràng buộc giá trị trong SQL bằng…

Khóa ngoại Foreign Key trong SQL

Khóa ngoại Foreign Key trong SQL

Trong bài này bạn sẽ được học cách tạo khóa ngoại Foreign Key bằng câu…

Primary Key trong SQL

Primary Key trong SQL

Bài này bạn sẽ được giới thiệu cách tạo khóa chính (Primary Key) thể hiện…

Create và Drop Database trong SQL

Create và Drop Database trong SQL

Bài viết này sẽ hướng dẫn bạn cách sử dụng lệnh Create Database để tạo…

Subquery trong SQL - truy vấn con

Subquery trong SQL - truy vấn con

Trong bài này mình sẽ nói đến một cách sử dụng câu truy vấn SLECT…

Self Join trong SQL

Self Join trong SQL

Mỗi phép Join đều phải có hai bảng table1 và table2, tuy nhiên có trường…

Right Join trong SQL

Right Join trong SQL

Chào các bạn, hôm nay mình sẽ tiếp tục nói đến phép Join trong SQL.…

Left Join trong SQL

Left Join trong SQL

Ở bài trước chúng ta đã được tìm hiểu Inner Join và biết được tại…

Inner JOIN trong SQL

Inner JOIN trong SQL

Ở bài trước chúng ta đã học hiểu cách truy vấn nhiều bảng trong SQL…

Toán tử BETWEEN và NOT BETWEEN trong SQL

Toán tử BETWEEN và NOT BETWEEN trong SQL

Toán tử BETWEEN dùng để kiểm tra một giá trị có nằm trong một khoảng…

Tìm hiểu ALIAS  (AS) trong SQL

Tìm hiểu ALIAS (AS) trong SQL

Trong bài này mình sẽ nói về cách đặt lại tên cho column, table bằng…

Tích đề các trong SQL

Tích đề các trong SQL

Trong bài này mình sẽ hướng dẫn các bạn cách truy vấn dữ liệu trên…

Gộp dữ liệu với UNION và UNION ALL trong SQL

Gộp dữ liệu với UNION và UNION ALL trong SQL

Có một số trường hợp bắt buộc bạn phải chạy hai câu truy vấn nên…

Lọc dữ liệu trùng với DISTINCT trong SQL

Lọc dữ liệu trùng với DISTINCT trong SQL

Đôi khi có những câu truy vấn có kết quả bị trùng lặp thì lúc…

Toán tử AND và OR trong SQL

Toán tử AND và OR trong SQL

Trong bài này chúng ta học hai toán tử có thể nói là được sử…

Toán tử IN và NOT IN trong SQL

Toán tử IN và NOT IN trong SQL

Trong bài này chúng ta sẽ học hai lệnh mới dùng để kiểm tra một…

Toán tử LIKE và NOT LIKE trong SQL

Toán tử LIKE và NOT LIKE trong SQL

Trong bài này chúng ta sẽ tìm hiểu lệnh LIKE, lệnh này dùng để so…

Sắp xếp dữ liệu với ORDER BY trong SQL

Sắp xếp dữ liệu với ORDER BY trong SQL

Nếu bạn muốn sắp xếp dữ liệu trả về theo tăng dần hoặc giảm dần…

Lệnh Delete trong SQL

Lệnh Delete trong SQL

DELETE FROM posts WHERE post_id > 7000 AND post_content IS NOT NULL;

Top