Tổng quan về giáo trình

Giáo trình thuộc học phần Cơ sở dữ liệu (hoặc Hệ quản trị cơ sở dữ liệu), giữ vị trí cốt lõi trong khối kiến thức cơ sở ngành thuộc chương trình đào tạo Cử nhân và Kỹ sư Công nghệ thông tin, Hệ thống thông tin và Khoa học máy tính. Nội dung trọng tâm của tài liệu tập trung vào Chương 5: Ngôn ngữ truy vấn có cấu trúc (Structured Query Language - SQL), đóng vai trò cầu nối chuyển tiếp từ lý thuyết mô hình dữ liệu quan hệ sang môi trường triển khai thực tế trên các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).

Mục tiêu học tập của tài liệu nhằm trang bị cho người học:

  • Khả năng hiểu rõ nguồn gốc lịch sử, quá trình chuẩn hóa của SQL từ các phát triển ban đầu của IBM (SEQUEL) đến các chuẩn ANSI (SQL-86, SQL-92, SQL-99).
  • Nắm vững cú pháp và áp dụng thành thạo nhóm lệnh Định nghĩa dữ liệu (DDL - Data Definition Language) để khởi tạo, điều chỉnh cấu trúc lược đồ, kiểu dữ liệu và các ràng buộc toàn vẹn.
  • Hiểu và triển khai các biểu thức truy vấn dữ liệu (DML - Data Manipulation Language) từ cấu trúc SELECT - FROM - WHERE cơ bản, tương quan trực tiếp với các phép toán trong Đại số quan hệ.
  • Nắm bắt cơ chế kiểm soát dữ liệu thông qua khung nhìn (view), chỉ mục (index), phân quyền, bảo mật và điều khiển giao tác.

Cách tiếp cận của giáo trình đi từ nền tảng lý thuyết hình thức (Đại số quan hệ, chuẩn ANSI SQL-92) đối chiếu song song với thuật ngữ và cú pháp thương mại (điển hình là Microsoft SQL Server). Cấu trúc bài giảng kết hợp định nghĩa cú pháp chuẩn xác với hệ thống ví dụ thực hành xây dựng trên mô hình quản lý nhân sự, đề tài nghiên cứu khoa học và tổ chức bộ môn của trường đại học.


Nội dung kiến thức cốt lõi

Các chương và chủ đề chính

Nội dung tài liệu được tổ chức theo quy trình phát triển logic của một hệ thống cơ sở dữ liệu quan hệ:

  1. Tổng quan về ngôn ngữ SQL: Khái quát sự hình thành từ ngôn ngữ Đại số quan hệ (ĐSQH) đến ngôn ngữ cấp cao SQL phát triển bởi IBM vào thập niên 1970 với tên gọi ban đầu là SEQUEL, sau đó được Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) công nhận qua các phiên bản SQL-86, SQL-92, SQL-99. Phân định các phân hệ chức năng: Định nghĩa dữ liệu (DDL), Thao tác dữ liệu (DML), Định nghĩa khung nhìn, Ràng buộc toàn vẹn, Phân quyền - bảo mật và Điều khiển giao tác. Thiết lập bảng ánh xạ giữa thuật ngữ lý thuyết và thương mại: Quan hệ ~ Bảng (Table), Thuộc tính ~ Cột (Column), Bộ ~ Dòng (Row/Tuple).

  2. Ngôn ngữ định nghĩa dữ liệu (DDL) và hệ thống kiểu dữ liệu: Cung cấp cú pháp mô tả lược đồ quan hệ, miền giá trị, ràng buộc toàn vẹn và chỉ mục:

    • Các lệnh quản trị cấu trúc: CREATE TABLE, DROP TABLE, ALTER TABLE, CREATE DOMAIN, CREATE DATABASE.
    • Kiểu dữ liệu số (Numeric): INTEGER, SMALLINT, NUMERIC, NUMERIC(p), NUMERIC(p,s), DECIMAL, DECIMAL(p,s), REAL, DOUBLE PRECISION, FLOAT, FLOAT(p).
    • Kiểu dữ liệu chuỗi ký tự (Character string): CHAR, CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n).
    • Kiểu chuỗi bit (Bit string): BIT, BIT(x), BIT VARYING(x).
    • Kiểu ngày giờ (Datetime): DATE (ngày, tháng, năm), TIME (giờ, phút, giây), TIMESTAMP (ngày và giờ), DATETIME (kết hợp cả Date và Time trong SQL Server).
  3. Khai báo ràng buộc toàn vẹn (RBTV): Thiết lập các điều kiện kiểm tra trên thuộc tính hoặc bảng thông qua từ khóa NOT NULL, NULL, UNIQUE, DEFAULT, PRIMARY KEY, FOREIGN KEY / REFERENCES, CHECK. Cú pháp định danh tường minh cho ràng buộc bằng mệnh đề CONSTRAINT <Ten_RBTV> <RBTV> (ví dụ: CONSTRAINT PK_GV PRIMARY KEY, CONSTRAINT CK_PHAI CHECK (PHAI IN ('Nam', 'Nu'))).

  4. Sửa đổi và xóa cấu trúc bảng:

    • Lệnh ALTER TABLE: Thêm cột mới (ADD), xóa cột (DROP COLUMN), thay đổi kiểu dữ liệu (ALTER COLUMN), thêm ràng buộc (ADD CONSTRAINT) hoặc xóa ràng buộc (DROP <Tên_RBTV>).
    • Lệnh DROP TABLE: Hủy bỏ hoàn toàn lược đồ và toàn bộ dữ liệu lưu trữ bên trong bảng.
  5. Ngôn ngữ truy vấn dữ liệu (DML) cơ bản:

    • Cấu trúc mệnh đề nền tảng: SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>.
    • Cơ chế loại bỏ dòng trùng lặp bằng từ khóa DISTINCT.
    • Khai báo bí danh (Alias) cho cột và bảng thông qua từ khóa AS hoặc khoảng trắng.
    • Các phép toán logic và so sánh: AND, OR, NOT, BETWEEN ... AND ..., NOT BETWEEN, phép khớp mẫu LIKE / NOT LIKE với ký tự đại diện (%, _, [charlist], [^charlist]).
    • Cơ chế xử lý giá trị rỗng (NULL): Bản chất giá trị không xác định (unknown), không áp dụng (inapplicable), không tồn tại (withheld); logic ba giá trị (Three-Valued Logic); kiểm tra bằng toán tử IS NULL và IS NOT NULL.
    • Kết nối nhiều bảng: Bản chất tích Descartes của mệnh đề FROM kết hợp điều kiện lọc tại mệnh đề WHERE để thực hiện phép kết.

