Chương 1 / Tổng quan

1.1 Khái niệm cơ sở dữ liệu

Chương 1 - Tổng quan về CSDL
0:00

1.1 Khái niệm cơ sở dữ liệu

Đặt vấn đề: Trong thực tế, các hoạt động quản lý và điều hành đều gắn liền với lưu trữ, xử lý và khai thác thông tin. Ví dụ quản lý hồ sơ sinh viên, nhân sự, bán hàng, tài chính. Khi dữ liệu ngày càng tăng về số lượng và độ phức tạp, cách lưu trữ rời rạc trong các tệp tin riêng lẻ của từng ứng dụng bộc lộ nhiều hạn chế: trùng lặp dữ liệu, khó bảo đảm tính nhất quán, khó chia sẻ thông tin, khó bảo mật.

Định nghĩa: Cơ sở dữ liệu là một tập hợp dữ liệu có liên quan với nhau, được tổ chức, lưu trữ và quản lý một cách có cấu trúc trên các thiết bị lưu trữ, nhằm phục vụ hiệu quả cho việc khai thác, cập nhật và chia sẻ thông tin của nhiều người dùng theo các yêu cầu xác định.

So sánh với tệp tin truyền thống:

  • Tổ chức dữ liệu: tệp tin rời rạc trong các tệp riêng lẻ; cơ sở dữ liệu tổ chức tập trung, có cấu trúc.
  • Dư thừa dữ liệu: tệp tin cao, dễ trùng lặp; cơ sở dữ liệu giảm tối đa dư thừa.
  • Tính nhất quán: tệp tin khó bảo đảm khi cập nhật; cơ sở dữ liệu bảo đảm nhờ ràng buộc.
  • Chia sẻ dữ liệu: tệp tin khó chia sẻ, thường theo từng ứng dụng; cơ sở dữ liệu dễ chia sẻ cho nhiều người dùng.
  • Toàn vẹn dữ liệu: tệp tin phụ thuộc chương trình; cơ sở dữ liệu do hệ quản trị kiểm soát tự động.
  • Bảo mật: tệp tin thô sơ, khó phân quyền; cơ sở dữ liệu phân quyền chi tiết, linh hoạt.
  • Độc lập dữ liệu: tệp tin phụ thuộc chặt vào chương trình; cơ sở dữ liệu có tính độc lập cao.
  • Khả năng mở rộng: tệp tin khó mở rộng, bảo trì; cơ sở dữ liệu dễ mở rộng và nâng cấp.
  • Truy vấn dữ liệu: tệp tin cần lập trình riêng; cơ sở dữ liệu truy vấn linh hoạt.
  • Sao lưu - phục hồi: tệp tin thủ công, không đồng bộ; cơ sở dữ liệu hỗ trợ tự động, an toàn.
  • Xử lý đồng thời: tệp tin hạn chế, dễ xung đột; cơ sở dữ liệu hỗ trợ nhiều người dùng.
  • Hiệu suất tổng thể: tệp tin giảm khi dữ liệu lớn; cơ sở dữ liệu tối ưu cho dữ liệu lớn.

Ví dụ: Thay vì mỗi phòng ban trong trường đại học giữ một tệp Excel riêng về sinh viên, một cơ sở dữ liệu sinh viên dùng chung giúp tránh trùng lặp và bảo đảm mọi phòng ban thấy cùng một thông tin.

1.2 Vai trò của cơ sở dữ liệu trong hệ thống thông tin

Chương 1 - Tổng quan về CSDL
0:00

1.2 Vai trò của cơ sở dữ liệu trong hệ thống thông tin

Cơ sở dữ liệu là nền tảng của hệ thống thông tin, bảo đảm dữ liệu được tổ chức, lưu trữ, khai thác và bảo vệ hiệu quả. Các vai trò chính:

  • Tổ chức và quản lý dữ liệu: dữ liệu phải được tổ chức có cấu trúc, phản ánh đúng thế giới thực; hạn chế dư thừa, bảo đảm tính nhất quán khi cập nhật; hỗ trợ lưu trữ lâu dài và truy xuất hiệu quả.
  • Đảm bảo toàn vẹn dữ liệu: kiểm soát ràng buộc miền giá trị như kiểu dữ liệu và phạm vi; bảo đảm ràng buộc khóa không trùng, không rỗng; bảo đảm ràng buộc tham chiếu giữa các quan hệ; ngăn chặn dữ liệu không hợp lệ hoặc mâu thuẫn.
  • Bảo mật và phân quyền truy cập: xác định ai được phép xem, thêm, sửa, xóa dữ liệu; ngăn chặn truy cập trái phép; bảo vệ dữ liệu nhạy cảm.
  • Xử lý truy cập đồng thời: nhiều người dùng có thể thao tác cùng lúc; tránh xung đột dữ liệu, mất mát hoặc sai lệch thông tin; bảo đảm các giao dịch không ảnh hưởng lẫn nhau.
  • Đảm bảo tính nhất quán trong giao dịch: mỗi giao dịch phải thỏa mãn các tính chất ACID: nguyên tố (Atomicity) thực hiện toàn bộ hoặc không thực hiện gì; nhất quán (Consistency) đưa cơ sở dữ liệu từ trạng thái nhất quán này sang trạng thái nhất quán khác; cô lập (Isolation) các giao dịch đồng thời không ảnh hưởng lẫn nhau; bền vững (Durability) các giao dịch được lưu trữ vĩnh viễn dù hệ thống bị sập.
  • Tính độc lập dữ liệu: thay đổi cấu trúc lưu trữ hoặc lược đồ không làm ảnh hưởng đến chương trình ứng dụng; giảm chi phí bảo trì và nâng cấp.
  • Hiệu năng và tối ưu truy vấn: bảo đảm truy vấn nhanh khi dữ liệu lớn; tối ưu lưu trữ, chỉ mục, kế hoạch thực thi; cân bằng giữa hiệu năng và tài nguyên hệ thống.
  • Sao lưu và phục hồi dữ liệu: phòng ngừa sự cố phần cứng, phần mềm hoặc lỗi người dùng; cho phép khôi phục dữ liệu về trạng thái đúng; bảo đảm dữ liệu không bị mất.

Tóm tắt lợi ích: lưu trữ và quản lý dữ liệu tập trung phục vụ toàn bộ hệ thống thông tin; cung cấp dữ liệu chính xác, kịp thời cho các chức năng nghiệp vụ; hỗ trợ chia sẻ và truy cập đồng thời; bảo đảm an toàn, toàn vẹn và nhất quán dữ liệu; là nền tảng cho phân tích, báo cáo và hỗ trợ ra quyết định.

1.3 Hệ quản trị cơ sở dữ liệu (DBMS)

Chương 1 - Tổng quan về CSDL
0:00

1.3 Hệ quản trị cơ sở dữ liệu (DBMS)

Định nghĩa: Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) là công cụ dùng để tạo lập, lưu trữ, quản lý và khai thác cơ sở dữ liệu một cách có hệ thống. DBMS đóng vai trò trung gian giữa người dùng hoặc ứng dụng với cơ sở dữ liệu, bảo đảm dữ liệu được truy cập, cập nhật đúng, an toàn, nhất quán và hiệu quả. Một số hệ quản trị cơ sở dữ liệu phổ biến: MySQL, PostgreSQL, Microsoft SQL Server, Oracle Database, MongoDB (NoSQL).

Các chức năng chính:

  • Ngôn ngữ giao tiếp: ngôn ngữ định nghĩa dữ liệu DDL khai báo cấu trúc cơ sở dữ liệu, bảng, mối liên hệ và ràng buộc; ngôn ngữ thao tác dữ liệu DML thêm, sửa, xóa dữ liệu; ngôn ngữ truy vấn SQL truy vấn và khai thác thông tin; ngôn ngữ điều khiển dữ liệu DCL quản lý bảo mật, phân quyền và kiểm soát quyền truy cập.
  • Từ điển dữ liệu: mô tả và quản lý siêu dữ liệu về cấu trúc như bảng, thuộc tính, kiểu dữ liệu, khóa và ràng buộc; ghi nhận mối quan hệ giữa các bảng, khóa chính, khóa ngoại; cung cấp thông tin cấu trúc và thống kê phục vụ phân tích và tối ưu truy vấn; lưu trữ ràng buộc toàn vẹn, thông tin người dùng và quyền truy cập; hỗ trợ quản trị, bảo trì và mở rộng.
  • Cơ chế giải quyết tranh chấp dữ liệu: cho phép nhiều giao dịch truy cập đồng thời nhưng bảo đảm tính nhất quán và cô lập; sử dụng cơ chế khóa để kiểm soát quyền đọc và ghi; lập lịch và cô lập giao dịch ngăn các hiện tượng bất thường như mất cập nhật, đọc không lặp lại; cho phép đọc và ghi song song để tăng hiệu năng; phát hiện và xử lý bế tắc (deadlock) để hệ thống tiếp tục hoạt động ổn định.
  • Cơ chế sao lưu và phục hồi: tạo bản sao lưu định kỳ phòng ngừa mất mát dữ liệu; phục hồi về trạng thái ổn định gần nhất khi xảy ra lỗi phần cứng, phần mềm hoặc thao tác sai; hỗ trợ sao lưu toàn bộ và gia tăng; sử dụng nhật ký giao dịch (log) để phục hồi chính xác các thay đổi sau lần sao lưu cuối.
  • Bảo đảm tính độc lập giữa dữ liệu và chương trình: thay đổi cấu trúc lưu trữ hoặc lược đồ không ảnh hưởng đến chương trình khai thác; hỗ trợ độc lập vật lý và độc lập logic; nhờ cơ chế mô tả dữ liệu và từ điển dữ liệu, ứng dụng chỉ làm việc với giao diện logic.

Kiến trúc chung (3 mức):

  • Mức ngoài (External Level): giao diện làm việc với người dùng và chương trình ứng dụng; mỗi người dùng nhìn thấy một phần cơ sở dữ liệu (khung nhìn) phù hợp theo nhu cầu và quyền hạn; có thể có nhiều khung nhìn khác nhau. Đối tượng tương tác là người dùng, chương trình ứng dụng. Ngôn ngữ sử dụng SQL với lệnh SELECT và DML với lệnh INSERT, UPDATE, DELETE.
  • Mức khái niệm (Conceptual Level): mô tả cấu trúc logic của toàn bộ cơ sở dữ liệu, ẩn đi chi tiết lưu trữ vật lý; định nghĩa tất cả thực thể, thuộc tính, mối quan hệ và ràng buộc toàn vẹn; cho cái nhìn thống nhất của quản trị viên. Sử dụng DDL với các lệnh CREATE, ALTER, mô hình dữ liệu logic (phổ biến nhất là mô hình quan hệ), ràng buộc toàn vẹn và từ điển dữ liệu (metadata).
  • Mức trong (Internal Level): mô tả cách dữ liệu được lưu trữ vật lý trên các thiết bị nhớ; bao gồm tệp dữ liệu, chỉ mục (index), phương thức truy xuất, nhật ký giao dịch, cơ chế sao lưu và phục hồi; là mối quan tâm của kỹ sư hệ thống.

Các thành phần cốt lõi khác: Query Processor phân tích và tối ưu truy vấn; Storage Manager quản lý lưu trữ; Transaction Manager điều khiển giao dịch; Concurrency Control xử lý tranh chấp dữ liệu; Authorization Manager quản lý quyền truy cập.

1.4 Người sử dụng cơ sở dữ liệu

Chương 1 - Tổng quan về CSDL
0:00

1.4 Người sử dụng cơ sở dữ liệu

Người sử dụng cơ sở dữ liệu là các cá nhân hoặc chương trình khai thác và sử dụng dữ liệu thông qua hệ quản trị cơ sở dữ liệu. Gồm các nhóm chính với vai trò, quyền hạn và mức độ truy cập khác nhau:

  • Người quản trị cơ sở dữ liệu (DBA): quản lý và kiểm soát toàn bộ hệ thống cơ sở dữ liệu; có quyền cao nhất. Nhiệm vụ: thiết kế và quản lý lược đồ cơ sở dữ liệu; cấp quyền và kiểm soát bảo mật; sao lưu và phục hồi dữ liệu; giám sát hiệu năng và xử lý sự cố.
  • Người phát triển ứng dụng (Application Programmer/Developer): xây dựng các chương trình ứng dụng khai thác cơ sở dữ liệu. Nhiệm vụ: viết mã chương trình sử dụng SQL, API để truy cập dữ liệu; thiết kế giao diện và logic nghiệp vụ; bảo đảm chương trình tuân thủ các ràng buộc dữ liệu. Không trực tiếp quản trị cơ sở dữ liệu nhưng tác động lớn đến việc sử dụng dữ liệu.
  • Người dùng cuối (End Users): khai thác dữ liệu thông qua ứng dụng hoặc công cụ truy vấn.
    • Người dùng thông thường (Naive Users): ví dụ nhân viên bán hàng; sử dụng các form, menu có sẵn; không cần biết SQL hay cấu trúc cơ sở dữ liệu.
    • Người dùng có hiểu biết (Casual/Sophisticated Users): ví dụ chuyên viên phân tích dữ liệu; truy vấn trực tiếp bằng SQL hoặc công cụ phân tích; có kiến thức nhất định về cơ sở dữ liệu.
  • Người thiết kế cơ sở dữ liệu (Database Designer): thiết kế mô hình dữ liệu cho hệ thống. Nhiệm vụ: phân tích yêu cầu nghiệp vụ; xây dựng mô hình thực thể liên kết; chuyển đổi sang mô hình quan hệ. Nhóm này quyết định chất lượng cấu trúc cơ sở dữ liệu ngay từ đầu.

Hệ quản trị cơ sở dữ liệu hỗ trợ phân quyền và kiểm soát truy cập cho từng loại người dùng, bảo đảm an toàn và sử dụng hiệu quả dữ liệu trong toàn hệ thống.

1.5 Một số mô hình dữ liệu

Chương 1 - Tổng quan về CSDL
0:00

1.5 Một số mô hình dữ liệu

Mô hình dữ liệu là cách thức biểu diễn, tổ chức và quản lý dữ liệu trong hệ thống cơ sở dữ liệu, làm cơ sở cho việc thiết kế và xây dựng cơ sở dữ liệu. Các mô hình dữ liệu chia thành hai nhóm chính: mô hình dữ liệu SQL (truyền thống) có cấu trúc chặt chẽ, lược đồ xác định trước; và mô hình dữ liệu NoSQL (hiện đại) linh hoạt, mở rộng lớn, phù hợp dữ liệu phi cấu trúc.

1.5.1 Mô hình dữ liệu SQL:

  • Mô hình phân cấp (Hierarchical Model): tổ chức dữ liệu theo cấu trúc cây, thể hiện mối quan hệ cha - con giữa các kiểu bản ghi. Mỗi nút con chỉ có một nút cha; truy cập dữ liệu theo đường dẫn cố định; cấu trúc đơn giản nhưng kém linh hoạt. Ứng dụng: hệ thống quản lý thư mục.
  • Mô hình mạng (Network Model): biểu diễn dữ liệu bằng đồ thị, trong đó một kiểu bản ghi có thể liên kết với nhiều kiểu bản ghi khác. Một nút có thể có nhiều nút cha; biểu diễn tốt các mối quan hệ phức tạp; cấu trúc và thao tác phức tạp. Ứng dụng: các hệ thống cơ sở dữ liệu thế hệ cũ.
  • Mô hình thực thể - liên kết (Entity-Relationship): mô tả dữ liệu thông qua thực thể, thuộc tính và liên kết, dùng trong giai đoạn đầu của thiết kế cơ sở dữ liệu. Trực quan, dễ hiểu; thể hiện rõ yêu cầu nghiệp vụ; không dùng trực tiếp để lưu trữ dữ liệu. Vai trò: cầu nối giữa phân tích nghiệp vụ và thiết kế cơ sở dữ liệu.
  • Mô hình dữ liệu quan hệ (Relational Model): tổ chức dữ liệu dưới dạng bảng (quan hệ) gồm các bộ (tuple) và thuộc tính. Có lược đồ dữ liệu xác định trước; hỗ trợ ràng buộc toàn vẹn; sử dụng SQL để thao tác dữ liệu. Hệ quản trị tiêu biểu: MySQL, PostgreSQL, Oracle, SQL Server.
  • Mô hình dữ liệu hướng đối tượng (Object-Oriented Model): dữ liệu biểu diễn dưới dạng đối tượng, bao gồm thuộc tính và phương thức, tương tự lập trình hướng đối tượng. Hỗ trợ kế thừa, bao gói, đa hình; phù hợp dữ liệu phức tạp; ít phổ biến hơn mô hình quan hệ. Ứng dụng: GIS, đa phương tiện.

1.5.2 Mô hình dữ liệu NoSQL:

  • Key-Value: dữ liệu lưu dưới dạng cặp khóa - giá trị. Cấu trúc đơn giản; truy xuất rất nhanh; không hỗ trợ truy vấn phức tạp. Hệ quản trị: Redis, DynamoDB.
  • Document: dữ liệu lưu trữ dưới dạng tài liệu (JSON/XML). Không cố định lược đồ; linh hoạt, dễ mở rộng; phù hợp dữ liệu bán cấu trúc. Hệ quản trị: MongoDB, CouchDB.
  • Graph: dữ liệu biểu diễn bằng đỉnh (node) và cạnh (edge). Tối ưu cho xử lý mối quan hệ; truy vấn quan hệ nhanh; phù hợp mạng xã hội, khuyến nghị. Hệ quản trị: Neo4j, Amazon Neptune.

1.5.3 So sánh SQL và NoSQL:

  • Mô hình dữ liệu: SQL dùng bảng (quan hệ), lược đồ cố định; NoSQL dùng Key-Value, Document, Graph, Column.
  • Lược đồ: SQL xác định trước, chặt chẽ; NoSQL linh hoạt, thay đổi dễ dàng.
  • Ngôn ngữ truy vấn: SQL sử dụng SQL; NoSQL tùy từng hệ quản trị.
  • Ràng buộc toàn vẹn: SQL mạnh, rõ ràng (miền giá trị, khóa, tham chiếu); NoSQL hạn chế hoặc do ứng dụng kiểm soát.
  • Tính nhất quán: SQL theo ACID; NoSQL thường theo BASE.
  • Mở rộng: SQL chủ yếu mở rộng dọc (scale up); NoSQL mở rộng ngang (scale out).
  • Hiệu năng: SQL tốt với giao dịch phức tạp; NoSQL tốt với dữ liệu lớn, truy cập nhanh.
  • Ứng dụng phù hợp: SQL cho hệ thống nghiệp vụ, tài chính; NoSQL cho Big Data, web, mạng xã hội.
  • Hệ quản trị: SQL có MySQL, PostgreSQL, Oracle, SQL Server; NoSQL có MongoDB, Redis, Neo4j.

