Cộng đồng chia sẻ tri thức Lib24.vn

Giáo trình môn Cơ sở dữ liệu và PTTK HĐT UML - Cô Nguyễn Thị Thu Hiếu

30c122c09f1259ca4f4ae2b06a777fab
Gửi bởi: Nguyễn Thị Thu Hiếu 12 tháng 4 2021 lúc 13:16:45 | Được cập nhật: hôm kia lúc 18:56:56 | IP: 10.1.29.62 Kiểu file: PDF | Lượt xem: 845 | Lượt Download: 25 | File size: 1.730893 Mb

Nội dung tài liệu

Tải xuống
Link tài liệu:
Tải xuống

Các tài liệu liên quan


Có thể bạn quan tâm


Thông tin tài liệu

/Data/Lib24/public/docs/converthtml/2021-04-15/giao-trinh-mon-hoc-co-so-du-lieu-276691674367-1618208118

TRƢỜNG CAO ĐẲNG CƠ ĐIỆN HÀ NỘI 

KHOA CÔNG NGH

Ệ THÔNG TIN 

-------------------- 

 

 

 

 

 

GIÁO TRÌNH

 

MÔN HỌC CƠ SỞ DỮ LIỆU 

(Tài liệu lưu hành nội bộ)

 

 

 

 

 

 

 

 

 

 

 

 

Hà Nội, 2018 

 

 

MỤC LỤC 

CHƢƠNG 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU VÀ MÔ HÌNH HÓA DỮ LIỆU ........ 1 

1. Một số khái niệm............................................................................................................ 1 

1.1. Cơ sở dữ liệu............................................................................................................... 1 

1.2. Hệ quản trị cơ sở dữ liệu ............................................................................................ 2 

1.3. Mô hình dữ liệu ........................................................................................................... 3 

2. Mô hình thực thể liên kết ............................................................................................... 4 

2.1. Thực thể ...................................................................................................................... 4 

2.2. Thuộc tính ................................................................................................................... 5 

2.3. Mối liên kết ................................................................................................................. 6 

2.4. Xây dựng mô hình thực thể liên kết .......................................................................... 10 

3. Mô hình dữ liệu quan hệ .............................................................................................. 14 

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

3.2. Xây dựng mô hình dữ liệu quan hệ ........................................................................... 17 4. Đại số quan hệ ............................................................................................................. 20 

4.1. Các phép toán tập hợp .............................................................................................. 20 

4.2. Các phép toán quan hệ ............................................................................................. 23 

CHƢƠNG 2: NGÔN NGỮ SQL ........................................................................................... 25 

1. Các lệnh định nghĩa đối tượng cơ sở dữ liệu .............................................................. 25 

1.1. Tạo, sử dụng, xóa cơ sở dữ liệu ................................................................................ 25 

1.2. Tạo bảng ................................................................................................................... 26 

1.3. Sửa đổi định nghĩa bảng ........................................................................................... 30 

1.4. Xóa bảng ................................................................................................................... 30 

2. Các lệnh bổ sung, cập nhật, xóa dữ liệu ..................................................................... 31 

2.1.Thêm bộ vào bảng...................................................................................................... 31 

2.2.Cập nhật nội dung của bộ trong bảng ....................................................................... 32 

2.3. Xoá các bộ trong bảng.............................................................................................. 33 

3. Các lệnh truy vấn dữ liệu ............................................................................................ 34 

3.1. Lấy thông tin từ các cột của bảng bằng mệnh đề SELECT ...................................... 34 

3.2. Chọn các dòng của bảng bằng mệnh đề WHERE .................................................... 35 

3.3. Truy vấn thông tin từ nhiều bảng ............................................................................. 36 

3.4. Sắp xếp kết quả truy vấn bằng mệnh đề ORDER BY ................................................ 37 

3.5. Phân nhóm dữ liệu bằng mệnh đề GROUP BY ........................................................ 37 

3.6. Lọc nhóm kết quả truy vấn bằng mệnh đề HAVING ................................................ 38 

3.7. Truy vấn lồng nhau ................................................................................................... 38 

CHƢƠNG 3: RÀNG BUỘC TOÀN VẸN VÀ PHỤ THUỘC HÀM ................................. 41 

1. Ràng buộc toàn vẹn ..................................................................................................... 41 

1.1. Các vấn đề liên quan đến ràng buộc toàn vẹn ......................................................... 41 

 

 

1.2. Các loại ràng buộc toàn vẹn..................................................................................... 42 

2. Phụ thuộc hàm ............................................................................................................. 45 

2.1. Định nghĩa và biểu diễn phụ thuộc hàm ................................................................... 45 

2.2. Bao đóng của tập phụ thuộc hàm và hệ luật dẫn Armstrong ................................... 46 2.3. Bao đóng của tập thuộc tính ..................................................................................... 46 

2.4. Phủ và phủ tương đương .......................................................................................... 48 

2.5. Thuật toán xác định khoá của lược đồ quan hệ ........................................................ 49 

CHƢƠNG 4: DẠNG CHUẨN VÀ CHUẨN HOÁ LƢỢC ĐỒ CƠ SỞ DỮ LIỆU QUAN 

HỆ ............................................................................................................................................ 54 

1. Giới thiệu về chuẩn hóa và các dạng chuẩn................................................................ 54 

1.1. Giới thiệu về chuẩn hóa ............................................................................................ 54 

1.2. Các dạng chuẩn ........................................................................................................ 55 

2. Phân rã ........................................................................................................................ 59 

2.1. Giới thiệu về phân rã ................................................................................................ 59 

2.2. Phân rã bảo toàn thông tin ....................................................................................... 60 

2.3. Phân rã bảo toàn phụ thuộc hàm ............................................................................. 61 

3. Chuẩn hóa lược đồ CSDL............................................................................................ 62 

3.1. Thuật toán phân rã LĐQH thành 3NF ..................................................................... 62 

3.2. Thuật toán phân rã LĐQH thành BCNF .................................................................. 63 

 

 

 

CHƢƠNG 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU VÀ MÔ HÌNH HÓA DỮ LIỆU 

1. Một số khái niệm 

1.1. Cơ sở dữ liệu 

a. Khái niệm 

Cơ sở dữ liệu (Database, viết tắt là CSDL) là một hệ thống các thông tin có cấu trúc 

được lưu trữ trên các thiết bị lưu trữ thông tin. Có thể thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với nhiều mục đích 

khác nhau. 

Ví  dụ:  Ta  xem  xột  hệ  thống  bán  vé  máy  bay  bằng  máy  tính.  Dữ  liệu  lưu  trữ  trong 

máy tính bao gồm thông tin về hành khách, chuyến bay, đường bay v...v. Mọi thông tin về 

mối quan hệ này được biểu diễn trong máy tính thông qua việc đặt chỗ của khách hàng. Vậy 

làm thế nào để biểu diễn được dữ liệu đó và đảm bảo cho hành khách đi đúng chuyến. Dữ 

liệu nêu trên  được lưu trong  máy  tớnh theo  một quy  định nào đó  và được gọi là cơ sở dữ 

liệu. 

b. Ƣu điểm 

 

Việc sử dụng cơ sở dữ liệu có những ưu điểm như sau: 

  Giảm  sự  trùng  lặp  thông  tin  xuống  mức  thấp  nhất  và  do  đó  bảo  đảm được 

tính nhất quán và toàn vẹn dữ liệu. 

  Đảm bảo dữ liệu có thể truy xuất theo nhiều cách khác nhau. 

  Có khả năng chia sẻ thông tin cho nhiều người sử dụng. 

c. Phân loại 

Cơ sở dữ liệu được phân thành các loại sau: 

  Cơ  sở  dữ  liệu  dạng  file:  Dữ  liệu  được  lưu  trữ  dưới  dạng  các  file  có  thể  là 

text, ascii, *.dbf.  

  Cơ sở dữ liệu quan hệ: Dữ liệu được lưu trữ trong các bảng dữ liệu gọi là các thực 

thể, giữa các thực thể này có mối liên hệ với nhau gọi là các quan hệ, mỗi quan hệ 

có các thuộc tính, trong đó có một thuộc tính là khóa chính.  

  Cơ sở dữ liệu hướng đối tượng: Dữ liệu cũng được lưu trữ trong các bảng dữ liệu 

nhưng các bảng có bổ sung thêm các tính năng hướng đối tượng như lưu trữ thêm 

các hành vi, nhằm thể hiện hành vi của đối tượng. Mỗi bảng xem như một lớp dữ 

liệu, một dòng dữ liệu trong bảng là một đối tượng.  

 

  Cơ sở dữ liệu bán cấu trúc: Dữ liệu được lưu dưới dạng XML, với định dạng này 

thông tin mô tả về đối tượng thể hiện trong các tag. Đây là cơ sở dữ liệu có nhiều ưu điểm do lưu trữ được hầu hết các loại dữ liệu khác nhau nên cơ sở dữ liệu bán 

cấu trúc là hướng mới trong nghiên cứu và ứng dụng. 

1.2. Hệ quản trị cơ sở dữ liệu 

a. Khái niệm 

Hệ  quản  trị  cơ  sở  dữ  liệu  (Database  Management  System  –  DBMS,  viết  tắt  Hệ  QT 

CSDL): Là tập hợp các chương trình dùng để quản lý cấu trúc và  dữ liệu của CSDL đồng 

thời điều khiển việc truy xuất dữ liệu trong CSDL. Đồng thời cung cấp cho người dùng và ứng dụng một môi trường thuận tiện và sử dụng hiệu quả tài nguyên dữ liệu 

Ví dụ: Một số hệ quản trị CSDL thường gặp: 

  MS Access   MS SQL Server   MySQL   Oracle 

b. Kiến trúc của một hệ quản trị cơ sở dữ liệu 

 

Hình 1.1: Kiến trúc của một hệ quản trị cơ sở dữ liệu 

c. Phân loại 

Phân loại dựa trên cách thức tổ chức dữ liệu ta có:  

  Hệ QT CSDL phân cấp: IMS của IBM   Hệ QT CSDL mạng: IDMS của Cullinet Software   Hệ QT CSDL quan hệ: 

o  Cho máy tính cá nhân: MS Access 

 

o  Cho máy chủ: MS SQL Server, MySQL, Oracle 

  Hệ QT CSDL đối tượng : Ozone, MS SQL Server, Oracle, PostgreSQL 

Phân loại dựa trên cách thức lưu trữ dữ liệu ta có:  

  Hệ QT CSDL tập trung   Hệ QT CSDL phân tán 

1.3. Mô hình dữ liệu 

Mô hình CSDL (Database Model) là một hệ hình thức toán học gồm có hai phần: 

  Một hệ thống ký hiệu để mô tả dữ liệu.   Một tập hợp các phép toán thao tác trên dữ liệu đó. 

1.3.1. Mô hình mạng 

Mô hình mạng là một mô hình sơ đồ thực thể liên kết với tất cả các liên kết được hạn 

chế  là  liên  kết  hai  ngôi  nhiều  –  một.  Hạn  chế  này  cho  phép  chúng  ta  sử  dụng  đồ  thị  có hướng đơn giản để biểu diễn dữ liệu trong mô hình này. Trong mô hình mạng, các tập thực 

thể được chuyển thành các kiểu bản ghi logic. Các kiểu bản ghi logic bao gồm một tập các trường, mỗi trường chứa giá trị là một số nguyên hay một xâu ký tự… Tập tên các trường và 

các kiểu của chúng cấu thành quy cách bản ghi logic. 

1.3.2. Mô hình phân cấp 

Một mô hình phân cấp đơn giản là một mô hình mạng mà là một rừng (tập các cây) 

trong có tất cả các móc nối trỏ theo hướng từ con đến cha. Chúng ta sẽ tiếp tục sử dụng các 

thuật ngữ của mô hình mạng: kiểu bản ghi logic… khi chúng ta nói về mô hình phân cấp. 

1.3.3. Mô hình quan hệ   

Là mô hình dựa vào ký hiệu là tập các tên và cơ sở toán học của nó là các phép toán 

tập hợp và ánh xạ. Nó là mô hình phổ biến hiện nay. Tập các phép toán trong mô hình này 

dựa trên hai hệ ký hiệu: hệ ký hiệu đại số và hệ ký hiệu logic. 

1.3.4. Mô hình thực thể liên kết 

Là mô hình cho phép mô tả các thực thể thông qua các thuộc tính và mối liên hệ giữa 

các thực thể. Một trong các cách biểu thị mô hình thực thể là dùng đồ thị, sơ đồ khối. 

1.3.5. Mô hình hƣớng đối tƣợng 

Là  mô  hình  cung  cấp  đặc  tính  nhận  dạng  đối  tượng.  Trong  đó  mỗi  lớp  đối  tượng 

được đặc trưng bởi hai yếu tố: 

  Tập các thuộc tính (properties) để nhận dạng đối tượng.   Tập các phương thức (methods) để thao tác với đối tượng. 

 

2. Mô hình thực thể liên kết 

Hiện nay mô hình dữ liệu quan hệ thường được dùng trong các hệ quản  trị cơ sở dữ 

liệu, đây là mô hình dữ liệu ở mức vật lý. Để thành lập được mô hình này, thường là phải 

dùng mô hình dữ liệu ở mức quan niệm để đặc tả, một trong những mô hình ở dạng đó là 

mô hình thực thể liên kết (sau đó mới dùng một số quy tắc để chuyển hệ thống từ mô hình 

này về mô hình dữ liệu quan hệ – các quy tắc này sẽ được nói đến trong chương 2).  

Sau đây là các khái niệm của mô hình thực thể liên kết. 

2.1. Thực thể  

Thuật ngữ thực thể (Entity) không có một định nghĩa hình thức.Thực thể là một sự vật 

tồn tại và phân biệt được, nghĩa là có thể phân biệt được thực thể này với thực thể khác.  

Mỗi con   người là  một thực  thể, mỗi chiếc  xe  máy  là  một thực  thể.  Khái  niệm về  “ 

Tính phân biệt được ” rất gần với “ đặc tính nhận dạng đối tượng”  vì thế  mô hình thực thể 

liên hệ được xem như là mô hình hướng đối tượng.  

Tập hợp các thực thể giống nhau tạo thành 1 tập  thực thể.  

Ví dụ: Trong hệ thống “Quản lý đề án công ty” ta có: 

  Một nhân viên là một thực thể  

  Tập hợp các nhân viên là tập thực thể  

  Một đề án là một thực thể 

  Tập hợp các đề án là tập thực thể 

  Một phòng ban là một thực thể  

  Tập hợp các phòng ban là tập thực thể 

Kiểu thực thể là tập hợp các thực thể cùng mô tả đối tượng nào đó trong hệ thống. 

Ví dụ: Kiểu thực thể  Sinhvien 

Có 2 kiểu thực thể thực thể: Thực thể mạnh và thực thể yếu  

 

 

