Tìm hiểu Relational Data Model – Cách xây dựng Mối quan hệ giữa các dữ liệu trong Database

Trong mảng database ở bất kỳ website, ứng dụng nào, thì đều có 1 kiến thức rất quan trọng, đó là Relational Data Model (mô hình dữ liệu quan hệ), hay còn gọi là mối liên hệ giữa các data. Đây là nền tảng cho hầu hết các hệ thống cơ sở dữ liệu hiện nay.

Hãy cùng Click Digital khám phá những bí mật đằng sau mô hình này!

Xem file Google Slide đầy đủ tại đây: https://docs.google.com/presentation/d/1hjdg0ZNUxqnoK5hCcdPmUPBsHbBDTEF9/edit?usp=sharing&ouid=104214515624883603698&rtpof=true&sd=true

1. Khái niệm về Relational Data Model

1.1. Định nghĩa nôm na dễ hiểu

Bạn có thể tưởng tượng Relational Data Model giống như một hệ thống sổ sách, nơi bạn sử dụng các bảng để lưu trữ dữ liệu. Mỗi bảng đại diện cho một đối tượng hoặc khái niệm trong thế giới thực. Ví dụ, bảng “Khách hàng” lưu trữ thông tin về khách hàng, bảng “Sản phẩm” lưu trữ thông tin về sản phẩm, và bảng “Đơn hàng” lưu trữ thông tin về đơn hàng.

1.2. Định nghĩa học thuật

Relational Data Model là một mô hình dữ liệu sử dụng các quan hệ toán học (mathematical relations) để biểu diễn dữ liệu. Mỗi quan hệ được thể hiện dưới dạng một bảng, mỗi bảng có nhiều cột (attributes) đại diện cho các thuộc tính của thực thể và nhiều hàng (tuples) đại diện cho các bản ghi dữ liệu.

1.3. Tuple

Tuple là một hàng trong bảng, đại diện cho một bản ghi dữ liệu cụ thể. Ví dụ, trong bảng “Khách hàng”, một tuple có thể là: <12345, “Nguyễn Văn A”, “0987654321”, “123 Đường ABC, TP.HCM”>.

1.4. Ví dụ

Ví dụ, bảng “Khách hàng” có thể có các cột như “Mã khách hàng”, “Tên khách hàng”, “Số điện thoại”, “Địa chỉ”. Mỗi hàng trong bảng đại diện cho một khách hàng cụ thể.

1.5. Current Relation State

Current Relation State là trạng thái hiện tại của một bảng, bao gồm tất cả các tuples đang tồn tại trong bảng. Trạng thái này có thể thay đổi khi bạn thêm, xóa hoặc cập nhật dữ liệu.

1.6. r và r’

  • r: Biểu diễn trạng thái hiện tại của bảng.
  • r’: Biểu diễn trạng thái của bảng sau khi bạn thực hiện một thao tác nào đó (thêm, xóa, sửa).

2. Các khái niệm cơ bản

2.1. Khóa chính (Primary Key)

