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
MỚI CẬP NHẬT

Mô hình thực thể mối kết hợp (ER)

Tiếp theo mô hình mạng chúng ta sẽ học một mô hình cao cấp hơn đó là mô hình thực thể mối kết hợp. Đây là một mô hình cao cấp hơn mô hình mạng và nó được sử dụng nhiều trong thiết kế dữ liệu ở mức quan niệm.

test php

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.

Trong nội dung bài này chúng ta sẽ tìm hiểu những khái niệm như sau liên quan đến mô hình này:

  • Loại thực thể - thực thể
  • Thuộc tính của thực thể
  • Khóa của loại thực thể
  • Loại mối kết hợp - mối kết hợp
  • Thuộc tính của loại mối kết hợp
  • Bản số
  • Mô hình ER mở rộng

1. Giới thiệu mô hình thực thể mối kết hợp

Mô hình thực thể kết hợp (Entity Relationshop Model) viết tắt là (ER)  được CHEN giới thiệu vòa năm 1976. Đây là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức quan niệm.

So với mô hình mạng thì mô hình ER có nhiều ưu điểm hơn và nó thể hiện rõ hơn các thành phần trong thế giới thực. Ví dụ trong mô hình mạng ta chỉ biểu diễn các đối tượng chính chứ không mô tả được các đặc điểm trong đối tượng đó, vậy thì trong mô hình ER sẽ khắc phục được những điểm yếu này. Chính vì vậy việc lựa chọn mô hình này luôn là quyết định của các nhà phân tích thiết kế CSDL.

Bài viết này được đăng tại [free tuts .net]

2. Loại thực thể trong mô hình ER

Loại thực thể (Entity Type) là là những đối tượng hay sự vật của thế giới thực cần quản lý trong ứng dụng. Các đối tượng ở đây có thể sờ thấy và cũng có thể mang tính chất ảo tưởng.

Ví dụ: Khi thiết kế cơ sở dữ liệu quản lý học viên thì ta sẽ có một số thực thể như sau:

  • HOCVIEN
  • LOP
  • ...

Trong mô hình ER thì ta sẽ dùng ký hiệu sau để mô tả loại thực thể:

  • thuc the png
  • thuc the 1 png
  • ...

Như vậy ta dùng ký hiệu hình chữ nhật và bên trong chính là tên của loại thực thể.

3. Thực thể (Entity) trong mô hình ER

Trong lập trình hướng đối tượng thì khi bạn tạo mới một lớp thì tức là bạn đã tạo một thể hiện của đối tượng mà class đó đang mô tả. Vậy thì trong mô hình thực thể mối kết hợp thì thực thể chính là một thể hiện của loại thực thể.

Ví dụ:  Loại thực thể HOCVIEN gồm các thực thể như sau:

  • Sinh viên Nguyễn Văn A
  • Sinh viên Nguyễn Văn B
  • Sinh viên Nguyễn Văn C
  • ...

Tất cả những học viên trên chính là thực thể thể hiện cho loại thực thể HOCVIEN.

4. Thuộc tính của loại thực thể (Entity Attribute)

Thuộc tính là những tính chất mô tả một đối tượng cụ thể nào đó. Ví dụ ta có chiếc mũ màu đỏ, chiếc áo màu vàng thì những màu sắc đỏ và vàng chính là những thuộc tính của mũ và áo.

Nếu ở đây ta nhắm tới ví dụ ở phần trên thì với loại thực thể HOCVIEN ta sẽ có một số thuộc tính như sau:

  • Mahv
  • Hoten
  • Gioitinh
  • Ngaysinh
  • Noisinh
  • ..

Và ta có ký hiệu như sau:

thuoc tinh loai thuc the png

5. Các loại thuộc tính của loại thực thể

Chúng ta có tổng cộng ba loại thuộc tính chính đó là Đơn vị, Đa hợpĐa trị.

  • Đơn vị (simple) là loại thuộc tính chỉ có một giá trị duy nhất. Ví dụ thuộc tính Noisinh, Mahv, ...
  • Đa hợp (Composite) là thuộc tính có thể được tạo từ nhiều thành phần. Ví dụ thuộc tính Hoten có thể được tạo từ 3 thành phần đó là HỌ + TÊN LÓT + TÊN. Ký hiệu là HOTEN (HO, TENLOT, TEN)
  • Đa trị (Multi valued) là loại thuộc tính có thể có nhiều giá trị đối với loại thực thể. Ví dụ bằng cấp thì ta có bằng loại tốt, loại khá, trung bình khá và giỏi. Ký hiệu là {BANGCAP}

Với hai loại thuộc tính đa hơpđa trị  thì ta có thể thiết kế chồng lên nhau.

Ví dụ{BANGCAP(TRUONGCAP, LOAIBANG, NGANH)}

6. Khóa của loại thực thể trong mô hình ER

Như định nghĩa trên thì mỗi thực thể sẽ là một thể hiện của loại thực thể, vậy thì làm sao để nhận diện các thực thể đó? Để nhận diện thì với mỗi thực thể chúng ta sẽ xác định cho nó một khóa duy nhất. Như vậy khóa của loại thực thể chính là dùng để nhận diện các thực thể của nó.

Ví dụ: trong loại thực thể HOCVIEN sẽ có nhiều thực thể học viên và mỗi học viên sẽ có một mã số duy nhất. Như vậy mã học viên chính là Key để ta nhận diện được học viên nào.

7. Các loại mối kết hợp trong mô hình ER

Trong mô hình mạng thì giữa hai đối tượng sẽ có một mối liên hệ và ta gọi nó là loại liên hệ. Vậy thì trong mô hình thực thể mối kết hợp ta gọi nó là loại mối kết hợp. Vậy loại mối kết hợp chính là mối liên hệ giữa hai loại thực thể.