Kiến thức nền tảng được xây dựng

  • Ánh xạ lý thuyết Đại số quan hệ sang SQL: Biểu diễn tương đương giữa biểu thức toán học $\pi_L(\sigma_C(R))$ và câu lệnh truy vấn: $$\text{SELECT } L \text{ FROM } R \text{ WHERE } C$$
  • Mô hình cấu trúc bảng đa tập hợp (Bag/Multiset): Phân biệt giữa quan hệ trong lý thuyết ĐSQH (tập hợp - Set, không chứa các phần tử trùng lặp) và bảng trong SQL (cho phép nhiều dòng trùng nhau trừ khi chỉ định rõ DISTINCT hoặc khóa chính).
  • Tính toàn vẹn tham chiếu và phụ thuộc dữ liệu: Thiết lập mối quan hệ giữa các thực thể thông qua cặp khóa chính - khóa ngoại (PRIMARY KEY - FOREIGN KEY), yêu cầu thứ tự khởi tạo bảng độc lập trước khi tạo bảng phụ thuộc.

Kỹ năng phát triển

  • Kỹ năng thiết kế và hiện thực hóa lược đồ cơ sở dữ liệu quan hệ bằng mã lệnh DDL chuẩn.
  • Kỹ năng phân tích logic và cấu trúc hóa câu lệnh truy vấn dữ liệu có điều kiện, biểu thức tính toán số học (LUONG*1.1), và ghép chuỗi ký tự (SONHA + ',' + DUONG...).
  • Kỹ năng gỡ lỗi xung đột cấu trúc dữ liệu, kiểm soát điều kiện vi phạm ràng buộc toàn vẹn khi chỉnh sửa hoặc xóa bảng.

Phương pháp giảng dạy và học tập

Giáo trình áp dụng phương pháp sư phạm diễn dịch kết hợp quy nạp, bắt đầu từ việc trình bày cú pháp tổng quát, phân tích ngữ nghĩa, sau đó minh họa trực tiếp thông qua các đoạn mã thực thi trên lược đồ cơ sở dữ liệu mẫu.

Hệ thống bài tập và nghiên cứu tình huống thực tế