Ví dụ: Một hệ thống bán hàng truyền thống dùng PostgreSQL (SQL) để bảo đảm giao dịch ACID; một mạng xã hội dùng Neo4j (Graph) để gợi ý bạn bè và MongoDB (Document) để lưu hồ sơ người dùng linh hoạt.

Khái niệm thực thể, thuộc tính và khóa

Chương 2 - Lý thuyết Mô hình ERD
0:00

1. Thực thể và kiểu thực thể

Mô hình thực thể liên kết (Entity-Relationship Model) do Peter Chen đề xuất năm 1976 là phương pháp mô hình hóa dữ liệu khái niệm, dùng để mô tả cấu trúc dữ liệu ở mức trừu tượng. Thành phần cơ bản nhất là thực thể: một "sự vật", "đối tượng" hoặc "khái niệm" cụ thể tồn tại và có thể phân biệt được với các đối tượng khác trong thế giới thực. Ví dụ, một quyển sách cụ thể tồn tại độc lập và phân biệt với các quyển sách khác.

Kiểu (tập) thực thể là tập hợp các thực thể có cùng các đặc trưng chung; đây là sự trừu tượng hóa các thực thể trong cùng một nhóm. Mỗi kiểu thực thể có tên riêng, thường là danh từ. Ví dụ, kiểu thực thể SACH với các đặc trưng chung: Mã sách, Tên sách, ... Kiểu thực thể SINH VIÊN có các đặc trưng: Mã sinh viên, Họ và tên, Ngày sinh, Giới tính.

Tiêu thứcKiểu thực thểThực thể
Khái niệmMột tập hợp các đối tượngMột đối tượng cụ thể
Số lượngNhiềuMột
Bản chất"Khung" chứa dữ liệuDữ liệu cụ thể
Thể hiệnTên kiểu thực thể và tên các đặc trưngBộ các giá trị tương ứng với các đặc trưng

Biểu diễn đồ họa của kiểu thực thể là hình chữ nhật gồm 2 phần: tên kiểu thực thể và các đặc trưng chung.

2. Thuộc tính

Thuộc tính là một đặc trưng của một kiểu thực thể hoặc một kiểu liên kết. Mỗi thuộc tính có tên riêng, kiểu dữ liệu và miền giá trị tương ứng. Ví dụ, kiểu thực thể SINH VIÊN có thuộc tính Mã sinh viên; giữa NHÂN VIÊN và SẢN PHẨM có kiểu liên kết "bán", thuộc tính Số lượng là thuộc tính của kiểu liên kết vì phụ thuộc đồng thời vào cả hai kiểu thực thể.

  • Thuộc tính đơn: giá trị đối với một thực thể là một giá trị đơn. Ví dụ, Mã sinh viên chỉ có một giá trị 4551050001.
  • Thuộc tính đa trị (lặp): giá trị đối với một thực thể là một dãy các giá trị đơn. Ví dụ, Ngoại ngữ có thể có nhiều giá trị: Anh, Nga, ...
  • Thuộc tính phức hợp: là sự kết tập từ nhiều thuộc tính khác. Ví dụ, Quê quán cấu thành bởi Xã, Tỉnh.

3. Khóa

Khóa của kiểu thực thể E là một hay một tập thuộc tính dùng để phân biệt hai thực thể bất kỳ trong E, tức là giá trị của khóa là duy nhất. Ví dụ, khóa của SINH VIÊN là Mã sinh viên; của LỚP là Mã lớp; của KHOA là Mã khoa; của HỌC PHẦN là Mã học phần. Khóa có thể là một thuộc tính hoặc nhiều thuộc tính; nếu kiểu thực thể chưa có thuộc tính khóa, cần bổ sung thuộc tính khóa.

Liên kết và bản số

Chương 2 - Lý thuyết Mô hình ERD
0:00

1. Liên kết và kiểu liên kết

Liên kết (còn gọi là quan hệ) là sự kết hợp giữa hai hay nhiều thực thể phản ánh sự ràng buộc trong quản lý, trong đó mỗi thực thể đóng một vai trò nhất định. Ví dụ, sinh viên Nguyễn Văn An đăng ký khóa học Nhập môn cơ sở dữ liệu.

Kiểu liên kết là tập hợp các liên kết có cùng ý nghĩa, hay tập hợp các liên kết cùng loại giữa các kiểu thực thể. Ví dụ, tồn tại kiểu liên kết "Đăng ký" giữa hai kiểu thực thể SINH VIÊN và KHÓA HỌC. Biểu diễn đồ họa của kiểu liên kết là hình thoi, bên trong là tên kiểu liên kết; tên kiểu liên kết thường là động từ. Nếu kiểu liên kết 2 ngôi, cần xác định bản số ở hai đầu.

2. Bản số (ứng số)

Trong một kiểu liên kết hai ngôi R ⊆ T1 × T2, bản số của R về phía T1 (hoặc T2) là một cặp số m..n, trong đó m và n là các số tối thiểu và tối đa các thực thể trong T1 (tương ứng T2) có thể liên kết qua R với một thực thể trong T2 (tương ứng T1). Ví dụ, kiểu liên kết dạy giữa THẦY và TRÒ có bản số phía THẦY là 0..2 (số thầy mà một trò có thể học) và phía TRÒ là 1..2 (số trò mà một thầy có thể dạy).

3. Các kiểu liên kết theo bản số

  • Liên kết một - một (1-1): Một thực thể của kiểu A quan hệ với một thực thể của kiểu B và ngược lại. Ví dụ, một sinh viên làm một khóa luận tốt nghiệp và một khóa luận chỉ có một sinh viên làm.
  • Liên kết một - nhiều (1-n): Một thực thể của kiểu A quan hệ với nhiều thực thể của kiểu B, và một thực thể của kiểu B quan hệ với chỉ một thực thể của kiểu A. Ví dụ, một lớp sinh hoạt có nhiều sinh viên, một sinh viên chỉ thuộc một lớp sinh hoạt.
  • Liên kết nhiều - nhiều (n-n): Một thực thể của kiểu A quan hệ với nhiều thực thể của kiểu B và ngược lại. Ví dụ, một giảng viên dạy nhiều sinh viên và một sinh viên được dạy bởi nhiều giảng viên.

Cần nghiên cứu và phân tích dữ liệu để xác định đúng bản số các thực thể tham gia vào kiểu liên kết, từ đó xác định chính xác kiểu liên kết giữa các kiểu thực thể trong hệ thống dữ liệu thực.

ERD mở rộng: thực thể con, liên kết đệ quy, liên kết nhiều ngôi và các trường hợp đặc biệt

Chương 2 - Lý thuyết Mô hình ERD
0:00

1. Kiểu thực thể con (Subtype) - tổng quát hóa

Kiểu thực thể con là dạng mở rộng của một kiểu thực thể tổng quát (supertype). Kiểu thực thể con kế thừa các thuộc tính chung từ kiểu thực thể cha và có thêm các thuộc tính riêng. Quan hệ phân cấp giữa chúng là kiểu liên kết IS-A. Đặc điểm: thể hiện quan hệ phân cấp; mỗi thực thể con là một trường hợp cụ thể của thực thể cha; dùng để mô tả hệ thống có các nhóm đối tượng khác nhau nhưng chia sẻ thông tin chung.

Ví dụ: NHÂN VIÊN có các thuộc tính Mã nhân viên, Họ và tên, Ngày sinh, Giới tính. Từ đó có kiểu thực thể con ĐẢNG VIÊN, kế thừa từ NHÂN VIÊN, có thêm các thuộc tính Mã đảng viên, Ngày vào Đảng, Ngày chính thức, Nơi vào Đảng. Quan hệ phân cấp giữa ĐẢNG VIÊN và NHÂN VIÊN là kiểu liên kết IS-A.

2. Kiểu liên kết đệ quy

Là kiểu liên kết trong đó một kiểu thực thể quan hệ với chính nó. Dùng để miêu tả cấu trúc phân cấp, quản lý hoặc thành phần cấu trúc. Thường có số ngôi là 2 nhưng trên cùng một kiểu thực thể. Ví dụ: NHÂN VIÊN có kiểu liên kết "Quản lý" trong chính nó; mỗi nhân viên có thể được quản lý bởi một nhân viên khác, một nhân viên có thể quản lý nhiều nhân viên dưới quyền. Đây là kiểu liên kết đệ quy 1-nhiều.

3. Nhiều kiểu liên kết giữa hai kiểu thực thể

Giữa hai kiểu thực thể có thể tồn tại hơn một kiểu liên kết, phản ánh các mối quan hệ nghiệp vụ khác nhau; các kiểu liên kết có bản chất và ràng buộc khác nhau. Ví dụ, giữa NGƯỜI và CĂN HỘ có thể có kiểu liên kết "Thuê" (một người có thể thuê nhiều căn hộ, một căn hộ có 1 người thuê) và kiểu liên kết "Sở hữu" (một người có thể sở hữu nhiều căn hộ, một căn hộ có 1 người sở hữu).

4. Kiểu liên kết có thuộc tính riêng

Đây là thuộc tính riêng của chính kiểu liên kết, không thuộc về kiểu thực thể nào mà thuộc về kiểu liên kết, liên quan đến các kiểu thực thể tham gia. Thường xuất hiện trong kiểu liên kết nhiều-nhiều; biểu diễn mối quan hệ giữa kiểu liên kết với thuộc tính riêng là đoạn thẳng có nét đứt. Ví dụ, SINH VIÊN và KHÓA HỌC có kiểu liên kết "Đăng ký" với thuộc tính riêng Thời gian đăng ký và Điểm trung bình.

5. Kiểu liên kết 2 ngôi nhiều-nhiều

Là kiểu liên kết giữa hai kiểu thực thể, trong đó mỗi thực thể của một bên có thể liên kết với nhiều thực thể của bên kia; rất phổ biến trong các hệ thống cơ sở dữ liệu thực tiễn. Ví dụ, giữa SINH VIÊN và GIẢNG VIÊN có kiểu liên kết "Dạy": một sinh viên được dạy bởi nhiều giảng viên, một giảng viên dạy nhiều sinh viên.

6. Kiểu liên kết nhiều ngôi

Là kiểu liên kết có từ ba kiểu thực thể trở lên tham gia, dùng để diễn đạt các hoạt động thực tế liên quan nhiều kiểu thực thể cùng lúc. Không xác định bản số như kiểu liên kết 2 ngôi vì mô tả mối quan hệ ràng buộc chung; kiểu liên kết có thể có thuộc tính riêng. Ví dụ, trong hệ thống phân phối hàng hóa, kiểu liên kết "Cung cấp" giữa NHÀ CUNG CẤP, SẢN PHẨM và CỬA HÀNG, với thuộc tính riêng Giá bán, Ngày giao, Số lượng.

Trường hợp đặc biệtÝ nghĩa
Kiểu thực thể conKế thừa, phân cấp (IS-A)
Kiểu liên kết đệ quyKiểu thực thể quan hệ với chính nó
Nhiều kiểu liên kết giữa hai thực thểMô tả nhiều quan hệ nghiệp vụ
Kiểu liên kết có thuộc tính riêngThuộc tính gắn với kiểu liên kết
Kiểu liên kết 2 ngôi nhiều-nhiềuQuan hệ nhiều-nhiều
Kiểu liên kết nhiều ngôiQuan hệ từ 3 kiểu thực thể trở lên

Các bước xây dựng ERD (4 bước)

Chương 2 - Lý thuyết Mô hình ERD
0:00

Quy trình xây dựng mô hình E-R (4 bước)

  1. Bước 1: Xác định danh sách các thuộc tính
    • Phân tích yêu cầu nghiệp vụ: đọc mô tả bài toán, nghiên cứu tài liệu, phỏng vấn người dùng.
    • Liệt kê toàn bộ thuộc tính, ví dụ Họ và tên khách hàng, Ngày sinh, Số điện thoại, Mã sản phẩm, Số lượng bán.
    • Phân loại thuộc tính theo bản chất: đơn, phức hợp, đa trị.
    • Loại bỏ thuộc tính trùng lặp, chỉ giữ một thuộc tính và bổ sung thuộc tính còn thiếu.
    • Sử dụng thống nhất tên gọi; chính xác hóa tên gọi khi cùng tên nhưng khác ý nghĩa, ví dụ Ngày xe vào và Ngày xe ra.
    • Sử dụng tên thuộc tính ngắn gọn, dễ hiểu, có tính gợi ý.

    Kết quả: danh sách tất cả các thuộc tính đã được chính xác hóa, là dữ liệu đầu vào cho bước 2 và 3.

  2. Bước 2: Xác định kiểu thực thể, danh sách thuộc tính và khóa
    • Xác định kiểu thực thể là nhóm đối tượng có cùng bản chất, cùng các thuộc tính mô tả.
    • Tiêu chí nhận diện: có ý nghĩa tồn tại độc lập; có thể phân biệt các đối tượng bằng khóa; có ý nghĩa quản lý rõ ràng.
    • Thường là thông tin liên quan đến con người, tài sản (KHÁCH HÀNG, MẶT HÀNG, PHÒNG) hoặc khái niệm trừu tượng (PHƯƠNG TIỆN GIAO THÔNG, NGƯỜI DÙNG).
    • Gán thuộc tính cho từng kiểu thực thể: chỉ đưa vào những thuộc tính mô tả bản chất của kiểu thực thể đó.
    • Chọn thuộc tính khóa (primary key) phân biệt được từng thực thể; có thể là một hoặc nhiều thuộc tính; nếu chưa có thì bổ sung.

    Kết quả: danh sách kiểu thực thể cùng tập thuộc tính và khóa xác định.

  3. Bước 3: Xác định kiểu liên kết và thuộc tính riêng
    • Nhận diện kiểu liên kết dựa vào yêu cầu nghiệp vụ.
    • Xác định bản số đối với kiểu liên kết 2 ngôi để xác định kiểu liên kết 1-1, 1-nhiều, nhiều-nhiều, đệ quy. Đối với IS-A và liên kết nhiều ngôi không cần xác định bản số.
    • Xác định thuộc tính riêng của liên kết nếu có, liên quan đến các kiểu thực thể tham gia, ví dụ liên kết "Mua" giữa KHÁCH HÀNG và SẢN PHẨM có Ngày mua, Số lượng mua.

    Kết quả: danh sách các kiểu liên kết, bản số và thuộc tính riêng.

    Lưu ý: mỗi thuộc tính chỉ xuất hiện một lần trong một kiểu thực thể hoặc một kiểu liên kết; cần sử dụng hết tất cả thuộc tính; thuộc tính được xác định từ các thuộc tính khác hoặc gán tự động không cần xem xét, ví dụ Thành tiền = Số lượng × Đơn giá.

  4. Bước 4: Vẽ mô hình thực thể liên kết
    • Kiểu thực thể: hình chữ nhật 2 phần, phần trên tên thực thể, bên dưới danh sách thuộc tính.
    • Kiểu liên kết: hình thoi chứa tên kiểu liên kết.
    • Kiểu thực thể con: hình chữ nhật bên trong là mối quan hệ IS-A.
    • Kiểu liên kết đệ quy: một thực thể nối với chính nó.
    • Kiểu liên kết nhiều ngôi: hình thoi nối ba hoặc nhiều kiểu thực thể.

    Kết quả: mô hình thực thể liên kết mở rộng. Công cụ có thể dùng: Draw.io, Microsoft Visio, Lucidchart, ERDPlus, dbdiagram.io, StarUML.

Sau khi xây dựng mô hình mở rộng, có thể chuyển về mô hình E-R kinh điển bằng các quy tắc: xử lý thuộc tính đa trị, xử lý thuộc tính phức hợp, xử lý kiểu thực thể con, xử lý kiểu liên kết 1-1, xử lý kiểu liên kết nhiều-nhiều hoặc nhiều ngôi.

Ví dụ minh họa tổng hợp

Chương 2 - Lý thuyết Mô hình ERD
0:00

Ví dụ minh họa tổng hợp: Hệ thống quản lý đào tạo

Áp dụng bốn bước xây dựng mô hình ERD cho hệ thống quản lý đào tạo đại học. Mục tiêu là quản lý sinh viên, giảng viên, khóa học, lớp học và kết quả đăng ký.

Bước 1 - Danh sách thuộc tính (trích)

  • Mã sinh viên, Họ và tên sinh viên, Ngày sinh, Giới tính, Email, Mã lớp sinh hoạt.
  • Mã giảng viên, Họ và tên giảng viên, Khoa, Học vị.
  • Mã khóa học, Tên khóa học, Số tín chỉ.
  • Thời gian đăng ký, Điểm trung bình.
  • Mã lớp học, Phòng học, Ca học.

Bước 2 - Kiểu thực thể và khóa

Kiểu thực thểThuộc tínhKhóa
SINH VIÊNMã sinh viên, Họ và tên, Ngày sinh, Giới tính, Email, Mã lớp sinh hoạtMã sinh viên
GIẢNG VIÊNMã giảng viên, Họ và tên, Khoa, Học vịMã giảng viên
KHÓA HỌCMã khóa học, Tên khóa học, Số tín chỉMã khóa học
LỚP HỌCMã lớp học, Phòng học, Ca họcMã lớp học

Bước 3 - Kiểu liên kết và bản số

  • SINH VIÊN - LỚP SINH HOẠT: liên kết "Thuộc" (n-1): nhiều sinh viên thuộc một lớp sinh hoạt.
  • GIẢNG VIÊN - KHÓA HỌC: liên kết "Dạy" (n-n): một giảng viên dạy nhiều khóa học, một khóa học có nhiều giảng viên.
  • SINH VIÊN - KHÓA HỌC: liên kết "Đăng ký" (n-n) có thuộc tính riêng Thời gian đăng ký và Điểm trung bình.
  • GIẢNG VIÊN - LỚP HỌC: liên kết "Phụ trách" (1-n): một giảng viên phụ trách nhiều lớp học.
  • SINH VIÊN - LỚP HỌC: liên kết "Tham gia" (n-n) có thể có thuộc tính riêng như Ngày tham gia.

Bước 4 - Mô hình ERD mở rộng