Ví dụ: Giữa hai loại thực thể HOCVIEN và LOP ta sẽ có loại mối kết hợp THUOC, và ta biểu diễn như sau:

loai moi ket hop png

Biểu diễn bằng lời nói thì như sau "học viên sẽ thuộc lớp nào đó"

Ngoài ra giữa hai loại thực thể có thể tồn tại nhiều loại mối kế hợp.

Ví dụ:Giữa hai thực thể HOCVIEN và LOP sẽ có hai loại mối kế hợp nhu sau:

  • Học viên sẽ thuộc lớp nào đó
  • Học viên sẽ là lớp trường lớp nào đó

loai moi ket hop1 png

8. Số ngôi của loại mối kết hợp

Số ngôi chính là số loại thực thểloại mối kết hợp đó gắn kết. Như trong ví dụ 2 ở phần 7 thì loại mối kết hợp THUOC sẽ có số ngôi là 2 tại vì nó gắn kết giữa hai loại thực thể HOCVIEN và LOP.

Ví dụ: Giả sử ta có ba loại thực thể là:

  • HOCVIEN : học viên
  • MONHOC : môn học
  • LANTHI : lần thi

Ta sẽ có một loại mối kết hợp tên là THI để gắn ba loại thực thể này theo mô hình như sau:

so-ngoi-trong-mo-hinh-er.png

Như vậy loại mối kết hợp THI sẽ có số ngôi là 3

9. Bản số

Trong mô hình mạng thì ta cũng có sử dụng bản số để chỉ ra số lượng các mẫu tin tham gia vào các mối quan hệ, vậy thì trong mô hình ER cũng không có gì khắc biệt, chúng ta sử dụng những bản số để thể hiện số lượng tối thiểu và số lượng tối đa tham gia vào loại mối kết hợp.

Ký hiệu: (min, max)

Ví dụ:  Loại mối kết hợp học viên (HOCVIEN) và lớp (LOP) có loại mối kết hợp thuộc:

ban so png

Có nghĩa như sau:

  • Mỗi học viên sẽ thuộc một lớp
  • Mỗi lớp có thể có 1 hoặc nhiều học viên

Chi tiết thì bạn xem lại bài mô hình dữ liệu mạng nhé.

10. Mô hình thực thể mối kết hợp mở rộng

Chuyên biệt hóa

Giả sử ta có hai loại thực tể là GIAOVIEN và HOCVIEN thì nếu để ý kỹ thì bạn sẽ nhận ra rằng cả hai đều là loại thực thể CONNGUOI. Tại sao ta lại phân ra làm hai loại như vậy mà không gộp chung lại một? Lý do là mỗi loại thực thể sẽ có một số thuộc tính khác nhau. Và nếu để ý kỹ hơn nữa thì ta thấy loại thực thể CONNGUOI sẽ chứa một số thuộc tính dùng chung cho cả hai loại thực thể GIAOVIEN và HOCVIEN.

  • Với GIAOVIEN ta sẽ có một số thuộc tính như (MaGiaoVien, CapBac, ChuNhiemLop, ...)
  • Với HOCVIEN ta sẽ có một số thuộc tính như (MaHocVien, Lop, Khoa, ...)
  • Với CONNGUOI ta sẽ có một số thuộc tính như (SOCMND, GioiTinh, ...)

Ta có một sơ đồ ER mở rộng như sau:

mo hinh er mo rong png

Mối kết hợp đệ quy

Mối kết hợp đệ quy là loại mối kết hợp được tạo thành từ cùng một loại thực thể, hay nói cách dễ hiểu thì loại thực thể đó tự trỏ lại chính nó.

Ví dụ trong công ty ABC có danh sách nhân viên và trong đó có một nhân viên làm trưởng nhóm (leader) quản lý tất cả các nhân viên còn lại. Mô hình như sau:

moi ket hop de quy png

Loại thực thể yếu

Trong một số chương trình quản lý phần mềm ta phân tích dữ liệu sẽ có những loại thực thể quan trọng và một số loại thực thể không quan trọng và ta gọi nó là loại thực thể yếu. Loại thực thể yếu sẽ có một số tính chất như sau:

  • Không có thuộc tính khóa
  • Bắt buộc phải tham gia vào loại mối kết hợp với chủ thể của nó

Ký hiệu của nó như sau: Chú ý đường viền hơi đậm so với loại thực thể bình thường.

loai thuc the yeu png

Ví dụ: Loại thực thể Thân Nhân (THANNHAN) là loại thực thể yếu gồm các thuộc tính (Số thứ tự, tên, ngày sinh, Mối quan hệ) và tham gia vào loại mối kết hợp CÓ với loại thực thể NHANVIEN.

loai thuc the yeu 1 png

Mối kết hợp mở rộng

Các loại thực thể có thể có nhiều loại mối kết hợp với nhau. Ví dụ ta có loại thực thể LOP, MONHOC, GIAOVIEN sẽ có các loại mối kết hợp như sau:

  • LOP sẽ học MONHOC
  • GIAOVIEN sẽ giảng dạy LOP
  • GIAOVIEN sẽ giảng dạy MONHOC

loai moi ket hop mo rong png

Lời kết

Trong bài này chúng ta đã tìm hiểu một số kiến thức căn bản liên quan đến mô hình thực thể mối kết hợp và chúng ta chỉ tìm hiểu ở mức lý thuyết, ở các bài sau chúng ta sẽ tìm hiểu chuyên sâu hơn thông qua các ví dụ thực tế để các bạn có cái nhìn tổng quát hơn. Tuy nhiên bạn hãy đọc qua bài này để biết được một số định nghĩa nhé.

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