Chương 1 / Tổng quan
KHAINIEM

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.

VAITRO

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.

DBMS

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.

NGUOIDUNG

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.

MOHINH

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.

1

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

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

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

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

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

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

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

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

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

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

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

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

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
2

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
3

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
4

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;
5

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
6

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
7

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
8

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
9

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

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]

11

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]

KHAINIEM

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.

ARMSTRONG

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.

PHU

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.

KHAINIEM

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.

MOTKHOA

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.

TATCAKHOA

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.

DANGCHUAN

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.

PHANTACH

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.

CHUANHOA

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 / 37