Sơ đồ ERD mở rộng thể hiện các kiểu thực thể SINH VIÊN, GIẢNG VIÊN, KHÓA HỌC, LỚP HỌC và các liên kết nêu trên, trong đó liên kết "Đăng ký" và "Tham gia" là liên kết nhiều-nhiều có thuộc tính riêng. Nếu cần chuyển về mô hình kinh điển, liên kết "Đăng ký" sẽ được chuyển thành kiểu thực thể mới DÒNG ĐĂNG KÝ với khóa là Mã sinh viên và Mã khóa học, chứa các thuộc tính Thời gian đăng ký và Điểm trung bình, nối với SINH VIÊN và KHÓA HỌC bằng liên kết 1-nhiều.

Ví dụ này tổng hợp các khái niệm: thực thể, thuộc tính, khóa, liên kết, bản số, liên kết nhiều-nhiều, thuộc tính riêng của liên kết và chuyển đổi sang mô hình kinh điển.

Bài tập 2_1 - Cửa hàng mỹ phẩm

Chương 2 - Mô hình thực thể liên kết
0:00

Bài tập 2_1 - Cửa hàng mỹ phẩm (Hóa đơn đặt hàng & bán hàng)

Bước 1 - Xác định thuộc tính: Từ hai mẫu hồ sơ, liệt kê toàn bộ thuộc tính: Số HĐ, Mã khách, Họ tên khách, Địa chỉ, Ngày đặt/bán, Địa chỉ giao, Số TT, Mã hàng, Tên hàng, ĐVT, Đơn giá, Số lượng, Thành tiền.

Bước 2 - Xác định kiểu thực thể, thuộc tính, khóa:

  • KHÁCH HÀNG(Mã khách, Họ tên khách, Địa chỉ) - khóa: Mã khách.
  • HÀNG(Mã hàng, Tên hàng, ĐVT, Đơn giá) - khóa: Mã hàng.

Bước 3 - Xác định kiểu liên kết và thuộc tính của liên kết:

  • Liên kết đặt giữa KHÁCH HÀNG và HÀNG: Số HĐ đặt, Ngày đặt, Số lượng đặt.
  • Liên kết giao giữa KHÁCH HÀNG và HÀNG: Số HĐ giao, Ngày giao, Địa chỉ giao, Số lượng giao.

Bước 4 - Bản số: Cả hai liên kết đều là nhiều-nhiều (M:N): một khách hàng có thể đặt/giao nhiều mặt hàng và một mặt hàng có thể được đặt/giao cho nhiều khách hàng.

ERD text:
KHÁCH HÀNG (Mã khách PK, Họ tên, Địa chỉ)
   || (đặt) M:N || (giao) M:N
HÀNG (Mã hàng PK, Tên hàng, ĐVT, Đơn giá)
Thuộc tính liên kết đặt: Số HĐ đặt, Ngày đặt, Số lượng đặt
Thuộc tính liên kết giao: Số HĐ giao, Ngày giao, Địa chỉ giao, Số lượng giao

Ví dụ: Khách hàng mã KH01 đặt 2 mặt hàng son và kem; cùng mặt hàng son có thể được giao cho nhiều khách khác nhau.

KHÁCH HÀNG Mã khách (PK) Họ tên, Địa chỉ HÀNG Mã hàng (PK) Tên hàng, ĐVT, Đơn giá đặt (M:N) giao (M:N)

Bài tập 2_2 - Công ty dịch vụ thể thao ABC

Chương 2 - Mô hình thực thể liên kết
0:00

Bài tập 2_2 - Công ty dịch vụ thể dục thể thao ABC

Bước 1 - Xác định thuộc tính: Từ 3 mẫu hồ sơ: Số khu vực, Tên khu vực, Địa chỉ, Mã dịch vụ, Tên dịch vụ, Đơn giá/Giờ, Số thẻ, Họ tên thành viên, Ngày sinh, Địa chỉ, Năm đăng ký, Số phiếu, Khu vực số, Bắt đầu, Kết thúc.

Bước 2 - Kiểu thực thể, thuộc tính, khóa:

  • KHU VỰC(Số khu vực, Tên khu vực, Địa chỉ) - khóa: Số khu vực.
  • DỊCH VỤ(Mã dịch vụ, Tên dịch vụ) - khóa: Mã dịch vụ.
  • THÀNH VIÊN(Số thẻ, Họ tên, Ngày sinh, Địa chỉ, Năm đăng ký) - khóa: Số thẻ.

Bước 3 - Kiểu liên kết:

  • Liên kết cung cấp/quảng cáo giữa KHU VỰC và DỊCH VỤ (M:N) với thuộc tính Đơn giá/Giờ.
  • Liên kết sử dụng ba ngôi giữa THÀNH VIÊN, DỊCH VỤ, KHU VỰC với thuộc tính Số phiếu, Giờ bắt đầu, Giờ kết thúc.

Bước 4 - Bản số: Một khu vực cung cấp nhiều dịch vụ, một dịch vụ có thể có ở nhiều khu vực (M:N). Một thành viên có thể sử dụng nhiều dịch vụ ở nhiều khu vực.

ERD text:
KHU VỰC (Số khu vực PK, Tên khu vực, Địa chỉ)
   || (cung cấp) M:N || (đơn giá/giờ)
DỊCH VỤ (Mã DV PK, Tên DV)
   || (sử dụng) ternary ||
THÀNH VIÊN (Số thẻ PK, Họ tên, Ngày sinh, Địa chỉ, Năm ĐK)
Thuộc tính liên kết sử dụng: Số phiếu, Bắt đầu, Kết thúc
KHU VỰC Số khu vực (PK) Tên khu vực, Địa chỉ DỊCH VỤ Mã DV (PK) Tên DV THÀNH VIÊN Số thẻ (PK) Họ tên, Ngày sinh, ... cung cấp (M:N) Đơn giá/Giờ sử dụng (ternary)

Bài tập 2_3 - Quản lý điểm sinh viên

Chương 2 - Mô hình thực thể liên kết
0:00

Bài tập 2_3 - Quản lý điểm sinh viên (bản 1)

Thực thể và thuộc tính:

  • SINH VIÊN(Mã SV, Họ tên, Ngày sinh, Giới tính, Nơi sinh, Hộ khẩu) - khóa: Mã SV.
  • KHOA(Mã khoa, Tên khoa) - khóa: Mã khoa.
  • LỚP HỌC PHẦN(Mã lớp, Tên lớp) - khóa: Mã lớp.
  • HỌC PHẦN(Mã HP, Tên HP, Số tín chỉ) - khóa: Mã HP.
  • GIẢNG VIÊN(Mã GV, Họ tên, Học vị) - khóa: Mã GV.

Liên kết và bản số:

  • SINH VIÊN thuộc KHOA: N:1 (nhiều sinh viên - một khoa).
  • LỚP HỌC PHẦN thuộc KHOA: N:1.
  • GIẢNG VIÊN thuộc KHOA: N:1.
  • LỚP HỌC PHẦN thuộc HỌC PHẦN: N:1 (nhiều lớp - một học phần).
  • GIẢNG VIÊN phân công giảng dạy LỚP HỌC PHẦN: 1:N (một giảng viên - nhiều lớp).
  • SINH VIÊN đăng ký LỚP HỌC PHẦN: M:N với thuộc tính Điểm số, Điểm chữ.
ERD text:
SINH VIÊN(Mã SV PK, Họ tên, Ngày sinh, Giới tính, Nơi sinh, Hộ khẩu)
   --thuộc--> KHOA(Mã khoa PK, Tên khoa)  [N:1]
LỚP HP(Mã lớp PK, Tên lớp) --thuộc--> KHOA  [N:1]
LỚP HP --thuộc--> HỌC PHẦN(Mã HP PK, Tên HP, Số tín chỉ) [N:1]
GIẢNG VIÊN(Mã GV PK, Họ tên, Học vị) --thuộc--> KHOA [N:1]
LỚP HP --phân công--> GIẢNG VIÊN [N:1]
SINH VIÊN (đăng ký) LỚP HP [M:N]: Điểm số, Điểm chữ
SINH VIÊN Mã SV (PK) Họ tên, Ngày sinh, ... KHOA Mã khoa (PK) GIẢNG VIÊN Mã GV (PK) Họ tên, Học vị LỚP HP Mã lớp (PK) HỌC PHẦN Mã HP (PK) Tên HP, Số TC thuộc (N:1) thuộc (N:1) thuộc (N:1) thuộc (N:1) phân công (N:1) đăng ký (M:N)

Bài tập 2_4 - Công ty và đề án

Chương 2 - Mô hình thực thể liên kết
0:00

Bài tập 2_4 - Công ty (nhân viên, phòng ban, đề án, thân nhân)

Thực thể và thuộc tính:

  • NHÂN VIÊN(Mã NV, Họ tên, Ngày sinh, Giới tính, Lương) - khóa: Mã NV.
  • PHÒNG BAN(Mã phòng, Tên phòng) - khóa: Mã phòng.
  • ĐỀ ÁN(Mã đề án, Tên đề án, Địa điểm) - khóa: Mã đề án.
  • THÂN NHÂN (thực thể yếu, khóa từng phần Mã thân nhân, Họ tên, Ngày sinh, Giới tính, Quan hệ) - chủ sở hữu: NHÂN VIÊN.

Liên kết và bản số:

  • NHÂN VIÊN thuộc PHÒNG BAN: N:1.
  • NHÂN VIÊN làm TRƯỞNG PHÒNG của PHÒNG BAN: 1:1 với thuộc tính Ngày nhận chức.
  • PHÒNG BAN chủ trì ĐỀ ÁN: 1:N.
  • NHÂN VIÊN tham gia ĐỀ ÁN: M:N với thuộc tính Số giờ làm việc.
  • NHÂN VIÊN có THÂN NHÂN: 1:N (liên kết nhận dạng, thực thể yếu).
ERD text:
NHÂN VIÊN(Mã NV PK, Họ tên, Ngày sinh, Giới tính, Lương)
   --thuộc--> PHÒNG BAN(Mã phòng PK, Tên phòng) [N:1]
   --quản lý (trưởng phòng)--> PHÒNG BAN [1:1], Ngày nhận chức
PHÒNG BAN --chủ trì--> ĐỀ ÁN(Mã ĐA PK, Tên ĐA, Địa điểm) [1:N]
NHÂN VIÊN (tham gia) ĐỀ ÁN [M:N], Số giờ
NHÂN VIÊN (có) THÂN NHÂN(Mã TN, Họ tên, Ngày sinh, Giới tính, Quan hệ) [1:N, weak]
NHÂN VIÊN Mã NV (PK) Họ tên, Ngày sinh, ... PHÒNG BAN Mã phòng (PK) Tên phòng ĐỀ ÁN Mã đề án (PK) Tên ĐA, Địa điểm THÂN NHÂN Mã TN (pk) Họ tên, Ngày sinh, ... thuộc (N:1) trưởng phòng (1:1) chủ trì (1:N) tham gia (M:N) có (1:N, weak)

Bài tập 2_5 - Siêu thị

Chương 2 - Mô hình thực thể liên kết
0:00

Bài tập 2_5 - Siêu thị (nhà cung cấp, gian hàng, khách hàng)

Thực thể và thuộc tính:

  • NHÀ CUNG CẤP(Số hiệu NCC, Tên NCC, Địa chỉ, SĐT) - khóa: Số hiệu NCC.
  • MẶT HÀNG(Mã hàng, Tên hàng, Màu sắc, Trọng lượng, ĐVT, Số lượng tồn) - khóa: Mã hàng.
  • GIAN HÀNG(Mã gian, Tên gian) - khóa: Mã gian.
  • NHÂN VIÊN(Mã NV, Họ tên, Lương) - khóa: Mã NV.
  • KHÁCH HÀNG(Mã KH, Họ tên, Địa chỉ) - khóa: Mã KH.
  • THÂN NHÂN (thực thể yếu, Mã TN, Họ tên, Ngày sinh, Giới tính, Quan hệ) - chủ sở hữu: NHÂN VIÊN.

Liên kết và bản số:

  • NHÀ CUNG CẤP cung cấp MẶT HÀNG: M:N với thuộc tính Đơn giá, Số lượng, Số HĐ, Ngày bán.
  • GIAN HÀNG bán MẶT HÀNG: 1:N (một gian - nhiều mặt hàng; mỗi mặt hàng một gian).
  • NHÂN VIÊN tư vấn cho GIAN HÀNG: 1:N (một nhân viên - nhiều gian).
  • KHÁCH HÀNG mua MẶT HÀNG: M:N với thuộc tính Mã HĐ, Ngày mua, Đơn giá, Số lượng.
  • NHÂN VIÊN có THÂN NHÂN: 1:N (thực thể yếu).
ERD text:
NCC(Số hiệu NCC PK, Tên NCC, Địa chỉ, SĐT)
   (cung cấp) M:N MẶT HÀNG(Mã hàng PK, Tên hàng, Màu sắc, Trọng lượng, ĐVT, Số lượng tồn)
   thuộc tính liên kết: Đơn giá, Số lượng, Số HĐ, Ngày bán
GIAN HÀNG(Mã gian PK, Tên gian) --bán--> MẶT HÀNG [1:N]
NHÂN VIÊN(Mã NV PK, Họ tên, Lương) --tư vấn--> GIAN HÀNG [1:N]
KHÁCH HÀNG(Mã KH PK, Họ tên, Địa chỉ) (mua) MẶT HÀNG [M:N]
   thuộc tính liên kết: Mã HĐ, Ngày mua, Đơn giá, Số lượng
NHÂN VIÊN (có) THÂN NHÂN(Mã TN, Họ tên, Ngày sinh, Giới tính, Quan hệ) [1:N, weak]
NCC Số hiệu NCC (PK) Tên NCC, Địa chỉ, SĐT MẶT HÀNG Mã hàng (PK) Tên hàng, Màu sắc, ... GIAN HÀNG Mã gian (PK) Tên gian KHÁCH HÀNG Mã KH (PK) Họ tên, Địa chỉ NHÂN VIÊN Mã NV (PK) Họ tên, Lương THÂN NHÂN Mã TN (pk) Họ tên, Ngày sinh, ... cung cấp (M:N) bán (1:N) mua (M:N) tư vấn (1:N) có (1:N, weak)

Bài tập tình huống - TMĐT kết hợp mạng xã hội

Chương 2 - Mô hình thực thể liên kết
0:00

Bài tập tình huống - Hệ thống thương mại điện tử kết hợp mạng xã hội

Hệ thống chỉ dùng SQL không còn phù hợp khi số người dùng tăng nhanh. Đề xuất tổ chức dữ liệu theo mô hình polyglot persistence:

  • SQL (RDBMS): quản lý người dùng, đơn hàng, thanh toán - dữ liệu cần ACID và nhất quán.
  • Graph DB (Neo4j): lưu mối quan hệ người dùng và gợi ý sản phẩm theo quan hệ/hành vi.
  • Document/NoSQL (MongoDB): hồ sơ người dùng linh hoạt, catalog sản phẩm.
  • Wide-column/Time-series (Cassandra): lưu hành vi người dùng (lượt xem, thích, bình luận) khối lượng lớn.
  • Redis: cache và session để tăng tốc.
  • Elasticsearch: tìm kiếm sản phẩm và nội dung.

Kết hợp nhiều mô hình dữ liệu giúp cân bằng nhất quán, hiệu năng và khả năng mở rộng.

NGƯỜI DÙNG Mã ND (PK) Họ tên, ... SẢN PHẨM Mã SP (PK) Tên SP, Giá, ... ĐƠN HÀNG Mã ĐH (PK) Ngày đặt, ... BÀI ĐĂNG Mã BD (PK) Nội dung, ... BÌNH LUẬN Mã BL (PK) Nội dung, ... đặt hàng (1:N) chứa (M:N) đăng (1:N) có (1:N)

Hướng giải mẫu - Bài tập 2_1 (4 bước)

Chương 2 - Mô hình thực thể liên kết
0:00

Hướng giải mẫu - Bài tập 2_1 (4 bước)

Phần 1: Phát biểu bài toán - Cửa hàng mỹ phẩm với hóa đơn đặt hàng và hóa đơn bán/giao hàng.

Bước 1: Xác định thuộc tính - Liệt kê và chính xác hóa tên thuộc tính từ hai hóa đơn (Số HĐ đặt/giao, Mã khách, Họ tên khách, Địa chỉ, Ngày đặt/giao, Địa chỉ giao, Mã hàng, Tên hàng, ĐVT, Đơn giá, Số lượng đặt/giao, ...).

Bước 2: Xác định kiểu thực thể, thuộc tính, khóa

  • KHÁCH HÀNG(Mã khách, Họ tên khách, Địa chỉ).
  • HÀNG(Mã hàng, Tên hàng, ĐVT, Đơn giá).

Bước 3: Xác định kiểu liên kết, thuộc tính liên kết

  • Liên kết đặt: Số HĐ đặt, Ngày đặt, Số lượng đặt.
  • Liên kết giao: Số HĐ giao, Ngày giao, Địa chỉ giao, Số lượng giao.

Bước 4: Vẽ mô hình thực thể liên kết mở rộng - Hai thực thể và hai liên kết nhiều nhiều, mỗi liên kết mang thuộc tính riêng.

ERD text:
KHÁCH HÀNG (Mã khách PK, Họ tên, Địa chỉ)
   || (đặt) M:N || (giao) M:N
HÀNG (Mã hàng PK, Tên hàng, ĐVT, Đơn giá)
KHÁCH HÀNG Mã khách (PK) Họ tên, Địa chỉ HÀNG Mã hàng (PK) Tên hàng, ĐVT, Đơn giá đặt (M:N) giao (M:N)

Khái niệm quan hệ, tuple, miền, lược đồ

Chương 3 - Lý thuyết Mô hình quan hệ
0:00

1. Thuộc tính và miền giá trị

Thuộc tính là một đặc trưng dùng để mô tả một khía cạnh của đối tượng trong thế giới thực được lưu trữ trong cơ sở dữ liệu. Mỗi thuộc tính có tên thuộc tính và miền giá trị, trong đó miền giá trị bao gồm kiểu dữ liệu và phạm vi giá trị hợp lệ. Về mặt toán học, mỗi thuộc tính A_i được gắn với một miền giá trị Dom(A_i), với Dom(A_i) ≠ ∅. Thuộc tính được hiểu như một biến nhận giá trị trong một tập xác định (miền).

Ví dụ, cho quan hệ SINH_VIÊN với các thuộc tính MãSV, HọTên, NgàySinh, GiớiTính, ta có Dom(MãSV) = Text(10), Dom(HọTên) = Text(100), Dom(NgàySinh) = Date(8), Dom(GiớiTính) = Logic(1). Các miền này xác định rõ kiểu và phạm vi dữ liệu hợp lệ cho từng thuộc tính.

2. Bộ (tuple)