Theo Click Digital, khóa chính (primary key) đóng vai trò như “chìa khóa” duy nhất để xác định một hàng (tuple) trong bảng. Ví dụ, trong bảng CUSTOMER, bạn có thể sử dụng số điện thoại (Phone#) làm khóa chính, vì mỗi khách hàng sẽ chỉ có một số điện thoại duy nhất.

2.2. Khóa ngoại (Foreign Key)

Khóa ngoại (foreign key) lại đóng vai trò “cầu nối” giữa các bảng. Có thể thấy rằng, khóa ngoại là giá trị trong một bảng tham chiếu đến khóa chính của bảng khác. Ví dụ, trong bảng ORDER, bạn có thể thêm một khóa ngoại là Phone# để liên kết với bảng CUSTOMER, giúp bạn biết được khách hàng nào đã đặt đơn hàng.

3. Các loại ràng buộc dữ liệu (Integrity Constraints)

Để đảm bảo tính nhất quán và chính xác của dữ liệu, Relational Data Model sử dụng các ràng buộc dữ liệu (Integrity Constraints). Có 3 loại ràng buộc chính:

3.1. Ràng buộc khóa (Key Constraints)

Ràng buộc khóa đảm bảo mỗi hàng trong bảng được xác định duy nhất. Khóa chính là một ví dụ về ràng buộc khóa, đảm bảo không có hai hàng nào có cùng giá trị khóa chính.

3.2. Ràng buộc toàn vẹn thực thể (Entity Integrity Constraints)

Ràng buộc này yêu cầu khóa chính của bảng không được chứa giá trị null. Điều này đảm bảo rằng mỗi hàng trong bảng đều được xác định duy nhất và có ý nghĩa.

3.3. Ràng buộc toàn vẹn tham chiếu (Referential Integrity Constraints)

Ràng buộc này đảm bảo rằng giá trị của khóa ngoại trong một bảng phải tương ứng với giá trị khóa chính trong bảng được tham chiếu. Ví dụ, trong bảng ORDER, giá trị của khóa ngoại Phone# phải tồn tại trong bảng CUSTOMER.

4. Các khái niệm nâng cao

4.1. Values in a tuple

Mỗi giá trị trong một tuple phải thuộc về miền (domain) của cột tương ứng. Miền là tập hợp các giá trị hợp lệ cho một cột cụ thể. Ví dụ, miền của cột “Số điện thoại” có thể là các chuỗi số có 10 chữ số, trong khi miền của cột “Ngày sinh” có thể là các ngày trong lịch Gregorian.

4.2. Relation STUDENT

Bảng STUDENT có thể có các cột như:

  • StudId: Mã số sinh viên (khóa chính)
  • StudName: Tên sinh viên
  • Major: Chuyên ngành
  • GPA: Điểm trung bình tích lũy

4.3. Ví dụ về relation STUDENT

StudIdStudNameMajorGPA
12345Nguyễn Văn ACNTT3.5
67890Trần Thị BKinh tế3.8
11122Lê Văn CLuật3.2

4.4. Relational Integrity Constraints

Các ràng buộc toàn vẹn (Integrity Constraints) được sử dụng để đảm bảo tính nhất quán và chính xác của dữ liệu. Ví dụ, ràng buộc “khóa chính” đảm bảo rằng mỗi sinh viên có một mã số sinh viên duy nhất, ràng buộc “toàn vẹn thực thể” đảm bảo rằng cột “Mã số sinh viên” không được phép có giá trị null.

5. Ưu nhược điểm của Relational Data Model và phương án hạn chế nhược điểm

Relational Data Model là một mô hình dữ liệu hiệu quả, linh hoạt và dễ sử dụng, phù hợp với nhiều ứng dụng khác nhau. Tuy nhiên, nó cũng có những hạn chế:

Ưu điểm:

  • Hiệu quả: Việc sử dụng khóa chính và khóa ngoại giúp tối ưu hóa việc truy vấn và cập nhật dữ liệu, giúp các hệ thống phần mềm hoạt động hiệu quả hơn.
  • Dễ hiểu: Cấu trúc bảng đơn giản, dễ dàng nắm bắt, giúp cho việc thiết kế và phát triển cơ sở dữ liệu trở nên dễ dàng hơn.
  • Linh hoạt: Relational Data Model cho phép bạn thêm, xóa hoặc thay đổi dữ liệu một cách dễ dàng, giúp hệ thống thích ứng với những thay đổi trong doanh nghiệp.

Nhược điểm:

  • Khó khăn trong việc xử lý dữ liệu không cấu trúc (unstructured data): Các loại dữ liệu như hình ảnh, video, văn bản tự do không dễ dàng được lưu trữ và xử lý trong Relational Data Model.
  • Hiệu suất có thể bị ảnh hưởng khi xử lý lượng dữ liệu lớn: Việc truy vấn dữ liệu trong Relational Data Model có thể tốn thời gian khi xử lý lượng dữ liệu khổng lồ.

Phương án hạn chế nhược điểm:

  • Sử dụng NoSQL databases: NoSQL databases được thiết kế để xử lý dữ liệu không cấu trúc hiệu quả hơn.
  • Áp dụng các kỹ thuật tối ưu hóa truy vấn: Sử dụng các kỹ thuật như index, caching, và query optimization để cải thiện hiệu suất truy vấn dữ liệu.

6. Cách xây dựng Relational Data Model

6.1. Các bước thao tác

Xây dựng Relational Data Model bao gồm các bước sau:

  1. Xác định các thực thể (entities): Xác định các đối tượng hoặc khái niệm cần lưu trữ trong cơ sở dữ liệu. Ví dụ, trong hệ thống bán hàng, các thực thể có thể là khách hàng, sản phẩm, đơn hàng.
  2. Xác định các thuộc tính (attributes) của mỗi thực thể: Xác định các thông tin cần lưu trữ về mỗi thực thể. Ví dụ, đối với thực thể “Khách hàng”, các thuộc tính có thể là “Mã khách hàng”, “Tên khách hàng”, “Số điện thoại”, “Địa chỉ”.
  3. Thiết kế các bảng (relations): Tạo các bảng để lưu trữ thông tin về mỗi thực thể. Mỗi bảng sẽ tương ứng với một thực thể.
  4. Xác định khóa chính (primary key): Chọn một cột hoặc một tập hợp các cột để xác định duy nhất mỗi hàng trong bảng.
  5. Xác định khóa ngoại (foreign key): Tạo các khóa ngoại để liên kết các bảng với nhau.
  6. Xây dựng các ràng buộc toàn vẹn (integrity constraints): Đảm bảo tính nhất quán và chính xác của dữ liệu bằng cách thiết lập các ràng buộc cho các cột.

6.2. Sử dụng các tool

Có nhiều công cụ hỗ trợ xây dựng và quản lý Relational Data Model, như:

  • MySQL Workbench: Một công cụ mã nguồn mở cho phép bạn thiết kế, xây dựng, quản lý và truy vấn cơ sở dữ liệu MySQL.
  • SQL Server Management Studio (SSMS): Công cụ quản lý cơ sở dữ liệu cho Microsoft SQL Server.
  • Oracle SQL Developer: Công cụ quản lý và phát triển cho Oracle Database.
  • Dbeaver: Công cụ mã nguồn mở hỗ trợ nhiều loại cơ sở dữ liệu.

7. Ví dụ thực tế

Hãy cùng xem một ví dụ về Relational Data Model trong thực tế. Giả sử bạn đang quản lý một cửa hàng bán sách trực tuyến. Bạn có thể sử dụng Relational Data Model để lưu trữ thông tin về khách hàng, sách và đơn hàng:

Bảng CUSTOMER:

CộtKiểu dữ liệuMô tả
CustIDINTKhóa chính, mã khách hàng
CustNameVARCHAR(255)Tên khách hàng
Phone#VARCHAR(12)Số điện thoại
AddressVARCHAR(255)Địa chỉ

Bảng BOOK:

CộtKiểu dữ liệuMô tả
BookIDINTKhóa chính, mã sách
BookNameVARCHAR(255)Tên sách
PriceDECIMAL(10,2)Giá sách

Bảng ORDER:

CộtKiểu dữ liệuMô tả
OrderIDINTKhóa chính, mã đơn hàng
CustIDINTKhóa ngoại, tham chiếu đến bảng CUSTOMER
OrderDateDATENgày đặt hàng
ShipDateDATENgày giao hàng

Bảng CUSTOMER, BOOK và ORDER được kết nối với nhau thông qua khóa chính và khóa ngoại:

  • CustID là khóa chính của bảng CUSTOMER, khóa ngoại của bảng ORDER
  • BookID là khóa chính của bảng BOOK, khóa ngoại của bảng ORDER

8. Các khái niệm nâng cao

8.1. Entity Integrity Constraints

Ràng buộc này yêu cầu khóa chính của bảng không được chứa giá trị null. Điều này đảm bảo rằng mỗi hàng trong bảng đều được xác định duy nhất và có ý nghĩa.

8.2. Relational Database Schema

Relational Database Schema là mô tả cấu trúc của một cơ sở dữ liệu dựa trên Relational Data Model. Nó bao gồm các bảng, cột, khóa chính, khóa ngoại, các ràng buộc toàn vẹn và các thông tin liên quan.

8.3. Ví dụ về COMPANY Database Schema

Cơ sở dữ liệu COMPANY:

  • Bảng EMPLOYEE: Lưu trữ thông tin về nhân viên (SSN, tên, địa chỉ, lương, giới tính, ngày sinh, số hiệu nhân viên, quản lý trực tiếp, phòng ban)
  • Bảng DEPARTMENT: Lưu trữ thông tin về phòng ban (Số hiệu phòng ban, tên phòng ban, quản lý phòng ban, ngày quản lý bắt đầu, vị trí)
  • Bảng PROJECT: Lưu trữ thông tin về dự án (Số hiệu dự án, tên dự án, vị trí)
  • Bảng WORKS_ON: Lưu trữ thông tin về việc nhân viên làm việc trên dự án (SSN, số hiệu dự án, số giờ làm việc)
  • Bảng DEPENDENT: Lưu trữ thông tin về người phụ thuộc của nhân viên (SSN, tên người phụ thuộc, giới tính, ngày sinh, mối quan hệ)

8.4. Referential Integrity Constraints và Foreign Key

Ràng buộc toàn vẹn tham chiếu đảm bảo rằng giá trị của khóa ngoại trong một bảng phải tương ứng với giá trị khóa chính trong bảng được tham chiếu. Ví dụ, trong bảng WORKS_ON, giá trị của khóa ngoại SSN phải tồn tại trong bảng EMPLOYEE.

8.5. Populated Database State

Populated Database State là trạng thái của một cơ sở dữ liệu khi đã có dữ liệu trong các bảng. Trạng thái này được thay đổi bởi các thao tác như thêm, xóa hoặc sửa dữ liệu.

8.6. Operations on Relations

Các thao tác chính trên các quan hệ bao gồm:

  • INSERT: Thêm một hàng mới vào bảng.
  • DELETE: Xóa một hàng khỏi bảng.
  • UPDATE: Sửa một hàng trong bảng.

Các thao tác này phải tuân thủ các ràng buộc toàn vẹn để đảm bảo tính nhất quán và chính xác của dữ liệu.

9. Bảng tóm tắt các khái niệm

Khái niệmMô tả
Relational Data ModelMô hình dữ liệu sử dụng các quan hệ toán học để biểu diễn dữ liệu.
RelationBảng trong Relational Data Model, đại diện cho một thực thể.
TupleMột hàng trong bảng, đại diện cho một bản ghi dữ liệu.
AttributeCột trong bảng, đại diện cho một thuộc tính của thực thể.
Primary KeyKhóa chính, dùng để xác định duy nhất mỗi hàng trong bảng.
Foreign KeyKhóa ngoại, tham chiếu đến khóa chính của bảng khác, tạo liên kết giữa các bảng.
Integrity ConstraintsCác ràng buộc dữ liệu, đảm bảo tính nhất quán và chính xác của dữ liệu.
Entity Integrity ConstraintRàng buộc đảm bảo khóa chính không được chứa giá trị null.
Referential Integrity ConstraintRàng buộc đảm bảo khóa ngoại phải tương ứng với khóa chính trong bảng được tham chiếu.
Relational Database SchemaMô tả cấu trúc của một cơ sở dữ liệu dựa trên Relational Data Model.

10. Nhận xét về Relational Data Model

Relational Data Model là một mô hình dữ liệu hiệu quả, linh hoạt và dễ sử dụng, phù hợp với nhiều ứng dụng khác nhau. Nó đã trở thành nền tảng cho hầu hết các hệ thống cơ sở dữ liệu hiện nay. Dù có những hạn chế, Relational Data Model vẫn là một công cụ quan trọng trong việc thiết kế và quản lý cơ sở dữ liệu. Việc hiểu rõ các khái niệm và nguyên tắc của Relational Data Model là điều cần thiết cho bất kỳ ai muốn phát triển ứng dụng web hoặc làm việc với cơ sở dữ liệu.

11. Kết luận

Relational Data Model là một công cụ vô cùng mạnh mẽ, giúp chúng ta tổ chức và quản lý dữ liệu một cách hiệu quả. Nó đóng vai trò quan trọng trong việc xây dựng các hệ thống phần mềm hiện đại, đáp ứng nhu cầu ngày càng cao của xã hội.

Bạn có thể tìm hiểu thêm về Relational Data Model để nâng cao kiến thức và kỹ năng của mình.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *