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
Table of Contents
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
StudId | StudName | Major | GPA |
12345 | Nguyễn Văn A | CNTT | 3.5 |
67890 | Trần Thị B | Kinh tế | 3.8 |
11122 | Lê Văn C | Luật | 3.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:
- 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.
- 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ỉ”.
- 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ể.
- 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.
- 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.
- 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ột | Kiểu dữ liệu | Mô tả |
CustID | INT | Khóa chính, mã khách hàng |
CustName | VARCHAR(255) | Tên khách hàng |
Phone# | VARCHAR(12) | Số điện thoại |
Address | VARCHAR(255) | Địa chỉ |
Bảng BOOK:
Cột | Kiểu dữ liệu | Mô tả |
BookID | INT | Khóa chính, mã sách |
BookName | VARCHAR(255) | Tên sách |
Price | DECIMAL(10,2) | Giá sách |
Bảng ORDER:
Cột | Kiểu dữ liệu | Mô tả |
OrderID | INT | Khóa chính, mã đơn hàng |
CustID | INT | Khóa ngoại, tham chiếu đến bảng CUSTOMER |
OrderDate | DATE | Ngày đặt hàng |
ShipDate | DATE | Ngà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ệm | Mô tả |
Relational Data Model | Mô hình dữ liệu sử dụng các quan hệ toán học để biểu diễn dữ liệu. |
Relation | Bảng trong Relational Data Model, đại diện cho một thực thể. |
Tuple | Một hàng trong bảng, đại diện cho một bản ghi dữ liệu. |
Attribute | Cột trong bảng, đại diện cho một thuộc tính của thực thể. |
Primary Key | Khóa chính, dùng để xác định duy nhất mỗi hàng trong bảng. |
Foreign Key | Khó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 Constraints | Cá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 Constraint | Ràng buộc đảm bảo khóa chính không được chứa giá trị null. |
Referential Integrity Constraint | Rà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 Schema | Mô 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.
Digital Marketing Specialist