Một bộ là một bản ghi trong quan hệ, biểu diễn một đối tượng cụ thể. Mỗi bộ là một ánh xạ từ tập thuộc tính sang các giá trị cụ thể trong miền tương ứng. Một bộ t trên tập thuộc tính U là hàm ánh xạ t: U → ⋃_{A∈U} Dom(A), sao cho ∀A ∈ U, t(A) ∈ Dom(A). Cách viết tương đương: nếu U = {A1, A2, ..., An} thì t = (a1, a2, ..., an) với ai ∈ Dom(Ai).

Ví dụ, trong quan hệ SINH_VIÊN, bộ (4451050002, Nguyễn Văn A, 10/10/02, 1) mô tả thông tin của sinh viên có mã sinh viên 4451050002. Mỗi giá trị trong bộ phải thuộc miền của thuộc tính tương ứng.

3. Quan hệ (relation)

Một quan hệ R trên tập thuộc tính U = {A1, A2, ..., An} là một tập hữu hạn các bộ, tức là R ⊆ Dom(A1) × Dom(A2) × ... × Dom(An), hay nói cách khác R = { t | t là một bộ trên U }. Trực quan, mỗi quan hệ R(U) là một bảng: mỗi cột là một thuộc tính, mỗi dòng là một bộ. Ký hiệu t[U] là một bộ trên tập thuộc tính U.

MãSVHọTênNgàySinhGiớiTính
4451050002Nguyễn Văn A10/10/021
4451130014Hồ Ngọc Hà25/11/010
4454030114Tô Ngọc Long11/02/021
4451050123Vũ Như Cẩn24/12/011

Tóm tắt và lời khuyên: thuộc tính là đơn vị mô tả nhỏ nhất của dữ liệu; bộ biểu diễn một cá thể cụ thể trong thế giới thực; quan hệ chỉ lưu trữ dữ liệu, không lưu trữ cấu trúc; trong một quan hệ không cho phép tồn tại hai bộ hoàn toàn giống nhau; thứ tự thuộc tính hay bộ không mang ý nghĩa trong mô hình quan hệ.

4. Lược đồ quan hệ (schema)

Lược đồ quan hệ mô tả cấu trúc logic của một quan hệ trong cơ sở dữ liệu, bao gồm tên quan hệ, tập các thuộc tính và các ràng buộc tham chiếu trên các thuộc tính đó. Lược đồ quan hệ không chứa dữ liệu cụ thể, mà chỉ mô tả khuôn dạng (schema) của dữ liệu. Trong lý thuyết cơ sở dữ liệu, lược đồ quan hệ thường được biểu diễn R(U, F), trong đó R là tên quan hệ, U là tập thuộc tính, F là tập các ràng buộc (phụ thuộc hàm) xác định trên U. Trong một cơ sở dữ liệu sẽ bao gồm một hay nhiều lược đồ quan hệ.

Tiêu chíLược đồ quan hệQuan hệ
Khái niệmMô tả cấu trúc logic của dữ liệuTập dữ liệu cụ thể tuân theo lược đồ
Bản chấtĐịnh nghĩa (schema)Thể hiện (instance)
Thành phầnTên quan hệ, tập thuộc tính, ràng buộcTập các bộ (tuple)
Mức trừu tượngMức thiết kếMức vận hành
KhóaĐược xác định trên lược đồGiá trị khóa xuất hiện trong dữ liệu
Ràng buộcĐịnh nghĩa ràng buộc miền, khóa, tham chiếuPhải tuân thủ các ràng buộc

Lược đồ quan hệ là cơ sở của thiết kế cơ sở dữ liệu; mọi ràng buộc về khóa, miền giá trị và tham chiếu đều được xác định trên lược đồ; lược đồ quyết định cách lưu trữ và truy vấn dữ liệu.

5. Các ký hiệu truyền thống

  • Ký hiệu lược đồ quan hệ: R, S, T,... là tên quan hệ (viết hoa); R(U) là lược đồ quan hệ R với tập thuộc tính U; R(U, F) là lược đồ quan hệ R với tập thuộc tính U và tập phụ thuộc hàm F xác định trên U.
  • Ký hiệu thuộc tính: chữ Latin hoa đầu bảng A, B, C,... cho thuộc tính đơn; A_i là thuộc tính thứ i; chữ Latin hoa cuối bảng U, V,..., X, Y, Z cho tập thuộc tính; U = ABC hoặc U = {A, B, C} biểu diễn các phần tử trong một tập thuộc tính.
  • Ký hiệu bộ của quan hệ: các bộ biểu diễn bằng chữ cái Latin thường (có thể có chỉ số) t, s, t1, t2,...; với mỗi bộ t trong quan hệ R(U) và mỗi tập con thuộc tính X ⊆ U, ký hiệu t[X] hoặc t.X là hạn chế của bộ t trên tập thuộc tính X.
  • Quy ước khác: tên quan hệ chữ in hoa (SINH_VIÊN); tên thuộc tính chữ cái đầu viết hoa hoặc thường (MãSV, HọTên); khóa của lược đồ quan hệ được gạch chân; tập thuộc tính tham chiếu in nghiêng.

Ví dụ, với lược đồ quan hệ SINH_VIÊN(MãSV, HọTên, NgàySinh, GiớiTính), ta có U = {MãSV, HọTên, NgàySinh, GiớiTính, MãHP}; t = (4451150001, Nguyễn Văn A, 12/12/01, 1); X = {HọTên, NgàySinh} ⊆ U; t.X = t[X] = (Nguyễn Văn A, 12/12/01).

Khóa của quan hệ (siêu khóa, khóa ứng viên, khóa chính, khóa ngoại)

Chương 3 - Lý thuyết Mô hình quan hệ
0:00

1. Siêu khóa (superkey)

Siêu khóa là một tập con K ⊆ U của các thuộc tính sao cho không có hai bộ nào trong quan hệ có cùng giá trị trên K. Hình thức: ∀t1, t2 ∈ R, t1[K] = t2[K] ⇒ t1 = t2. Siêu khóa đảm bảo tính duy nhất của bộ. Tập tất cả thuộc tính U luôn là một siêu khóa, nhưng thường không tối thiểu và không thuận tiện để sử dụng.

2. Khóa ứng viên (candidate key)

Khóa ứng viên là siêu khóa tối thiểu: không tồn tại K' ⊂ K sao cho K' cũng là siêu khóa. Điều kiện tối thiểu: K xác định được giá trị của mọi thuộc tính Ai (i = 1..n), và không tồn tại K' ⊂ K có thể xác định được giá trị của mọi Ai. Một quan hệ có thể có nhiều khóa ứng viên; mỗi khóa ứng viên đều có khả năng phân biệt duy nhất các bộ.

3. Khóa chính (primary key)

Khóa chính là khóa ứng viên được chọn để đại diện cho quan hệ, thường được gạch chân trong lược đồ. Khóa chính phải duy nhất và không được rỗng (NULL) theo ràng buộc toàn vẹn thực thể. Khi có nhiều khóa ứng viên, ưu tiên chọn khóa đơn giản, ổn định, ngắn gọn và ít thay đổi theo thời gian. Ví dụ, trong quan hệ SINH_VIÊN, MãSV là khóa chính.

4. Khóa ngoại (foreign key)

Khóa ngoại là tập thuộc tính trong quan hệ R tham chiếu đến tập thuộc tính khóa (thường là khóa chính) của quan hệ S. Điều kiện: cùng miền giá trị; giá trị của khóa ngoại phải tồn tại trong quan hệ được tham chiếu (hoặc NULL nếu cho phép). Ràng buộc tham chiếu đảm bảo tính nhất quán giữa các quan hệ. Một số nhận xét:

  • Trong một quan hệ, một thuộc tính có thể vừa tham gia thuộc tính khóa, vừa tham gia thuộc tính tham chiếu.
  • Tập thuộc tính tham chiếu chỉ tham chiếu đến tập thuộc tính khóa trên cùng một cơ sở dữ liệu.
  • Có thể có nhiều thuộc tính tham chiếu cùng tham chiếu đến tập thuộc tính khóa.

5. Ví dụ xác định khóa và khóa ngoại

Cho các quan hệ: SINH_VIÊN(MãSV, HọTên, NgàySinh, GiớiTính, MãHP), HỌC_PHẦN(MãHP, TênHP, SốTC), SV_HP(MãSV, MãHP, Ngày_Đăng_Ký, ĐiểmHP).

  • Quan hệ SINH_VIÊN có khóa là MãSV; quan hệ HỌC_PHẦN có khóa là MãHP; quan hệ SV_HP có khóa là (MãSV, MãHP).
  • Ràng buộc tham chiếu: SINH_VIÊN.MãHP tham chiếu đến khóa HỌC_PHẦN.MãHP; SV_HP.MãSV tham chiếu đến khóa SINH_VIÊN.MãSV và SV_HP.MãHP tham chiếu đến khóa HỌC_PHẦN.MãHP.

Khóa có thể là đơn (một thuộc tính) hoặc tổ hợp (nhiều thuộc tính). Khóa tổ hợp thường xuất hiện trong quan hệ liên kết nhiều-nhiều, nơi không có thuộc tính đơn nào đủ để phân biệt duy nhất các bộ.

Các ràng buộc toàn vẹn (thực thể, tham chiếu, miền)

Chương 3 - Lý thuyết Mô hình quan hệ
0:00

1. Ràng buộc miền giá trị (domain constraint)

Ràng buộc miền giá trị yêu cầu mọi giá trị của một thuộc tính phải thuộc miền giá trị xác định của thuộc tính đó: ∀t ∈ R, t[A] ∈ Dom(A). Ràng buộc này đảm bảo tính hợp lệ của dữ liệu, ngăn chặn giá trị sai kiểu hoặc sai phạm vi. Ví dụ, trong quan hệ SINH_VIÊN(MãSV, Tuổi, GiớiTính): Dom(Tuổi) = { x ∈ ℕ | 18 ≤ x ≤ 60 }, Dom(GiớiTính) = {1, 0}.

2. Ràng buộc khóa (key constraint)

Ràng buộc khóa đảm bảo mỗi bộ trong quan hệ được phân biệt duy nhất bởi giá trị khóa: ∀t1, t2 ∈ R, t1[K] = t2[K] ⇒ t1 = t2. Khóa K xác định được giá trị của Ai (i = 1..n), và không tồn tại K' ⊂ K có thể xác định được giá trị của Ai. Ý nghĩa: tránh dữ liệu trùng lặp và tạo nền tảng cho việc liên kết giữa các quan hệ. Ví dụ, trong quan hệ SINH_VIÊN(MãSV, HọTên, NgàySinh), hai bộ t1 = (SV01, Nguyễn Văn A, 10/10/02) và t2 = (SV01, Nguyễn Thị B, 25/11/01) là không hợp lệ vì cùng khóa MãSV.

3. Ràng buộc toàn vẹn thực thể (entity integrity)

Ràng buộc toàn vẹn thực thể yêu cầu giá trị khóa chính không được rỗng (NULL). Ví dụ, trong quan hệ SINH_VIÊN(MãSV, HọTên, NgàySinh) với khóa là MãSV, bộ t1 = (NULL, Nguyễn Văn A, 10/10/02) là không hợp lệ. Khóa chính phải tồn tại và duy nhất cho mỗi bộ, đảm bảo mỗi thực thể được nhận diện rõ ràng.

4. Ràng buộc tham chiếu (referential integrity)

Ràng buộc tham chiếu: một bộ trong quan hệ R, tại tập thuộc tính X nếu nhận giá trị từ tập thuộc tính Y của quan hệ S, ta gọi R tham chiếu S. Tập thuộc tính Y của S phải có cùng miền giá trị với tập thuộc tính X của R; giá trị của tập thuộc tính Y là một bộ t1 ∈ S bằng giá trị tập thuộc tính X của một bộ t2 ∈ R. Nói cách khác, giá trị của tập thuộc tính tham chiếu trong một quan hệ phải tồn tại trong tập thuộc tính khóa của quan hệ được tham chiếu. Ý nghĩa: đảm bảo tính nhất quán giữa các quan hệ.

  • Trong một quan hệ, một thuộc tính có thể vừa tham gia thuộc tính khóa, vừa tham gia thuộc tính tham chiếu.
  • Tập thuộc tính tham chiếu chỉ tham chiếu đến tập thuộc tính khóa trên cùng một cơ sở dữ liệu.
  • Có thể có nhiều thuộc tính tham chiếu cùng tham chiếu đến tập thuộc tính khóa.

Ví dụ: quan hệ SINH_VIÊN(MãSV, HọTên, NgàySinh, MãHP) và HỌC_PHẦN(MãHP, TênHP, SốTC); ràng buộc tham chiếu: SINH_VIÊN.MãHP tham chiếu đến khóa HỌC_PHẦN.MãHP.

Ví dụ minh họa tổng hợp: SINH_VIÊN(MãSV, HọTên, NgàySinh, GiớiTính, MãHP), HỌC_PHẦN(MãHP, TênHP, SốTC), SV_HP(MãSV, MãHP, Ngày_Đăng_Ký, ĐiểmHP). Thuộc tính khóa: SINH_VIÊN có khóa MãSV; HỌC_PHẦN có khóa MãHP; SV_HP có khóa (MãSV, MãHP). Ràng buộc tham chiếu: SINH_VIÊN.MãHP tham chiếu HỌC_PHẦN.MãHP; SV_HP.MãSV tham chiếu SINH_VIÊN.MãSV và SV_HP.MãHP tham chiếu HỌC_PHẦN.MãHP.

5. Ba ràng buộc bổ trợ nhau

Ràng buộcVai trò
Miền giá trịKiểm soát giá trị của từng thuộc tính, ngăn chặn dữ liệu sai ngay từ lúc nhập
KhóaKiểm soát bộ, tránh trùng lặp, tạo nền tảng liên kết
Tham chiếuKiểm soát mối quan hệ giữa các quan hệ, đảm bảo nhất quán

Miền giá trị kiểm soát giá trị, khóa kiểm soát bộ, tham chiếu kiểm soát mối quan hệ giữa các quan hệ. Lời khuyên: xác định miền giá trị càng chặt chẽ càng tốt, chỉ cho phép các giá trị hợp lệ theo nghiệp vụ thực tế; mỗi quan hệ bắt buộc phải có ít nhất một khóa; ưu tiên chọn khóa đơn giản, ổn định và ngắn gọn; xác định rõ hướng tham chiếu giữa các quan hệ và ý nghĩa nghiệp vụ của mối liên kết. Việc thay đổi giá trị của các thuộc tính khóa, thuộc tính tham chiếu dễ vi phạm toàn vẹn tham chiếu và làm phát sinh lỗi dây chuyền, nên khi sửa hoặc xóa cần sử dụng điều kiện WHERE chính xác.

Quy tắc chuyển đổi ERD sang mô hình quan hệ

Chương 3 - Lý thuyết Mô hình quan hệ
0:00

Mục tiêu và ý nghĩa

Các quy tắc chuyển đổi nhằm bảo toàn ngữ nghĩa của mô hình thực thể liên kết khi chuyển sang mô hình quan hệ, giảm dư thừa, tăng tính nhất quán và tối ưu cấu trúc dữ liệu. Việc áp dụng đúng các quy tắc này quyết định chất lượng thiết kế cơ sở dữ liệu quan hệ.

Quy tắc 1: Chuyển kiểu thực thể thành quan hệ

  • Mỗi kiểu thực thể trong mô hình thực thể liên kết được chuyển thành một quan hệ trong mô hình quan hệ.
  • Tên quan hệ trùng với tên kiểu thực thể.
  • Các thuộc tính của kiểu thực thể trở thành các thuộc tính của quan hệ.
  • Thuộc tính khóa của kiểu thực thể trở thành khóa của quan hệ.

Ví dụ: kiểu thực thể SINH VIÊN được chuyển thành quan hệ SINH_VIÊN(MãSV, HọVàTên, NgàySinh, GiớiTính).

Quy tắc 2: Kiểu liên kết 1-1

  • Áp dụng quy tắc 1 để chuyển kiểu thực thể thành quan hệ.
  • Đưa khóa của một quan hệ sang quan hệ còn lại làm thuộc tính tham chiếu.
  • Các thuộc tính của kiểu liên kết (nếu có) đưa vào quan hệ chứa thuộc tính tham chiếu.

Ví dụ, giữa NHÂN VIÊN và TÀI KHOẢN có kiểu liên kết 1-1 "Có", vì mỗi nhân viên có đúng một tài khoản do đơn vị cấp. Áp dụng quy tắc 2:

  • Quan hệ NHÂN_VIÊN(MãNV, HọVàTên).
  • Quan hệ TÀI_KHOẢN(MãTK, TênĐăngNhập, MậtKhẩu, MãNV).

Trong quan hệ TÀI_KHOẢN, MãNV là khóa ngoại tham chiếu đến khóa NHÂN_VIÊN.MãNV. Giả sử kiểu liên kết có thuộc tính NgàyCấp, thuộc tính này được đưa vào quan hệ TÀI_KHOẢN.

Quy tắc 3: Kiểu liên kết 1-nhiều

  • Áp dụng quy tắc 1 để chuyển kiểu thực thể thành quan hệ.
  • Đưa khóa của quan hệ phía bên một sang quan hệ phía bên nhiều làm thuộc tính tham chiếu.
  • Các thuộc tính của kiểu liên kết (nếu có) đưa vào quan hệ phía bên nhiều.

Ví dụ, giữa SINH VIÊN và KHOA có kiểu liên kết 1-nhiều "Thuộc", vì mỗi sinh viên thuộc một khoa và một khoa có nhiều sinh viên. Áp dụng quy tắc 3:

  • Quan hệ KHOA(MãKhoa, TênKhoa).
  • Quan hệ SINH_VIÊN(MãSV, HọVàTên, NgàySinh, MãKhoa).

Quan hệ SINH_VIÊN nhận thuộc tính khóa MãKhoa của quan hệ KHOA làm thuộc tính tham chiếu. Giả sử kiểu liên kết có thuộc tính NgàyNhậpKhoa, thuộc tính này được đưa vào quan hệ SINH_VIÊN.

Ghi chú về liên kết nhiều-nhiều

Liên kết nhiều-nhiều không thuộc ba quy tắc trên nhưng thường được xử lý bằng cách tạo một quan hệ mới (quan hệ liên kết) với khóa tổ hợp gồm khóa của các kiểu thực thể tham gia, cùng các thuộc tính riêng của kiểu liên kết; sau đó nối với các kiểu thực thể gốc bằng liên kết một-nhiều. Ví dụ, liên kết "Đăng ký" giữa SINH VIÊN và KHÓA HỌC có thuộc tính riêng Thời gian đăng ký và Điểm trung bình, tạo quan hệ SV_KH(MãSV, MãKH, ThờiGianĐăngKý, ĐiểmTB) với khóa (MãSV, MãKH), trong đó MãSV tham chiếu SINH_VIÊN.MãSV và MãKH tham chiếu KHÓA_HỌC.MãKH.

Ví dụ minh họa

Chương 3 - Lý thuyết Mô hình quan hệ
0:00

Ví dụ minh họa: Hệ thống quản lý đào tạo

Xuất phát từ mô hình thực thể liên kết, áp dụng các quy tắc chuyển đổi để thu được mô hình quan hệ cho hệ thống quản lý đào tạo đại học.

1. Chuyển kiểu thực thể thành quan hệ

  • KHOA(MãKhoa, TênKhoa)
  • SINH_VIÊN(MãSV, HọVàTên, NgàySinh, GiớiTính)
  • GIẢNG_VIÊN(MãGV, HọVàTên, Khoa, HọcVị)
  • KHÓA_HỌC(MãKH, TênKH, SốTC)
  • LỚP_HỌC(MãLH, PhòngHọc, CaHọc)

2. Liên kết 1-nhiều: Khoa - Sinh viên

KHOA 1 - n SINH_VIÊN "Thuộc". Đưa khóa MãKhoa của KHOA vào SINH_VIÊN làm khóa ngoại:

SINH_VIÊN(MãSV, HọVàTên, NgàySinh, GiớiTính, MãKhoa)

3. Liên kết 1-1: Nhân viên - Tài khoản (minh họa)

NHÂN_VIÊN(MãNV, HọVàTên); TÀI_KHOẢN(MãTK, TênĐăngNhập, MậtKhẩu, MãNV, NgàyCấp), trong đó MãNV là khóa ngoại tham chiếu NHÂN_VIÊN.MãNV.

4. Liên kết nhiều-nhiều: Sinh viên - Khóa học

Liên kết "Đăng ký" có thuộc tính riêng Thời gian đăng ký và Điểm trung bình. Tạo quan hệ SV_KH:

SV_KH(MãSV, MãKH, ThờiGianĐăngKý, ĐiểmTB), với MãSV tham chiếu SINH_VIÊN.MãSV và MãKH tham chiếu KHÓA_HỌC.MãKH.

5. Lược đồ quan hệ tổng hợp

Quan hệThuộc tính (khóa gạch chân, khóa ngoại in nghiêng)
KHOAMãKhoa, TênKhoa
SINH_VIÊNMãSV, HọVàTên, NgàySinh, GiớiTính, MãKhoa
GIẢNG_VIÊNMãGV, HọVàTên, Khoa, HọcVị
KHÓA_HỌCMãKH, TênKH, SốTC
SV_KHMãSV, MãKH, ThờiGianĐăngKý, ĐiểmTB

Kiểm tra mô hình: mỗi quan hệ có khóa; các khóa ngoại tham chiếu đúng; thuộc tính riêng của liên kết được bảo toàn; không còn liên kết nhiều-nhiều trực tiếp. Các thao tác thêm, sửa, xóa trên các quan hệ phải tuân thủ ràng buộc miền giá trị, khóa và tham chiếu.

Bài tập 3_1 - Hệ thống mua bán mỹ phẩm

Chương 3 - Mô hình quan hệ
0:00

Bài tập 3_1 - Chuyển đổi hệ thống mua bán mỹ phẩm

Ngữ cảnh nghiệp vụ: Cửa hàng mỹ phẩm có hai loại hồ sơ: hóa đơn đặt hàng (Số HĐ đặt, Mã khách, Họ tên khách, Địa chỉ, Ngày đặt, danh sách mặt hàng) và hóa đơn bán/giao hàng (Số HĐ giao, Mã khách, Họ tên khách, Địa chỉ, Địa chỉ giao, Ngày giao, danh sách mặt hàng).

1. Mô hình ER kinh điển:

  • KHACH_HANG(MaKhach, HoTenKhach, DiaChi) - thực thể mạnh.
  • HANG(MaHang, TenHang, DVT, DonGia) - thực thể mạnh.
  • HOA_DON_DAT(SoHDDat, NgayDat, MaKhach) - liên kết 1-n giữa khách hàng và đơn đặt.
  • HOA_DON_GIAO(SoHDGiao, NgayGiao, DiaChiGiao, MaKhach) - liên kết 1-n giữa khách hàng và đơn giao.
  • Liên kết n-n CHI_TIET_DAT_HANG giữa HOA_DON_DAT và HANG, thuộc tính SoLuongDat.
  • Liên kết n-n CHI_TIET_GIAO_HANG giữa HOA_DON_GIAO và HANG, thuộc tính SoLuongGiao.

2. Áp dụng quy tắc chuyển đổi:

  • Quy tắc 1 & 3: Chuyển các thực thể mạnh thành quan hệ; đưa MaKhach từ KHACH_HANG sang HOA_DON_DAT và HOA_DON_GIAO làm khóa ngoại.
  • Quy tắc 4: Tạo quan hệ CHI_TIET_DAT_HANG và CHI_TIET_GIAO_HANG, khóa chính là tổ hợp (SoHDDat, MaHang) và (SoHDGiao, MaHang), kèm khóa ngoại tới hóa đơn và hàng.

3. Lược đồ quan hệ kết quả:

1. KHACH_HANG (MaKhach, HoTenKhach, DiaChi)
   - Khóa chính: MaKhach
2. HANG (MaHang, TenHang, DVT, DonGia)
   - Khóa chính: MaHang
3. HOA_DON_DAT (SoHDDat, NgayDat, MaKhach)
   - Khóa chính: SoHDDat
   - Khóa ngoại: MaKhach tham chiếu KHACH_HANG(MaKhach)
4. CHI_TIET_DAT_HANG (SoHDDat, MaHang, SoLuongDat)
   - Khóa chính: (SoHDDat, MaHang)
   - Khóa ngoại: SoHDDat tham chiếu HOA_DON_DAT(SoHDDat)
   - Khóa ngoại: MaHang tham chiếu HANG(MaHang)
5. HOA_DON_GIAO (SoHDGiao, NgayGiao, DiaChiGiao, MaKhach)
   - Khóa chính: SoHDGiao
   - Khóa ngoại: MaKhach tham chiếu KHACH_HANG(MaKhach)
6. CHI_TIET_GIAO_HANG (SoHDGiao, MaHang, SoLuongGiao)
   - Khóa chính: (SoHDGiao, MaHang)
   - Khóa ngoại: SoHDGiao tham chiếu HOA_DON_GIAO(SoHDGiao)
   - Khóa ngoại: MaHang tham chiếu HANG(MaHang)

4. Bảng quan hệ (khóa chính, khóa ngoại):

Quan hệKhóa chínhKhóa ngoại
KHACH_HANGMaKhach-
HANGMaHang-
HOA_DON_DATSoHDDatMaKhach tham chiếu KHACH_HANG(MaKhach)
CHI_TIET_DAT_HANG(SoHDDat, MaHang)SoHDDat tham chiếu HOA_DON_DAT(SoHDDat); MaHang tham chiếu HANG(MaHang)
HOA_DON_GIAOSoHDGiaoMaKhach tham chiếu KHACH_HANG(MaKhach)
CHI_TIET_GIAO_HANG(SoHDGiao, MaHang)SoHDGiao tham chiếu HOA_DON_GIAO(SoHDGiao); MaHang tham chiếu HANG(MaHang)

Bài tập 3_2 - Công ty dịch vụ thể thao ABC

Chương 3 - Mô hình quan hệ
0:00

Bài tập 3_2 - Chuyển đổi hệ thống dịch vụ thể dục thể thao ABC

Ngữ cảnh nghiệp vụ: Công ty ABC kinh doanh dịch vụ thể dục thể thao, có ba hồ sơ: bảng quảng cáo dịch vụ theo khu vực, thẻ thành viên và phiếu sử dụng dịch vụ.

1. Mô hình ER kinh điển:

  • KHU_VUC(MaKV, TenKV, DiaChi) - thực thể mạnh.
  • DICH_VU(MaDV, TenDV) - thực thể mạnh.
  • Liên kết n-n CUNG_CAP giữa KHU_VUC và DICH_VU, thuộc tính DonGiaGio.
  • THANH_VIEN(SoThe, HoTen, NgaySinh, DiaChi, NamDangKy) - thực thể mạnh.
  • PHIEU_SU_DUNG(SoPhieu, GioBatDau, GioKetThuc) - liên kết với thành viên và dịch vụ tại khu vực.

2. Áp dụng quy tắc chuyển đổi:

  • Quy tắc 1: Chuyển THANH_VIEN, KHU_VUC, DICH_VU thành các quan hệ.
  • Quy tắc 4: Tạo KHUVUC_DICHVU(MaKV, MaDV, DonGiaGio) cho liên kết nhiều-nhiều giữa khu vực và dịch vụ.
  • Quy tắc 3: PHIEU_SU_DUNG nhận SoThe từ THANH_VIEN, cùng MaKV và MaDV đại diện cho dịch vụ tại địa điểm sử dụng.

3. Lược đồ quan hệ kết quả:

1. THANH_VIEN (SoThe, HoTen, NgaySinh, DiaChi, NamDangKy)
   - Khóa chính: SoThe
2. KHU_VUC (MaKV, TenKV, DiaChi)
   - Khóa chính: MaKV
3. DICH_VU (MaDV, TenDV)
   - Khóa chính: MaDV
4. KHUVUC_DICHVU (MaKV, MaDV, DonGiaGio)
   - Khóa chính: (MaKV, MaDV)
   - Khóa ngoại: MaKV tham chiếu KHU_VUC(MaKV)
   - Khóa ngoại: MaDV tham chiếu DICH_VU(MaDV)
5. PHIEU_SU_DUNG (SoPhieu, SoThe, MaKV, MaDV, GioBatDau, GioKetThuc)
   - Khóa chính: SoPhieu
   - Khóa ngoại: SoThe tham chiếu THANH_VIEN(SoThe)
   - Khóa ngoại: (MaKV, MaDV) tham chiếu KHUVUC_DICHVU(MaKV, MaDV)

4. Bảng quan hệ (khóa chính, khóa ngoại):

Quan hệKhóa chínhKhóa ngoại
THANH_VIENSoThe-
KHU_VUCMaKV-
DICH_VUMaDV-
KHUVUC_DICHVU(MaKV, MaDV)MaKV tham chiếu KHU_VUC(MaKV); MaDV tham chiếu DICH_VU(MaDV)
PHIEU_SU_DUNGSoPhieuSoThe tham chiếu THANH_VIEN(SoThe); (MaKV, MaDV) tham chiếu KHUVUC_DICHVU(MaKV, MaDV)

Bài tập 3_3 - Quản lý điểm sinh viên

Chương 3 - Mô hình quan hệ
0:00

Bài tập 3_3 - Chuyển đổi hệ thống quản lý điểm sinh viên

Ngữ cảnh nghiệp vụ: Quản lý điểm sinh viên đại học: sinh viên, khoa, giảng viên, học phần, lớp học phần và kết quả đăng ký học.

1. Mô hình ER kinh điển:

  • KHOA(MaKhoa, TenKhoa) - thực thể mạnh.
  • SINH_VIEN(MaSV, HoTen, NgaySinh, GioiTinh, NoiSinh, HoKhauThuongTru) - thực thể mạnh.
  • GIANG_VIEN(MaGV, HoTen, HocVi) - thực thể mạnh.
  • HOC_PHAN(MaHP, TenHP, SoTinChi) - thực thể mạnh.
  • LOP_HOC_PHAN(MaLop, TenLop) - thực thể mạnh.
  • Các liên kết 1-n: Khoa-Sinh viên (Thuộc), Khoa-Giảng viên (Trực thuộc), Khoa-Lớp (Quản lý), Học phần-Lớp, Giảng viên-Lớp (Giảng dạy).
  • Liên kết n-n SINH_VIEN đăng ký LOP_HOC_PHAN với thuộc tính DiemSo, DiemChu.

2. Áp dụng quy tắc chuyển đổi:

  • Quy tắc 3 (1-n): SINH_VIEN nhận MaKhoa; GIANG_VIEN nhận MaKhoa; LOP_HOC_PHAN nhận MaKhoa, MaHP và MaGV làm khóa ngoại.
  • Quy tắc 4 (n-n): Tạo KET_QUA(MaSV, MaLop, DiemSo, DiemChu) với khóa chính (MaSV, MaLop).

3. Lược đồ quan hệ kết quả:

1. KHOA (MaKhoa, TenKhoa)
   - Khóa chính: MaKhoa
2. SINH_VIEN (MaSV, HoTen, NgaySinh, GioiTinh, NoiSinh, HoKhauThuongTru, MaKhoa)
   - Khóa chính: MaSV
   - Khóa ngoại: MaKhoa tham chiếu KHOA(MaKhoa)
3. GIANG_VIEN (MaGV, HoTen, HocVi, MaKhoa)
   - Khóa chính: MaGV
   - Khóa ngoại: MaKhoa tham chiếu KHOA(MaKhoa)
4. HOC_PHAN (MaHP, TenHP, SoTinChi)
   - Khóa chính: MaHP
5. LOP_HOC_PHAN (MaLop, TenLop, MaKhoa, MaHP, MaGV)
   - Khóa chính: MaLop
   - Khóa ngoại: MaKhoa tham chiếu KHOA(MaKhoa)
   - Khóa ngoại: MaHP tham chiếu HOC_PHAN(MaHP)
   - Khóa ngoại: MaGV tham chiếu GIANG_VIEN(MaGV)
6. KET_QUA (MaSV, MaLop, DiemSo, DiemChu)
   - Khóa chính: (MaSV, MaLop)
   - Khóa ngoại: MaSV tham chiếu SINH_VIEN(MaSV)
   - Khóa ngoại: MaLop tham chiếu LOP_HOC_PHAN(MaLop)

4. Bảng quan hệ (khóa chính, khóa ngoại):

Quan hệKhóa chínhKhóa ngoại
KHOAMaKhoa-
SINH_VIENMaSVMaKhoa tham chiếu KHOA(MaKhoa)
GIANG_VIENMaGVMaKhoa tham chiếu KHOA(MaKhoa)
HOC_PHANMaHP-
LOP_HOC_PHANMaLopMaKhoa tham chiếu KHOA(MaKhoa); MaHP tham chiếu HOC_PHAN(MaHP); MaGV tham chiếu GIANG_VIEN(MaGV)
KET_QUA(MaSV, MaLop)MaSV tham chiếu SINH_VIEN(MaSV); MaLop tham chiếu LOP_HOC_PHAN(MaLop)

Bài tập 3_4 - Quản lý đề án công ty

Chương 3 - Mô hình quan hệ
0:00

Bài tập 3_4 - Chuyển đổi hệ thống quản lý đề án công ty

Ngữ cảnh nghiệp vụ: Công ty có nhân viên, phòng ban, đề án, phân công thực hiện và thân nhân (thực thể yếu).

1. Mô hình ER kinh điển:

  • NHAN_VIEN(MaNV, HoTen, NgaySinh, GioiTinh, Luong) - thực thể mạnh.
  • PHONG_BAN(MaPhong, TenPhong) - thực thể mạnh.
  • DE_AN(MaDA, TenDA, DiaDiem) - thực thể mạnh.
  • THAN_NHAN - thực thể yếu phụ thuộc NHAN_VIEN (MaTN, HoTenTN, NgaySinh, GioiTinh, QuanHe).
  • Liên kết 1-n: PHONG_BAN - NHAN_VIEN (Làm việc tại).
  • Liên kết 1-1: PHONG_BAN - NHAN_VIEN (Quản lý/Trưởng phòng) có thuộc tính NgayNhanChuc.
  • Liên kết 1-n: PHONG_BAN - DE_AN (Chủ trì đề án).
  • Liên kết n-n: NHAN_VIEN - DE_AN (Phân công thực hiện) có thuộc tính SoGio.

2. Áp dụng quy tắc chuyển đổi:

  • Quy tắc 2 & 3: Đưa MaPhong vào NHAN_VIEN (thuộc phòng). Đưa TruongPhong_MaNV và NgayNhanChuc vào PHONG_BAN. Đưa MaPhong vào DE_AN (phòng chủ trì).
  • Quy tắc 4: Tạo PHAN_CONG(MaNV, MaDA, SoGio).
  • Quy tắc thực thể yếu: THAN_NHAN có khóa chính (MaNV, MaTN).

3. Lược đồ quan hệ kết quả:

1. PHONG_BAN (MaPhong, TenPhong, TruongPhong_MaNV, NgayNhanChuc)
   - Khóa chính: MaPhong
   - Khóa ngoại: TruongPhong_MaNV tham chiếu NHAN_VIEN(MaNV)
2. NHAN_VIEN (MaNV, HoTen, NgaySinh, GioiTinh, Luong, MaPhong)
   - Khóa chính: MaNV
   - Khóa ngoại: MaPhong tham chiếu PHONG_BAN(MaPhong)
3. DE_AN (MaDA, TenDA, DiaDiem, MaPhong)
   - Khóa chính: MaDA
   - Khóa ngoại: MaPhong tham chiếu PHONG_BAN(MaPhong)
4. PHAN_CONG (MaNV, MaDA, SoGio)
   - Khóa chính: (MaNV, MaDA)
   - Khóa ngoại: MaNV tham chiếu NHAN_VIEN(MaNV)
   - Khóa ngoại: MaDA tham chiếu DE_AN(MaDA)
5. THAN_NHAN (MaNV, MaTN, HoTenTN, NgaySinh, GioiTinh, QuanHe)
   - Khóa chính: (MaNV, MaTN)
   - Khóa ngoại: MaNV tham chiếu NHAN_VIEN(MaNV)

4. Bảng quan hệ (khóa chính, khóa ngoại):

Quan hệKhóa chínhKhóa ngoại
PHONG_BANMaPhongTruongPhong_MaNV tham chiếu NHAN_VIEN(MaNV)
NHAN_VIENMaNVMaPhong tham chiếu PHONG_BAN(MaPhong)
DE_ANMaDAMaPhong tham chiếu PHONG_BAN(MaPhong)
PHAN_CONG(MaNV, MaDA)MaNV tham chiếu NHAN_VIEN(MaNV); MaDA tham chiếu DE_AN(MaDA)
THAN_NHAN(MaNV, MaTN)MaNV tham chiếu NHAN_VIEN(MaNV)

Bài tập 3_5 - Quản lý siêu thị

Chương 3 - Mô hình quan hệ
0:00

Bài tập 3_5 - Chuyển đổi hệ thống quản lý siêu thị

Ngữ cảnh nghiệp vụ: Siêu thị làm việc với nhà cung cấp, mặt hàng, gian hàng, nhân viên, khách hàng, hóa đơn nhập, hóa đơn bán và thân nhân nhân viên.

1. Mô hình ER kinh điển:

  • NHA_CUNG_CAP(MaNCC, TenNCC, DiaChi, SoDT) - thực thể mạnh.
  • GIAN_HANG(MaGianHang, TenGianHang) - thực thể mạnh.
  • NHAN_VIEN(MaNV, HoTen, Luong) - thực thể mạnh.
  • MAT_HANG(MaHang, TenHang, MauSac, TrongLuong, DVT, SoLuongTon) - thực thể mạnh.
  • KHACH_HANG(MaKH, HoTenKH, DiaChi) - thực thể mạnh.
  • HOA_DON_NHAP(MaHDNhap, NgayNhap) - thực thể/hóa đơn nhập.
  • HOA_DON_BAN(MaHDBan, NgayMua) - thực thể/hóa đơn bán.
  • THAN_NHAN_NV - thực thể yếu phụ thuộc NHAN_VIEN.
  • Liên kết 1-n: GIAN_HANG - MAT_HANG; KHACH_HANG - HOA_DON_BAN; NHA_CUNG_CAP - HOA_DON_NHAP.
  • Liên kết n-n: NHAN_VIEN - GIAN_HANG; HOA_DON_NHAP - MAT_HANG; HOA_DON_BAN - MAT_HANG; NHA_CUNG_CAP - MAT_HANG (Cung ứng, DonGiaCungCap).

2. Áp dụng quy tắc chuyển đổi:

  • Quy tắc 1, 2, 3: Chuyển các thực thể mạnh và thiết lập khóa ngoại cho các liên kết 1-n: MaGianHang vào MAT_HANG; MaKH vào HOA_DON_BAN; MaNCC vào HOA_DON_NHAP.
  • Quy tắc 4: Tạo các bảng kết hợp n-n: CUNG_CAP, NV_GIANHANG, CHI_TIET_HD_NHAP, CHI_TIET_HD_BAN.
  • Quy tắc thực thể yếu: THAN_NHAN_NV(MaNV, MaTN, ...).

3. Lược đồ quan hệ kết quả:

1. NHA_CUNG_CAP (MaNCC, TenNCC, DiaChi, SoDT)
   - Khóa chính: MaNCC
2. GIAN_HANG (MaGianHang, TenGianHang)
   - Khóa chính: MaGianHang
3. NHAN_VIEN (MaNV, HoTen, Luong)
   - Khóa chính: MaNV
4. NV_GIANHANG (MaNV, MaGianHang)
   - Khóa chính: (MaNV, MaGianHang)
   - Khóa ngoại: MaNV tham chiếu NHAN_VIEN(MaNV)
   - Khóa ngoại: MaGianHang tham chiếu GIAN_HANG(MaGianHang)
5. MAT_HANG (MaHang, TenHang, MauSac, TrongLuong, DVT, SoLuongTon, MaGianHang)
   - Khóa chính: MaHang
   - Khóa ngoại: MaGianHang tham chiếu GIAN_HANG(MaGianHang)
6. CUNG_CAP (MaNCC, MaHang, DonGiaCungCap)
   - Khóa chính: (MaNCC, MaHang)
   - Khóa ngoại: MaNCC tham chiếu NHA_CUNG_CAP(MaNCC)
   - Khóa ngoại: MaHang tham chiếu MAT_HANG(MaHang)
7. HOA_DON_NHAP (MaHDNhap, NgayNhap, MaNCC)
   - Khóa chính: MaHDNhap
   - Khóa ngoại: MaNCC tham chiếu NHA_CUNG_CAP(MaNCC)
8. CHI_TIET_HD_NHAP (MaHDNhap, MaHang, SoLuongNhap)
   - Khóa chính: (MaHDNhap, MaHang)
   - Khóa ngoại: MaHDNhap tham chiếu HOA_DON_NHAP(MaHDNhap)
   - Khóa ngoại: MaHang tham chiếu MAT_HANG(MaHang)
9. KHACH_HANG (MaKH, HoTenKH, DiaChi)
   - Khóa chính: MaKH
10. HOA_DON_BAN (MaHDBan, NgayMua, MaKH)
    - Khóa chính: MaHDBan
    - Khóa ngoại: MaKH tham chiếu KHACH_HANG(MaKH)
11. CHI_TIET_HD_BAN (MaHDBan, MaHang, SoLuongBan, DonGiaBan)
    - Khóa chính: (MaHDBan, MaHang)
    - Khóa ngoại: MaHDBan tham chiếu HOA_DON_BAN(MaHDBan)
    - Khóa ngoại: MaHang tham chiếu MAT_HANG(MaHang)
12. THAN_NHAN_NV (MaNV, MaTN, HoTenTN, NgaySinh, GioiTinh, QuanHe)
    - Khóa chính: (MaNV, MaTN)
    - Khóa ngoại: MaNV tham chiếu NHAN_VIEN(MaNV)

4. Bảng quan hệ (khóa chính, khóa ngoại):

Quan hệKhóa chínhKhóa ngoại
NHA_CUNG_CAPMaNCC-
GIAN_HANGMaGianHang-
NHAN_VIENMaNV-
NV_GIANHANG(MaNV, MaGianHang)MaNV tham chiếu NHAN_VIEN(MaNV); MaGianHang tham chiếu GIAN_HANG(MaGianHang)
MAT_HANGMaHangMaGianHang tham chiếu GIAN_HANG(MaGianHang)
CUNG_CAP(MaNCC, MaHang)MaNCC tham chiếu NHA_CUNG_CAP(MaNCC); MaHang tham chiếu MAT_HANG(MaHang)
HOA_DON_NHAPMaHDNhapMaNCC tham chiếu NHA_CUNG_CAP(MaNCC)
CHI_TIET_HD_NHAP(MaHDNhap, MaHang)MaHDNhap tham chiếu HOA_DON_NHAP(MaHDNhap); MaHang tham chiếu MAT_HANG(MaHang)
KHACH_HANGMaKH-
HOA_DON_BANMaHDBanMaKH tham chiếu KHACH_HANG(MaKH)
CHI_TIET_HD_BAN(MaHDBan, MaHang)MaHDBan tham chiếu HOA_DON_BAN(MaHDBan); MaHang tham chiếu MAT_HANG(MaHang)
THAN_NHAN_NV(MaNV, MaTN)MaNV tham chiếu NHAN_VIEN(MaNV)

Khái niệm đại số quan hệ

Chương 4 - Lý thuyết Đại số quan hệ
0:00

1. Định nghĩa đại số quan hệ

Đại số quan hệ là ngôn ngữ truy vấn hình thức được xây dựng trên cơ sở lý thuyết tập hợp và logic quan hệ, dùng để thao tác và khai thác dữ liệu trong các hệ quản trị cơ sở dữ liệu quan hệ. Ngôn ngữ này mô tả cách truy vấn dữ liệu thông qua một tập các phép toán toán học tác động trực tiếp lên các quan hệ (bảng), từ đó tạo ra các quan hệ mới làm kết quả trung gian hoặc kết quả cuối cùng.

2. Vai trò trong cơ sở dữ liệu quan hệ

  • Là nền tảng lý thuyết cho các hệ quản trị cơ sở dữ liệu quan hệ hiện đại.
  • Là cơ sở để xây dựng và tối ưu hóa các ngôn ngữ truy vấn bậc cao như SQL.
  • Mọi truy vấn SQL đều có thể được ánh xạ về các biểu thức đại số quan hệ tương ứng trong quá trình tối ưu và thực thi truy vấn.
  • Giúp người học hiểu rõ bản chất xử lý dữ liệu: kết hợp, lọc, chiếu và nối các quan hệ một cách chặt chẽ và chính xác.

3. Hai nhóm phép toán chính

Nhóm phép toánCác phép toánĐặc điểm
Phép toán lý thuyết tập hợpHợp (∪), giao (∩), trừ (−), tích Descartes (×)Kế thừa trực tiếp từ lý thuyết tập hợp; thường yêu cầu các quan hệ tương thích (khả hợp), trừ tích Descartes
Phép toán trên CSDL quan hệChọn (σ), chiếu (π), kết nối (*), chia (÷)Thiết kế riêng cho CSDL quan hệ, phản ánh trực tiếp nhu cầu truy vấn thực tế

4. Quan hệ tương thích (khả hợp)

Giả thiết U = {A1, A2, ..., An} và V = {B1, B2, ..., Bn}. Hai quan hệ R(U) và S(V) được gọi là tương thích khi và chỉ khi U = V, tức là chúng có cùng cấu trúc lược đồ. Nói cách khác: số bậc (ngôi) của R và S bằng nhau; các thuộc tính tương ứng có cùng miền giá trị dom(Ai) = dom(Bi) (1 ≤ i ≤ n) và được sắp theo cùng một thứ tự. Điều kiện này là tiền đề để áp dụng hợp, giao, trừ.

5. Tính chất chung của phép toán

Mỗi phép toán trong đại số quan hệ nhận đầu vào là một hoặc nhiều quan hệ và trả về một quan hệ mới. Phép toán không làm thay đổi dữ liệu gốc mà tạo ra quan hệ kết quả, có thể dùng tiếp làm đầu vào cho phép toán khác để tạo thành biểu thức đại số quan hệ. Kết quả luôn là một tập các bộ không trùng lặp (tính chất quan hệ).

Các phép toán cơ bản (hợp, giao, trừ, tích Descartes)

Chương 4 - Lý thuyết Đại số quan hệ
0:00

1. Phép hợp (∪)

Phép hợp kết hợp các bộ dữ liệu của hai quan hệ tương thích thành một quan hệ mới, mỗi bộ xuất hiện duy nhất một lần. Cho R(U) và S(U): R ∪ S = { t | t ∈ R hoặc t ∈ S }. Điều kiện áp dụng: R và S phải tương thích. Kết quả có cùng lược đồ với R và S, không có bộ trùng lặp.

RSR ∪ S
ABABAB
a1b1a1b2a1b1
a1b2a2b3a1b2
a2b1a2b1
a2b3

Ví dụ thực tế: SV_CNTT = SV_TTNT ∪ SV_KHMT gộp danh sách sinh viên công nghệ thông tin từ hai lớp chuyên ngành.

2. Phép trừ (−)

Phép trừ xác định các bộ xuất hiện trong quan hệ thứ nhất nhưng không xuất hiện trong quan hệ thứ hai: R − S = { t | t ∈ R và t ∉ S }. Điều kiện: R và S tương thích. Kết quả có cùng lược đồ với R, không có bộ trùng lặp. Phép trừ không giao hoán: R − S ≠ S − R.

ABABAB
a1b1a1b2a1b1
a1b2a2b3a2b1
a2b1

Ví dụ thực tế: SV_HP = SV_ĐĂNG_KÝ − SV_HỦY xác định sinh viên còn đăng ký học phần sau khi hủy.

3. Phép giao (∩)

Phép giao xác định các bộ xuất hiện đồng thời trong cả hai quan hệ: R ∩ S = { t | t ∈ R và t ∈ S }. Điều kiện: R và S tương thích. Phép giao giao hoán và kết hợp. Trong SQL tương ứng INTERSECT.

ABABAB
a1b1a1b2a1b2
a1b2a2b3
a2b1

Ví dụ thực tế: SV_HP = SV_ĐĂNG_KÝ ∩ SV_ĐẠT xác định sinh viên đã đăng ký và đạt học phần.

4. Phép tích Descartes (×)

Phép tích Descartes kết hợp mọi bộ của quan hệ thứ nhất với mọi bộ của quan hệ thứ hai: R × S = { (a1,...,am,b1,...,bn) | (a1,...,am) ∈ R và (b1,...,bn) ∈ S }. Không yêu cầu tương thích. Số thuộc tính kết quả bằng tổng số thuộc tính của hai quan hệ; số bộ kết quả bằng tích số bộ của hai quan hệ.

ABCDABCD
a1b1c1d2a1b1c1d2
a1b2c2d3a1b1c2d3
a2b1a1b2c1d2
a1b2c2d3
a2b1c1d2
a2b1c2d3

Ví dụ thực tế: SV_HP = SINH_VIÊN × HỌC_PHẦN tạo mọi cặp sinh viên - học phần, thường kết hợp với phép chọn để tạo kết nối có điều kiện.

5. Tóm tắt lời khuyên

  • Chỉ áp dụng hợp, giao, trừ cho các quan hệ tương thích.
  • Dùng giao và trừ để diễn đạt rõ các yêu cầu nghiệp vụ mang tính lọc - loại trừ.
  • Hạn chế dùng tích Descartes trực tiếp trên quan hệ lớn, nên kết hợp với phép chọn hoặc kết nối để tránh bùng nổ dữ liệu.
  • Xem các phép toán tập hợp như công cụ tư duy logic, hỗ trợ phân tích bài toán trước khi viết SQL.

Các phép toán chuyên biệt (chọn, chiếu, kết nối, chia)

Chương 4 - Lý thuyết Đại số quan hệ
0:00

1. Phép chọn (σ)

Phép chọn lọc các bộ trong một quan hệ dựa trên điều kiện xác định, không làm thay đổi lược đồ mà chỉ thay đổi tập các bộ. Ký hiệu R(E) hoặc σ_E(R). Định nghĩa hình thức: R(E) = { t | t ∈ R và E(t) = TRUE }. Có thể dùng các toán tử so sánh =, ≠, <, ≤, >, ≥ và kết hợp điều kiện bằng AND (∧), OR (∨), NOT (¬).

ABCDABCD
a1b112a1b112
a1b124a1b124
a3b357a2b164
a2b164

Điều kiện E = (D < 5). Ví dụ thực tế: SINH_VIÊN(Giới tính = 'Nữ') chọn sinh viên nữ.

2. Phép chiếu (π)

Phép chiếu trích ra một tập con các thuộc tính từ quan hệ và loại bỏ các bộ trùng lặp. Ký hiệu R[X] hoặc π_X(R), với X ⊆ U. Định nghĩa hình thức: R[X] = { t.X | t ∈ R }. Kết quả chỉ chứa các thuộc tính được chọn, số bộ luôn ít hơn hoặc bằng số bộ của R.

ABCDABAC
a1b1c1d1a1b1a1c1
a1b1c1d2a2b2a2c2
a2b2c2d2a2c3
a2b2c3d3

T1 = R[AB], T2 = R[AC]. Ví dụ thực tế: SINH_VIÊN[Lớp, Khoa] lấy danh sách lớp và khoa.

3. Phép kết nối tự nhiên (*)

Phép kết nối tự nhiên kết hợp các bộ của hai quan hệ dựa trên điều kiện bằng nhau của các thuộc tính có cùng tên và loại bỏ các cột trùng lặp. Ký hiệu R * S. Yêu cầu U ∩ V ≠ ∅. Định nghĩa hình thức: R * S = { t, s.(V − X) | t, s ∈ (R × S), t.X = s.X }, với X = U ∩ V. Kết quả không lặp lại các thuộc tính dùng để nối.

ABCCDEABCDE
a1111d1e1a111d1e1
a2212d2e2a221d1e1
a3223d3e3a322d2e2

Ví dụ thực tế: SV_LỚP = SINH_VIÊN * LỚP nối sinh viên với thông tin lớp theo Mã lớp.

4. Phép chia (÷)

Phép chia là phép toán dẫn xuất dùng để trả lời các truy vấn dạng 'với mọi' (FOR ALL). Cho R(X, Y) và S(Y), với Y là tập thuộc tính chung và X là tập thuộc tính còn lại của R. Định nghĩa: R ÷ S = { x | ∀y ∈ S, (x, y) ∈ R }. Kết quả có tập thuộc tính X, không chứa Y. Ý nghĩa: tìm những giá trị X sao cho kết hợp với mọi giá trị Y trong S đều tồn tại trong R.

ABCDCDAB
a1b1c1d1c1d1a2b1
a2b1c2d3c2d3
a2b1c1d1
a3b1c1d3

Chỉ có bộ (a2, b1) kết hợp được với tất cả các bộ của S. Ví dụ thực tế: T = ĐĂNG_KÝ ÷ HP_BẮT_BUỘC tìm sinh viên đã đăng ký tất cả học phần bắt buộc.

5. Tóm tắt lời khuyên

  • Ưu tiên phép chọn để lọc dữ liệu trước, nhằm giảm kích thước dữ liệu và tăng hiệu năng.
  • Dùng phép chiếu cho những thuộc tính cần thiết để giới hạn thuộc tính.
  • Sử dụng kết nối phải chính xác, xác định rõ điều kiện nối và quan hệ nghiệp vụ.
  • Cân nhắc sử dụng phép chia, kiểm tra kỹ dữ liệu mẫu để đảm bảo kết quả phản ánh đúng logic nghiệp vụ.

Phép đổi tên và biểu thức

Chương 4 - Lý thuyết Đại số quan hệ
0:00

1. Phép đổi tên (Rename) ρ

Phép đổi tên dùng để đổi tên quan hệ hoặc các thuộc tính của quan hệ, giúp biểu diễn rõ ràng các biểu thức và xử lý các trường hợp thuộc tính trùng tên. Ký hiệu: ρ_{S}(R) đổi tên quan hệ R thành S; ρ_{B1,...,Bn}(R) đổi tên các thuộc tính; ρ_{S(B1,...,Bn)}(R) đổi cả tên quan hệ và thuộc tính.

Biểu thứcÝ nghĩa
ρ_{T}(R)Đổi tên quan hệ R thành T, giữ nguyên các thuộc tính
ρ_{A1,B1}(R(A,B))Đổi tên thuộc tính A thành A1, B thành B1
ρ_{R1(A,B)}(R)Đổi tên quan hệ thành R1 và các thuộc tính tương ứng

Phép đổi tên thường dùng khi kết nối một quan hệ với chính nó (self-join) hoặc khi cần làm rõ ý nghĩa các cột trong kết quả.

2. Biểu thức đại số quan hệ

Biểu thức đại số quan hệ là sự kết hợp tuần tự các phép toán để biến đổi một hoặc nhiều quan hệ đầu vào thành quan hệ kết quả thỏa mãn yêu cầu nghiệp vụ. Mỗi phép toán nhận đầu vào là quan hệ và trả về một quan hệ; biểu thức được xây dựng theo thứ tự logic xử lý dữ liệu; kết quả phản ánh đúng ý nghĩa nghiệp vụ.

3. Toán tử logic và so sánh

LoạiKý hiệuÝ nghĩaVí dụ
Logic∧ (AND)Đúng khi tất cả điều kiện đúngSINH_VIÊN(GiớiTính='Nữ' AND NămSinh>2000)
Logic∨ (OR)Đúng khi ít nhất một điều kiện đúngĐĂNG_KÝ(TênHP='CSDL' OR TênHP='Mạng')
Logic¬ (NOT)Phủ định điều kiệnSINH_VIÊN(¬(GiớiTính='Nữ'))
So sánh=, ≠, <, >, ≤, ≥So sánh giá trị thuộc tính hoặc hằngHỌC_PHẦN(SốTC ≥ 3)

4. Hàm tiện ích và hàm gom nhóm

NhómHàmÝ nghĩaVí dụ
ChuỗiUPPER(), LOWER(), LENGTH()Chuyển chữ hoa, chữ thường, độ dài chuỗiSINH_VIÊN(LOWER(HọTên))
Ngày thángYEAR(), MONTH(), DAY()Trích xuất năm, tháng, ngàySINH_VIÊN(YEAR(NgàySinh)=2001)
Gom nhómCOUNT(), SUM(), AVG(), MAX(), MIN()Thống kê, tổng hợp dữ liệuCOUNT(MãHP; ĐĂNG_KÝ, MãSV)

Ký hiệu gom nhóm: TÊN_HÀM(B; R, A), trong đó R là quan hệ, A là thuộc tính cần tính, B là thuộc tính gom nhóm. Ví dụ AVG(MãHP; ĐĂNG_KÝ, Điểm) tính điểm trung bình theo mã học phần.

5. Nguyên tắc viết biểu thức

  1. Mỗi phép toán nhận đầu vào là quan hệ và trả về một quan hệ.
  2. Biểu thức được xây dựng theo thứ tự logic xử lý dữ liệu: thường chọn trước, chiếu sau, kết nối khi cần.
  3. Kết quả phải phản ánh đúng ý nghĩa nghiệp vụ.
  4. Khi dùng hàm gom nhóm, cần xác định rõ thuộc tính gom nhóm và thuộc tính cần tính.

6. Ví dụ biểu thức

Cho các quan hệ: SINH_VIÊN(MãSV, HọTên, NgàySinh, GiớiTính), HỌC_PHẦN(MãHP, TênHP, SốTC), ĐĂNG_KÝ(MãSV, MãHP, NgàyĐK, Điểm).

  • Yêu cầu 1 - Sinh viên Nam sinh sau năm 2000: SINH_VIÊN(GiớiTính='Nam' AND YEAR(NgàySinh)>2000).
  • Yêu cầu 2 - Sinh viên có điểm ≥ 8 ở bất kỳ học phần: (SINH_VIÊN * ĐĂNG_KÝ)(Điểm ≥ 8).
  • Yêu cầu 3 - Sinh viên đăng ký học phần từ 3 tín chỉ và điểm < 5: (ĐĂNG_KÝ * HỌC_PHẦN)(SốTC ≥ 3 AND Điểm < 5).
  • Yêu cầu 4 - Danh sách sinh viên Nam có điểm > điểm trung bình của học phần: (SINH_VIÊN * ĐĂNG_KÝ)(GiớiTính='Nam' AND (Điểm > AVG(MãHP; ĐĂNG_KÝ, Điểm)))[MãSV, HọTên].
  • Yêu cầu 5 - Sinh viên Nữ sinh sau 2001, đăng ký học phần ≥ 3 tín chỉ và điểm ≥ 8: (SINH_VIÊN * ĐĂNG_KÝ * HỌC_PHẦN)(GiớiTính='Nữ' AND YEAR(NgàySinh)>2001 AND SốTC ≥ 3 AND Điểm ≥ 8).

Ví dụ minh họa từng bước

Chương 4 - Lý thuyết Đại số quan hệ
0:00

Ví dụ tổng hợp: Hệ thống quản lý đào tạo

Cho ba quan hệ:

  • SINH_VIÊN(MãSV, HọTên, NgàySinh, GiớiTính)
  • HỌC_PHẦN(MãHP, TênHP, SốTC)
  • ĐĂNG_KÝ(MãSV, MãHP, NgàyĐK, Điểm)

Dữ liệu mẫu:

MãSVHọTênNgàySinhGiớiTính
SV01An2000-05-10Nam
SV02Bình2001-09-12Nữ
SV03Chi2002-03-04Nữ
SV04Dũng1999-11-20Nam
MãHPTênHPSốTC
HP01CSDL3
HP02Mạng2
HP03AI4
MãSVMãHPNgàyĐKĐiểm
SV01HP012024-09-018.5
SV01HP022024-09-027.0
SV02HP012024-09-039.0
SV02HP032024-09-048.0
SV03HP012024-09-056.5
SV04HP022024-09-064.5

Yêu cầu 1: Sinh viên Nam sinh sau năm 2000

Biểu thức: SINH_VIÊN(GiớiTính='Nam' AND YEAR(NgàySinh)>2000).

MãSVHọTênNgàySinhGiớiTính
SV01An2000-05-10Nam

Yêu cầu 2: Sinh viên có điểm ≥ 8 ở bất kỳ học phần nào

Bước 1: Kết nối SINH_VIÊN và ĐĂNG_KÝ: SINH_VIÊN * ĐĂNG_KÝ.

Bước 2: Chọn các bộ có Điểm ≥ 8.

Bước 3: Chiếu lấy MãSV, HọTên.

MãSVHọTên
SV01An
SV02Bình

Yêu cầu 3: Sinh viên đăng ký học phần từ 3 tín chỉ và điểm < 5

Bước 1: Kết nối ĐĂNG_KÝ và HỌC_PHẦN: ĐĂNG_KÝ * HỌC_PHẦN.

Bước 2: Chọn các bộ có SốTC ≥ 3 AND Điểm < 5.

Bước 3: Chiếu lấy MãSV, HọTên.

MãSVHọTên
SV04Dũng

Yêu cầu 4: Sinh viên Nữ sinh sau năm 2001, đăng ký học phần ≥ 3 tín chỉ và điểm ≥ 8

Bước 1: Kết nối ba quan hệ: SINH_VIÊN * ĐĂNG_KÝ * HỌC_PHẦN.

Bước 2: Chọn các bộ thỏa: GiớiTính='Nữ' AND YEAR(NgàySinh)>2001 AND SốTC ≥ 3 AND Điểm ≥ 8.

Bước 3: Chiếu lấy MãSV, HọTên.

MãSVHọTên
SV02Bình

Yêu cầu 5: Sinh viên đã đăng ký tất cả học phần bắt buộc

Cho HP_BẮT_BUỘC(MãHP) với các giá trị HP01, HP02. Biểu thức: ĐĂNG_KÝ[MãSV, MãHP] ÷ HP_BẮT_BUỘC.

MãSVMãHP
SV01HP01
SV01HP02

Kết quả: SV01, vì sinh viên này đăng ký đủ cả HP01 và HP02.

So sánh đại số quan hệ và SQL

Chương 4 - Lý thuyết Đại số quan hệ
0:00

1. Bảng so sánh tổng quan

Tiêu chíĐại số quan hệSQL
Bản chấtNgôn ngữ hình thức, mang tính thủ tục (procedural)Ngôn ngữ truy vấn bậc cao, mang tính khai báo (declarative)
Đối tượng thao tácQuan hệ (tập các bộ không trùng lặp)Bảng (multiset/bag, có thể trùng lặp nếu không dùng DISTINCT)
Ký hiệuKý hiệu toán học: σ, π, ∪, ∩, −, ×, *, ÷, ρTừ khóa tiếng Anh: SELECT, FROM, WHERE, JOIN, UNION, ...
Người dùngChủ yếu dùng trong lý thuyết và tối ưu truy vấnDùng trực tiếp bởi người dùng và ứng dụng
Ánh xạMọi truy vấn SQL đều có thể ánh xạ về biểu thức đại số quan hệĐược hệ quản trị chuyển thành kế hoạch thực thi dựa trên đại số quan hệ

2. Ánh xạ phép toán sang SQL

Đại số quan hệSQL tương ứngGhi chú
σ_E(R)SELECT * FROM R WHERE E;Lọc dòng
π_X(R)SELECT DISTINCT X FROM R;Lọc cột, loại trùng
R ∪ SSELECT ... FROM R UNION SELECT ... FROM S;Loại trùng lặp
R ∩ SSELECT ... FROM R INTERSECT SELECT ... FROM S;Một số hệ quản trị hỗ trợ
R − SSELECT ... FROM R EXCEPT SELECT ... FROM S;Hoặc MINUS ở Oracle
R × SSELECT * FROM R CROSS JOIN S;Tích Descartes
R * SSELECT ... FROM R NATURAL JOIN S; hoặc JOIN ... ON R.X=S.X;Kết nối tự nhiên
R ÷ SKhông có toán tử trực tiếp; dùng NOT EXISTS hoặc GROUP BY ... HAVING COUNTTruy vấn dạng với mọi
ρ_{S}(R)SELECT ... FROM R AS S;Đổi tên bảng/cột
Hàm gom nhómGROUP BY, HAVING, COUNT/SUM/AVG/MAX/MINTổng hợp dữ liệu

3. Điểm khác biệt quan trọng

  • Đại số quan hệ là tập (set) nên không có bộ trùng lặp; SQL mặc định là bag, có thể trả về dòng trùng nếu không dùng DISTINCT.
  • Đại số quan hệ có phép chia trực tiếp cho truy vấn dạng với mọi; SQL phải mô phỏng bằng NOT EXISTS hoặc GROUP BY HAVING COUNT.
  • SQL hỗ trợ nhiều tính năng beyond đại số quan hệ như ORDER BY, GROUP BY, hàm tổng hợp, view, transaction, điều khiển truy cập.
  • Đại số quan hệ là công cụ tư duy và tối ưu; SQL là công cụ giao tiếp với hệ quản trị và người dùng.

4. Ví dụ so sánh

Yêu cầu: tìm sinh viên có điểm ≥ 8 ở bất kỳ học phần nào.

Đại số quan hệ: (SINH_VIÊN * ĐĂNG_KÝ)(Điểm ≥ 8)[MãSV, HọTên].

SQL:

SELECT DISTINCT SV.MãSV, SV.HọTên
FROM SINH_VIÊN SV JOIN ĐĂNG_KÝ DK ON SV.MãSV = DK.MãSV
WHERE DK.Điểm >= 8;

Bài tập 4_1 - Hợp, hiệu, giao của hai quan hệ

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_1 - Các phép toán lý thuyết tập hợp trên hai quan hệ tương thích

Cho hai quan hệ R(ABC) và S(ABC) có cùng lược đồ nên tương thích (khả hợp), dữ liệu như sau.

Quan hệ R:

ABC
a1b1c1
a1b2c1
a2b2c2

Quan hệ S:

ABC
a2b1c2
a2b2c2

1. R ∪ S (hợp): lấy mọi bộ thuộc R hoặc S, loại bỏ bộ trùng. Bộ (a2,b2,c2) xuất hiện ở cả R và S nên chỉ giữ một lần.

ABC
a1b1c1
a1b2c1
a2b1c2
a2b2c2

2. R − S (hiệu): các bộ thuộc R nhưng không thuộc S. Bộ (a2,b2,c2) có trong S nên bị loại.

ABC
a1b1c1
a1b2c1

3. R ∩ S (giao): các bộ xuất hiện đồng thời trong cả R và S.

ABC
a2b2c2

Bài tập 4_2 - Tích Đề-các R × S

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_2 - Tích Đề-các của hai quan hệ

Cho R(ABC) và S(DEF) không cần tương thích. Tính R × S.

R:

ABC
abC
daF
cbD

S:

DEF
abc
daf

Kết quả R × S có 3 × 2 = 6 bộ, lược đồ ABCDEF (thuộc tính D,E,F của S được nối thêm).

ABCDEF
abCabc
abCdaf
daFabc
daFdaf
cbDabc
cbDdaf

Bài tập 4_3 - Phép chia R : S

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_3 - Phép chia R : S

Cho R(ABCD) và S(CD). Tính R : S (tức R ÷ S).

R:

ABCD
a1b1c1d2
a1b1c2d3
a1b2c1d2
a2b1c1d1
a2b1c2d1

S:

CD
c1d2
c2d3

Phép chia tìm các giá trị (A,B) sao cho với mọi bộ (C,D) trong S, bộ (A,B,C,D) đều có trong R.

Xét (a1,b1): có (c1,d2) và (c2,d3) trong R → thỏa. Xét (a1,b2): thiếu (c2,d3). Xét (a2,b1): các bộ của R có D=d1, không khớp S.

Kết quả R : S:

AB
a1b1

Bài tập 4_4 - Thuật toán thực hiện biểu thức quan hệ

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_4 - Thuật toán thực hiện các biểu thức quan hệ

Viết thuật toán cho các biểu thức sau (U,V là tập thuộc tính; X,Y,Z là tập thuộc tính; E là biểu thức logic).

1. R(E)[X] với R(U), X ⊆ U, E phát biểu trên U. Nghĩa là chọn các bộ của R thỏa E rồi chiếu lên X.

Create(T, X); // T rỗng
For each tuple t in R do
    If t(E) = TRUE then
        If !(t.X in T) then Add(T, t.X);
    End if;
End for;
Return T;

2. (P*Q)(E) với P(X), Q(Y), X∩Y ≠ ∅, E phát biểu trên XY. Nghĩa là kết nối tự nhiên P và Q rồi chọn theo E.

Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
    For each tuple q in Q do
        If p.Xc = q.Xc then
            Add(T1, (p, q.(Y-Xc)));
        End if;
    End for;
End for;
Create(T, X∪Y); // T rỗng
For each tuple t in T1 do
    If t(E) = TRUE then Add(T, t);
End for;
Return T;

3. (P*Q)[Z] với P(X), Q(Y), X∩Y ≠ ∅, Z ⊆ XY. Nghĩa là kết nối tự nhiên rồi chiếu lên Z.

Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
    For each tuple q in Q do
        If p.Xc = q.Xc then Add(T1, (p, q.(Y-Xc)));
    End for;
End for;
Create(T, Z); // T rỗng
For each tuple t in T1 do
    If !(t.Z in T) then Add(T, t.Z);
End for;
Return T;

4. P*Q(E) với P(X), Q(Y), X∩Y ≠ ∅, E phát biểu trên Y. Nghĩa là kết nối tự nhiên rồi chọn theo điều kiện trên thuộc tính của Q.

Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
    For each tuple q in Q do
        If p.Xc = q.Xc then Add(T1, (p, q.(Y-Xc)));
    End for;
End for;
Create(T, X∪Y); // T rỗng
For each tuple t in T1 do
    If t_Y(E) = TRUE then Add(T, t); // t_Y là phần thuộc tính Y của t
End for;
Return T;

5. P*Q[Z] với X∩Z ≠ ∅ và Z ⊆ Y. Nghĩa là kết nối tự nhiên rồi chiếu lên Z (Z nằm trong Y).

Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
    For each tuple q in Q do
        If p.Xc = q.Xc then Add(T1, (p, q.(Y-Xc)));
    End for;
End for;
Create(T, Z); // T rỗng
For each tuple t in T1 do
    If !(t.Z in T) then Add(T, t.Z);
End for;
Return T;

Bài tập 4_5 - Chọn và chiếu trên R(ABCD)

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_5 - Chọn và chiếu trên quan hệ R(ABCD)

Cho quan hệ R:

ABCD
a1b131
a1b124
a2b143
a2b256
a1b231

1. R(A=a1): các bộ có A=a1.

ABCD
a1b131
a1b124
a1b231

2. R(C>3): các bộ có C>3.

ABCD
a2b143
a2b256

3. R(A=a1 ∨ C≥4): các bộ có A=a1 hoặc C≥4 (gồm tất cả các bộ của R).

ABCD
a1b131
a1b124
a2b143
a2b256
a1b231

4. R[ABC]: chiếu lên A,B,C, loại trùng.

ABC
a1b13
a1b12
a2b14
a2b25
a1b23

5. R[ACD]: chiếu lên A,C,D, loại trùng (bộ (a1,3,1) xuất hiện hai lần nên chỉ giữ một).

ACD
a131
a124
a243
a256

Bài tập 4_6 - Hợp, giao, hiệu, chiếu, chọn trên R và S

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_6 - Các phép toán trên hai quan hệ tương thích R, S

R và S có cùng lược đồ ABCD.

R:

ABCD
1000
1100
1110
1111

S:

ABCD
1111
2211
1110

1. R ∪ S:

ABCD
1000
1100
1110
1111
2211

R ∩ S:

ABCD
1110
1111

R − S:

ABCD
1000
1100

S − R:

ABCD
2211

2. Với X={A,B}, Y={A,C,D}:

R[X]:

AB
10
11

S[X]:

AB
11
22

(R ∪ S)[X]:

AB
10
11
22

(R ∩ S)[Y] với Y={A,C,D}:

ACD
110
111

3. E = “(A=1) ∧ (D=0)”:

R(E):

ABCD
1000
1100
1110

(R ∪ S)(E):

ABCD
1000
1100
1110

Bài tập 4_7 - Phép toán trên R, S và Q

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_7 - Các phép toán trên R, S, Q

R(ABCD):

ABCD
a1b1c1d1
a2b1c1d1
a2b2c2d2
a2b2c3d2

S(ABCD):

ABCD
a1b1c3d1
a2b1c1d1
a1b1c1d1

Q(A,E,F,G):

AEFG
a1e2f1g1
a2e1f1g1
a1e2f2g2
a4e2f2g2

1. R ∪ S:

ABCD
a1b1c1d1
a2b1c1d1
a2b2c2d2
a2b2c3d2
a1b1c3d1

R ∩ S:

ABCD
a1b1c1d1
a2b1c1d1

R − S:

ABCD
a2b2c2d2
a2b2c3d2

2. R × Q (16 bộ, lược đồ A B C D A E F G):

ABCDAEFG
a1b1c1d1a1e2f1g1
a1b1c1d1a2e1f1g1
a1b1c1d1a1e2f2g2
a1b1c1d1a4e2f2g2
a2b1c1d1a1e2f1g1
a2b1c1d1a2e1f1g1
a2b1c1d1a1e2f2g2
a2b1c1d1a4e2f2g2
a2b2c2d2a1e2f1g1
a2b2c2d2a2e1f1g1
a2b2c2d2a1e2f2g2
a2b2c2d2a4e2f2g2
a2b2c3d2a1e2f1g1
a2b2c3d2a2e1f1g1
a2b2c3d2a1e2f2g2
a2b2c3d2a4e2f2g2

R * Q (kết nối tự nhiên trên A):