Dùng hình chữ nhật (hoặc hình chữ nhật bầu) để biểu diễn thực thể.  

 

 

Sinh vien 

Than 

nhan 

 

2.2. Thuộc tính 

Thuộc tính là tính chất để mô tả thực thể. Mỗi thuộc tính của tập thực thể lấy giá trị 

trên một miền dành cho thuộc tính đó. Thường thì miền giá trị đối với mỗi thuộc tính là một 

tập số nguyên, tập các số thực hoặc chuỗi ký tự  nhưng cũng không loại trừ các kiểu giá trị 

khác.  

Ví  dụ :  một  tập  thực  thể  con  người  có  thể  khai  báo  có  các  thuộc  tính  như  họ  và  tên 

(chuỗi ký tự), chiều cao (số thực), ngày sinh (ngày tháng năm),...  

Chọn thuộc tính thích hợp cho các tập thực thể là một bước quan trọng trong việc thiết 

kế lược đồ CSDL khái niệm. 

Mỗi thuộc tính có một kiểu dữ liệu xác định  

  Các loại thuộc tính  

o  Thuộc tính đơn: không thể tách nhỏ ra được.  

Ví dụ : Giới tính,… 

o  Thuộc tính phức hợp : có thể tách ra thành các thành phần nhỏ hơn.  

Ví dụ : Họ tên ( Họ, tên đệm, tên) 

  Loại giá trị của thuộc tính  

Đơn trị: các thuộc tính có giá trị duy nhất cho một thực thể.  

Ví dụ : số CMND, … 

Đa trị: các thuộc tính có một tập giá trị cho cùng một thực thể.  

Ví dụ : bằng cấp, … 

o  Thuộc tính cơ sở – Thuộc tính dẫn xuất ( suy diễn được). 

Ví dụ : Ngày sinh  Tuổi  

  Miền giá trị của thuộc tính (domain) 

o  Kiểu chuỗi (string) 

o  Kiểu số nguyên (integer) 

o  Kiểu số thực … 

Ví dụ : tập thực thể NHANVIEN có các thuộc tính  

 

  Họ tên (hoten: string[20]) 

  Ngày sinh (ns: date) 

 

Điểm TB (DTB:float) 

 

…  

  Tính chất của thuộc tính 

Tất cả các thực thể nằm trong tập thực thể có cùng tập thuộc tính.  

Mỗi thực thể đều được phân biệt bởi một thuộc tính khóa.  

Mỗi thuộc tính đều có miền giá trị tương ứng với nó.  

  Biểu diễn thuộc tính trong các hình oval và gắn với thực thể của nó  

 

 

 

 

 

 

2.3. Mối liên kết 

Mối liên kết diễn tả sự liên hệ giữa hai hay nhiều thực thể phân biệt theo một ý nghĩa 

nào đó. 

Ví dụ: mối liên kết giữa hai loại thực thể Sinhviên và Lop, mối liên kết giữa Sinhviên 

với Mônhọc,...  

Mối liên kết được biểu diễn bằng một hình thoi và hai bên là hai nhánh gắn kết với các 

loại thực thể (hoặc mối liên kết) liên quan, tên mối liên kết thường là: thuộc, gồm , chứa,... 

Chẳng hạn giữa hai loại thực thể Lớp và Khoa có mối liên kết “thuộc” như sau: 

 

Sinh vien 

MaSV 

TenSV 

 

a. Ràng buộc trên kiểu liên kết  

Xét  mối  quan  hệ  nhị  phân  R  (binary  relationship)  giữa  2  tập  thực  thể  A  và  B,  ràng 

buộc liên kết bao gồm 

 

(min, max) chỉ định mỗi thực thể e 

∈ E tham gia ít nhất và nhiều nhất vào thể hiện của 

 

 

 

Một  loại  thực  thể  có  thể  tham  gia  nhiều  lần  vào  một  quan  hệ  với  nhiều  vai  trò  khác 

nhau  

 

b. Thuộc tính trên mối quan hệ  

Thuộc tính trên mối quan hệ mô tả tính chất cho mối quan hệ đó. 

Thuộc tính này không thể gắn liền với những thực thể tham gia vào mối quan hệ.  

 

b. Các kiểu liên kết  

Liên kết Một – Một (1:1) 

 

Liên kết Một – Nhiều (1:N) 

 

 

  Liên kết Nhiều – Nhiều (M:N) 

 

 

c. Khoá của mối liên kết:  

Khóa của mối liên kết dùng để phân biệt các thực thể cùng kiểu  

Chẳng  hạn  như  thuộc  tính  MAGV  là  khoá  của  loại  thực  thể  Giangvien,  MALOP  là 

thuộc tính khoá của loại thực thể Lop, MAMH là thuộc tính khoá của loại thực thể Monhoc, 

do đó mối liên kết phancong (giữa các loại thực thể Giangvien, Lop, Monhoc) có khoá là 

{MAGV, MAMH, MALOP} - phancong là mối  liên kết 3 ngôi. 

Khóa K của tập thực thể E là một hay nhiều thuộc tính sao cho  

  Lấy ra 2 thực thể bất kỳ e1, và e2 trong E 

  Thì e1 và e2 không thể có các giá trị giống nhau tại các thuộc tính trong K 

Chú ý: 

 

10 

  1 khóa có thể có  một hoặc nhiều thuộc tính  

  Một kiểu thực thể có thể có một hoặc nhiều khóa ( khóa ứng viên), khóa ứng viên 

được sử dụng gọi là khóa chính (Primary Key) 

  Trong mô hình ER tên của mỗi thuộc tính dùng làm khóa chính được gạch chân  

 

2.4. Xây dựng mô hình thực thể liên kết                                        

Các bước xây dựng mô hình thực thể liên kết (ER) 

Bước 1: Liệt kê, chính xác hóa và lựa chọn thông tin cơ sở 

Xác định một từ điển bao gồm tất cảcác thuộc tính (không bỏ sót bất cứ thông tin nào).  

Chính xác hóa các thuộc tính đó. Thêm các từ cần thiết để thuộc tính đó mang đầy đủ 

ý nghĩa, không gây lầm lẫn, hiểu nhầm.  

Chú  ý:  Để  lựa  chọn  các  đặc  trưng  cần  thiết  ,  ta  duyệt  từ  trên  xuống  và  chỉ  giữ  lại 

những thuộc tính đảm bảo yêu cầu sau:  

  Thuộc tính cần phải đặc trưng cho một lớp các đối tượng được xét.  

  Chọn một thuộc tính một lần, nếu lặp lại thì bỏ qua.  

  Một thuộc tính phải là sơ cấp (Nếu giá trị của nó có thể suy ra từ các thuộc tính 

khác thì bỏ qua). 

 

11 

Bước 2: Xác định các thực thể và các thuộc tính của nó, sau đó xác định thuộc tính 

định danh cho từng thực thể  

Duyệt danh sách các thuộc tính từ trên xuống để tìm ra thuộc tính tên gọi. Mỗi thuộc 

tính tên gọi sẽ tương ứng với một thực thể.  

Gán các thuộc tính cho từng thực thể.  

Xác định thuộc tính định danh cho từng thực thể.  

Bước 3: Xác định các mối quan hệ và các thuộc tính riêng của nó  

Xét  danh  sách  các  thuộc  tính  còn  lại,  hãy  tìm  tất  cả  các  động  từ  (ứng  với  thuộc  tính 

đó). Với mỗi động từ, hãy trả lời các câu hỏi: Ai? Cái gì? Ở đâu? Khi nào? Bằng cách nào?  

Bước 4: Vẽ sơ đồ mô hình thực thể - mối quan hệ, xác định lực lượng tham gia liên 

kết cho các thực thể.  

Bước 5: Chuẩn hóa sơ đồ và thu gọn sơ đồ 

Chuẩn  hóa  sơ  đồ:  Nếu  trong  đó  còn  có  chứa:  các  thuộc  tính  lặp,  nhóm    lặp  và  các 

thuộc tính phụ thuộc thời gian thì sơ đồ chỉ còn các thực thể đơn và các thuộc tính đơn.  

Thu gọn sơ đồ: Nếu một thực thể có tất cả các đặc trưng:  

  Là  thực  thể  treo:  là  thực  thể  chỉtham  gia  vào  một  mối  quan  hệ  và  chỉ  chứa  một 

thuộc  tính  duy  nhất  thực  sự  là  của  nó  (có  thể  có  thuộc  tính  thứ  2  thêm  vào  làm 

định danh).  

  Mối quan hệ là bậc hai và không có thuộc tính riêng.  

  Mối quan hệ là 1: N hay 1:1.  

 

Được thu gọn thành sơ đồ sau: 

 

12 

 

Ví dụ: 

CSDL đề án công ty theo dõi các thông tin liên quan đến nhân viên, phòng ban và đề 

án 

-  Cty  có  nhiều  đơn  vị,  mỗi  đơn  vị  có  tên  duy  nhất,  mã  đơn  vị  duy  nhất,  một  trưởng 

phòng và ngày nhận chức. Mỗi đơn vị có thể ở nhiều địa điểm khác nhau. 

- Dự án có tên duy nhất, mã duy nhất, do 1 một phòng ban chủ trì và được triển khai ở 

1 địa điểm. 

- Nhân viên có mã số, tên, địa chỉ, ngày sinh, giới tính và lương. Mỗi nhân viên làm 

việc ở 1 phòng ban, tham gia vào các đề án với số giờ làm việc khác nhau. Mỗi nhân viên 

đều có một người quản lý trực tiếp. 

- Một nhân viên có thể có những người con được hưởng bảo hiểm theo nhân viên. Mỗi 

người con của nhân viêncó tên, giới tính, ngày sinh.  

Ta có mô hình ER của bài toán trên như sau: 

 

13 

 

 

 

 

 

 

14 

3. Mô hình dữ liệu quan hệ 

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

3.1.1. Thuộc tính 

Thuộc tính (attribute) là một tính chất riêng biệt của một đối tượng cần lưu trữ trong 

CSDL để phục vụ cho việc khai thác dữ liệu về đối tượng. 

Ví dụ:  

  Đối tượng KHOA (tương ứng với thực thể KHOA trong mô hình thực thể kết 

hợp) có các thuộc tính Ma-khoa, Ten-khoa. 

  Thực  thể  LOP-HOC  có  một  số  thuộc  tính  Ma-lop,  Ten-lop,  Nien-khoa,  So-

hoc-vien. 

  Thực thể MON-HOC có một số thuộc tính Ma-mon, Ten-mon. 

Mỗi thuộc tính được xác định trên 1 miền giá trị gọi là miền thuộc tính (domain), ký 

hiệu là D. 

  Thuộc tính Tên: D(Tên) = {Hoa, Lan, Huệ} 

  Thuộc tính Họ tên: D(Họ tên) = {char(30)} 

  Thuộc tính Tuổi: D(Tuổi) = N 

3.1.2. Quan hệ 

Quan hệ (Relation) là một tập con của tích Đề-các của một hoặc nhiều miền. 

Tích Đề-các: Gọi D

1

, D

2

,…,D

n

 là các  miền.  Tích đề-các của n  miền này ký hiệu là 

D

1

x D

2

x…x D

n

 là tập tất cả n bộ (v

1

, v

2

,…, v

n

) sao cho v

i

 thuộc D

i

 với i=1…n 

Ví dụ: 

Cho n=2, D

1

={0,1}, D

2

={a,b,c} 

Khi đó D

1

x D

2

={(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)} 

Ta có {(0,a),(0,b),(1,a),(1,b)} là một quan hệ r

1

, đó là tập con của tích đề-các D

1

x D

2

Tập rỗng 

 cũng là một quan hệ. 

3.1.3. Bộ giá trị 

Bộ giá trị (tuple) là tập hợp mỗi giá trị liên quan đến tất cả các thuộc tính của 1 lược 

đồ quan hệ hay là một phần tử của một quan hệ. 

Ta thường sử dụng các chữ cái thường (t, p, q,…) để biểu diễn các bộ. Nếu bộ t thuộc quan hệ r thì: t 

 r 

 

15 

Về trực quan thì mỗi quan hệ xem như một bảng dữ liệu, trong đó mỗi cột là thông 

tin về một thuộc tính và mỗi dòng là thông tin về một bộ. 

Ví dụ:  

Quan hệ SINHVIEN 

MASV 

HOTEN 

NGAYSINH  MALOP 

DIACHI 

HOCBONG 

7462 

Nguyễn Thị Hoa 

15/03/1989 

Tin3A 

Hải Dương 

1000000 

8390 

Trần Văn Mạnh 

03/07/1992 

Tin5A 

Nam Định 

1200000 

3.1.4. Lƣợc đồ quan hệ 

Tập các tên thuộc tính cho một quan hệ được gọi là một lược đồ quan hệ (Relation 

Scheme). Nếu chúng ta đặt tên cho một quan hệ là R và lược đồ quan hệ của nó có các thuộc 

tính A

1

, A

2

,..., A

n

 thì lược đồ quan hệ này có thể viết dưới dạng R(A

1

, A

2

,..., A

n

).  

Như vậy khi ta nói cho một lược đồ quan hệ R(A

1

, A

2

,..., A

n

) có nghĩa là ta đã cho một 

tập thuộc tính A

1

, A

2

,..., A

n

 và trên đó đã tồn tại một quan hệ R. 

Ví  dụ:  Với  quan  hệ  SINHVIEN  có  các  thuộc  tính  MASV,  HOTEN,  NGAYSINH, 

MALOP, DIACHI, HOCBONG thì ta có lược đồ quan hệ sau: 

SINHVIEN(MASV, HOTEN, NGAYSINH, MALOP, DIACHI, HOCBONG) 

3.1.5. Thể hiện của quan hệ 

Thể hiện (hoặc còn gọi là tình trạng) của quan hệ R, ký hiệu bởi T

R

, là tập hợp các bộ 

giá trị của quan hệ R vào một thời điểm. Tại những thời điểm khác nhau thì quan hệ sẽ có 

những thể hiện khác nhau. Thể hiện (hay tình trạng) của các lược đồ quan hệ con T

Ri

 gọi là 

tình trạng của lược đồ cơ sở dữ liệu . 

Ví dụ: 

Các thể hiện của quan hệ lớp-học và môn-học 

Quan hệ lớp-học: 

Mã-lớp 

Tên-lớp 

Niên-khoá 

Số-Hviên 

Mã-khoa 

QTKD1 

Quản trị kinh doanh QT01 

96-99 

154 

QTKD 

TCKT1 

Tài chính kế toán KT3 

97-2000 

200 

TCKT 

CNTT1 

Công nghệ thông tin K1 

98-2001 

120 

CNTT 

 Quan hệ môn-học: 

Mã-môn 

Tên-môn 

Số-đv-học-trình 

TCKT 

Tài chính kế toán 

CSDL 

Cơ sở dữ liệu 

KTCT 

Kinh tế chính trị 

 

16 

LTCB 

Lập trình căn bản C 

3.1.6. Khoá- siêu khoá - khoá chỉ định – khoá chính – khoá ngoại 

Khoá (key): Khoá của một quan hệ R(A

1

, A

2

,...,A

n

) là tập con                      

 

 K 

  { A

1

, A

2

,...,A

n

 }thoả mãn các tính chất sau đây:  

  Với  bất  kỳ  2  bộ  t

1

,  t

2

 

  R  đều  tồn  tại  một  thuộc  tính  A

K  sao  cho    

t

1

[A] 

 t

2

[A].  

Nói một cách khác: không tồn tại 2 bộ mà có giá trị bằng nhau trên mọi thuộc tính của K. Điều kiện này có thể viết t

1

[K] 

  t

2

[K]. Do vậy mỗi giá trị của K là xác 

định duy nhất. 

  Không có tập con thực sự nào của K có tính chất  

Ví dụ: 

Cho thể hiện của quan hệ HANG_HOA  như sau: 

MSMH 

TEN_HANG 

SO_LUONG 

10101 

Sắt phi 6 

1000 

10102 

Sắt phi 8 

2000 

20001 

Xi măng 

1000 

Trong quan hệ HANG_HOA trên thì mã số mặt hàng (MSMH) là khoá. Mỗi giá trị 

MSMH đều xác định duy nhất một loại mặt hàng trong quan hệ HANG_HOA. 

Chú ý: Khoá phụ thuộc vào lược đồ quan hệ không phụ thuộc vào thể hiện của quan 

hệ. Một quan hệ có thể có nhiều khoá. 

Siêu khóa (Super key ): k là 1 khóa của quan hệ r(U) thì mọi tập hợp k‟ chứa k đều 

là khóa của quan hệ r(U). Ta gọi k‟ là siêu khóa của quan hệ. 

Siêu khóa chứa ít thuộc tính nhất được gọi là khóa chỉ định. 

Khóa chính là khóa được chọn để cài đặt trong một hệ quản trị cơ sở dữ liệu.  

Khi chọn khóa chính ta phải chú ý các tính chất: 

  Khóa có tính áp dụng khi nó không bỏ sót bất kỳ trường hợp nào của vấn đề 

  Khóa phải có tính duy nhất dùng để phân biệt bộ này với bộ kia trong quan hệ 

 

17 

  Khóa có tính nhỏ nhất khi ta bỏ qua bất kỳ thuộc tính nào của nó thì nó không còn 

tính duy nhất nữa 

  Khóa có tính ổn định khi giá trị của khóa không thay đổi 

Khóa  ngoại  (Foreign  key):  một  thuộc  tính  được  gọi  là  khóa  ngoại  nếu  nó  là  thuộc 

tính của một lược đồ quan hệ này nhưng lại là khóa chính của lược đồ quan hệ khác. 

3.1.7. Phụ thuộc hàm 

Quan hệ R được định nghĩa trên tập thuộc tính U = {A

1

,A

2

, …,A

n

}. 

U

Y

X

,

là 

hai tập con của tập thuộc tính U. Nếu tồn tại một ánh xạ  f:   X → Y thì ta nói rằng  X xác định hàm Y, hay Y phụ thuộc hàm vào X và ký hiệu là X  →Y. Chúng ta sẽ tìm hiểu kỹ hơn 

về phụ thuộc hàm trong Chương 4. 

3.1.8. Ràng buộc toàn vẹn 

Các RBTV là những điều kiện bất biến mà mọi thể hiện của quan hệ đều phải thỏa ở 

bất kỳ thời điểm nào. Chúng ta sẽ tìm hiểu kỹ hơn về ràng buộc toàn vẹn trong Chương 4. 

3.2. Xây dựng mô hình dữ liệu quan hệ 

Như chúng ta đã biết, mô hình ER là mô hình dữ liệu mức khái niệm. Sau quá trình 

khảo sát thiết  kế, ta thu được mô hình này. Từ mô hình này ta có thể sử dụng các quy tắc 

chuyển sang mô quan hệ để thực hiện quản lý cơ sở dữ liệu trên máy tính.  

Sau đây là 8 bước được sử dụng để chuyển từ mô hình ER sang mô hình quan hệ:  

Bước 1: Mỗi kiểu thực thể bình thường (không phải kiểu thực thể yếu) trong mô hình 

ER trở thành một quan hệ. Quan hệ đó bao gồm tất cả các thuộc tính đơn giản và thuộc tính 

tổ hợp của thực thể. Thuộc tính định danh của thực thể là khóa chính của  quan hệ. 

Bước 2: Cho mỗi thực thể yếu (Weak Entity) trong mô hình ER, tạo thành một  

quan hệ R, tất cả thuộc tính đơn giản của thực thể yếu trở thành thuộc tính của R.  

Thêm vào đó, thuộc tính định danh của thực thể chủ trở thành khóa ngoại của R.  

Khoá chính của R là sự kết hợp giữa thuộc tính định danh của thực thể chủ và thuộc 

tính định danh của thực thể yếu. 

Bước 3: Cho mỗi mối liên kết 1-1 trong mô hình ER:  

- Xác định một quan hệ S_T. Kiểu thực thể có sự tham gia toàn bộ vào liên kết trở 

thành quan hệ S, thực thể còn lại trở thành quan hệ T.  

-  Đưa khóa chính của T sang làm khóa ngoại của S.  

- Thuộc tính của mối quan hệS_T trở thành thuộc tính của S. 

 

18 

Bước 4: Cho mỗi mối liên kết 1_N trong mô hình ER. Chuyển khóa chính của quan 

hệ phía 1 sang làm khóa ngoại của quan hệ phía N. 

Bước 5: Cho mỗi mối liên kết MN, sinh ra một quan hệ mới R, chuyển khóa chính 

của hai quan hệ phía M và N thành khóa ngoại của quan hệ R. Khóa chính của R là sự kết 

hợp của hai khóa ngoại. 

Bước 6: Nếu gặp thuộc tính đa trị:  

- Chuyển thuộc tính đa trị thành quan hệ mới.  

- Thuộc tính định danh (hoặc 1 phần thuộc tính định danh) của thực thể chính chuyển 

thành khóa ngoại của quan hệ mới. 

-  Khóa chính của quan hệ mới là khóa chính của bản thân quan hệ+ khóa ngoại do 

thực thể chính chuyển sang. 

Bước 7: Cho mỗi mối liên kết có bậc (>2), tạo ra quan hệ mới (R), khóa chính của 

các quan  hệ tham gia liên kết được đưa làm  khóa ngoại của  quan  hệ R và  các khóa ngoại này đồng thời đóng vai trò là khóa chính của R. 

Ví dụ: 

Trường  CĐN  Cơ  điện  Hà  Nội  cần  thiết  kế  CSDL  để  quản  lý  sinh  viên,  giáo  viên; 

theo dõi việc học và dạy ở trường. 

Mỗi SV có một họ tên, ngày sinh, giới tính và duy nhất một mã SV. 

Có rất nhiều môn học. Mỗi môn học có tên môn, số đơn vị học trình và có duy nhất 

một mã môn. Tên của các môn học không được phép trùng nhau. 

Một  SV  có  thể  đăng  ký  nhiều  môn  học  và  một  môn  học  có  thể  được  đăng  ký  bởi 

nhiều SV. 

Học xong một môn SV sẽ có điểm (hệ số 10) của môn đó. 

Mỗi môn học chỉ được dạy bởi một giáo viên. 

Mỗi  giáo  viên  có  thể  dạy  nhiều  môn  học.  Mỗi  giáo  viên  được  quản  lý  bởi  mã  duy 

nhất, họ tên, giới tính. Các giáo viên có các sở thích, số điện thoại khác nhau. 

Mô hình ER 

 

19 

 

Lƣợc đồ CSDL 

SinhVien(MaSV,TenSV,GioiTinh,NgaySinh) 

GiaoVien(MaGV,TenGV,GioiTinh, DienThoai,SoThich) 

MonHoc(MaMH,TenMH,DVHT,@MaGV) 

KetQua(@MaSV,@MaMH,Diem) 

 

 

 

20 

4. Đại số quan hệ 

4.1. Các phép toán tập hợp 

4.1.1. Phép hợp 

Hợp của hai quan hệ R và S  là một quan hệ, ký hiệu là R

S và là tập tất cả các bộ t 

sao cho t

R hoặc t

S. 

Biểu diễn hình thức phép hợp có dạng : 

 S = { t / t 

 R hoặc t 

S }. 

Ta chỉ có thể dùng phép hợp cho các quan hệ cùng ngôi, vì vậy tất cả các bộ trong 

kết quả sẽ có cùng số lượng thành phần. Tên thuộc tính trong các quan hệ sẽ bị bỏ qua khi 

thực  hiện  phép  hợp  và  quan  hệ  thu  được  có  thể  gán  các  thuộc  tính  tùy  ý,  thứ  tự  của  các 

thuộc tính trong các quan hệ phải được tôn trọng. Các điều này tương tự đối với các phép toán khác như hiệu, giao, tích Descartes. 

Ví dụ: 

(a) 

R (A  B   C ) 

 

           a

1

  b

1

  c

1

 

 

 

 a

1

  b

2

  c

1

 

 

 

 a

2

  b

2

  c

2

 

 

 

 

 

 S (A   B   C)        a

2    

b

1    

c

2

   

      a

2   

 b

2

  c

2

   

 R 

S   (A    B   C) 

                 a

1

   b

1

  c

1

 

                 a

1

   b

2

  c

                 a

2

   b

2

  c

                 a

  b

1

  c

2

 

 (b) 

   R (A  B  C ) 

 

        a   b   c

 

 

        d   a  f 

 

   c

     

b

    

d

 

 

 

 

 

S   ( D    E 

F) 

          b

     

g

       

a    

          d 

  

  a    f   

  R 

S (A B  C) 

               a  b  c 

               d  a  f

 

               c  b  d

 

                b  g  a 

Chú ý: Trong ví dụ trên, ta thấy hai quan hệ R và S cùng ngôi, ta vẫn có thể lấy hợp 

của chúng dù các cột của hai quan hệ trên mang tên khác nhau, miễn là các quan hệ có cùng 

số lượng các thành phần. Tuy vậy quan hệ thu được sẽ không có tên rõ ràng cho các cột (ta 

có thể không viết tên cột hoặc đặt tên cho các cột kết quả là A, B, C nhưng nó mang nghĩa 

mới) 

4.1.2. Phép giao 

Giao của hai quan hệ R và S  là một quan hệ, ký hiệu là R

S và là tập tất cả các bộ t 

sao cho t thuộc cả R và S. 

 

21 

Biểu diễn hình thức phép giao có dạng 

 S = 

t / t

R và t

 S

Ví dụ: 

R( A  B  C ) 

     a1 b1 c1 

     a1 b2 c1 

S( D  E  F ) 

    d1  e1 f1 

    a1  b1  c1 

    d1  e2  f2 

 

 S        (A  B   C) 

               

        a1   b1 c1 

                         

 

4.1.3. Phép trừ 

Hiệu của hai quan hệ R và S khả hợp là một quan hệ ký hiệu là R-S và là tập tất cả 

các bộ t sao cho t thuộc R nhưng không thuộc S. 

Biểu diễn hình thức phép có dạng : 

R - S =

 t / t

R và t

 S

Ví dụ: * Với R, S ở ví dụ 2.1 (a) trên: 

 R-S  ( A    B   C ) 

 

  a

1

   b

1   

c

1

 

 

  a

1     

b

2   

c

1

 

       * Với R, S ở ví dụ 2.1 (b) trên: 

 R-S ( A  B  C ) 

           a   b   c 

 

 c

    

b  d 

4.1.4. Phép tích Đề các 

R là quan hệ n - ngôi và S là quan hệ m - ngôi. Tích Đề các của hai quan hệ R và S 

ký hiệu là RxS là tập tất cả các (n+m) - bộ với n thành phần đầu là một bộ thuộc R và m thành phần sau là của một bộ thuộc S.  

Biểu diễn hình thức có dạng 

RxS ={t / t có dạng ( a

1

, a

2

,..., a

n

, b

1

, b

2

,..., b

m

 ), trong đó  ( a

1

,..., a

n

R và (b

1

,..., b

m

 )

S}. 

Ví dụ: 

R( A  B  C ) 

     a1 b1 c1 

     a1 b2 c1 

S( D  E  F ) 

    d1  e1 f1 

    d2  e2  f1 

    d1  e2  f2 

 

 RxS ( A   B   C   D   E   F ) 

             

a1  b1  c1  d1  e1  f1 

             

a1  b1  c1  d2  e2  f1 

             

a1  b1  c1  d1  e2  f2 

             

a1  b2  c1  d1   e1 f1 

 

22 

             

a1  b2  c1  d2   e2 f1 

             

a1  b2  c1  d1  e2  f2 

                R(A B  C ) 

                      a  b  c 

                      d  a  f

 

                      c  b  d 

   S ( A   B 

C ) 

 

         a

    

 b

     

c  

 

         d

  

  a   f   

 

 

         RxS  (A  B      C      D       E    F ) 

             

a   b     c 

  a 

  b     c 

             

a   b     c 

  d 

  a     f 

             

d   a     f 

  a 

  b     c 

             

d   a     f 

  d 

  a     f 

             

c   b     d 

  a 

  b     c 

             

c   b     d 

  d 

  a     f 

4.1.5. Phép chia 

- Trong quan hệ r xác định trên quan hệ U1  là quan hệ bậc n 

- Trong quan hệ s xác định trên quan hệ U2  là quan hệ bậc m 

    Với n > m 

Khi đó phép chia của r cho s là 1 tập các bộ t có bậc là n-m sao cho mọi bộ giá trị u 

 s 

thì bộ ghép được giữa (t,u) 

 r 

Cú pháp:  r 

 s = { t | 

 u 

 s 

 (t,u) 

 r} 

Ví dụ: 

R ( A  B   C   D )                                    S   (C   D )       R

S=  (A   B ) 

     a    b    c   d   

       

 

           c     d         

 

 a      b  

     a    b    e   f 

 

       

 

           e     f         

 

 c      d 

     b   c     e   f    

       

             

 

 

     c    d    c   d 

     c    d     e   f 

 

23 

     a    b     d   e 

 

4.2. Các phép toán quan hệ 

 

Ba  thao  tác  cơ  bản  trên  môtj  quan  hệ,  mà  nhờ  đó  CSDL  được  thay  đổi,  đó  là 

Thêm(Insert), Xoá (Delete) và Sửa (Update) các bộ giá trị của quan hệ. 

4.2.1. Phép thêm (chèn) một bộ mới vào quan hệ: 

Phép  thêm một bộ vào quan hệ R = {A1, A2, …, An}: 

INSERT (R; A1=d1, A2 = d2, …, An = dn} trong đó Ai (i = 1, 2, …, n) là tên các 

thuộc tính và di 

 dom (Ai). 

Ví  dụ:  Thêm  một  bộ  t5  =  (Vũ  Văn  Việt,  1986,  Caođangcodien,  3.36)  vào  quan  hệ 

Nhanvien (Hoten, Namsinh, Noilamviec, Luong): 

INSERT  (Nhanvien;  Hoten  =  VuVanViet,  Namsinh  =  1986,  Noilamviec  = 

Caodangcodien, Luong = 3.36). 

Chú ý:  

- Nếu xem thứ tự của các trường là cố định, khi đó ta có thể biểu diễn phép chèn một 

cách ngắn gọn hơn: 

INSERT (R; d1, d2, …, dn). 

Mục đích của phép chèn là thêm một bộ vào một quan hệ nhất định; kết quả của phép 

tính này có thể gây ra một số sai sót với những lý do sau: 

+ Bộ mới thêm vào không phù hợp với lược đồ quan hệ cho trước. 

+ Một giá trị của một thuộc tính nào đó nằm ngoài miền giá trị của thuộc tính đó. 

+ Giá trị khoá của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ.  

Do vậy, tùy từng hệ cụ thể sẽ có những cách khắc phục riêng. 

4.2.2. Phép loại bỏ bộ khỏi quan hệ 

Phép loại bỏ (DELETE) là phép xoá một bộ ra khỏi một quan hệ cho trước.  

DELETE (R; d1, d2, …, dn). 

Ví dụ: khi cần loại bỏ một bộ, chẳng hạn t2 từ quan hệ Nhanvien: 

DELETE (Nhanvien; HaiHa; 1987, Khoatin, 4.45). 

 

24 

Chú ý: Không phải lúc nào phép loại bỏ cũng cần đầy đủ thông tin về cả bộ cần loại. 

Khi ta có giá trị của bộ đó tại các thuộc tính khoá K = {B1, …, Bn}, lúc đó phép loại bỏ có 

dạng:  

DELETE (R; B1 =e1, …, Bi = ei). 

4.2.3. Phép sửa đổi giá trị của các thuộc tính của quan Hử 

Khi cần điều chỉnh một số giá trị nào đó tại một số thuộc tính, ta sử dụng phép thay 

đổi. 

Gọi tập {C1, …, Cp}

 {A1, …, An} là tập các thuộc tính mà tại đó casc giá trị của 

bộ cần thay đổi: CH (R; A1=d1, A1 = d2,…, An =d2; C1=e1, C2 = e2,…, Cp=ep} 

Nếu K = {B1, …, Bm} là khoá của quan hệ, khi đó chỉ cần viết: 

CH (R; B1=b1, …, Bm=bm; C1=e1,…, Cp=ep). 

Ví dụ:  khi cần thay đổi lương của ông Hà trong quan hệ Nhanvien ta viết: 

CH (Nhanvien; Hoten = „Ha‟, Luong = 4.56). 

 

 

 

25 

CHƢƠNG 2: NGÔN NGỮ SQL 

SQL viết tắt của Structured Query Language (ngôn ngữ truy vấn có cấu trúc), là công 

cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trong các CSDL. SQL là 

một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử dụng để tương tác với CSDL quan hệ.  

 SQL  được  phát  triển  từ  ngôn  ngữ  SEQUEL-2,  thử  nghiệm  và  cài  đặt  tại  trung  tâm 

nghiên  cứu  của  hãng  IBM  ở  San  Jose,  California  cho  hệ  thống  QTCSDL  lớn  điển  hình  là 

System - R. trong System - R, SQL vừa đóng vai trò là một ngôn ngữ định nghĩa dữ liệu - 

DDL vừa là ngôn ngữ thao tác dữ liệu - DML. SQL là một ngôn ngữ phi thủ tục, chuẩn mực và điển hình. Do vậy hiện nay rất nhiều sản phẩm phần mềm thương mại đều được cài đặt SQL như Oracle, Visual Foxpro, Visual Basic, Access.... Trong tài liệu này sẽ trình bày các 

khả năng của ngôn ngữ, đồng thời cung cấp cho bạn đọc thêm kinh nghiệm và cách nhìn các 

hệ QTCSDL tạm gọi là “kinh điển”. 

 Phép toán cơ bản trong SQL là phép ánh xạ được miêu tả như một khối SELECT - 

FROM - WHERE. Các mệnh đề của ngôn ngữ SQL sẽ được trình bày chi tiết bằng các ví 

dụ. 

 Các  thuật  ngữ  trong  CSDL  quan  hệ  như  quan  hệ,  thuộc  tính,  bộ,.  ..  được  thay  thế 

bằng các thuật ngữ như bảng (table), cột (column), bản ghi (record) hoặc hàng (row) để phù 

hợp với ý nghĩa của các hệ mềm này. 

Ngôn ngữ truy vấn có cấu trúc và các hệ quản trị CSDL quan hệ là một trong những 

nền tảng kỹ thuật quan trọng trong công nghiệp máy tính. Hiện nay SQL được xem là ngôn 

ngữ  chuẩn  trong  CSDL.  Các  hệ  quản  trị  CSDL  quan  hệ  thương  mại  hiện  có  như  Oracle, SQL Server, Informix, DB2,... đều chọn SQL làm ngôn ngữ cho sản phẩm của mình.  

1. Các lệnh định nghĩa đối tƣợng cơ sở dữ liệu  

1.1. Tạo, sử dụng, xóa cơ sở dữ liệu 

Tạo Cơ sở dữ liệu 

Cú pháp: CREATE DATABASE <Tên cơ sở dữ liệu> 

Ví dụ: CREATE DATABASE QuanLyDiem 

Sử dụng Cơ sở dữ liệu 

Cú pháp: USE <Tên cơ sở dữ liệu> 

Ví dụ: USE QuanLyDiem 

Xóa Cơ sở dữ liệu 

Cú pháp: DROP DATABASE <Tên cơ sở dữ liệu> 

 

26 

Ví dụ: DROP DATABASE QuanLyDiem 

1.2. Tạo bảng 

Cú pháp: 

CREATE TABLE tên_bảng  

( tên_cột thuộc_tính_cột các_ràng_buộc  

[,...  

,tên_cột_n thuộc_tính_cột_n các_ràng_buộc_cột_n]  

)  

Trong đó:  

tên_bảng:  Tên  của  bảng  cần  tạo.  Tên  phải  tuân  theo  qui  tắc  định  danh  và  không được vượt quá 128 ký tự.  

tên_cột:  là  tên  của  cột  (trường)  cần  định  nghĩa,  tên  cột  phải  tuân  theo  qui  tắc  định danh và không được trùng nhau trong mỗi một bảng. Mỗi một bảng phải có ít nhất một cột. Nếu bảng có nhiều cột thì định nghĩa của các cột (tên cột, thuộc tính và các 

ràng buộc) phải phân cách nhau bởi dấu phẩy.  

thuộc_tính_cột: Mỗi một cột trong một bảng ngoài tên cột còn có các thuộc tính bao 

gồm:  

  Kiểu dữ liệu của cột. Đây là thuộc tính bắt buộc phải có đối với mỗi cột.  

  Giá trị mặc định của cột: là giá trị được tự động gán cho cột nếu như người sử 

dụng không nhập dữ liệu cho cột một cách tường minh. Mỗi một cột chỉ có thể 

có nhiều nhất một giá trị mặc định.  

  Cột có chấp nhận giá trị NULL hay không 

Các loại ràng buộc trong bảng dữ liệu: 

Trên các bảng dữ liệu có các loại ràng buộc được sử dụng nhằm các mục đích sau:  

  Quy định các giá trị dữ liệu hay khuôn dạng dữ liệu được cho phép chấp 

nhận trên các cột của bảng (Ràng buộc Check). 

  Quy định giá trị mặc định cho các cột (Ràng buộc DEFAULT). 

  Tạo nên tính toàn vẹn thực thể trong một bảng dữ liệu và toàn vẹn tham 

chiếu giữa các bảng dữ liệu trong CSDL (ràng buộc PRIMARY KEY, 

UNIQUE).  

 

27 

Ràng  buộc  CHECK:  Ràng  buộc  CHECK  được  sử  dụng  nhằm  chỉ  định  điều  kiện 

hợp  lệ  đối  với  dữ  liệu.  Mỗi  khi  có  sự  thay  đổi  dữ  liệu  trên  bảng  (INSERT,  UPDATE), 

những ràng buộc này sẽ được sử dụng nhằm kiểm tra xem dữ liệu mới có hợp lệ hay không. 

Ràng buộc CHECK được khai báo theo cú pháp như sau: 

[CONSTRAINT tên_ràng_buộc] CHECK (điều_kiện) 

Trong  đó:  điều_kiện là  một  biểu  thức  logic  tác  động lên cột  nhằm qui định  giá trị 

hoặc khuôn dạng dữ liệu được cho phép. Trên mỗi một bảng cũng như trên mỗi một cột có 

thể có nhiều ràng buộc CHECK. 

Ví dụ 1:  

Để quy định Điện thoại của nhân viên phải có dạng „######‟ (ví dụ 345434): 

CREATE TABLE nhanvien 

manv char(10) not null, 

hoten char(30) not null, 

ngaysinh datetime null, 

diachi char(50) null, 

dienthoai char(6)  null 

constraint check_dienthoai 

            check (dienthoai like '[0-9][0-9][0-9][0-9][0-9] [0-9]') ) 

Ví dụ 2:  

Dữ liệu kiểm tra đối với lương (Tienluong < 100) 

CREATE TABLE Nhanvien  

(MaNV   INT NOT NULL, 

name VARCHAR(10) NOT NULL, 

Tienluong MONEY NOT NULL 

CONSTRAINT  RR_luong CHECK (Tienluong < 100)   ) 

Ví  dụ  3:  Câu  lệnh  dưới  đây  tạo  bảng  DIEMTOTNGHIEP  trong  đó  qui  định  giá  trị 

của cột DIEMVAN và DIEMTOAN phải lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 10. 

CREATE TABLE diemtotnghiep ( 

hoten NVARCHAR(30) NOT NULL, 

ngaysinh DATETIME, 

diemvan DECIMAL(4,2) 

CONSTRAINT chk_diemvan 

 

28 

CHECK(diemvan>=0 AND diemvan<=10), 

diemtoan DECIMAL(4,2) 

CONSTRAINT chk_diemtoan 

CHECK(diemtoan>=0 AND diemtoan<=10)    ) 

Ràng buộc DEFAULT được sử dụng để quy định giá trị mặc định cho một cột. Giá 

trị này sẽ tự động được gán cho cột này khi người sử dụng bổ sung một bản ghi mà không 

chỉ  định  giá  trị  cho  cột.  Trên  mỗi  cột  chỉ  có  thể  có  nhiều  nhất  một  ràng  buộc  DEFAULT 

(tức là chỉ có thể có tối đa một giá trị mặc định).  

Ví dụ 1: Câu lệnh dưới đây chỉ định giá trị mặc định là „Không biết‟ cho cột Diachi 

trong bảng Nhanvien:  

CREATE TABLE nhanvien( 

manv char(10) not null, 

hoten char(30) not null, 

ngaysinh datetime null, 

diachi char(50) default 'không biết', 

dienthoai char(6)  null        ) 

Ví dụ 2: Giá trị mặc định (10) sẽ tự động thêm vào nếu là NULL 

CREATE TABLE Nhanvien ( 

[MaNV]   int Primary key, 

Tenphong  nvarchar (50) , 

Phone   nvarchar (24) Default '10'  ) 

Ràng buộc PRIMARY KEY: được dùng để định nghĩa khóa chính của bảng. Một 

ràng buộc PRIMARY KEY đảm bảo rằng không có các giá trị trùng lặp được đưa vào trên 

các cột. Hay nói cách khác, giá trị của khóa chính sẽ giúp cho ta xác định được duy nhất 

một dòng (bản ghi) trong bảng dữ liệu. Mỗi một bảng chỉ có duy nhất một khóa chính và 

bản  thân  khóa  chính  không  chấp  nhận  giá  trị  null.  Ràng  buộc  PRIMARY  KEY  là  cơ  sở 

cho việc đảm bảo tính toàn vẹn thực thể.  

Ví dụ:  

CREATE TABLE nhanvien 

manv char(10) primary key, 

hoten char(30) not null, 

ngaysinh datetime null, 

diachi char(50) null, 

dienthoai char(6)  null 

 

29 

Ràng  buộc  UNIQUE:  thay  vì  sử  dụng  khóa  chính,  có  thể  sử  dụng  ràng  buộc 

UNIQUE để đảm bảo tính toàn vẹn thực thể. Sử dụng ràng buộc này trên một hay nhiều cột 

bắt buộc các giá trị đữ liệu trên một (hay nhiều cột) này không được trùng lặp nhau. 

Trên  một  bảng  chỉ  có  thể  có  nhiều  nhất  một  khóa  chính  nhưng  có  thể  có  nhiều  cột 

hoặc tập các cột có tính chất như khoá chính, tức là giá trị của chúng là duy nhất trong bảng. 

Tập một hoặc nhiều cột có giá trị duy nhất và không được chọn làm khoá chính được gọi là 

khoá phụ (khoá dự tuyển) của bảng. Như vậy, một bảng chỉ có nhiều nhất một khoá chính nhưng có thể có nhiều khoá phụ.  

Ràng buộc UNIQUE được sử dụng trong câu lệnh CREATE TABLE để định nghĩa 

khoá phụ cho bảng. Cú pháp: 

[CONSTRAINT tên_ràng_buộc]  

UNIQUE [(danh_sách_cột)] 

Ví dụ 1: Nếu tạo ràng buộc UNIQUE trên một cột:  

CREATE TABLE   Nhanvien  

MaNV   int NOT NULL UNIQUE, 

Ten varchar(255) NOT NULL, 

Ho varchar(255), 

Diachi varchar(255) 

Ví dụ 2: Để tạo nhiều UNIQUE:  

CREATE TABLE Nhanvien ( 

MaNV   int NOT NULL , 

Ten varchar(255) NOT NULL, 

Ho varchar(255), 

Diachi varchar(255) 

CONSTRAINT RR_Nhanvien UNIQUE (MaNV,Ten) 

Ràng buộc FOREIGN KEY:  

Ví dụ:  

CREATE TABLE   Nhanvien( 

MaNV   int NOT NULL, 

Hoten    int NOT NULL, 

 

30 

MaKhoa   int, 

PRIMARY KEY (MaNV), 

CONSTRAINT    fk_NV   FOREIGN KEY (MaKhoa) 

REFERENCES Khoa(MaKhoa) 

1.3. Sửa đổi định nghĩa bảng 

Một bảng sau khi đã được định nghĩa bằng câu lệnh CREATE TABLE có thể được 

sửa đổi thông qua câu lệnh ALTER TABLE.  

  Bổ sung một cột vào bảng.  

  Xoá một cột khỏi bảng.  

  Thay đổi định nghĩa của một cột trong bảng.  

  Xoá bỏ hoặc bổ sung các ràng buộc cho bảng  

Cú pháp: 

ALTER TABLE tên_bảng  

ADD định_nghĩa_cột |  

ALTER COLUMN tên_cột kiểu_dữ_liêu [NULL | NOT NULL] |  

DROP COLUMN tên_cột |  

ADD CONSTRAINT tên_ràng_buộc định_nghĩa_ràng_buộc |  

DROP CONSTRAINT tên_ràng_buộc 

Ví dụ:  

Thêm cột Quê quán với kiểu dữ liệu nvarchar(50) vào bảng Nhân Viên 

ALTER TABLE Nhanvien Add QueQuan char(50) 

1.4. Xóa bảng 

Cú pháp: 

DROP TABLE Tên_bảng  

Bảng có tên được chỉ ra trong mệnh đề được xoá khỏi CSDL 

Chú ý: 

  Câu lệnh này sẽ xóa các ràng buộc, chỉ mục, trigger liên quan đến bảng cần 

xóa 

  Khi xóa bằng lệnh DROP không thể khôi phục lại được 

 

31 

  Không thể thực hiện được nếu vẫn còn ràng buộc về khóa ngoại 

Ví dụ: Xóa bảng GiaoVien 

DROP TABLE GiaoVien 

2. Các lệnh bổ sung, cập nhật, xóa dữ liệu 

2.1.Thêm bộ vào bảng 

Lệnh chèn dữ liệu INSERT INTO được sử dụng để chèn một dòng hay hàng dữ liệu 

mới vào trong một bảng. 

Cú pháp: 

INSERT  INTO  tên bảng  VALUES (value1, value2,…) 

 

Hoặc có thể  chỉ  rõ những cột cụ thể muốn chèn dữ liệu như cú pháp sau: 

INSERT INTO tênbảng (Column1, column2,…) 

             VALUES (value1, value2…) 

Ví dụ 1:  

Chèn một dòng mới vào bảng Nhân viên: 

INSERT INTO  Nhanvien 

          VALUES („05‟,„Van‟, „21/02/1987‟, „Giaovien‟, „HaNoi‟, 2.400.000) 

Kết quả: 

MNV  Hoten 

Ngaysinh 

Nghenghiep 

Diachi 

Luong 

01 

Lan 

22/9/1988 

Ketoan 

HaiPhong  1.500.000 

02 

Nghia 

12/9/1988 

Quanly 

HaiPhong  1.500.000 

03 

Hai 

22/9/1989 

Ketoan 

HaiPhong  1.000.000 

04 

Trang 

30/1/1999 

Taivu 

BacNinh 

2.000.000 

05 

Van 

21/02/1987 

Giaovien 

HaNoi 

2.400.000 

Ví dụ 2:  

Chèn dữ liệu vào những cột chỉ định cụ thể: 

INSERT INTO Nhanvien (MNV, Hoten, Nghenghiep) 

         VALUES ('Hoang', 'Baove') 

 

32 

Kết quả:  

MNV  Hoten  Ngaysinh 

Nghenghiep 

Diachi 

Luong 

01 

Lan 

22/9/1988 

Ketoan 

HaiPhong  1.500.000 

02 

Nghia 

12/9/1988 

Quanly 

HaiPhong  1.500.000 

03 

Hai 

22/9/1989 

Ketoan 

HaiPhong  1.000.000 

04 

Trang 

30/1/1999 

Taivu 

BacNinh 

2.000.000 

05 

Hoang   

Baove 

 

 

2.2.Cập nhật nội dung của bộ trong bảng 

Lệnh cập nhật dữ liệu được sử dụng để sửa đổi dữ liệu trong một bảng. 

Cú pháp: 

   

UPDATE  tên bảng 

SET  <tên cột 1> = <biểu thức 1>, 

           

<tên cột 2> = <biểu thức 2>,… 

           

<tên cột n> = <biểu thức n> 

    

[WHERE   <điều kiện>] ; 

Ví dụ:  

Đổi tên Nghenghiep một người có tên là Hoang thành nghề Taivu 

UPDATE Nhanvien SET Nghenghiep = 'Taivu' 

          WHERE   Hoten= 'Hoang' 

Kết quả: 

MNV  Hoten  Ngaysinh 

Nghenghiep 

Diachi 

Luong 

01 

Lan 

22/9/1988 

Ketoan 

HaiPhong  1.500.000 

02 

Nghia 

12/9/1988 

Quanly 

HaiPhong  1.500.000 

03 

Hai 

22/9/1989 

Ketoan 

HaiPhong  1.000.000 

04 

Trang 

30/1/1999 

Taivu 

BacNinh 

2.000.000 

 

33 

05 

Hoang   

Taivu 

 

 

Cập nhật nhiều cột trong một dòng dữ liệu 

Chúng ta muốn thay đổi địa chỉ và thêm vào tiền lương: 

UPDATE     Nhanvien 

SET      Diachi = 'BacNinh', Luong = '3.000.000' 

WHERE  Hoten = 'Hoang' 

Kết quả: 

MNV  Hoten  Ngaysinh 

Nghenghiep 

Diachi 

Luong 

01 

Lan 

22/9/1988 

Ketoan 

HaiPhong  1.500.000 

02 

Nghia 

12/9/1988 

Quanly 

HaiPhong  1.500.000 

03 

Hai 

22/9/1989 

Ketoan 

HaiPhong  1.000.000 

04 

Trang 

30/1/1999 

Taivu 

BacNinh 

2.000.000 

05 

Hoang   

Taivu 

BacNinh 

3.000.000 

2.3. Xoá các bộ trong bảng 

Lệnh DELETE được sử dụng để xoá các dòng dữ liệu một bảng. 

Cú pháp: 

DELETE  FROM  tênbảng   WHERE  têncột = Giá trị 

Ví dụ:  

Xoá mặt hàng: 

DELETE  FROM Nhanvien  WHERE MSV = '05' 

Kết quả: 

MNV  Hoten  Ngaysinh 

Nghenghiep 

Diachi 

Luong 

01 

Lan 

22/9/1988 

Ketoan 

HaiPhong  1.500.000 

02 

Nghia 

12/9/1988 

Quanly 

HaiPhong  1.500.000 

03 

Hai 

22/9/1989 

Ketoan 

HaiPhong  1.000.000 

 

34 

04 

Trang 

30/1/1999 

Taivu 

BacNinh 

2.000.000 

Xoá  tất cả các hàng 

Có thể xoá tất cả các dòng trong một bảng mà không cần phải xoá bảng. Điềuu này có nghĩa là cấu trúc bảng, cột và chỉ mục sẽ không bị thay đổi và mất đi. 

DELETE   FROM  tên bảng 

Hoặc  

DELETE * FROM tên bảng 

3. Các lệnh truy vấn dữ liệu 

Câu lệnh SELECT được sử dụng để truy xuất dữ liệu từ các dòng và các cột của một 

hay nhiều bảng, khung nhìn. 

Cú pháp chung của câu lệnh SELECT có dạng:  

SELECT [DISTINCT][TOP n] danh_sách_chọn  

FROM danh_sách_bảng/khung_nhìn  

[WHERE điều_kiện]  

[GROUP BY danh_sách_cột]  

[HAVING điều_kiện] 

[ORDER BY cột_sắp_xếp]  

3.1. Lấy thông tin từ các cột của bảng bằng mệnh đề SELECT 

Hiển thị tất cả các trƣờng:  

  Sử dụng * 

Ví dụ: Select * From SinhVien 

Hiển thị một số cột 

  Thứ  tự  của  các  cột  trong  kết  quả  truy  vấn  tuân  theo  thứ  tự  của  các  trường 

trong danh_sách_chọn 

  Khai báo tường minh: TenBang.TenTruong 

Ví dụ: Cho biết mã GV, tên GV và tên môn học do GV đó dạy 

Select MaGV, GiaoVien.TenGV,MonHoc.TenMH 

From GiaoVien, MonHoc 

Where GiaoVien.MaGV = MonHoc.MaGV 

 

35 

Loại bỏ các dòng dữ liệu trùng nhau trong kết quả truy vấn 

  Thêm từ khóa DISTINCT ngay sau từ khoá SELECT.  

Ví dụ: Hiển thị quê quán của các SV 

Select  Distinct QueQuan 

From SinhVien 

Giới hạn số lƣợng dòng trong kết quả truy vấn 

  Thêm mệnh đề TOP ngay trước danh sách chọn.  

Ví dụ: Câu lệnh dưới đây hiển thị họ tên và ngày sinh của 3 sinh viên đầu tiên trong 

danh sách  

Select  Top 3 TenSV, NgaySinh 

From SinhVien 

3.2. Chọn các dòng của bảng bằng mệnh đề WHERE 

Mệnh  đề  WHERE  trong  câu  lệnh  SELECT  được  sử  dụng  nhằm  xác  định  các  điều 

kiện đối với việc truy xuất dữ liệu.  

Sau  mệnh  đề  WHERE  là  một  biểu  thức  logic  và  chỉ  những  dòng  dữ  liệu  nào  thoả 

mãn điều kiện được chỉ định mới được hiển thị trong kết quả truy vấn. 

Ví dụ 1: Tìm số hiệu những nhà cung cấp đã cung cấp mặt hàng có số hiệu là P2. 

 SELECT DISTINCT SNo 

 FROM SP 

 WHERE PNO = P2 

Trong SQL các phép sánh được sử dụng bao gồm >, <, >=, <=, = và <>. Các phép 

tính trên dùng cho mọi loại dữ liệu. 

Ví dụ 2: Cho biết tất cả các thông tin về các nhà cung cấp có họ là Phạm. Khi đó có 

thể viết: 

 SELECT * 

 FROM S 

 WHERE SNAME LIKE Phạm % 

Trong SQL sử dụng ký hiệu % là thay thế cho một xâu con, dấu gạch dưới  _ để thay 

thề cho một ký tự. 

A%B: xâu ký tự bất kỳ bắt đầu bằng chữ A và kết thúc bằng chữ B 

 

36 

%A: xâu ký tự bất kỳ có ký tự kết thúc bằng là A 

A_B: xâu gồm 3 ký tự có ký tự thứ 2 là bất kỳ 

A_: xâu gồm 2 ký tự có ký tự đầu là A. 

 Ngoài các phép tính thông thường SQL còn có thể xử lý dữ liệu dạng ngày tháng. 

Ví  dụ  3:  Tìm  số  hiệu  mặt  hàng,  số  lượng  của  những  mặt  hàng  bán  trước  ngày  24 

tháng 4 năm 1994 là 10 ngày. 

 SELECT PNo, QTY 

 FROM SP 

 WHERE {04/24/94} - SDATE = 10 

  

 Tìm kiếm nhờ sử dụng IN và BETWEEN 

Ví dụ 4: Tìm số hiệu những mặt hàng đã cung cấp có giá từ 1000 đến 2000. 

 SELECT PNo 

 FROM SP 

 WHERE PRICE BETWEEN 1000 AND 2000 

Ví dụ 5: Tìm số hiệu những nhà cung cấp đã cung cấp ít nhất một trong các mặt hàng 

có số hiệu P1, P2, P3. 

 SELECT DISTINCT SNo 

 FROM SP 

 WHERE PNO IN ( P1, P2, P3 ) 

3.3. Truy vấn thông tin từ nhiều bảng 

Khi  cần  thực  hiện  một  yêu  cầu  truy  vấn  dữ  liệu  từ  hai  hay  nhiều  bảng,  ta  phải  sử 

dụng đến phép nối. Một câu lệnh nối thực hiện lấy các dòng dữ liệu trong các bảng tham gia 

truy vấn, so sánh giá trị của các dòng này trên một hoặc nhiều cột được chỉ định trong điều 

kiện nối và kết hợp các dòng thoả mãn điều kiện thành những dòng trong kết quả truy vấn. 

Danh sách chọn trong phép kết nối 

  tên_bảng.tên_cột: khi tên cột trong các bảng trùng tên nhau 

  tên_bảng.* : hiển thị tất cả các cột của một bảng nào đó 

  (*) : hiển thị tất cả các cột của các bảng tham gia truy vấn  

Mệnh đề From trong phép kết nối: Danh sách tên các bảng (hay khung nhìn) tham 

gia vào truy vấn 

 

37 

Mệnh đề Where trong phép kết nối: Chỉ định điều kiện để thực hiện phép nối 

Ví dụ: Hiển thị tên giáo viên dạy môn Cơ sở dữ liệu 

Select GiaoVien.TenGV, MonHoc.TenMH 

From GiaoVien, MonHoc 

Where GiaoVien.MaGV = MonHoc.MaGV 

And MonHoc.TenMH = N„Cơ sở dữ liệu‟ 

3.4. Sắp xếp kết quả truy vấn bằng mệnh đề ORDER BY 

Mặc định, các dòng dữ liệu trong kết quả của câu truy vấn tuân theo thứ tự của chúng 

trong bảng dữ liệu hoặc được sắp xếp theo chỉ mục (nếu trên bảng có chỉ mục).  

Trong trường hợp muốn dữ liệu được sắp xếp theo chiều tăng hoặc giảm của giá trị 

của một hoặc nhiều trường, ta sử dụng thêm mệnh đề ORDER BY trong câu lệnh SELECT. 

Sau ORDER BY là danh sách các cột cần sắp xếp (tối đa là 16 cột).  

Dữ liệu được sắp xếp có thể theo chiều tăng (ASC) hoặc giảm (DESC), mặc định là 

sắp xếp theo chiều tăng.  

Ví dụ

Select * 

From MonHoc 

Order By DVHT DESC 

3.5. Phân nhóm dữ liệu bằng mệnh đề GROUP BY 

Mệnh đề GROUP BY cho phép phân hoạch các dòng dữ liệu thành các nhóm dữ liệu 

và thực hiện các phép toán trên các nhóm dữ liệu đó.  

Các hàm gộp được sử dụng để tính toán trên toàn bảng, hoặc trên mỗi nhóm dữ liệu. 

Ta có các hàm gộp nhóm sau: 

 

 

38 

Ví dụ: Tính điểm trung bình các môn học của từng sinh viên 

Select MaSV, AVG(Diem) AS DiemTB 

From KetQua 

Group By MaSV 

3.6. Lọc nhóm kết quả truy vấn bằng mệnh đề HAVING 

Mệnh đề HAVING được sử dụng nhằm chỉ định điều kiện đối với các giá trị thống 

kê được sản sinh từ các hàm gộp. Sau HAVING là biểu thức điều kiện. Biểu thức điều kiện này không tác động vào từng bản ghi của toàn bảng được chỉ ra trong mệnh đề from mà chỉ tác động lần lượt từng nhóm các bản ghi đã chỉ ra tại mệnh đề group by. 

Ví dụ: Hiển thị mã SV của các SV có điểm trung bình > 5 

Select MaSV, AVG(Diem) AS DiemTB 

From KetQua 

Group By MaSV 

Having AVG(Diem) > 5 

3.7. Truy vấn lồng nhau 

Truy vấn lồng nhau là một câu lệnh SELECT được lồng vào bên trong một câu lệnh 

SELECT, INSERT, UPDATE, DELETE 

Sử dụng khi điều kiện truy vấn dữ liệu cần phải sử dụng đến kết quả của một truy vấn 

khác 

Ví dụ

Cho biết danh sách các môn học có số đơn vị học trình lớn hơn hoặc bằng số đơn vị 

học trình của môn học có mã là MD11  

SELECT *  

FROM MonHoc  

WHERE DVHT >= (SELECT DVHT  

FROM MonHoc  

Where MaMH = „MD11‟) 

* Các hàm tính toán trên nhóm các bản ghi 

Khi cần tính toán giá trị thống kê trên toàn bộ dữ liệu, ta sử dụng các hàm gộp trong 

danh sách chọn của câu lệnh SELECT 

 

39 

 

* Các hàm tính toán trên bản ghi 

Các hàm toán học 

  ABS(x): Trị tuyệt đối của x 

  SQRT(x): Căn bậc hai của x 

  LOG(x): Logarit tự nhiên của x 

  EXP(x): Hàm mũ cơ số e của x 

  SIGN(x): Lấy dấu của số x (-1 : x<0, 0 :x=0, +1 : x>0) 

  ROUND(x,n): Làm tròn tới n số lẻ 

Các hàm xử lý chuỗi ký tự 

  LEN(str): Cho chiều dài dãy ký tự str 

  LEFT(str,n): Lấy n ký tự phía trái của dãy str 

  RIGHT(str,n): Lấy n ký tự phía phải của dãy str 

  MID(str,p,n): Lấy n ký tự của dãy str kể từ vị trí p trong dãy. 

  LTRIM(str): Cắt bỏ các khoảng trắng thừa bên trái chuỗi str 

  RTRIM(str): Cắt bỏ các khoảng trắng thừa bên phải của chuỗi str 

Các hàm xử lý ngày tháng và thời gian 

  DATE(): Cho ngày tháng năm hiện tại 

  DAY(dd): Cho thứ tự ngày trong tháng của biểu thức ngày dd 

  MONTH(dd): Cho thứ tự tháng của biểu thức ngày dd 

  YEAR(dd): Cho năm của biểu thức ngày dd 

  HOUR(tt): Cho giờ trong ngày 

 

40 

  MINUTE(tt): Cho số phút của thời gian tt 

  SECONDS(tt): Cho số giây của biểu thức giờ tt 

 

 

 

 

 

41 

CHƢƠNG 3: RÀNG BUỘC TOÀN VẸN VÀ PHỤ THUỘC HÀM 

1. Ràng buộc toàn vẹn 

1.1. Các vấn đề liên quan đến ràng buộc toàn vẹn  

1.1.1. Định nghĩa ràng buộc toàn vẹn 

Ràng buộc toàn vẹn  -  RBTV (Integrity Constraint): là những  điều kiện bất biến  mà 

mọi thể hiện của quan hệ đều phải thỏa ở bất kỳ thời điểm nào 

Ví dụ: Trong CSDL quản lý giáo vụ, mỗi học viên có một mã riêng biệt để phân biệt 

với các học viên khác 

Mục đích của RBTV: 

  Đảm bảo tính nhất quán của dữ liệu 

  Đảm bảo ngữ nghĩa thực tế của dữ liệu 

1.1.2. Các yếu tố của ràng buộc toàn vẹn 

Nội dung của RBTV 

Một RBTV được phát biểu bằng ngôn ngữ tự nhiên hoặc ngôn ngữ hình thức 

Ví dụ: Xét ràng buộc toàn vẹn RB được phát biểu theo 2 cách như sau:  

  Mỗi học viên có một mã số riêng biệt dùng để phân biệt với các học viên khác. 

 

∀ hv1, hv2 ∈  HOCVIEN: (hv1 ≠ hv2 ⇒ hv1.MaSV ≠ hv2.MaSV) 

Bối cảnh của RBTV 

Bối cảnh của RBTV là những quan hệ mà một RBTV có hiệu lực.Bối cảnh có thể là 

một quan hệ hoặc nhiều quan hệ 

Ví dụ: RB có bối cảnh là HOCVIEN 

Bảng tầm ảnh hƣởng của RBTV 

Bảng  tầm  ảnh  hưởng  của  RBTV  xác  định  thao  tác  cập  nhật  nào  cần  phải  kiểm  tra 

RBTV khi được thực hiện trên quan hệ bối cảnh. 

Các phép cập nhật trong bảng tầm ảnh hưởng bao gồm: Thêm, Xóa, Sửa 

 

42 

 

: thực hiện thao tác có thể làm vi phạm RBTV 

: thực hiện thao tác không thể làm vi phạm RBTV 

+(A) 

: có thể làm vi phạm RBTV khi sửa trên thuộc tính A  

-

(*) 

: không vi phạm RBTV do thao tác không thực hiện được (không cho phép 

sửa…) 

 

Ví dụ: Bảng tầm ảnh hưởng của ràng buộc toàn vẹn RB: 

RB 

Thêm 

Xóa 

Sửa 

HOCVIEN 

+(MaHV) 

+(MaHV) 

1.2. Các loại ràng buộc toàn vẹn 

1.2.1. Ràng buộc toàn vẹn về miền giá trị 

  Là ràng buộc quy định giá trị cho một thuộc tính. 

  RB-4: Giới tính của học viên chỉ là Nam hoặc Nữ 

  Nội dung: 

 

hv 

 HOCVIEN: hv.GioiTinh 

 {„Nam‟, „Nữ‟} 

  Bối cảnh: quan hệ HOCVIEN 

  Bảng tầm ảnh hưởng: 

RB-4 

Thêm 

Xóa 

Sửa 

HOCVIEN 

+ 

- 

+(GioiTinh) 

 

 

 

 

43 

1.2.2. Ràng buộc toàn vẹn liên thuộc tính 

  Là ràng buộc giữa các thuộc tính với nhau trên 1 bộ của quan hệ 

  RB-5:Ngày  bắt  đầu  (TuNgay)  giảng  dạy  một  môn  học  cho  một  lớp  luôn  nhỏ  hơn 

ngày kết thúc (DenNgay) 

  Nội dung:  

gd 

 GIANGDAY: gd.TuNgay < gd.DenNgay 

  Bối cảnh: quan hệ GIANGDAY 

  Bảng tầm ảnh hưởng: 

RB-5 

Thêm 

Xóa 

Sửa 

GIANGDAY 

+ 

- 

+(TuNgay, DenNgay) 

 

1.2.3. Ràng buộc toàn vẹn liên bộ 

  Là ràng buộc giữa các bộ trên cùng một quan hệ (có thể liên quan đến nhiều thuộc 

tính). 

  Trường hợp đặc biệt: Ràng buộc về khóa chính, Unique 

  RB-6: Tất cả các học viên phải có mã số phân biệt với nhau 

  Nội  dung:  

h

1

,h

2

 HOCVIEN: Nếu h

1

h

2

 thì h

1

.MaHV

h

2

.MaHV 

  Bối cảnh: quan hệ HOCVIEN 

  Bảng tầm ảnh hưởng: 

RB-6 

Thêm 

Xóa 

Sửa 

HOCVIEN 

+ 

- 

-

(*)

 

 

 

 

 

44 

1.2.4. Ràng buộc toàn vẹn về phụ thuộc tồn tại 

Ràng buộc toàn vẹn về phụ thuộc tồn tại cũng được gọi là ràng buộc toàn vẹn về khoá ngoại 

  Là ràng buộc quy định giá trị thuộc tính trong một bộ của quan hệ R (tập thuộc tính 

này gọi là khoá ngoại), phải phụ thuộc vào sự tồn tại của một bộ trong quan hệ S (tập 

thuộc tính này là khoá chính trong quan hệ S).  

  RBTV tham chiếu còn gọi là ràng buộc phụ thuộc tồn tại hay ràng buộc khóa ngoại 

  RB-8: Giáo viên phải thuộc một khoa nào đó. 

  Nội  dung: 

• 

gv 

 GIAOVIEN, 

 Khoa:  

gv.MaKhoa = k.MaKhoa 

•  Hoặc:   GIAOVIEN[MaKhoa] 

 KHOA[MaKhoa] 

  Bối cảnh: quan hệ GIAOVIEN, KHOA 

  Bảng tầm ảnh hưởng: 

RB-8 

Thêm 

Xóa 

Sửa 

GIAOVIEN 

+ 

- 

- 

KHOA 

- 

+ 

-(*) 

 

1.2.5. Ràng buộc toàn vẹn liên thuộc tính – liên quan hệ 

  Là ràng buộc mà một thuộc tính trong 1 quan hệ này có mối liên hệ với 1 thuộc tính 

trong 1 quan hệ khác. 

  RB-9: Ngày giáo viên giảng dạy một môn học phải lớn hơn hoặc bằng ngày giáo viên 

đó vào làm. 

  Nội  dung: 

gd 

 GIANGDAY 

Nếu  

gv 

 GIAOVIEN: gd.MaGV = gv.MaGV  

thì  

 

gv.NgayVL 

 gd.TuNgay 

  Bối cảnh: GIANGDAY, GIAOVIEN 

  Bảng tầm ảnh hưởng: 

 

45 

RB-9 

Thêm 

Xóa 

Sửa 

GIANGDAY 

+ 

- 

+(TuNgay) 

GIAOVIEN 

- 

- 

+(NgayVL) 

 

1.2.6. Ràng buộc toàn vẹn liên bộ – liên quan hệ 

  Là ràng buộc  mà  một  thuộc tính của quan hệ này có  mối liên hệ với các bộ của 1 

quan hệ khác. 

  RB-11: Mỗi giáo viên phải dạy ít nhất 1 lớp 

  Nội  dung: 

• 

∀gv ∈ GIAOVIEN  

(

∃gd ∈ GIANGDAY (gd.MaGV = gv.MaGV)) 

  Bối cảnh: quan hệ GIAOVIEN, GIANGDAY 

  Bảng tầm ảnh hưởng: 

RB-11 

Thêm 

Xóa 

Sửa 

GIANGDAY 

- 

+(MaGV) 

+(MaGV) 

GIAOVIEN 

+(MaGV) 

- 

+(MaGV) 

2. Phụ thuộc hàm 

2.1. Định nghĩa và biểu diễn phụ thuộc hàm    

Định nghĩa 

Phụ thuộc hàm (Functional Dependencies) là sự biểu diễn RBTV dưới hình thức toán 

học, nhằm bảo đảm thông tin không bị tổn thất khi phân rã hoặc kết nối giữa các quan hệ. 

Biểu diễn PTH: 

Cho R(U) là một lược đồ quan hệ với  

U = {A

1

, A

2

,..., A

n

} là tập thuộc tính. 

 

46 

Nói rằng X 

 Y (đọc là X xác định hàm Y hoặc Y phụ thuộc hàm vào X) nếu với bất 

kỳ quan hệ r nào đó là giá trị hiện hành của R và bất kỳ hai bộ t

1

, t

2

 

 r mà t

1

[X] = t

2

[X] thì 

t

1

 [Y]= t

2

[Y] 

2.2. Bao đóng của tập phụ thuộc hàm và hệ luật dẫn Armstrong  

Bao đóng của tập phụ thuộc hàm 

Gọi F là tập tất cả các phụ thuộc hàm đối với lược đồ quan hệ R và X 

 Y là một 

phụ thuộc hàm với X,Y 

 U. Nói rằng X 

 được suy diễn logic từ F nếu mỗi quan hệ r 

thoả các phụ thuộc hàm của F thì cũng thoả X 

 Y. Chẳng hạn F=

 B, B 

C

 thì A 

 C được suy ra từ F.  

Gọi  F

+

  là  bao  đóng  (closure)  của  F,  tức  là  tất  cả  các  phụ  thuộc  hàm  được  suy  diễn 

logic từ F. Nếu F = F

+

 thì F là họ đầy đủ (full family) của các phụ thuộc hàm. 

Hệ luật dẫn Armstrong 

Để có thể xác định khoá của một lược đồ quan hệ và hiểu được các phép suy diễn 

logic cho các phụ thuộc hàm cần tính được F

+

 từ F, hoặc ít nhất phải khẳng định được X 

 

Y có thuộc F hay không nếu biết phụ thuộc hàm X 

 Y và tập phụ thuộc hàm F. Do đó đòi 

hỏi phải có những qui tắc suy diễn cho biết làm sao có thể suy ra một hay nhiều phụ thuộc 

hàm  từ  các  phụ  thuộc  hàm  khác.  Tập  các  qui  tắc  này  được  được  Armstrong  đưa  ra  năm 1974 và được gọi là hệ tiên đề Armstrong. 

Cho R là lược đồ quan hệ, với U= {A

1

,..,A

n

} là tập các thuộc tính của nó và X, Y, Z, 

⊆ U. 

Hệ luật dẫn Armstrong bao gồm: 

  Luật phản xạ: Y 

⊆ X ⇒ X → Y. 

  Luật tăng trưởng: X → Y 

⇒ XZ → YZ, với XZ = X∪Z. 

  Luật  bắc cầu: X → Y, Y → Z 

⇒ X → Z. 

Từ các luật trên ta có thể dễ dàng chứng minh các luật bổ sung sau: 

  Phân rã: X → YZ 

⇒ X → Y, X → Z. 

  Hợp: X → Y, X → Z 

⇒ X → YZ. 

  Giả bắc cầu: X → Y, WY → Z 

⇒ WX → Z. 

2.3. Bao đóng của tập thuộc tính  

Định nghĩa 

Để dễ dàng cho việc chứng minh tính đầy đủ của hệ tiên đề Arsmtrong. ở đây đưa 

thêm  khái  niệm  bao  đóng  (closure)  của  tập  các  thuộc  tính  đối  với  tập  các  phụ  thuộc  hàm. 

 

47 

Gọi F là tập các phụ thuộc hàm trên tập thuộc tính U, X

U. X

+

 là bao đóng của X (đối với 

F) được định nghĩa như sau: 

X

+

= {A

 X

A

F

+

Nói cụ thể : X

+

 là tập tất cả các thuộc tính A mà phụ thuộc hàm X

A có thể được 

suy diễn logic từ F nhờ hệ tiên đề Armstrong. 

Thuật toán tính bao đóng của tập thuộc tính 

Input: U, F và X 

⊆ U 

Output: X

+

 

Thuật toán: 

Bước 1: X

0

 = X; 

Bước 2: Nếu tồn tại Y → Z 

∈ F với Y ⊆ X

i

, Z 

 X

i

 thì 

X

i+1 

= X

i

 

∪ Z; 

Tiếp tục Bước 2 

Ngược lại Bước 3 

Bước 3: output X

+

 = X

i

  

Ví dụ: Cho R(U) với U=ABCDEG 

F = {AB → C, C → A, BC → D, ACD → B, D → EG, BE → C, CG → BD, CE → 

AG} 

Tính X

+

, với: X = D và X = BD 

Giải: 

Với X = D, ta tính X

+

 như sau: 

X

i

 

Tập PTH 

X

i+1

 

X

0

= D 

D → EG 

DEG 

X

1

= DEG 

 

 

Vậy D

+

 = DEG 

Với X = BD, ta tính X

+

 như sau: 

X

i

 

Tập PTH 

X

i+1

 

 

48 

X

0

= BD 

D → EG 

BDEG 

X

1

= BDEG 

BE → C 

BCDEG 

X

2

= BCDEG 

C → A 

ABCDEG 

X

3

= ABCDEG 

 

 

Vậy BD

+

 = ABCDEG 

2.4. Phủ và phủ tƣơng đƣơng  

Định nghĩa 

Cho F và G là hai tập phụ thuộc hàm trên tập thuộc tính U, ta nói rằng tập phụ thuộc 

hàm F tương đương với tập phụ thuộc hàm G nếu và chỉ nếu F

+

 = G

Nếu F

+

 = G

+

 thì ta nói rằng F là phủ của G và ngược lại F là phủ của F. 

Thuật toán xác định F và G có tƣơng đƣơng không? 

Bước 1: Với mỗi PTH X → Y của F ta xác định xem X → Y có được suy diễn logic 

từ G không 

Bước 2: Với mỗi PTH X → Y của G ta xác định xem X → Y có được suy diễn logic 

từ F không 

Nếu cả 2 bước trên đều đúng thì F 

 G 

Ví dụ: Cho lược đồ quan hệ R(ABCDE),  

2 PTH: F={A → BC, A → D, CD → E}  

và G={A → BCE, A → ABD, CD → E} 

F có tương đương với G không? 

F có tương đương với G‟={A → BCDE} không? 

Giải: 

a. Ta có A

G

+

 = ABCDE 

 trong G

+

 có A → BC và A → D 

 F 

⊆ G

+

 F

+

 

⊆ G

(1) 

Lại có A

F

+

 = ABCDE 

 trong F

+

 có A → BCE và A → ABD 

 F

+

 

 G 

 F

+

 

 G

(2) 

Từ (1) và (2) 

 F

= G

+

 

 F 

 G 

b. Do (CD)

+

 = CD 

 G‟

không chứa PTH CD → E  

 F không tương đương G‟ 

 

49 

Phủ tối thiểu 

Gọi tập các phụ thuộc hàm F là tối thiểu nếu: 

a) Mỗi vế phải của một phụ thuộc hàm thuộc F chỉ có một thuộc tính. 

b) Không tồn tại một phụ thuộc hàm XA thuộc hàm F và một tập con Z của X mà:

 

F

= (F - 

A

 

 

 A

)

c) Không tồn tại một phụ thuộc hàm XA thuộc F mà F

+

 = (F - {X A} )

Điều kiện b) bảo đảm không có một thuộc tính nào tham gia phía trái của phụ thuộc 

hàm là dư thừa và phép kiểm tra các phụ thuộc hàm dư thừa ở vế trái như sau: Thuộc tính B trong X đối với phụ thuộc hàm XA là dư thừa thừa nếu và chỉ nếu A thuộc (X-{B})

F

+

Về trực quan, điều kiện c) bảo đảm cho tập F không có một phụ thuộc hàm nào là dư 

thừa và để kiểm tra XA có dư thừa hay không bằng cách tính X

+

 ứng với F - {X A}. 

Vế phải của phụ thuộc hàm ở điều kiện a) chỉ có một thuộc tính bảo đảm chắc chắn 

không có một thuộc tính nào ở vế phải là dư thừa.  

Ví dụ: 

Cho R(U), U={A,B,C} 

F = {A → BC, B → C, A → B, AB → C} 

Tìm phủ tối thiểu F‟ của F 

Giải: 

Bước 1: Tách các PTH có vế phải nhiều hơn 1 thuộc tính.  

F trở thành: {A → B, A → C, B → C, AB → C} 

Bước 2: Loại bỏ thuộc tính dư thừa ở vế trái 

Có AB → C mà A → C nên B dư thừa ở vế trái của PTH AB → C. Còn A → C. 