Hệ thống bài học được neo chặt vào lược đồ cơ sở dữ liệu quản lý nghiên cứu khoa học của trường đại học bao gồm 7 thực thể liên kết: GIAOVIEN, BOMON, KHOA, DETAI, CONGVIEC, THAMGIADT, CHUDE. Các ví dụ điển hình bao gồm:

  • Tình huống định nghĩa cấu trúc: Khởi tạo bảng GIAOVIEN với các điều kiện nghiệp vụ: MaGV là khóa chính, HoTen không được để trống (NOT NULL), Luong mặc định 1000 (DEFAULT), Phai kiểm tra thuộc tập hợp ('Nam', 'Nu') bằng mệnh đề CHECK.
  • Tình huống ràng buộc tham chiếu phức hợp: Tạo bảng CONGVIEC với khóa chính tổng hợp từ hai thuộc tính (MADT, STT) và khóa ngoại MADT tham chiếu đến DETAI(MADT).
  • Tình huống thay đổi cấu trúc: Thêm ràng buộc tuổi giảng viên từ 23 đến 60 bằng lệnh ALTER TABLE GIAOVIEN ADD TUOI INT CONSTRAINT CK_TUOI CHECK (TUOI >= 23 AND TUOI <= 60) NOT NULL.
  • Tình huống truy vấn đa bảng: Truy vấn kết hợp bảng để lấy thông tin trưởng bộ môn thuộc khoa 'CNTT', tìm chủ nhiệm đề tài cấp quản lý 'Thành phố', hoặc lọc giảng viên tham gia đề tài 'Mobile Database' có mức phụ cấp trên 10 triệu đồng.

Phương pháp đánh giá và tự học

  • Đánh giá năng lực: Đo lường thông qua độ chính xác cú pháp SQL, khả năng chỉ định đúng thứ tự bảng trong mệnh đề FROM, thiết lập chính xác điều kiện kết nối trong mệnh đề WHERE để tránh bùng nổ tích Descartes, và khả năng thiết lập tên ràng buộc (CONSTRAINT) chuẩn mực.
  • Hướng dẫn tự học: Thực hành viết kịch bản SQL tuần tự từ DDL đến DML; kiểm tra tính đúng đắn của các biểu thức logic có chứa giá trị NULL; đối chiếu kết quả trả về của câu lệnh SQL với bảng dữ liệu gốc để hiểu rõ cơ chế lọc và chiếu.

Điểm nổi bật và cập nhật

  1. Hệ thống hóa lịch sử và chuẩn hóa: Tài liệu theo sát quá trình tiến hóa của chuẩn ANSI SQL từ SQL-86, SQL-92 đến SQL-99, làm rõ sự đồng nhất và khác biệt giữa lý thuyết chuẩn và cú pháp hỗ trợ trên hệ quản trị thương mại SQL Server (như kiểu dữ liệu DATETIME hay hàm GETDATE()).

  2. Làm rõ bản chất toán học của đại số quan hệ trong SQL: Giải thích rõ ràng nguyên lý ánh xạ từ các phép toán hình thức (phép chọn $\sigma$, phép chiếu $\pi$, phép tích Descartes $\times$, phép kết $\bowtie$) sang các mệnh đề SELECT, FROM, WHERE.

  3. Chi tiết hóa cơ chế logic ba giá trị (Three-Valued Logic): Phân tích sâu về giá trị NULL trong cơ sở dữ liệu:

    • Biểu thức tính toán có NULL sẽ trả về NULL (ví dụ: x + 3 $\rightarrow$ NULL).
    • Biểu thức so sánh trực tiếp với NULL sẽ trả về UNKNOWN (ví dụ: x = 3 $\rightarrow$ UNKNOWN), từ đó xác lập tính bắt buộc của việc dùng toán tử IS NULL hoặc IS NOT NULL.
  4. Khai thác biểu thức khớp mẫu nâng cao: Tài liệu phân định rõ việc sử dụng các ký tự đại diện trong toán tử LIKE:

    • _ biểu diễn cho chính xác 1 ký tự bất kỳ.
    • % biểu diễn cho chuỗi ký tự bất kỳ với độ dài tùy ý.
    • [charlist] (ví dụ: [nh]%) biểu diễn ký tự bắt đầu nằm trong danh sách.
    • [^charlist] (ví dụ: [^h]%) biểu diễn ký tự bắt đầu không nằm trong danh sách.

Đối tượng sử dụng giáo trình

Nhóm đối tượng Yêu cầu tiên quyết Phạm vi sử dụng
Sinh viên đại học (Năm 2 - Năm 3 ngành CNTT, Kỹ thuật Phần mềm, Hệ thống Thông tin, Khoa học Dữ liệu) Đã học Nhập môn lập trình, Cấu trúc dữ liệu và Giải thuật, Lý thuyết Mô hình dữ liệu quan hệ và Đại số quan hệ. Học tập trên lớp, làm bài tập thực hành phòng máy, ôn tập thi kết thúc học phần Cơ sở dữ liệu.
Giảng viên Chuyên môn về Khoa học máy tính hoặc Hệ thống thông tin. Sử dụng làm khung bài giảng chuẩn cho Chương 5 (SQL), thiết kế đề thi lý thuyết và bài kiểm tra thực hành SQL.
Kỹ sư phần mềm / Tự học Kiến thức logic học cơ bản, hiểu biết sơ bộ về cấu trúc bảng dữ liệu. Tra cứu cú pháp DDL/DML, chuẩn hóa quy ước đặt tên CONSTRAINT, nắm bắt nguyên lý kết nối bảng và xử lý NULL.