ABCDEFG
a1b1c1d1e2f1g1
a1b1c1d1e2f2g2
a2b1c1d1e1f1g1
a2b2c2d2e1f1g1
a2b2c3d2e1f1g1

R[AB]:

AB
a1b1
a2b1
a2b2

Q(A=a1 ∨ E=e2):

AEFG
a1e2f1g1
a1e2f2g2
a4e2f2g2

3. (R * Q)(A=a1 ∨ E=e2)[AB]: từ R*Q chọn các bộ có A=a1 hoặc E=e2, rồi chiếu lên A,B.

Các bộ thỏa: (a1,b1,c1,d1,e2,...) và (a1,b1,c1,d1,e2,...). Chiếu lên A,B cho một bộ.

AB
a1b1

Bài tập 4_8 - Kết hợp chiếu, chọn, kết nối tự nhiên

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_8 - Kết hợp chiếu, chọn và kết nối tự nhiên

R(ABC):

ABC
a12c1
a23c2
a34c3

S(A,D,F,G):

ADFG
a11f1g1
a12f2g1
a33f2g2
a44f3g1

1. R[AC] * S(5 − D > 2): chọn S với 5-D>2 (D<3), rồi kết nối tự nhiên với R[AC] trên A.

S(5-D>2):

ADFG
a11f1g1
a12f2g1

Kết quả:

ACDFG
a1c11f1g1
a1c12f2g1

2. (R * S)(A = a1 ∧ C ≠ c2):

R * S:

ABCDFG
a12c11f1g1
a12c12f2g1
a34c33f2g2

Kết quả sau chọn:

ABCDFG
a12c11f1g1
a12c12f2g1

3. R(A ≠ a2 ∨ B < 3)[AC] * S: chọn R với A≠a2 hoặc B<3, chiếu AC, rồi kết nối với S.

R(A≠a2 ∨ B<3): a1 2 c1 và a3 4 c3 (bộ a2 3 c2 bị loại).

(R(...))[AC]: (a1,c1), (a3,c3).

Kết quả:

ACDFG
a1c11f1g1
a1c12f2g1
a3c33f2g2

Bài tập 4_9 - Nhiều phép toán trên R và S

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_9 - Nhiều phép toán trên R(ABCD) và S(CD)

R:

ABCD
a1x2
a1y2
b2x1
b2y1
a4x2
c5y7

S:

CD
x1
y2

1. R[AB]:

AB
a1
b2
a4
c5

2. R(3 − B + D > 1): các bộ thỏa điều kiện (trừ bộ a 4 x 2).

ABCD
a1x2
a1y2
b2x1
b2y1
c5y7

3. R(B<4) ∪ R(D>3):

ABCD
a1x2
a1y2
b2x1
b2y1
c5y7

4. R(B≥1 ∧ B≤5): tất cả các bộ của R.

ABCD
a1x2
a1y2
b2x1
b2y1
a4x2
c5y7

5. R*S[C]: kết nối tự nhiên R và S trên C,D, rồi chiếu C.

C
x
y

6. R(B<4) − R(D>3):

ABCD
a1x2
a1y2
b2x1
b2y1

7. R(B<4) ∩ R(D>3): kết quả rỗng.

ABCD
(rỗng)

8. R : S: kết quả rỗng, vì không có cặp (A,B) nào kết hợp được với mọi cặp (C,D) của S.

AB
(rỗng)

Bài tập 4_10 - Biểu thức đại số quan hệ trên CSDL NHÂN VIÊN

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_10 - Biểu thức đại số quan hệ trên CSDL NHÂN VIÊN

Lược đồ: NHANVIEN(Manv, Hoten, Ngaysinh, Gioitinh, Noisinh, Maphong, Macv); PHONG(Maphong, Tenphong); CHUCVU(Macv, Tencv).

1. Họ và tên, ngày sinh, giới tính, tên phòng của mỗi nhân viên:

(NHANVIEN * PHONG)[Hoten, Ngaysinh, Gioitinh, Tenphong]

2. Họ và tên, ngày sinh, giới tính, nơi sinh của nhân viên có tên chức vụ “Trưởng phòng”:

((NHANVIEN * CHUCVU)(Tencv = "Trưởng phòng"))[Hoten, Ngaysinh, Gioitinh, Noisinh]

3. Họ và tên, ngày sinh, tên chức vụ của nhân viên nữ, nơi sinh Bình Định:

((NHANVIEN * CHUCVU)(Gioitinh = "Nữ" ∧ Noisinh = "Bình Định"))[Hoten, Ngaysinh, Tencv]

4. Họ và tên, ngày sinh, tên phòng của nhân viên nơi sinh Bình Định hoặc Đăk Lăk và giới tính Nam:

((NHANVIEN * PHONG)((Noisinh = "Bình Định" ∨ Noisinh = "Đăk Lăk") ∧ Gioitinh = "Nam"))[Hoten, Ngaysinh, Tenphong]

Bài tập 4_11 - Biểu thức đại số quan hệ trên CSDL THỰC TẬP

Chương 4 - Đại số quan hệ
0:00

Bài tập 4_11 - Biểu thức đại số quan hệ trên CSDL THỰC TẬP

Lược đồ: SV(MSV, HT, NS, QQ, HL); DT(MDT, TDT, CN, KP); SD(MSV, MDT, NTT, KM, KQ). Tuổi tính đến năm 2022.

1. Thông tin sinh viên sinh trước năm 2005 và quê quán ở Bình Định:

SV(NS < 2005 ∧ QQ = "Bình Định")

2. Danh sách các tỉnh sinh viên đến thực tập:

SD[NTT]

3. Danh sách các tỉnh có sinh viên thực tập xa trường hơn 100 km của mã đề tài số 7:

(SD(MDT = 7 ∧ KM > 100))[NTT]

4. Thông tin tình hình thực tập của sinh viên làm đề tài ở nơi thực tập Quảng Ngãi:

SD(NTT = "Quảng Ngãi")

5. Danh sách sinh viên thực tập tại quê nhà:

((SV * SD)(QQ = NTT))[MSV, HT, NS, QQ, HL]

6. Thông tin về các đề tài có sinh viên thực tập tham gia:

(DT * SD)[MDT, TDT, CN, KP]

7. Thông tin mã đề tài không có sinh viên nào tham gia:

DT[MDT] − SD[MDT]

8. Thông tin mã đề tài có kinh phí bằng 3 triệu hoặc lớn hơn bằng 5 triệu:

(DT(KP = 3) ∪ DT(KP ≥ 5))[MDT]

9. Mã những sinh viên dưới 20 tuổi và có kết quả thực tập trên 7 điểm:

((SV * SD)(2022 − NS < 20 ∧ KQ > 7))[MSV]

10. Danh sách sinh viên thực tập theo đề tài có kinh phí lớn hơn một phần năm tổng kinh phí cấp cho các đề tài:

((SV * SD * DT)(KP > SUM(; DT, KP) / 5))[MSV, HT]

11. Danh sách sinh viên có kết quả thực tập cao hơn điểm thực tập trung bình của đề tài mã số 4:

((SV * SD)(KQ > AVG(; SD(MDT = 4), KQ)))[MSV, HT]

5.1 Khái niệm phụ thuộc hàm

Chương 5 - Phụ thuộc hàm
0:00

5.1 Khái niệm phụ thuộc hàm

Trong mô hình dữ liệu quan hệ, phụ thuộc hàm là ràng buộc ngữ nghĩa giữa các thuộc tính trong một quan hệ, phản ánh quy luật xác định dữ liệu.

Định nghĩa: Cho quan hệ R(U), U là tập các thuộc tính. Với hai tập thuộc tính X, Y ⊆ U, ta nói X → Y nếu với mọi cặp bộ t1, t2 trong R, nếu t1.X = t2.X thì t1.Y = t2.Y. Nghĩa là giá trị của X quyết định duy nhất giá trị của Y.

Ý nghĩa: mô tả các ràng buộc ngữ nghĩa của dữ liệu; là cơ sở để xác định khóa của quan hệ và chuẩn hóa cơ sở dữ liệu; giúp giảm dư thừa và tránh bất nhất dữ liệu.

Ví dụ: SINH_VIEN(MaSV, HoVaTen, NgaySinh, GioiTinh) có MaSV → HoVaTen, NgaySinh, GioiTinh. DANG_KY(MaSV, MaHP, DiemHP) có MaSV, MaHP → DiemHP. Trên bảng với U = ABCD và các bộ (1,x,10,p), (1,x,10,q), (2,y,20,p), (3,z,30,r), các phụ thuộc A → B, B → C, A → C, AB → C thỏa mãn, còn A → D không thỏa vì cùng A = 1 nhưng D khác p và q.

Nhận xét: phụ thuộc hàm là quan hệ giữa thuộc tính, không phải giữa các bộ; nếu quan hệ có không quá một bộ thì luôn thỏa mọi phụ thuộc hàm; nếu một quan hệ con chứa X ∪ Y thì cũng thỏa X → Y.

5.2 Hệ tiên đề Armstrong và bao đóng

Chương 5 - Phụ thuộc hàm
0:00

5.2 Hệ tiên đề Armstrong và bao đóng

Ba tiên đề cơ bản:

  • Phản xạ: nếu Y ⊆ X thì X → Y.
  • Gia tăng: nếu X → Y thì XZ → YZ.
  • Bắc cầu: nếu X → Y và Y → Z thì X → Z.

Từ ba tiên đề gốc suy ra các tính chất mở rộng: phân rã, hợp, tựa bắc cầu, cộng tính đầy đủ, mở rộng trái, phản xạ chặt.

Phụ thuộc hàm suy diễn: F ⊢ X → Y nếu suy ra được X → Y từ F bằng dãy bước hợp lệ dựa trên hệ tiên đề Armstrong. Bao đóng của tập phụ thuộc hàm F+ là tập tất cả phụ thuộc hàm suy diễn được từ F. Tính chất: F ⊆ F+, đơn điệu, lũy đẳng.

Bao đóng của tập thuộc tính X+ là tập tất cả thuộc tính có thể suy diễn từ X theo F. Thuật toán: khởi tạo X+ = X; với mỗi Y → Z ∈ F, nếu Y ⊆ X+ thì X+ = X+ ∪ Z; lặp đến khi X+ không thay đổi. Ví dụ với U = ABCDEGH, F = {B → A, DA → CE, D → H, GH → C, AC → D}, ta có (AC)+ = ACDEH.

Định lý liên hệ: X → Y ∈ F+ ⟺ Y ⊆ X+. Đây là nền tảng để kiểm tra phụ thuộc hàm, tìm khóa và chuẩn hóa.

5.3 Bài toán thành viên và phủ của tập phụ thuộc hàm

Chương 5 - Phụ thuộc hàm
0:00

5.3 Bài toán thành viên và phủ của tập phụ thuộc hàm

Bài toán thành viên: Cho R(U), F và f: X → Y, xác định xem X → Y có được suy diễn từ F hay không, tức X → Y ∈ F+ hay không. Cách giải: tính X+ theo F; nếu Y ⊆ X+ thì X → Y ∈ F+, ngược lại không.

Hai tập phụ thuộc hàm tương đương: F và G tương đương nếu F+ = G+. Kiểm tra bằng cách xét từng phụ thuộc hàm của tập này có phải là thành viên của tập kia hay không.

Các loại phủ:

  • Phủ tự nhiên: bảo toàn ngữ nghĩa, vế trái khác nhau đôi một và X ∩ Y = ∅.
  • Tập phụ thuộc hàm đầy đủ: vế trái tối thiểu, loại thuộc tính dư thừa ở vế trái.
  • Phủ không dư: không có phụ thuộc hàm dư thừa.
  • Phủ tối thiểu: vế phải một thuộc tính, vế trái tối thiểu, không phụ thuộc hàm dư thừa.

Thuật toán phủ tối thiểu: chuẩn hóa vế phải; thu gọn vế trái; loại phụ thuộc hàm dư thừa. Phủ tối thiểu có thể không duy nhất; nên chuyển về phủ tối thiểu trước khi tìm khóa và chuẩn hóa.

6.1 Khái niệm khóa

Chương 6 - Khóa của quan hệ
0:00

6.1 Khái niệm khóa

Một tập thuộc tính K ⊆ U được gọi là khóa của quan hệ R nếu và chỉ nếu: K → U ∈ F+ (K là siêu khóa, K+ = U) và K là tối thiểu, tức không tồn tại K' ⊂ K với K' → U.

Tương đương: K+ = U và với mọi A ∈ K, (K − {A})+ ≠ U.

Ví dụ: DANG_KY(MaSV, MaHP, Diem) với F = {MaSV, MaHP → Diem} có khóa {MaSV, MaHP}.

Tính chất: thuộc tính không xuất hiện ở vế phải của mọi phụ thuộc hàm luôn có mặt trong mọi khóa; nếu K = U − ∪right(f) và K+ = U thì khóa duy nhất; hai khóa không chứa nhau. Mỗi lược đồ luôn có ít nhất một khóa, xấu nhất là U. Khóa là siêu khóa nhỏ nhất. Khóa chính phải duy nhất và không được rỗng.

6.2 Thuật toán tìm một khóa

Chương 6 - Khóa của quan hệ
0:00

6.2 Thuật toán tìm một khóa

Thuật toán 1: Bắt đầu K = U. Với mỗi thuộc tính A ∈ K, nếu (K − {A})+ = U thì loại A khỏi K. Kết quả K là một khóa.

Thuật toán 2: K = U − ∪right(f). Tính K+; nếu K+ = U thì K là khóa. Ngược lại T = U − K+, bổ sung thuộc tính từ T vào K cho đến K+ = U. Sau đó thử loại các thuộc tính mới bổ sung nếu (K − {A})+ = U.

Ví dụ với U = ABCD, F = {A → B, B → C}: thuật toán 1 cho K = AD. Ví dụ với U = ABCDE, F = {A → B, B → C, CD → E}: K = AD. Ví dụ với F = {A → B, B → A, CD → E}: K = ACD.

6.3 Thuật toán tìm tất cả khóa và ví dụ thực tế

Chương 6 - Khóa của quan hệ
0:00

6.3 Thuật toán tìm tất cả khóa và ví dụ thực tế

N = U − ∪right(f). Nếu N+ = U thì N là khóa duy nhất. Ngược lại T = U − N, xét các tập con Xi ⊆ T (Xi ≠ ∅), Si = N ∪ Xi; nếu Si+ = U thì Si là siêu khóa. Loại các siêu khóa không tối thiểu. Cải tiến: không xét Xi = ∅ và không xét tập con chứa tập khóa đã tìm được, duyệt theo kích thước tăng dần.

Ví dụ R(U,F), U = ABC, F = {AB → C, C → A}: N = B, T = AC, khóa là BA và BC.

Ví dụ thực tế LICH_THI: khóa kỹ thuật S1 = {MaSV, MaCaThi} và khóa nghiệp vụ S2 = {MaSV, MaMon, NgayThi, GioThi, PhongThi}. Triển khai chọn S1 làm khóa chính, S2 làm ràng buộc UNIQUE.

7.1 Các dạng chuẩn của quan hệ

Chương 7 - Chuẩn hóa quan hệ
0:00

7.1 Các dạng chuẩn của quan hệ

Thuộc tính khóa là thuộc tính tham gia ít nhất một khóa; thuộc tính ngoài khóa không tham gia khóa nào.

  • 1NF: mọi thuộc tính có giá trị nguyên tố, không có thuộc tính đa trị hay lặp.
  • 2NF: đạt 1NF và mọi thuộc tính ngoài khóa phụ thuộc đầy đủ vào toàn bộ mỗi khóa; không có phụ thuộc bộ phận.
  • 3NF: đạt 2NF và không tồn tại phụ thuộc bắc cầu từ khóa đến thuộc tính ngoài khóa; với mọi X → A, hoặc X là siêu khóa hoặc A là thuộc tính khóa.
  • BCNF: mọi X → Y ∈ F+ với Y ⊄ X đều có X là siêu khóa.

Ví dụ: DANG_KY không đạt 2NF vì TenSV phụ thuộc MaSV và SoTinChi phụ thuộc MaMon. KET_QUA đạt 2NF. R(MaSV, MaLop, TenLop) không đạt 3NF vì MaLop → TenLop. ABC với AB → C, C → A không đạt BCNF vì C không là siêu khóa.

7.2 Phép phân tách quan hệ

Chương 7 - Chuẩn hóa quan hệ
0:00

7.2 Phép phân tách quan hệ

Phân tách bảo toàn thông tin: hợp thuộc tính bằng U, chiếu bằng quan hệ con và nối tự nhiên khôi phục R. Với hai quan hệ, kiểm tra U1 ∩ U2 → (U1 − U2) hoặc (U2 − U1) ∈ F+. Với nhiều quan hệ dùng ma trận ký hiệu: lập ma trận 0/1, nếu trong một dòng các cột X cùng ký hiệu thì các cột Y gán cùng ký hiệu; nếu có dòng toàn 1 thì bảo toàn thông tin.

Phân tách bảo toàn phụ thuộc hàm: hợp các phụ thuộc chiếu π_Ui(F) có bao đóng bằng F+. Kiểm tra: với mỗi X → Y ∈ F, tính X+ theo F' = ∪π_Ui(F); nếu Y ⊆ X+ thì bảo toàn. Phân tách có thể bảo toàn thông tin nhưng không bảo toàn phụ thuộc hàm, thường khi đạt BCNF.

7.3 Phân tách về dạng chuẩn BCNF hoặc 3NF

Chương 7 - Chuẩn hóa quan hệ
0:00

7.3 Phân tách về dạng chuẩn BCNF hoặc 3NF

Phân tách bảo toàn thông tin về BCNF/3NF: tìm khóa; phát hiện X → Y sao cho X không là siêu khóa và Y không chứa thuộc tính khóa; phân tách R thành R1 = R[XY] và R2 = R[U − Y]; lặp đến khi đạt chuẩn. Ví dụ SDIM với F = {SI → D, SD → M} phân tách thành SDM và SDI, cả hai đạt BCNF.

Phân tách 3NF bảo toàn thông tin và phụ thuộc hàm: dùng phủ tối thiểu Fc; gộp cùng vế trái; sinh Ri(Ui = X ∪ Y); nếu chưa có quan hệ chứa khóa thì thêm Rk(K). Ví dụ ABCDE với F = {BC → A, C → D, AE → B, B → D, B → E}: phủ tối thiểu như trên, gộp B → DE, sinh R1(BCA), R2(CD), R3(AEB), R4(BDE); R1 chứa khóa BC nên bảo toàn thông tin. Ưu tiên 3NF trong thực tế; BCNF khi chấp nhận mất phụ thuộc hàm.

Sẵn sàng phát
Bài 1 / 53