Tập F mới là {A → B, A → C, B → C} 

Bước 3: Loại bỏ các PTH dư thừa 

Có A → B và B → C, theo luật bắc cầu của Hệ luật dẫn Armstrong 

 A → C 

Như vậy PTH A → C trong tập F mới ở B2 là dư thừa 

Tập F mới {A → B, B → C} 

Vậy F‟ = {A → B, B → C} 

2.5. Thuật toán xác định khoá của lƣợc đồ quan hệ  

Cho lược đồ quan hệ R(U). F là tập phụ thuộc hàm của R 

 

50 

K được gọi là siêu khoá của lược đồ R nếu K→U (K

+

=U) 

K được gọi là khoá của lược đồ quan hệ R nếu: 

1, K→U (K

+

=U) 

2, Không tồn tại K' 

 K mà  K→U 

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

Input: R(U), F 

Output: Tập K là khóa của R 

Thuật toán: 

  Bước 1: Đặt K = U = {A1, …, An} 

i = 1; 

  Bước 2: Loại bỏ thuộc tính khỏi K 

•  Nếu U = (K – {A

i

})

F

+

 thì K = K - {A

i

}. 

•  i = i + 1; 

•  Nếu i > n thì sang Bước 3. Ngược lại, tiếp tục Bước 2.  

  Bước 3: Output K 

Chú ý: Khi thay đổi thứ tự loại bỏ các thuộc tính trong K, ta có thể tìm được các khóa 

khác 

Ví dụ: 

Cho R(U), U = {A, B, C, D, E, F, G} 

F = {B → A, D → C, D → BE, DF → G} 

Tìm khóa của R. 

Giải: 

  Bước 1:  

  K = ABCDEFG. 

  Bước 2: 

  Loại bỏ A: (BCDEFG)

F

+

 = ABCDEFG 

⇒ K = BCDEFG. 

  Loại bỏ B: (CDEFG)

F

+

 = ABCDEFG 

⇒ K = CDEFG. 

  Loại bỏ C: (DEFG)

F

+

 = ABCDEFG 

⇒ K = DEFG. 

 

51 

  Loại bỏ D: (EFG)

F

+

 = EFG. 

  Loại bỏ E: (DFG)

F

+

 = ABCDEFG 

⇒ K = DFG. 

  Loại bỏ F: (DG)

F

+

 = ABCDEG. 

  Loại bỏ G: (DF)

F

+

 = ABCDEFG 

⇒ K = DF. 

  Bước 3:  

  Khóa là K = DF. 

b. Thuật toán tìm tất cả các khóa 

Thuật toán cơ bản tìm tất cả các khóa: 

  Bước 1: Xác định tất cả các tập con khác rỗng của U. Kết quả tìm được giả sử là 

các tập thuộc tính X

1

, X

2

,… …,X

2

n

-1

 

  Bước 2: Tìm bao đóng của X

i

 

  Bước 3: Siêu khóa là các X

i

 có bao đóng đúng bằng U. Giả sử ta đã tìm được các 