Câu hỏi thường gặp

1. Giáo trình này phù hợp nhất với những môn học nào?

Giáo trình được thiết kế trực tiếp cho môn học Cơ sở dữ liệu hoặc Hệ quản trị cơ sở dữ liệu ở bậc Đại học và Cao đẳng khối ngành Công nghệ thông tin và Kỹ thuật máy tính.

2. Sự khác biệt căn bản giữa quan hệ trong Đại số quan hệ và bảng trong SQL được trình bày như thế nào?

Theo tài liệu, trong Đại số quan hệ, một quan hệ là một tập hợp (set), nghĩa là không chứa các bộ trùng lặp. Ngược lại, trong SQL, một bảng là một đa tập hợp (bag/multiset), cho phép tồn tại các dòng có giá trị trùng lặp hoàn toàn, trừ khi người dùng chỉ định từ khóa DISTINCT hoặc thiết lập khóa chính PRIMARY KEY.

3. Tại sao trong SQL không được dùng phép so sánh WHERE cot = NULL?

Giá trị NULL đại diện cho trạng thái không biết (unknown), không áp dụng (inapplicable) hoặc không tồn tại (withheld). Do đó, mọi biểu thức so sánh đại số trực tiếp với NULL (như = NULL hoặc <> NULL) đều cho kết quả logic là UNKNOWN thay vì TRUE hay FALSE. Để kiểm tra giá trị rỗng, SQL cung cấp cú pháp chuẩn là IS NULL hoặc IS NOT NULL.

4. Quy ước đặt tên tường minh cho ràng buộc (CONSTRAINT) mang lại lợi ích gì?

Việc sử dụng cú pháp CONSTRAINT <Ten_RBTV> (như CONSTRAINT PK_GV PRIMARY KEY, CONSTRAINT FK_CONGVIEC_DETAI FOREIGN KEY...) cho phép người quản trị cơ sở dữ liệu định danh chính xác đối tượng ràng buộc, giúp việc xóa (DROP CONSTRAINT) hoặc sửa đổi ràng buộc thông qua lệnh ALTER TABLE diễn ra thuận tiện và không bị phụ thuộc vào tên tự sinh ngẫu nhiên của hệ quản trị.

5. Nội dung Chương 5 còn bao gồm những phần kiến thức nào tiếp theo?

Theo cấu trúc đề mục được giới thiệu ở đầu chương, ngoài phần Định nghĩa dữ liệu (DDL) và Truy vấn cơ bản (SELECT - FROM - WHERE), chương còn bao gồm các phần tiếp theo:

  • Tập hợp, so sánh tập hợp và truy vấn lồng.
  • Hàm kết hợp và gom nhóm dữ liệu (GROUP BY, HAVING).
  • Các thao tác cập nhật dữ liệu (INSERT, UPDATE, DELETE).
  • Định nghĩa và thao tác trên Khung nhìn (VIEW).
  • Cơ chế tổ chức và tối ưu hóa truy vấn bằng Chỉ mục (INDEX).

Kết luận

Chương 5: Ngôn ngữ SQL (Structured Query Language) cung cấp hệ thống tri thức hoàn chỉnh từ nền tảng chuẩn hóa quốc tế (ANSI SQL) đến kỹ năng triển khai chi tiết trên hệ quản trị cơ sở dữ liệu quan hệ. Nội dung giáo trình gắn kết chặt chẽ giữa lý thuyết mô hình quan hệ hình thức và thực tiễn thiết kế dữ liệu qua hệ thống bảng quản trị đại học minh họa (GIAOVIEN, BOMON, DETAI, CONGVIEC, KHOA).

Lộ trình học tập đề xuất:

  1. Nắm vững phân loại kiểu dữ liệu và cú pháp DDL (CREATE, ALTER, DROP, CONSTRAINT).
  2. Thành thạo cấu trúc truy vấn đơn bảng và các biểu thức điều kiện lọc (WHERE, LIKE, BETWEEN, NULL).
  3. Làm chủ kỹ thuật kết nối đa bảng dựa trên điều kiện khóa ngoại.
  4. Mở rộng sang các chuyên đề nâng cao về truy vấn lồng, gom nhóm, View và Index.