siêu khóa là S = {S

1

, S

2

,… …,S

m

  Bước 4: Xây dựng tập chứa tất cả các khóa của R từ tập S bằng cách xét mọi S

i

, S

j

 

con của S (i 

 j),  

nếu S

⊆ S

j

 thì ta loại S

j.

 

Kết quả còn lại của S chính là tập tất cả các khóa cần tìm. 

Ví dụ:  

Cho R(U), U = {C, S, Z} 

F = {CS → Z, Z → C} 

Tìm khóa của R 

  

Giải: 

X

i

 

X

i

+

 

Siêu khóa 

Khóa 

 

 

 

 

CZ 

 

 

CS 

CSZ 

CS 

CS 

 

52 

CZ 

CZ 

 

 

SZ 

CSZ 

SZ 

SZ 

CSZ 

CSZ 

CSZ 

 

Vậy LĐQH R có 2 khóa là K

1

 = SZ và K

2

 = CS 

Thuật toán cải tiến bản tìm tất cả các khóa 

Một số khái niệm: 

  Tập  thuộc  tính  nguồn  (TN):  chứa  tất  cả  các  thuộc  tính  xuất  hiện  ở  vế  trái  và 

không xuất hiện ở vế phải của các PTH; đồng thời chứa các thuộc tính không xuất hiện ở cả vế trái lẫn vế phải của các PTH. 

  Tập thuộc tính đích (TD): chứa tất cả các thuộc tính xuất hiện ở vế phải và không 

xuất hiện ở vế trái của các PTH 

  Tập thuộc tính trung gian (TG): chứa các thuộc tính xuất hiện ở cả vế trái lẫn vế 

phải của các PTH. 

Hệ quả: Nếu K là khóa của R thì TN 

⊆ K và TD 

 K = 

 

Thuật toán cải tiến tìm tất cả các khóa: 

  Bước 1: Tạo tập thuộc tính nguồn TN, tập thuộc tính trung gian TG 

  Bước 2: Nếu TG = 

 thì LĐQH R chỉ có một khóa K = TN 

Ngược lại, thực hiện B3 

  Bước 3: Tìm tất cả các tập con Xi của tập thuộc tính trung gian TG 

  Bước 4: Tìm các siêu khóa Si 

Nếu (TN 

 X

i

)

+

 = U thì S

i

 = TN 

 X

i

 

  Bước 5: Tìm khóa bằng cách loại bỏ các siêu khóa không tối thiểu   

S

i

, S

j

 

 S (i 

 j), nếu S

⊆ S

j

 thì ta loại S

j

 khỏi tập siêu khóa S. Kết quả 

còn lại của S chính là tập tất cả các khóa cần tìm  

 

Ví dụ:  

Cho R(U), U = {C, S, Z} 

F = {CS → Z, Z → C} 

 

53 

Tìm khóa của R 

Giải: 

TN = {S}; TG = {C,Z} 

Gọi X

i

 là các tập con của tập TG 

 X

i

 

TN 

 X

i

 

(TN 

 X

i

)

 

+

 

Siêu khóa 

Khóa 

 

 

 

CS 

CSZ 

CS 

CS 

SZ 

CSZ 

SZ 

SZ 

CZ 

CSZ 

CSZ 

CSZ 

 

Vậy LĐQH R có 2 khóa là K

1

 = SZ và K

2

 = CS  

 

 

54 

CHƢƠNG 4: DẠNG CHUẨN VÀ CHUẨN HOÁ LƢỢC ĐỒ CƠ SỞ DỮ LIỆU QUAN 

HỆ 

1. Giới thiệu về chuẩn hóa và các dạng chuẩn 

1.1. Giới thiệu về chuẩn hóa 

Chuẩn hóa là quá trình tách bảng (phân rã) thành các bảng nhỏ hơn dựa vào các phụ 

thuộc  hàm.  Các  dạng  chuẩn  là  các  chỉ  dẫn  để  thiết  kế  các  bảng  trong  cơ  sở  dữ  liệu.  Mục đích  của  chuẩn  hóa  là  loại  bỏ  các  dư  thừa  và  các  lỗi  khi  thao  tác  dữ  liệu  (Insert,  Delete, 

Update). Nhưng chuẩn hóa làm tăng thời gian truy vấn. 

Một trong hai nguyên nhân sau đây do thiết kế kém sẽ gây nguy hiểm cho cơ sở dữ 

liệu đó là: 

  Trùng lặp thông tin   Không có khả năng trình bày thông tin một cách chắc chắn 

Ví dụ:  

Cho một lược đồ quan hệ dùng để ghi nhận giáo viên và lớp giảng dạy của giáo viên 

GIANGDAY(MONHOC, SOTIET, LOP, GV, HV, DC) 

Các phụ thuộc hàm: MONHOC 

SOTIET, LOP

 GV, GV

HOCVI  

Xét một tình trạng dữ liệu như sau: 

MONHOC 

SOTIET 

LOP 

GV 

HOCVI 

DC 

CSDL 

90 

TH1 

Nguyễn Tuấn Anh 

CN 

Q1 

CTDL 

75 

TH1 

Lê Thị Hồng 

ThS 

Q2 

CSDL 

90 

TH2 

Nguyễn Tuấn Anh 

CN 

Q1 

CTDL 

75 

TH2 

Lê Thị Hồng 

ThS 

Q2 

CN : Cử nhân, ThS : Thạc sĩ 

Do có phụ thuộc hàm MONHOC 

SOTIET nên số tiết của dòng thứ 2 và dòng thứ 

3 gây trùng lặp thông tin. Tương tự phụ thuộc hàm GV

HOCVI nên học vị và địa chỉ của 

dòng thứ 2 và thứ 3 gây nên sự trùng lặp thông tin.Các dữ liệu gây trùng lắp thông tin là các 

dữ liệu có thể suy đoán được một cách chắc chắn và duy nhất từ phụ thuộc hàm. 

ở đây để lưu học vị và địa chỉ của một giáo viên thì giáo viên đó phải tham gia giảng dạy 

một lớp nào đó. Để giải quyết vấn đề lưu thông tin các giáo viên không tham gia giảng dạy người ta dùng giá trị NULL cho các thuộc tính MONHOC, SOTIET, LOP. Như vậy, lược 

 

55 

đồ quan hệ nàylưu trữ hai thông tin của hai đối tượng khác nhau một là giảng dạy của các 

của  các  giáo  viên  tham  gia  giảng  dạy,  hai  là  thông  tin  của  các  giáo  viên  không  tham  gia 

giảng dạy. Vấn đề nảy sinh ở đây là khi ta chỉ cần cập nhật việc giảng dạy ta phải đảm bảo  

không  gây  ảnh  hưởng  tới  các  giáo  viên  không  tham  gia  giảng  dạy  và  ngược  lại.  Như  vậy thông tin lưu trữ ở lược đồ quan hệ này không chắc chắn. 

1.2. Các dạng chuẩn 

a. Dạng chuẩn 1NF (First Normal Form) 

Định nghĩa 

Lược đồ quan hệ R được gọi là thuộc dạng chuẩn 1 khi và chỉ khi mọi thuộc tính của 

R là thuộc tính đơn. 

Ví dụ: Chuyển bảng SinhVien sang dạng 1NF 

MaSV  HoTen 

DiaChi 

MaMH  TenMH  TenGV  Phong  Diem 

A01 

Nguyễn Thị Ánh 

Hà Nội 

M01 

CSDL 

Hiếu 

P13 

A01 

Nguyễn Thị Ánh 

Hà Nội 

M02 

Anh 2 

Hương  P04 

A03 

Trần Văn Nam 

Thái Nguyên 

M01 

CSDL 

Hiếu 

P13 

A02 

Lê Phương Yến 

Hưng Yên 

M04 

LTHĐT  Huy 

P05 

A02 

Lê Phương Yến 

Hưng Yên 

M02 

Anh 2 

Hương  P04 

A02 

Lê Phương Yến 

Hưng Yên 

M03 

CNPM 

Hòa 

P14 

R đạt chuẩn 1NF 

b. Dạng chuẩn 2NF (Second Normal Form) 

Định nghĩa 

Lược đồ quan hệ R được gọi là thuộc dạng chuẩn 2 khi và chỉ khi: 

  R ở dạng chuẩn 1 

  Mọi thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào khóa chính. 

R(U), K 

⊆ U là khóa chính của R 

  A 

∈  U là thuộc tính không khóa nếu A ∉  K. 

  X → Y là PTH đầy đủ nếu 

∀ A ∈  X thì (X - {A}) → Y không đúng trên R. 

Ngược lại X → Y là PTH bộ phận. 

 

56 

Một quan hệ ở dạng 2NF nếu thỏa mãn 1 trong các điều kiện sau: 

  Khóa chính chỉ gồm 1 thuộc tính. 

  Bảng không có các thuộc tính không khóa. 

  Tất cả các thuộc tính không khóa phụ thuộc hoàn toàn vào tập các thuộc tính khóa 

chính 

Chú ý: 

  Chỉ kiểm tra các quan hệ có đạt 2NF nếu quan hệ đó có khóa chính gồm 2 thuộc 

tính trở lên. 

  Để chuyển quan hệ từ dạng chuẩn 1NF sang dạng chuẩn 2NF, ta sử dụng phép 

chiếu. 

Thuật toán: 

  Bước 1: Tìm các khóa K của R. 

  Bước 2: Với mỗi khóa K, tìm bao đóng của tất cả tập con thật sự S

i

 của K.  

o  Nếu tồn tại 1 bao đóng (S

i

)

chứa thuộc tính không khóa thì R không đạt 

chuẩn 2NF.  

Ngược lại thì R đạt chuẩn 2NF 

Ví dụ: Bảng SinhVien có các phụ thuộc hàm sau: 

•  (1) MaSV → HoTen, DiaChi 

•  (2) MaMH → TenMH, TenGV, Phong 

•  (3) MaSV, MaMH → Diem 

•  (4) TenGV → Phong 

  Khóa chính: MaSV, MaMH 

  HoTen, DiaChi, TenMH, TenGV, Phong là các thuộc tính không khóa, nhưng 

chỉ phụ thuộc vào 1 phần của khóa 

 

57 

 

c. Dạng chuẩn 3NF (Third Normal Form) 

Định nghĩa 

  Lược đồ quan hệ R được gọi là thuộc dạng chuẩn 3 khi và chỉ khi: 

•  R ở dạng chuẩn 2 

•  Mọi thuộc tính không khóa đều không phụ thuộc hàm bắc cầu vào khóa 

chính. 

  R(U) 

X → Y là PTH bắc cầu nếu 

∃Z ⊆ U, Z không là khóa và cũng không là tập 

con của khóa của R mà X → Z và Z → Y đúng trên R. 

 

Thuật toán 

  B1: Tìm các khóa K của R. 

  B2: Từ F tạo tập PTH tương đương F

td

 có vế phải 1 thuộc tính. 

  B3: Nếu mọi PTH X

 A 

 F

td

 và A 

 X đều có X là siêu khóa (khóa bao hàm) 

hoặc A là thuộc tính khóa (thuộc tính nguyên tố) thì R đạt chuẩn 3NF.  

Ngược lại thì R không đạt chuẩn 3NF. 

Chú ý:  

  X là siêu khóa 

 X+ = U 

 

58 

  A  là  thuộc  tính  khóa  khi  A  là  phần  tử  của  một  khóa  của  R  (R  có  thể  có  nhiều 

khóa). Ngược lại, A là phi nguyên tố. 

Ví dụ: 

 

d. Dạng chuẩn BCNF (Boyce - Codd Normal) 

Định nghĩa 

Lược đồ quan hệ R được gọi là thuộc dạng chuẩn BCNF khi và chỉ khi:  

PTH không hiển nhiên X → Y đúng trên R thì X là siêu khóa của R. 

Ví dụ: 

Để R đạt BCNF thì tách thành 

R1(MaSV, TenMH, MaGV) 

R2(MaGV, TenGV) 

Nhận xét: 

  Mọi quan hệ thuộc dạng chuẩn BCNF cũng thuộc dạng chuẩn 3   Dạng chuẩn BCNF đơn giản và chặt chẽ hơn chuẩn 3 

Mục  tiêu  của  quá  trình  chuẩn  hóa  là  đưa  lược  đồ  quan  hệ  về  dạng  chuẩn  3  hoặc 

chuẩn BCNF. 

 

Thuật toán 

 

59 

  B1: Tìm các khóa K của R.   B2: Từ F tạo tập PTH tương đương F

ct

 có vế phải 1 thuộc tính. 

  B3: Nếu mọi PTH X

 A 

 F

ct

 và A 

 X đều có X là siêu khóa thì R đạt chuẩn 

BCNF.  

Ngược lại thì R không đạt chuẩn BCNF. 

 

2. Phân rã 

2.1. Giới thiệu về phân rã 

Phân rã (Decomposition): 

Cho lược đồ quan hệ R(U), U = {A

1

,…,A

n

Phân rã R là thay bằng 1 tập Q = {R

1

,…,R

k

} trong đó R

i

 là các tập con của R sao cho: 

R

1

 R

= R 

  Tất cả các thuộc tính của R xuất hiện ở ít nhất một R

i

 

  Tất cả các quan hệ r trên R đều thỏa mãn: r = 

R1

(r)       

R2

(r) 

 

Các tính chất mong muốn của một phân rã: Các phân rã nên đảm bảo: 

  Tính kết nối bảo toàn thông tin (Lossless-join) 

  Bảo toàn phụ thuộc hàm (Dependency preserving) 

  Không dư thừa (No redundancy) 

 

60 

  Số các bảng (lược đồ) là ít nhất 

Không phải lúc nào cũng đồng thời đạt được các tính chất trên 

2.2. Phân rã bảo toàn thông tin 

Định nghĩa: 

  Nếu  

  {R

1

,…,R

k

} là một phân rã của LĐQH R 

  F là tập các PTH 

  Thì {R

1

,…,R

k

}  là  một  phân  rã  kết  nối  bảo  toàn  thông  tin  (nối  không  mất)  nếu  với 

mỗi quan hệ r của R thỏa F, ta có 

r = 

R1

(r)       

R2

(r)        …       

Rk

(r) 

  Quan hệ bị phân rã cần được khôi phục lại từ phân rã của chính nó. 

  Phân rã của R = {R

1

,R

2

} có nối không mất khi và chỉ khi có ít nhất 1 PTH sau 

thuộc F

+

•  R

 R

 R

1

 

•  R

 R

 R

2

 

Kiểm tra tính chất nối không mất: 

  In:  

•  Lược đồ quan hệ R(U), U = {A

1

,…,A

n

•  Tập PTH F, phân rã Q = {R

1

,…,R

k

  Out: 

•  Q có phải là phân rã nối không mất? 

  Phương pháp: 4 bước: 

•  B1: Xây dựng bảng n cột và k hàng; cột j ứng với thuộc tính A

j

, hàng i 

ứng với lược đồ R

j

 

•  B2: Ở vị trí hàng i và cột j, đặt a

nếu A

j

 thuộc R

i

. Nếu không đặt b

ịj

 

•  B3: Xét mỗi PTH X

Y trong F (kể cả những PTH đã xét) 

  Tìm những hàng giống nhau ở tất cả các thuộc tính X 

  Biến đổi cho 2 hàng này bằng nhau ở các cột thuộc tính Y 

 

61 

  Nếu một trong các giá trị ở 1 cột thuộc tính trong Y là a

j

 

thì giá trị còn lại được biến thành a

j

 

  Nếu là b

ij

 và b

kj

 thì biến thành  b

ij

 hoặc b

kj

 tùy ý 

•  B4:  Nếu  không  có  sự  thay  đổi  giá  trị  nào  trong  bảng  thì  dừng,  nếu 

không quay lại B3 

•  KL:  Nếu  thu  được  1  hàng  a

1

...a

n

  chứa  toàn  a  thì  phân  rã  này  có  nối 

không mất. Ngược lại phân rã mất nối. 

Ví dụ: 

Xét R(A,B,C,D,E) phân rã thành  

R1(A,D),  R2(A,B),  R3(B,E),  R4(C,D,E)  và  R5(A,E)  F={A 

  C,  B 

  C,  C 

  D, 

DE 

 C, CE 

 A} 

 

A 

B 

C 

D 

E 

R1 

a

1

 

b

12

 

b

13

 

a

4

 

b

15

 

R2 

a

1

 

a

2

 

b

23

 

b

24

 

b

25

 

R3 

b

31

 

a

2

 

b

33

 

b

34

 

a

5

 

R4 

b

41

 

b

42

 

a

3

 

a

4

 

a

5

 

R5 

a

1

 

b

52

 

b

53

 

b

54

 

a

5

 

Xét các PTH đều ko tìm được hàng nào chứa toàn a  

KL: Phân rã mất nối 

2.3. Phân rã bảo toàn phụ thuộc hàm 

Giả sử có LĐQH R với tập PTH F và phân rã Q = {R

1

,…,R

k

}  

Phụ thuộc hình chiếu: F

i

 là hình chiếu của F trên lược đồ R

i

 là tập phụ thuộc X 

 Y 

 F

+

 sao cho XY 

 R

i

 

Ký hiệu: 

Ri

(F) 

Phân rã Q  bảo toàn phụ thuộc hàm F  nếu hợp của các phụ thuộc hình chiếu 

Ri

(F) 

với i=1,...,k khẳng định logic tất cả các phụ thuộc trong F 

Ví dụ: 

Lược đồ quan hệ R(A,B,C) 

 

62 

Tập PTH F = {A 

 B, A 

 C, B 

 C} 

Phân rã thành R

1

(A,B) và R

2

(B,C) 

Tập phụ thuộc hình chiếu T gồm: 

 B, khi chiếu trên R

1

(A,B) (1)  

 C, khi chiếu trên R

2

(B,C) (2)  

Từ (1), (2) 

 T    A 

 C (luật bắc cầu) 

Vậy phân rã trên bảo toàn phụ thuộc hàm 

Thuật toán kiểm tra X 

 Y có được suy dẫn từ tập phụ thuộc hình chiếu: 

Z = X; 

WHILE (vẫn còn những thay đổi của Z) 

For( i=1, i<=k, i++)   //Kiểm tra lần lượt trên từng phân rã 

Z = Z 

 ((Z 

 R

i

)

 R

i

)  //Bao đóng được lấy ứng với F 

Kết luận: Nếu Y là tập con của Z thì X 

 Y được suy ra từ tập phụ thuộc hình chiếu 

và Q bảo toàn F        //Kiểm tra với các PTH 

 tập phụ thuộc hình chiếu 

3. Chuẩn hóa lƣợc đồ CSDL 

3.1. Thuật toán phân rã LĐQH thành 3NF 

Thuật toán phân rã LĐQH thành 3NF 

  Bước 1: Xây dựng lược đồ có các thuộc tính không xuất hiện ở cả vế phải lẫn vế 

trái của các phụ thuộc hàm trong F. 

  Bước 2: Nếu có một phụ thuộc hàm nào của F mà liên quan tới tất cả các thuộc 

tính của R thì kết quả chính là R. 

  Bước 3:  

o  Tìm phủ tối thiểu F‟ của F o  Phép tách 

 đưa ra các lược đồ gồm các thuộc tính XA cho phụ thuộc hàm XA 

thuộc F‟, nếu XA

1

, XA

2

,..., XA

thuộc F‟ thì thay thế lược đồ XA

1

A

2

...A

cho 

các lược đồ XA

i

(1<=i<=n). 

Khi sử dụng thuật toán này để phân rã LĐQH thành 3NF thì các lược đồ thu được đã 

bảo toàn phụ thuộc hàm. 

Ví dụ: 

Cho lược đồ quan hệ R(CTHRSG) với tập phụ thuộc hàm tối thiểu F‟ = (C→T,HR 

→ C,HT → R, CS → G và HS → R) 

 

63 

Tách lược đồ quan hệ trên về dạng chuẩn 3 

Lời giải: 

B1: ko thực hiện  

B2: ko thực hiện  

B3: Phép tách để lược đồ quan hệ R về dạng chuẩn 3: 

 

 = {(R

1

(CT), C→T),   

(R

2

(CHR), HR→C),  

(R

3

(HRT), HT→R),  

(R

4

(CGS), CS → G),  

(R

5

(HRS), HS → R)} 

3.2. Thuật toán phân rã LĐQH thành BCNF  

Thuật toán phân rã LĐQH thành BCNF 

  B1: Phép tách ρ chỉ bao gồm R.   B2: Nếu S là một lược đồ thuộc ρ và S chưa ở dạng BCNF thì chọn PTH X → A 

thỏa  trong  S,  trong  đó  X  không  chứa  khóa  của  S  và  A 

∉  X. (phụ thuộc hàm vi 

phạm định nghĩa dạng chuẩn BCNF). 

Thay thế S trong ρ bởi S1 và S2 như sau: S1 = XA, S2 = S-A. 

Quá trình trên tiếp tục cho đến khi tất cả các lược đồ quan hệ đều ở dạng BCNF 

 

Chú ý:  

Khi sử dụng thuật toán này để phân rã LĐQH thành BCNF thì các lược đồ thu được 

đã đảm bảo kết nối không mất mát thông tin. 

Ví dụ: 

Cho lược đồ quan hệ R(CTHRSG). 

C: Course; T: Teacher; H: Hour; R: Room; S: Student; G:Group) 

Và tập các phụ thuộc hàm F: 

C → T: Mỗi khoá học (course) có một thầy (teacher) duy nhất. 

HR →C: Tại một thời điểm (Hour) ở tại phòng học (room) chỉ có một khoá học duy 

nhất. 

HT→ R: Tại một thời điểm và một giáo viên chỉ ở một phòng duy nhất 

CS→G: Một sinh viên học một course thì chỉ ở một lớp duy nhất. 

 

64 

HS → R: Một sinh viên, ở một thời điểm nhất định chỉ ở trong một phòng duy nhất. 

Yêu cầu: Tách lược đồ R thành các lược đồ con ở dạng BCNF  

Lời giải: 

 

Vậy, 

 = {R

1

(CSG, {CS → G}, Khóa: CS),  

R

2

(CT, {C → T}, Khóa: C) 

R

3

(CHR, {HR → C, CH → R}, Khóa: HR,CH) 

R

4

(CHS, {HS → C}, Khóa: HS)} là phép tách về dạng chuẩn BCNF