You are on page 1of 170

BÀI GIẢNG

CƠ SỞ DỮ LIỆU
1. Giới thiệu môn học

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 1/6
Nội dung môn học

Lý thuyết (30 tiết):


Các khái niệm cơ bản về hệ cơ sở dữ liệu
Mô hình thực thể-liên kết (mô hình ER)
Mô hình quan hệ và đại số quan hệ
Phụ thuộc hàm và chuẩn hóa cơ sở dữ liệu quan hệ
Thực hành (30 tiết): Ngôn ngữ SQL

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 2/6
Các mốc thời gian (tuần)

Kết thúc
học thực
hành

Kết thúc
học lý
thuyết

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Bắt đầu
học lý
thuyết

Bắt đầu
học thực
hành

Thi kết
thúc môn
học

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 3/6
Hình thức thi và kiểm tra

Kiểm tra thực hành khi kết thúc môn thực hành (tuần 14 hoặc 15, do
giảng viên thực hành qui định)
Thi lý thuyết (theo lịch của phòng đào tạo)
Điểm môn học = 0.4×điểm thực hành + 0.6×điểm lý thuyết
Sinh viên được sử dụng tài liệu khi thi lý thuyết:
Làm bài thi giấy, hoặc
Thi trên máy tính

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 4/6
Giáo trình và tài liệu tham khảo

Nguyễn Tuệ, Giáo trình nhập môn hệ cơ sở dữ liệu1 , Nhà xuất


bản giáo dục (tái bản lần thứ nhất), 2009.
Vũ Bá Duy, Dư Phương Hạnh, Lê Hồng Hải, Bài giảng thực
hành cơ sở dữ liệu, Trường Đại học Công nghệ, 2012.
Ramez A. Elmasri, Shamkant Navathe, Fundamentals of Database
Systems, 7th edition, John Wiley & Sons, Inc., 2016.
A. Silberschatz, H. F. Korth, S. Sudarshan, Database system
concepts, 7th edition, McGraw Hill Education, 2011.
H. Garcia-Molina, J. Ullman, J. Widom, Database Systems: The
complete book, 2nd edition, Pearson Education Limited, 2014.
C. J. Date, An introduction to database systems, 7th edition, Addison
Wesley Longman, Inc., 2000.
1 . . . . . . . . . . . . . . . . . . . .
Bản scan có tại địa chỉ http://bit.ly/32pi0cZ . . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 5/6
Giáo trình và tài liệu tham khảo

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 6/6
BÀI GIẢNG
CƠ SỞ DỮ LIỆU
2. Dữ liệu và cơ sở dữ liệu

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Dữ liệu và CSDL https://bit.ly/2zhe043 1/5


Dữ liệu

Dữ liệu là những gì chúng ta biết có thể ghi lại được và có ý nghĩa


(By data, we mean known facts that can be recorded and that have
implicit meaning - Elmasri, Navathe).
Ví dụ:
Dữ liệu về nhân viên, quá trình công tác và chuyên môn trong một
công ty
Dữ liệu về thời tiết, khí hậu
Dữ liệu về công dân của một quốc gia

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Dữ liệu và CSDL https://bit.ly/2zhe043 2/5


Cơ sở dữ liệu

Một cơ sở dữ liệu (database) là một tập hợp dữ liệu có liên quan với
nhau, được lưu trữ trên máy tính, có nhiều người sử dụng và được tổ
chức theo một mô hình.
Ví dụ cơ sở dữ liệu SOHUUOTO có các bảng:
CONGDAN: thông tin về công dân có thể sở hữu xe ô tô
OTO: thông tin về ô tô
SOHUU: thông tin về sở hữu ô tô của công dân

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Dữ liệu và CSDL https://bit.ly/2zhe043 3/5


Ví dụ: Cơ sở dữ liệu sở hữu xe ô tô
Số CMND Họ tên Ngày sinh Giới tính
1 Đỗ Nam Trung 1990-06-07 Nam
2 Nguyễn Đông Anh 1991-02-10 Nam
3 Trần Thu Ngân 1995-10-17 Nữ
4 Hoàng Vũ 1980-01-01 Nam
5 Lê Quỳnh Chi 2000-10-10 Nữ

Biển số Số máy Số khung Số chỗ Nhãn hiệu Màu sơn


BS1 1 3 5 Honda Đen
BS2 5 9 5 Mazda Đỏ
BS3 3 2 2 Hyundai Xám
BS4 10 7 7 Toyota Vàng

Số CMND Biển số Ngày sở hữu


1 BS1 2020-01-01
1 BS4 2019-06-09
3 BS3 2016-07-09
2 BS2 2018-01-20
5 BS3 2016-07-09
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Dữ liệu và CSDL https://bit.ly/2zhe043 4/5
Các tính chất của một cơ sở dữ liệu (CSDL)

Một CSDL biểu thị một khía cạnh nào đó của thế giới thực. Thông
tin được đưa vào trong CSDL tạo thành một không gian CSDL hoặc
một “thế giới nhỏ” (miniworld)
Một cơ sở dữ liệu được thiết kế và được phổ biến cho một mục đích
riêng
Một cơ sở dữ liệu là một tập hợp dữ liệu liên kết với nhau một cách
logic và mang một ý nghĩa nào đó.
Một CSDL không phải là một tập hợp dữ liệu tùy tiện.

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Dữ liệu và CSDL https://bit.ly/2zhe043 5/5


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
3. Hệ quản trị cơ sở dữ liệu

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Hệ quản trị CSDL https://bit.ly/3hi2Ihp 1/6


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

Một hệ quản trị cơ sở dữ liệu (Database management system –


DBMS) là một tập hợp các chương trình giúp cho người sử dụng tạo
ra, duy trì và khai thác CSDL một cách dễ dàng:
Định nghĩa CSDL: Đặc tả các kiểu dữ liệu, các cấu trúc và các ràng
buộc
Xây dựng CSDL: là quá trình lưu trữ dữ liệu trên các phương tiện lưu
trữ được hệ quản trị CSDL kiểm soát
Thao tác trên CSDL: truy vấn CSDL, cập nhật dữ liệu và tạo ra các
báo cáo
Các hệ quản trị CSDL có thể là phổ dụng hoặc chuyên dụng
Hệ cơ sở dữ liệu (database systems) = Cơ sở dữ liệu + hệ
quản trị cơ sở dữ liệu

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Hệ quản trị CSDL https://bit.ly/3hi2Ihp 2/6


Chức năng của một hệ quản trị cơ sở dữ liệu

1 Lưu trữ các định nghĩa, các mối liên kết dữ liệu (gọi là siêu dữ liệu -
metadata) vào trong một từ điển dữ liệu
2 Tạo ra các cấu trúc phức tạp theo yêu cầu để lưu trữ dữ liệu
3 Biến đổi các dữ liệu được nhập vào để phù hợp với các cấu trúc dữ
liệu ở điểm trên
4 Tạo ra một hệ thống bảo mật và áp đặt tính bảo mật và riêng tư
trong cơ sở dữ liệu
5 Tạo ra các cấu trúc phức tạp cho phép nhiều người sử dụng truy cập
đến dữ liệu
6 Cung cấp các thủ tục sao lưu và phục hồi dữ liệu để đảm bảo sự an
toàn và toàn vẹn dữ liệu
7 Thực hiện các quy tắc an toàn để đảm bảo toàn vẹn dữ liệu
8 Cung cấp việc truy cập dữ liệu thông qua một ngôn ngữ truy vấn

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Hệ quản trị CSDL https://bit.ly/3hi2Ihp 3/6


Ngôn ngữ và giao diện cơ sở dữ liệu

Các ngôn ngữ của hệ quản trị cơ sở dữ liệu:


Ngôn ngữ định nghĩa dữ liệu (data definition language – DDL):
Dùng để định nghĩa các lược đồ
Ngôn ngữ thao tác dữ liệu (data manipulation language – DML):
Dùng để thao tác cơ sở dữ liệu
Các loại giao diện hệ quản trị cơ sở dữ liệu
Giao diện dựa trên bảng chọn (Menu)
Giao diện dựa trên mẫu biểu
Giao diện đồ hoạ (Graphic User Interface - GUI)
Giao diện cho người quản trị hệ thống

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Hệ quản trị CSDL https://bit.ly/3hi2Ihp 4/6


Con người và cơ sở dữ liệu

Người thiết kế và cài đặt hệ quản trị dữ liệu


Người thiết kế cơ sở dữ liệu (Database Designer)
Người phân tích hệ thống và lập trình ứng dụng
Người quản trị hệ cơ sở dữ liệu (Database Administrator – DBA)
Người vận hành
Người bảo trì
Người sử dụng (End User)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Hệ quản trị CSDL https://bit.ly/3hi2Ihp 5/6


Các đặc trưng của giải pháp cơ sở dữ liệu

Khả năng tự mô tả của hệ cơ sở dữ liệu


Tính độc lập của chương trình và dữ liệu
Hỗ trợ nhiều khung nhìn khác nhau đối với dữ liệu
Cho phép nhiều người sử dụng đồng thời trên một CSDL

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Hệ quản trị CSDL https://bit.ly/3hi2Ihp 6/6


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
4. Mô hình và lược đồ cơ sở dữ liệu

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình CSDL https://bit.ly/3cPeOLa 1/4


Định nghĩa mô hình cơ sở dữ liệu

Một mô hình cơ sở dữ liệu là một tập hợp các khái niệm dùng để
biểu diễn các cấu trúc của cơ sở dữ liệu
Một số mô hình CSDL còn có thêm một tập hợp các phép toán cơ
bản để đặc tả các thao tác trên CSDL

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình CSDL https://bit.ly/3cPeOLa 2/4


Các loại mô hình cơ sở dữ liệu

Các mô hình dữ liệu bậc cao hoặc mô hình dữ liệu mức quan
niệm cung cấp các khái niệm gắn liền với cách cảm nhận dữ liệu của
nhiều người sử dụng
Các mô hình dữ liệu bậc thấp hoặc các mô hình dữ liệu vật lý
cung cấp các khái niệm mô tả chi tiết về việc dữ liệu được lưu trữ
trong máy tính như thế nào
Các mô hình dữ liệu thể hiện (mô hình dữ liệu mức logic) cung
cấp những khái niệm mà người sử dụng có thể hiểu được, đồng thời
không xa với cách tổ chức dữ liệu bên trong máy tính
Mô hình quan hệ là một trong các mô hình dữ liệu mức logic được
sử dụng nhiều nhất hiện nay
Một số mô hình dữ liệu khác: mô hình dữ liệu đồ thị (graph database
model), mô hình dữ liệu địa lý (geographical database model)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình CSDL https://bit.ly/3cPeOLa 3/4


Lược đồ và trạng thái cơ sở dữ liệu

Mô tả của một cơ sở dữ liệu được gọi là lược đồ cơ sở dữ liệu, nó


được xác định rõ trong quá trình thiết kế cơ sở dữ liệu và không bị
thay đổi thường xuyên
Các dữ liệu trong một cơ sở dữ liệu tại một thời điểm cụ thể được gọi
là một trạng thái cơ sở dữ liệu hoặc là ảnh (snapshot) của cơ sở dữ
liệu
Trạng thái CSDL thường xuyên thay đổi trong quá trình sử dụng
CSDL
Cần phải phân biệt rõ giữa mô tả của cơ sở dữ liệu và bản thân cơ sở
dữ liệu

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình CSDL https://bit.ly/3cPeOLa 4/4


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
5. Mô hình thực thể-liên kết mở rộng

Nguyễn Hải Châu


Email: chaunh@vnu.edu.vn

Trường Đại học Công nghệ


Đại học Quốc gia Hà Nội

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 1 / 19


Mô hình thực thể-liên kết mở rộng

Mô hình thực thể liên kết mở rộng (Enhanced Entity-Relationship -


EER) là mở rộng của mô hình ER nhằm mô hình hóa ngữ nghĩa của
dữ liệu
Mô hình EER có khả năng mô tả các yêu cầu của dữ liệu bằng sơ đồ
- gọi là sơ đồ EER
Mô hình EER bao gồm tất cả các khái niệm của mô hình ER và các
khái niệm mở rộng:
Lớp cha (superclass), lớp con (subclass) và các khái niệm liên quan:
chuyên biệt hóa (specialization) và tổng quát hóa (generalization)
Kiểu hợp (union) hoặc phân loại (category)
Thừa kế thuộc tính và liên kết (attribute and relationship inheritance)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 2 / 19


Lớp con, lớp cha

Trong nhiều trường hợp một kiểu thực thể có nhiều kiểu con
(subtype) hoặc lớp con (subclass) cần phải biểu diễn rõ ràng
Ví dụ: các thực thể trong kiểu thực thể NHANVIEN có thể được
phân biệt thành các nhóm nhỏ hơn như THUKY, KYSU,
KYTHUATVIEN; BIENCHE, HOPDONG...
Các nhóm trên được gọi là một lớp con hay kiểu con của kiểu thực
thể NHANVIEN và NHANVIEN là kiểu cha hay lớp cha của các lớp
con đó
Chúng ta gọi liên kết giữa một lớp cha và các lớp con của nó là liên
kết lớp (kiểu) cha/con
Một thực thể không thể tồn tại ở dạng một lớp con độc lập mà phải
có lớp cha
Một thực thể có thể thuộc một hoặc nhiều lớp con, ví dụ: một kỹ sư
có thể thuộc hai lớp con KYSU và HOPDONG

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 3 / 19


Thừa kế

Một thực thể thuộc một lớp con thừa kế tất cả các thuộc tính của
lớp cha và tham gia vào liên kết của lớp cha
Một thực thể ở lớp con là một thực thể độc lập
Kiểu liên kết lớp cha/lớp con có tỷ số lực lượng 1:1

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 4 / 19


Chuyên biệt hóa

Chuyên biệt hóa (specialization) là quá trình xác định một tập các lớp
con của một kiểu thực thể E ; E được gọi là lớp cha của chuyên biệt
hóa
Ví dụ:
THUKY, KYSU, KYTHUATVIEN là chuyên biệt hóa của lớp cha
NHANVIEN căn cứ vào loại công việc
BIENCHE, HOPDONG là là một chuyên biệt hóa khác của
NHANVIEN căn cứ vào cách trả công
Quá trình chuyên biệt hóa cho phép:
Xác định một tập các lớp con của một kiểu thực thể
Thiết lập các thuộc tính riêng của mỗi lớp con
Thiết lập các kiểu liên kết riêng của mỗi lớp con với các kiểu thực thể
hoặc các lớp con khác

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 5 / 19


Ví dụ: chuyên biệt hóa

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 6 / 19


Tổng quát hóa

Tổng quát hóa (generalization) là quá trình ngược với chuyên biệt hóa
Xác định các đặc điểm chung của một số kiểu thực thể đã tồn tại
E1 , E2 , ..., En và tổng quát hóa chúng thành một lớp cha (mới) E
E có các lớp con là E1 , E2 , ..., En

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 7 / 19


Ví dụ: tổng quát hóa

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 8 / 19


Phân cấp chuyên biệt hóa và dàn chuyên biệt hóa

Một lớp con có thể có các lớp con → hình thành phân cấp
(hierarchy) hoặc dàn (lattice) chuyên biệt hóa
Nếu mỗi lớp con chỉ tham gia vào một liên kết cha/con với vai trò lớp
con (tức là lớp con đó chỉ có một lớp cha), ta có phân cấp chuyên
biệt hóa
Ngược lại, nếu lớp con tham gia vào hai liên kết cha/con trở lên với
vai trò lớp con, ta có dàn chuyên biệt hóa
Một lớp con có từ hai lớp cha trở lên được gọi là lớp con chung
(shared subclass) → thừa kế bội / dàn
Nếu không tồn tại lớp con chung nào: thừa kế đơn / phân cấp

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 9 / 19


Ví dụ: lớp con chung

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 10 / 19


Ví dụ: dàn chuyên biệt hóa

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 11 / 19


Các ràng buộc của chuyên biệt hóa/tổng quát hóa

Trong một số chuyên biệt hóa, có thể xác định chính xác các thực thể
sẽ là thành viên của một lớp con bằng một điều kiện trên một số
thuộc tính của lớp cha: các lớp con xác định bằng điều kiện
Nếu các lớp con của một chuyên biệt hóa có điều kiện thành viên trên
cùng một thuộc tính của lớp cha thì chuyên biệt hóa đó còn được gọi
là chuyên biệt hóa xác định bằng thuộc tính
Nếu việc xác định một lớp con không thực hiện được theo một điều
kiện nào: các lớp con được người sử dụng xác định

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 12 / 19


Ví dụ: chuyên biệt hóa xác định bằng thuộc tính

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 13 / 19


Các ràng buộc của chuyên biệt hóa/tổng quát hóa

Có hai loại ràng buộc khác áp dụng cho chuyên biệt hóa:
Ràng buộc rời rạc: Ràng buộc này được thỏa mãn khi mỗi thực thể chỉ
là thành viên của nhiều nhất một lớp con, ngược lại mỗi thực thể có
thể thuộc vào hai lớp con trở lên
Ràng buộc đầy đủ: Ràng buộc này được thỏa mãn khi mỗi thực thể
của lớp cha phải thuộc vào một lớp con nào đó, ngược lại sẽ có một số
thực thể của lớp cha không thuộc bất kỳ lớp con nào
Hai loại ràng buộc rời rạc và đầy đủ là độc lập với nhau

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 14 / 19


Ví dụ: chuyên biệt hóa không rời rạc

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 15 / 19


Kiểu hợp (kiểu phân loại)

Trong một số bài toán, ta cần biểu diễn một tập thực thể từ các kiểu
thực thể khác nhau
Khi đó một lớp con sẽ biểu diễn một tập thực thể là tập con của hợp
của các loại thực thể khác nhau
Các lớp con như vậy được gọi là lớp con của kiểu hợp (union) hay
kiểu phân loại (category)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 16 / 19


Ví dụ: kiểu hợp

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 17 / 19


Các ký hiệu dùng trong sơ đồ EER (1)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 18 / 19


Các ký hiệu dùng trong sơ đồ EER (2)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình EER 19 / 19


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
5. Mô hình thực thể-liên kết: các khái niệm

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 1 / 20


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

Mô hình thực thể-liên kết (Entity-Relationship, viết tắt ER) là


một mô hình dữ liệu mức quan niệm nhằm mô tả các đối tượng trong
thế giới thực và quan hệ giữa chúng
Thực thể là một đối tượng trong thế giới thực, có sự tồn tại độc lập:
Thực thể cụ thể: có thể cảm nhận bằng giác quan, ví dụ xe đạp, bàn,
ghế
Thực thể trừu tượng: có thể nhận biết bằng nhận thức, ví dụ công ty,
trường học

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 2 / 20


Thuộc tính của thực thể

Mỗi một thực thể có các thuộc tính, đó là các đặc trưng cụ thể mô
tả thực thể đó; chẳng hạn màu sơn của xe ô tô, số nhân viên một
công ty là các thuộc tính
Phân loại các thuộc tính:
Thuộc tính đơn là thuộc tính không thể phân chia ra được thành các
thành phần nhỏ hơn
Thuộc tính phức hợp là thuộc tính có thể phân chia được thành các
thành phần nhỏ hơn, biểu diễn các thuộc tính cơ bản hơn với các ý
nghĩa độc lập
Những thuộc tính có giá trị duy nhất cho một thực thể cụ thể gọi là
các thuộc tính đơn trị
Một thuộc tính có thể có một tập giá trị cho cùng một thực thể:
thuộc tính đa trị

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 3 / 20


Thuộc tính của thực thể

Thuộc tính có giá trị có thể tính được thông qua giá trị của các
thuộc tính khác gọi là thuộc tính suy diễn được
Trong một số trường hợp, một số thuộc tính của một thực thể cụ thể
không xác định được giá trị. Trong trường hợp như vậy, ta phải tạo ra
một giá trị đặc biệt gọi là giá trị null. Các thuộc tính nói trên là
thuộc tính có thể nhận giá trị null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 4 / 20


Thuộc tính của kiểu thực thể: định nghĩa hình thức

Một thuộc tính A có tập giá trị V của kiểu thực thể E là một hàm
A : E → P(V ),
trong đó P(V ) = {S, S ⊆ V } là tập hợp tất cả các tập con của V .
P(V ) còn được gọi là tập lực lượng của V .
Ký hiệu giá trị của thuộc tính A với thực thể e là A(e)
Định nghĩa trên đúng cho các thuộc tính đơn, đa trị và thuộc tính có
thể nhận giá trị null
Với các thuộc tính đơn trị, A(e) có duy nhất một phần tử
Với các thuộc tính có thể nhận giá trị null, A(e) là tập rỗng

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 5 / 20


Kiểu thực thể và tập thực thể

Một kiểu thực thể là một nhóm các thực thể có các thuộc tính như
nhau được mô tả bằng tên và các thuộc tính. Ví dụ: NHÂNVIÊN
(Họtên, Tuổi, Lương) là một kiểu thực thể
Một tập hợp các thực thể của một kiểu thực thể trong cơ sở dữ liệu
tại một thời điểm bất kỳ được gọi là một tập thực thể

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 6 / 20


Khóa và tập giá trị

Thuộc tính mà các giá trị của nó là khác nhau đối với mỗi thực thể
riêng biệt trong một tập thực thể gọi là thuộc tính khóa → khóa
dùng để phân biệt hai thực thể
Nhiều thuộc tính kết hợp với nhau tạo thành một khóa phức hợp.
Khóa phức hợp phải tối thiểu
Một kiểu thực thể có thể có nhiều hơn một khóa
Kiểu thực thể không có khóa gọi là kiểu thực thể yếu
Mỗi thuộc tính đơn của một kiểu thực thể được kết hợp với một
miền giá trị

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 7 / 20


Kiểu liên kết, tập liên kết và các thể hiện

Liên kết mô tả mối liên quan, quan hệ của các thực thể
Một kiểu liên kết R của n kiểu thực thể E1 , E2 , . . . , En là một quan
hệ toán học trên E1 , E2 , . . . , En hay R ⊆ E1 × E2 × . . . × En với Ei là
các kiểu thực thể ∀i
Một kiểu liên kết R giữa n kiểu thực thể E1 , E2 , . . . , En xác định một
tập liên kết giữa các thực thể của các kiểu đó tại một thời điểm bất
kỳ
Tập liên kết R = {ri , i = 1, n} trong đó:
mỗi ri (được gọi là một thể hiện liên kết) liên kết n thực thể riêng biệt
e1 , e2 , . . . , en , và
mỗi một thực thể ej là một thành phần của kiểu thực thể Ej , 1 ≤ j ≤ n
và có mặt trong thể hiện liên kết ri

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 8 / 20


Kiểu liên kết, tập liên kết và các thể hiện

Mỗi kiểu thực thể E1 , E2 , . . . , En được gọi là tham gia vào kiểu liên
kết R, và tương tự, mỗi thực thể riêng biệt e1 , e2 , . . . , en được gọi là
tham gia vào thể hiện liên kết ri = (e1 , e2 , . . . , en )

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 9 / 20


Ví dụ thể hiện liên kết

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 10 / 20


Cấp liên kết, tên vai trò và kiểu liên kết đệ qui

Cấp của một kiểu liên kết là số các kiểu thực thể tham gia vào
kiểu liên kết đó.
Tên vai trò dùng để chỉ rõ vai trò của các kiểu thực thể tham gia
liên kết
Trong nhiều trường hợp, các vai trò là rõ ràng và không cần chỉ ra
Khi một kiểu thực thể có thể tham gia vào một kiểu liên kết với nhiều
vai trò khác nhau, tên vai trò là cần thiết để phân biệt ý nghĩa của
việc tham gia. Các kiểu liên kết như vậy gọi là kiểu liên kết đệ quy

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 11 / 20


Ví dụ thể hiện liên kết cấp 3

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 12 / 20


Ví dụ thể hiện liên kết đệ qui

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 13 / 20


Các ràng buộc trên các kiểu liên kết

Các kiểu liên kết thường có một số ràng buộc để chỉ ra số tổ hợp có thể
của các thực thể tham gia trong tập hợp các thể hiện liên kết. Có hai loại
ràng buộc chính:
Tỷ số lực lượng
Sự tham gia

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 14 / 20


Ràng buộc tỷ số lực lượng

Tỷ số lực lượng cho một kiểu liên kết chỉ ra số các thể hiện liên kết
mà một thực thể có thể tham gia.
Với các kiểu liên kết cấp 2, có thể ba kiểu tỷ số lực lượng 1 : 1, 1 : N,
và M : N

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 15 / 20


Ràng buộc tham gia

Các ràng buộc tham gia và sự phụ thuộc tồn tại: các thực thể của
một kiểu thực thể có phải tham toàn bộ vào các thể hiện liên kết hay
không. Có hai kiểu ràng buộc tham gia:
Ràng buộc tham gia toàn bộ (phụ thuộc tồn tại)
Ràng buộc tham gia bộ phận

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 16 / 20


Ví dụ: Ràng buộc tỷ số lực lượng và tham gia

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 17 / 20


Ví dụ: Ràng buộc tỷ số lực lượng và tham gia

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 18 / 20


Thuộc tính của các kiểu liên kết

Các kiểu liên kết cũng có các thuộc tính, giống như các thuộc tính
của các kiểu thực thể
Ví dụ: Kiểu liên kết LAMVIEC giữa các thực thể NHANVIEN và
DUAN có thể có thuộc tính SoGio, để ghi lại số giờ làm việc của một
nhân viên trên một dự án

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 19 / 20


Cách xác định kiểu thực thể yếu

Các kiểu thực thể không có thuộc tính khóa được gọi là kiểu thực thể
yếu (W )
Các kiểu thực thể có thuộc tính khóa được gọi là kiểu thực thể mạnh
Các thực thể của một kiểu thực thể yếu được xác định (phân biệt)
bằng cách liên kết với các thực thể của một kiểu thực thể mạnh (S)
khác
Kiểu thực thể mạnh S còn được gọi là kiểu thực thể chủ của W
Ví dụ: TREEM là một kiểu thực thể yếu, cần được xác định dựa vào
kiểu thực thể chủ NHANVIEN với liên kết CON

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình ER (1) https://bit.ly/3kLZAvX 20 / 20


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
7. Mô hình quan hệ: Các khái niệm

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 1 / 16


Miền, lược đồ quan hệ

Một miền D (hoặc miền giá trị) là một tập hợp các giá trị nguyên tố:
mỗi giá trị trong miền là không thể phân chia được
Để đặc tả một miền, người ta chỉ ra một tên, một kiểu dữ liệu và
khuôn dạng dữ liệu, ví dụ:
Miền D1 : kiểu dữ liệu số nguyên có dấu 16 bit
Miền D2 : kiểu dữ liệu nhãn thời gian (timestamp: 2020-03-07 10:01:30)
Miền D3 : kiểu dữ liệu chuỗi ký tự có độ dài nhỏ hơn 32
Một lược đồ quan hệ R, ký hiệu là R(A1 , A2 , ..., An ), được tạo nên
từ một tên R và một danh sách các thuộc tính A1 , A2 , . . . , An với
Dom(Ai ) là miền giá trị của Ai

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 2 / 16


Quan hệ, cấp của quan hệ

Một quan hệ (hoặc trạng thái quan hệ) của lược đồ quan hệ
R(A1 , A2 , . . . , An ) được ký hiệu là r (R), là tập hợp
r (R) = {t1 , t2 , ..., tm }, trong đó mỗi ti được gọi là một n-bộ:
Mỗi n-bộ t =< v1 , v2 , . . . , vn > là một danh sách có thứ tự của n giá
trị vi , i = 1, n, trong đó mỗi vi , 1 ≤ i ≤ n, là một phần tử của
Dom(Ai ) hoặc là một giá trị không xác định null
Giá trị thứ i của bộ t được ký hiệu là t[Ai ]: t[Ai ] = vi
Hai bộ t, s trong r (R) được định nghĩa là bằng nhau t = s khi và chỉ
khi t[Ai ] = s[Ai ]∀i = 1, n
Cấp (hoặc ngôi) của một quan hệ là số các thuộc tính của lược đồ
quan hệ của nó
Cấp của lược đồ quan hệ R chúng ta đang xem xét là n

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 3 / 16


Ví dụ: Lược đồ quan hệ và quan hệ

Lược đồ quan hệ CONGDAN(SoCMND, HoTen, NgaySinh, GioiTinh)


Miền của các thuộc tính của lược đồ quan hệ CONGDAN:
Dom(SoCMND) = {Số tự nhiên có ít hơn 13 chữ số}
Dom(HoTen) = {Chuỗi ký tự độ dài nhỏ hơn 32},
Dom(NgaySinh) = Date và
Dom(GioiTinh) = {’Nam’, ’Nữ’}
Quan hệ r1 (CONGDAN) của lược đồ quan hệ CONGDAN:
SoCMND HoTen NgaySinh GioiTinh
1 Đỗ Nam Trung 1990-06-07 Nam
2 Nguyễn Đông Anh 1991-02-10 Nam
3 Trần Thu Ngân 1995-10-17 Nữ
4 Hoàng Vũ 1980-01-01 Nam
5 Lê Quỳnh Chi 2000-10-10 Nữ
t1 [SoCMND] = 1, t1 [SoCMND, HoTen] =< 1, Đỗ Nam Trung >,
t3 [HoTen, NgaySinh, GioiTinh] =< Trần Thu Ngân, 1995-10-17, Nữ >
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 4 / 16
Siêu khóa và khóa của lược đồ quan hệ

Một siêu khoá SK là một tập các thuộc tính của R thỏa mãn:
Không có hai bộ khác nhau trong một trạng thái r (R) có cùng một giá
trị cho SK , hay nói cách khác:
∀ti , tj ∈ r (R), i 6= j; ti 6= tj thì ti [SK ] 6= tj [SK ]
Một khóa K là một siêu khóa tối thiểu, nghĩa là nếu bỏ đi một tập
con S bất kỳ của K , K sẽ không còn là siêu khóa nữa:
K \ S không là siêu khóa ∀S ⊂ K

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 5 / 16


Ví dụ siêu khóa và khóa

Lược đồ quan hệ CONGDAN(SoCMND, HoTen, NgaySinh, GioiTinh):


Siêu khóa: SK = {SoCMND, HoTen, NgaySinh}
Khóa: K = {SoCMND}
Chỉ ra khóa trong lược đồ quan hệ:
CONGDAN(SoCMND, HoTen, NgaySinh, GioiTinh)
Một lược đồ quan hệ có thể có nhiều siêu khóa và nhiều khóa

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 6 / 16


Khóa ngoài của lược đồ quan hệ

Một tập hợp thuộc tính FK1 trong lược đồ quan hệ R1 là một khoá
ngoài của R1 tham chiếu đến lược đồ quan hệ R2 nếu nó thoả mãn
các điều kiện sau:
1 Các thuộc tính trong FK1 có cùng miền giá trị với các thuộc tính của
khoá chính PK2 trong R2 .
2 Giả sử t1 là một bộ bất kỳ của r1 (R1 ). Khi đó:
t1 [FK1 ] nhận giá trị null, hoặc
∃t2 ∈ r2 (R2 ) : t1 [FK1 ] = t2 [PK2 ]. Khi đó ta nói bộ t1 tham chiếu đến
bộ t2
R1 được gọi là lược đồ quan hệ tham chiếu và R2 được gọi là lược đồ
quan hệ bị tham chiếu
Tập FK1 được gọi là tập thuộc tính tham chiếu đến lược đồ quan hệ
R2

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 7 / 16


Ví dụ khóa ngoài: Lược đồ quan hệ

Xét lược đồ quan hệ VATNUOI(Loai, MauLong, SoCMNDChu), trong


đó miền của Loai và MauLong là chuỗi ký tự có độ dài nhỏ hơn 20,
SoCMNDChu là tập số tự nhiên có ít hơn 13 chữ số
SoCMND là khóa chính của lược đồ quan hệ CONGDAN
SoCMNDChu là khóa ngoài của lược đồ quan hệ VATNUOI tham
chiếu đến SoCMND là khóa chính của lược đồ quan hệ CONGDAN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 8 / 16


Ví dụ khóa ngoài: Trạng thái quan hệ

Quan hệ r1 (CONGDAN) (bị tham chiếu):


SoCMND HoTen NgaySinh GioiTinh
1 Đỗ Nam Trung 1990-06-07 Nam
2 Nguyễn Đông Anh 1991-02-10 Nam
3 Trần Thu Ngân 1995-10-17 Nữ
4 Hoàng Vũ 1980-01-01 Nam
5 Lê Quỳnh Chi 2000-10-10 Nữ
Quan hệ r2 (VATNUOI) (tham chiếu):
Loai MauLong SoCMNDChu
Mèo đen-trắng 1
Chó Trắng 3
Chó Vàng null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 9 / 16


Ví dụ khóa ngoài: Trạng thái quan hệ

SoCMND HoTen NgaySinh GioiTinh


1 Đỗ Nam Trung 1990-06-07 Nam
2 Nguyễn Đông Anh 1991-02-10 Nam
3 Trần Thu Ngân 1995-10-17 Nữ
4 Hoàng Vũ 1980-01-01 Nam
5 Lê Quỳnh Chi 2000-10-10 Nữ

Loai MauLong SoCMNDChu Giải thích


Mèo đen-trắng 1 Đỗ Nam Trung
Chó Trắng 3 Trần Thu Ngân
Chó Vàng null null
Không đúng với định
Mèo Tam thể 10
nghĩa khóa ngoài

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 10 / 16


Các ràng buộc quan hệ

Các ràng buộc miền: Các ràng buộc miền chỉ ra rằng giá trị của mỗi
thuộc tính A phải là một giá trị nguyên tố thuộc miền giá trị Dom(A)
Ràng buộc khóa: Với hai bộ khác nhau bất kỳ t1 và t2 trong một
trạng thái quan hệ r của R chúng ta có ràng buộc là t1 [SK ] 6= t2 [SK ]
Ràng buộc trên giá trị không xác định chỉ ra khi nào miền giá trị của
một thuộc tính được phép chứa giá trị null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 11 / 16


Cơ sở dữ liệu quan hệ và lược đồ cơ sở dữ liệu quan hệ

Một lược đồ cơ sở dữ liệu quan hệ S là một tập hợp các lược đồ


quan hệ S = {R1 , R2 , . . . , Rn } và một tập các ràng buộc toàn vẹn C
Một trạng thái cơ sở dữ liệu quan hệ (hoặc một cơ sở dữ liệu
quan hệ) DB(S) là một tập hợp các trạng thái quan hệ
DB(S) = {r1 , r2 , . . . , rn } sao cho mỗi ri là một trạng thái của Ri và
sao cho các trạng thái quan hệ ri thoả mãn các ràng buộc toàn vẹn
chỉ ra trong C

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 12 / 16


Các ràng buộc toàn vẹn

Các ràng buộc toàn vẹn bao gồm:


Ràng buộc toàn vẹn thực thể được phát biểu là: khoá chính phải
luôn luôn có giá trị xác định, nghĩa là không được phép có giá trị null
Ràng buộc toàn vẹn tham chiếu được phát biểu là: một bộ giá trị
trong một quan hệ có tham chiếu đến một quan hệ khác phải tham
chiếu đến một bộ giá trị tồn tại trong quan hệ đó, hoặc nhận các giá
trị null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 13 / 16


Ví dụ lược đồ cơ sở dữ liệu quan hệ

Lược đồ cơ sở dữ liệu S:
Tập các lược đồ quan hệ:
S = {CONGDAN(SoCMND, HoTen, NgaySinh, GioiTinh),
VATNUOI = (Loai, MauLong, SoCMNDChu)}
Tập các ràng buộc toàn vẹn C = {C1 , C2 }:
Ràng buộc toàn vẹn thực thể C1 : thuộc tính SoCMND là khóa chính
của CONGDAN, không được nhận giá trị null
Ràng buộc toàn vẹn tham chiếu C2 : thuộc tính SoCMNDChu là khóa
ngoài của VATNUOI tham chiếu đến khóa chính SoCMND của
CONGDAN; các giá trị của thuộc tính SoCMNDChu phải tham chiếu
đến một giá trị có trong SoCMND của quan hệ r1 (CONGDAN) hoặc là
null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 14 / 16


Ví dụ cơ sở dữ liệu quan hệ 1

Cơ sở dữ liệu (hoặc trạng thái cơ sở dữ liệu) DB1 (S):


Các trạng thái quan hệ:
SoCMND HoTen NgaySinh GioiTinh
1 Đỗ Nam Trung 1990-06-07 Nam
2 Nguyễn Đông Anh 1991-02-10 Nam
3 Trần Thu Ngân 1995-10-17 Nữ
4 Hoàng Vũ 1980-01-01 Nam
5 Lê Quỳnh Chi 2000-10-10 Nữ
Loai MauLong SoCMNDChu
Mèo đen-trắng 1
Chó Trắng 3
Chó Vàng null
Trạng thái DB1 (S) thỏa mãn các ràng buộc toàn vẹn thực thể C1 và
ràng buộc toàn vẹn tham chiếu C2

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 15 / 16


Ví dụ cơ sở dữ liệu quan hệ 2
Cơ sở dữ liệu (hoặc trạng thái cơ sở dữ liệu) DB2 (S):
Các trạng thái quan hệ:
SoCMND HoTen NgaySinh GioiTinh
1 Đỗ Nam Trung 1990-06-07 Nam
2 Nguyễn Đông Anh 1991-02-10 Nam
3 Trần Thu Ngân 1995-10-17 Nữ
4 Hoàng Vũ 1980-01-01 Nam
5 Lê Quỳnh Chi 2000-10-10 Nữ
Loai MauLong SoCMNDChu
Mèo đen-trắng 1
Chó Trắng 3
Chó Vàng null
Mèo Tam thể 10
Trạng thái DB2 (S) thỏa mãn ràng buộc toàn vẹn thực thể C1 , nhưng
không thỏa mãn ràng buộc toàn vẹn tham chiếu C2
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (1) https://bit.ly/37k5cab 16 / 16
BÀI GIẢNG
CƠ SỞ DỮ LIỆU
7. Mô hình quan hệ: Các phép toán

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 1 / 25


Các lược đồ và trạng thái quan hệ
Lược đồ: DONVI(MaDV , TenDV , MaNV , NgayBatDau) và
DUAN(MaDA, TenDA, DiaDiem, MaDV )
Thuộc tính MaDV của DUAN là khóa ngoài tham chiếu tới khóa
chính MaDV của DONVI
Quan hệ DONVI:
MaDV TenDV MaNV NgayBatDau
DV1 Tài chính NV1 2020-01-09
DV2 Nhân sự NV5 2017-07-15
DV3 Kinh doanh NV2 2018-09-10
DV4 Quản trị NV8 2018-09-10
Quan hệ DUAN:
MaDA TenDA DiaDiem MaDV
DA1 Tuyển dụng Cần Thơ DV2
DA2 Quảng cáo trực tuyến Toàn quốc DV3
DA3 Xây dựng phần mềm tài chính Hà Nội DV1
DA4 Qui trình nghiệp vụ Hà Nội null
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 2 / 25
Các phép toán cập nhật

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 3 / 25


Phép chèn (insert)

Phép chèn (insert) đưa một bộ mới t vào một quan hệ R, với tham
số là bộ giá trị của các thuộc tính. Phép chèn có thể vi phạm các
ràng buộc miền, khóa và toàn vẹn tham chiếu:
Lược đồ DUAN(MaDA, TenDA, DiaDiem, MaDV ):
Phép chèn bộ < null,’Phát tờ rơi’,’Đà Nẵng’,’DV3’> vào DUAN vi
phạm ràng buộc toàn vẹn thực thể: giá trị null cho khóa chính
Phép chèn bộ < ’DA2’,’Phát tờ rơi’,’Đà Nẵng’,’DV3’> vào DUAN vi
phạm ràng buộc khóa: giá trị khóa ’DA2’ đã tồn tại
Phép chèn bộ < ’DA5’,’Phát tờ rơi’,’Đà Nẵng’,’DV7’> vào DUAN vi
phạm ràng buộc tham chiếu: không có giá trị khóa ’DV7’ trong quan
hệ bị tham chiếu DONVI
Phép chèn bộ < ’DA5’,’Phát tờ rơi’,’Đà Nẵng’,’DV3’> vào DUAN
được chấp nhận vì thoả mãn tất cả các ràng buộc

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 4 / 25


Phép chèn (insert)

Nếu chèn bộ < ’DA5’,’Phát tờ rơi’,’Đà Nẵng’,’DV3’> vào DUAN, quan


hệ này trở thành:

MaDA TenDA DiaDiem MaDV


DA1 Tuyển dụng Cần Thơ DV2
DA2 Quảng cáo trực tuyến Toàn quốc DV3
DA3 Xây dựng phần mềm tài chính Hà Nội DV1
DA4 Qui trình nghiệp vụ Hà Nội null
DA5 Phát tờ rơi Đà Nẵng DV3

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 5 / 25


Phép xóa (delete)

Phép xoá (delete) được sử dụng để xoá một hoặc nhiều bộ giá trị của
một quan hệ. Phép xoá có thể vi phạm ràng buộc tham chiếu trong
trường hợp bộ bị xoá được tham chiếu từ các bộ khác trong cơ sở dữ liệu
Xóa bộ <’DV3’, ’Kinh doanh’, ’NV2’, ’2018-09-10’> trong DONVI vi
phạm toàn vẹn tham chiếu, do giá trị khóa chính ’DV3’ được tham
chiếu từ bộ <’DA2’, ’Quảng cáo trực tuyến’, ’Toàn quốc’, ’DV3’ >
của DUAN, do đó không được chấp nhận
Xóa bộ <’DV4’, ’Quản trị’, ’NV8’, ’2018-09-10’ > trong DONVI
được chấp nhận vì không vi phạm ràng buộc tham chiếu: không có
tham chiếu đến giá trị khóa chính ’DV4’

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 6 / 25


Phép xóa (delete)

Nếu xóa bộ < ’DV4’,’Quản trị’,’NV8’,’2018-09-10’ > từ DONVI, quan hệ


này trở thành:

MaDA TenDV MaNV NgayBatDau


DV1 Tài chính NV1 2020-01-09
DV2 Nhân sự NV5 2017-07-15
DV3 Kinh doanh NV2 2018-09-10

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 7 / 25


Phép sửa (update)

Phép sửa (update) được dùng để thay đổi các giá trị của một hoặc
nhiều thuộc tính trong một (hoặc nhiều) bộ của một quan hệ
Việc sửa một thuộc tính không phải là khóa hoặc khóa ngoài thường
không gây ra các vi phạm ràng buộc, hệ quản trị cơ sở dữ liệu chỉ
kiểm tra giá trị mới thuộc miền
Sửa giá trị khóa chính tương đương với xóa bộ cũ và chèn bộ mới:
Các vi phạm ràng buộc tuân theo các ràng buộc của phép chèn và xóa
Sửa giá trị khóa ngoài: cần đảm bảo giá trị mới thỏa mãn ràng buộc
tham chiếu, tức là giá trị mới hoặc là null hoặc phải tham chiếu đến
một bộ tồn tại trong quan hệ bị tham chiếu

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 8 / 25


Các phép toán đại số quan hệ

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 9 / 25


Phép chọn (select)

Phép chọn (select) được sử dụng để chọn một tập hợp các bộ thỏa
mãn điều kiện chọn từ một quan hệ
Có thể xem phép chọn như một bộ lọc, nó chỉ giữ lại các bộ thỏa
mãn điều kiện đặt ra
Phép chọn được ký hiệu là σ<cond> (R), trong đó < cond > là điều
kiện chọn
Danh sách dự án có địa điểm ở Hà Nội: σ<DiaDiem=’Hà Nội’> (DUAN),
kết quả:
MaDA TenDA DiaDiem MaDV
DA3 Xây dựng phần mềm tài chính Hà Nội DV1
DA4 Qui trình nghiệp vụ Hà Nội null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 10 / 25


Phép chiếu (project)

Nếu ta xem một quan hệ như một bảng thì phép chiếu (project) là
phép toán chọn một số cột của bảng
Phép chiếu được ký hiệu là: π<attr > (R) trong đó < attr > là tập con
các thuộc tính của R.
Liệt kê tên và địa điểm các dự án: π<TenDA,DiaDiem> (DUAN), kết quả:
TenDA DiaDiem
Tuyển dụng Cần Thơ
Quảng cáo trực tuyến Toàn quốc
Xây dựng phần mềm tài chính Hà Nội
Qui trình nghiệp vụ Hà Nội

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 11 / 25


Phép đổi tên (rename)

Phép đổi tên được ký hiệu là ρS(B1 ,B2 ,...,Bn ) (R), ρS (R) hoặc
ρ(B1 ,B2 ,...,Bn ) (R), trong đó:
ρS(B1 ,B2 ,...,Bn ) (R) đổi tên quan hệ R(A1 , A2 , ..., An ) thành
S(B1 , B2 , ..., Bn ) với tên các thuộc tính mới là B1 , B2 , ..., Bn ,
ρS (R) chỉ đổi tên quan hệ R thành S và
ρ(B1 ,B2 ,...,Bn ) (R) chỉ đổi tên các thuộc tính của R từ A1 , A2 , ..., An
thành B1 , B2 , ..., Bn

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 12 / 25


Phép đổi tên (rename)

Để tìm mã và tên các dự án ở Hà Nội trong quan hệ DUAN, chúng


ta có thể làm một trong hai cách:
Tenduan ← π<MaDA,TenDA> (σ<DiaDiem=’Hà Nội’> (DUAN)), hoặc
HN ← σ<DiaDiem=’Hà Nội’> (DUAN)
Tenduan ← π<MaDA,TenDA> (HN)
Hai cách trên đều cho kết quả:
MaDA TenDA
DA3 Xây dựng phần mềm tài chính
DA4 Qui trình nghiệp vụ

Đổi tên quan hệ kết quả: ρProject(PrCode,PrName) (Tenduan)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 13 / 25


Các phép toán lý thuyết tập hợp

Các phép toán lý thuyết tập hợp chỉ áp dụng được cho các quan hệ
R(A1 , A2 , ..., An ) và S(B1 , B2 , ..., Bn ) thỏa mãn điều kiện tương thích
đồng nhất: Dom(Ai ) = Dom(Bi )∀i = 1, n
Phép hợp: Hợp của hai quan hệ R và S, được ký hiệu là R ∪ S, cho
kết quả là một quan hệ chứa tất cả các bộ có trong R hoặc ở trong S
hoặc ở trong cả hai. Các bộ trùng lặp bị loại bỏ
Phép giao: Giao của hai quan hệ R và S, được ký hiệu là R ∩ S, cho
kết quả là một quan hệ chứa tất các các bộ có trong cả hai quan hệ
R và S
Phép trừ: Phép trừ R và S, được ký hiệu là R − S, cho kết quả là
một quan hệ chứa tất cả các bộ có trong R nhưng không có trong S

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 14 / 25


Tích Đề-các (×)

Tích Đề-các của hai quan hệ R(A1 , A2 , ..., An ) và S(B1 , B2 , ..., Bm ),


ký hiệu là R(A1 , A2 , ..., An ) × S(B1 , B2 , ..., Bm ), được dùng để kết
hợp mọi bộ của R với mọi bộ của S
Kết quả của tích Đề-các là quan hệ Q(A1 , A2 , ..., An , B1 , B2 , ..., Bm )
có m + n thuộc tính
Giả sử R có nR bộ, S có nS bộ, khi đó Q có nR × nS bộ

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 15 / 25


Tích Đề-các (×)
Tích Đề-các của DONVI và DUAN có 16 bộ như sau:

MaDV TenDV MaNV NgayBatDau MaDA TenDA DiaDiem DUAN.MaDV


DV1 Tài chính NV1 2020-01-09 DA1 Tuyển dụng Cần Thơ DV2
DV2 Nhân sự NV5 2017-07-15 DA1 Tuyển dụng Cần Thơ DV2
DV3 Kinh doanh NV2 2018-09-10 DA1 Tuyển dụng Cần Thơ DV2
DV4 Quản trị NV8 2018-09-10 DA1 Tuyển dụng Cần Thơ DV2
Quảng cáo trực
DV1 Tài chính NV1 2020-01-09 DA2 Toàn quốc DV3
tuyến
Quảng cáo trực
DV2 Nhân sự NV5 2017-07-15 DA2 Toàn quốc DV3
tuyến
Quảng cáo trực
DV3 Kinh doanh NV2 2018-09-10 DA2 Toàn quốc DV3
tuyến
Quảng cáo trực
DV4 Quản trị NV8 2018-09-10 DA2 Toàn quốc DV3
tuyến
Xây dựng phần mềm
DV1 Tài chính NV1 2020-01-09 DA3 Hà Nội DV1
tài chính
Xây dựng phần mềm
DV2 Nhân sự NV5 2017-07-15 DA3 Hà Nội DV1
tài chính
Xây dựng phần mềm
DV3 Kinh doanh NV2 2018-09-10 DA3 Hà Nội DV1
tài chính
Xây dựng phần mềm
DV4 Quản trị NV8 2018-09-10 DA3 Hà Nội DV1
tài chính
DV1 Tài chính NV1 2020-01-09 DA4 Qui trình nghiệp vụ Hà Nội null
DV2 Nhân sự NV5 2017-07-15 DA4 Qui trình nghiệp vụ Hà Nội null
DV3 Kinh doanh NV2 2018-09-10 DA4 Qui trình nghiệp vụ Hà Nội null
DV4 Quản trị NV8 2018-09-10 DA4 Qui trình nghiệp vụ Hà Nội null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 16 / 25


Phép nối (join)

Phép nối (join) Phép nối được ký hiệu là 1 và được dùng để kết
hợp các bộ có liên hệ với nhau từ hai quan hệ thành một bộ. Phép
toán này rất quan trọng đối với cơ sở dữ liệu quan hệ có nhiều bảng
bởi vì nó cho phép ta xử lý các mối liên kết giữa các quan hệ
Dạng tổng quát của phép nối trên hai quan hệ R(A1 , A2 , . . . , An ) và
S(B1 , B2 , . . . , Bm ) là R 1 S trong đó < cond > là điều kiện nối.
<cond>
Kết quả của phép nối là một quan hệ
Q(A1 , A2 , . . . , An , B1 , B2 , . . . , Bm ) có n + m thuộc tính.
Mỗi bộ của Q là một kết nối giữa một bộ của R và một bộ của S
thoả mãn điều kiện nối
R 1 S = σ<cond> (R × S)
<cond>
Hầu hết các phép nối đều có < cond > là so sánh bằng; các phép nối
đó được gọi là phép nối bằng (equi-join)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 17 / 25


Phép nối (join)

Phép nối Q ← DONVI 1 DUAN cho kết quả:


<DONVI.MaDV =DUAN.MaDV >

MaDV TenDV MaNV NgayBatDau MaDA TenDA DiaDiem DUAN.MaDV


Xây dựng
DV1 Tài chính NV1 2020-01-09 DA3 phần mềm Hà Nội DV1
tài chính
DV2 Nhân sự NV5 2017-07-15 DA1 Tuyển dụng Cần Thơ DV2
Quảng cáo
DV3 Kinh doanh NV2 2018-09-10 DA2 Toàn quốc DV3
trực tuyến

trong đó ký hiệu DONVI.MaDV nhằm chỉ rõ thuộc tính MaDV là của quan
hệ DONVI.

Kết quả của phép nối là một quan hệ Q có 8 thuộc tính, trong đó 4
thuộc tính đầu được lấy từ các thuộc tính của DONVI, 4 thuộc tính
còn lại lấy từ DUAN
Ở mỗi bộ của Q, chúng ta thấy điều kiện nối được thỏa mãn:
MaDV = DUAN.MaDV , với MaDV được hiểu là DONVI.MaDV

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 18 / 25


Phép nối tự nhiên (*)
Trong ví dụ phép nối, có hai thuộc tính của hai quan hệ DONVI và
DUAN trùng tên, đó là MaDV , do đó chúng ta chỉ rõ DUAN.MaDV
trong cột cuối để tránh nhầm lẫn
Quan hệ Q là kết quả của phép nối bằng, nên cả hai cột MaDV có
mặt trong Q là dư thừa → người ta đề nghị phép nối tự nhiên, ký
hiệu là ∗, nhằm loại bỏ các thuộc tính thừa
Phép nối tự nhiên đòi hỏi các quan hệ tham gia phải có các thuộc
tính trùng tên
Phép nối tự nhiên Q∗ ← DONVI ∗ DUAN cho kết quả:
<MaDV >

MaDV TenDV MaNV NgayBatDau MaDA TenDA DiaDiem


Xây dựng
DV1 Tài chính NV1 2020-01-09 DA3 phần mềm tài Hà Nội
chính
DV2 Nhân sự NV5 2017-07-15 DA1 Tuyển dụng Cần Thơ
Quảng cáo
DV3 Kinh doanh NV2 2018-09-10 DA2 Toàn quốc
trực tuyến

MaDV dư thừa đã bị loại bỏ


N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 19 / 25
Tập hợp đầy đủ các phép toán quan hệ

Tập các phép toán P = {σ, π, ∪, −, ×} là một tập đầy đủ: Mọi phép
toán đại số quan hệ khác đều có thể được biểu diễn qua các phép
toán trong P
Ví dụ:
Phép nối: R 1 S = σ<cond> (R × S)
<cond>
Phép giao: R ∩ S = (R ∪ S) − ((R − S) ∪ (S − R))

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 20 / 25


Các phép toán nối mở rộng

Có ba phép nối mở rộng là nối ngoài trái (left outer join), nối
ngoài phải (right outer join) và nối ngoài đầy đủ (full outer
join), ký hiệu tương ứng là: ./, ./ , ./
Phép nối ngoài trái của R(A1 , A2 , ..., An ) và S(B1 , B2 , ..., Bm ) được
định nghĩa như sau:
R ./ S = (R 1 S) ∪ T , trong đó T là một quan hệ gồm các
<cond> <cond>
bộ < a1 , a2 , ..., an , null, ..., null > (m giá trị null), trong đó
< a1 , a2 , ..., an >∈ R không thỏa mãn điều kiện < cond >
Tương tự như vậy đối với các phép nối ngoài phải và các phép nối
ngoài đầy đủ

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 21 / 25


Phép nối ngoài trái ./

Kết quả của DONVI ./ DUAN:


DONVI.MaDV =DUAN.MaDV
MaDV TenDV MaNV NgayBatDau MaDA TenDA DiaDiem
Xây dựng phần
DV1 Tài chính NV1 2020-01-09 DA3 Hà Nội
mềm tài chính
DV2 Nhân sự NV5 2017-07-15 DA1 Tuyển dụng Cần Thơ
Quảng cáo trực
DV3 Kinh doanh NV2 2018-09-10 DA2 Toàn quốc
tuyến
DV4 Quản trị NV8 2018-09-10 null null null

Các đơn vị không giám sát dự án nào: MaDA nhận giá trị null trong
kết quả phép nối ngoài trái

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 22 / 25


Phép nối ngoài phải ./

Kết quả của DONVI ./ DUAN:


DONVI.MaDV =DUAN.MaDV
MaDV TenDV MaNV NgayBatDau MaDA TenDA DiaDiem
null null null null DA4 Qui trình nghiệp vụ Hà Nội
Xây dựng phần
DV1 Tài chính NV1 2020-01-09 DA3 Hà Nội
mềm tài chính
DV2 Nhân sự NV5 2017-07-15 DA1 Tuyển dụng Cần Thơ
Quảng cáo trực
DV3 Kinh doanh NV2 2018-09-10 DA2 Toàn quốc
tuyến

Các dự án chưa có đơn vị nào quản lý: MaDV nhận giá trị null trong
kết quả phép nối ngoài phải

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 23 / 25


Phép nối ngoài đầy đủ ./

Kết quả của DONVI ./ DUAN:


DONVI.MaDV =DUAN.MaDV
MaDV TenDV MaNV NgayBatDau MaDA TenDA DiaDiem
null null null null DA4 Qui trình nghiệp vụ Hà Nội
Xây dựng phần
DV1 Tài chính NV1 2020-01-09 DA3 Hà Nội
mềm tài chính
DV2 Nhân sự NV5 2017-07-15 DA1 Tuyển dụng Cần Thơ
Quảng cáo trực
DV3 Kinh doanh NV2 2018-09-10 DA2 Toàn quốc
tuyến
DV4 Quản trị NV8 2018-09-10 null null null

Các đơn vị không giám sát dự án nào: MaDA nhận giá trị null trong
kết quả phép nối ngoài trái
Các dự án chưa có đơn vị nào quản lý: MaDV nhận giá trị null trong
kết quả phép nối ngoài phải

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 24 / 25


Các hàm nhóm và phép nhóm

Phép nhóm: <attr > J<f > (R) (ký hiệu J trong tiếng Anh là
"calligraphic J")
J là ký hiệu phép nhóm, < attr > là danh sách các thuộc tính nhóm,
< f > là danh sách các cặp (<hàm><thuộc tính>) với <hàm> là
một trong các hàm SUM, AVERAGE, MIN, MAX, COUNT và
<thuộc tính> là một trong các thuộc tính của R
Kết quả của DiaDiem JCOUNT () (DUAN):

DiaDiem Tongso
Cần Thơ 1
Hà Nội 2
Toàn quốc 1
Ý nghĩa: Đếm tổng số dự án ở mỗi địa điểm

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Mô hình quan hệ (2) https://bit.ly/3hi5Hq7 25 / 25


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
8. Nguyên tắc thiết kế lược đồ quan hệ

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 1/9


Các giải pháp thiết kế cơ sở dữ liệu quan hệ

Có hai giải pháp chính:


Thiết kế dưới lên:
Điểm xuất phát là quan hệ giữa các thuộc tính riêng rẽ
Sử dụng quan hệ giữa các thuộc tính này để xây dựng các lược
đồ quan hệ
Đây là phương pháp thiết kế bằng tổng hợp (design by synthesis)
Thiết kế trên xuống, hay thiết kế bằng phân tích (design by analyse):
Xuất phát từ các lược đồ quan hệ có được từ thiết kế quan niệm
Tách các quan hệ cho đến khi đạt mục đích mong muốn

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 2/9


Các nguyên tắc thiết kế lược đồ quan hệ

NT1. (Ngữ nghĩa của các thuộc tính): Thiết kế một lược đồ quan hệ sao
cho dễ giải thích ý nghĩa của nó. Không nên tổ hợp các thuộc tính từ
nhiều kiểu thực thể và kiểu liên kết vào một lược đồ quan hệ
NT2. (Thông tin dư thừa trong các bộ và dị thường cập nhật): Thiết kế
các lược đồ quan hệ cơ sở sao cho không sinh ra những dị thường cập
nhật trong các quan hệ
NT3. (Các giá trị không xác định trong các bộ): Tránh sử dụng các thuộc
tính của các lược đồ quan hệ mà giá trị của các thuộc tính này
thường xuyên là null
NT4. (Sinh ra các bộ giả): Thiết kế các lược đồ quan hệ sao cho chúng có
thể được nối với điều kiện bằng trên các thuộc tính là khoá chính
hoặc khoá ngoài để đảm bảo không sinh ra các bộ "giả"

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 3/9


NT1: Các lược đồ quan hệ cần có ý nghĩa rõ ràng

Ngữ nghĩa của lược đồ rõ ràng thì dễ thiết kế được lược đồ quan hệ
tốt
Không tổ hợp các thuộc tính từ nhiều kiểu thực thể và kiểu liên kết
vào trong một quan hệ
Nếu một lược đồ quan hệ tương ứng với một kiểu thực thể hoặc một
kiểu liên kết thì ý nghĩa của lược đồ đó và các thuộc tính trở nên rõ
ràng

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 4/9


NT2: Tránh các dị thường cập nhật
Giả sử ta có quan hệ NHANVIEN_DONVI như sau:

MaNV Hodem Ten Ngaysinh Diachi MaDV TenDV MaNQL


NV001 Lê Vân 1979-02-12 Hà Nội 5 Nghiên cứu NV002
NV002 Trần Đức Nam 1976-02-14 Hà Nội 5 Nghiên cứu NV002
NV010 Hoàng Thanh 1979-08-05 Nghệ An 4 Hành chính NV014
NV014 Phạm Bằng 1952-06-26 Bắc Ninh 4 Hành chính NV014
NV016 Nguyễn Sơn 1973-08-14 Hà Nam 5 Nghiên cứu NV002
NV018 Vũ Hương Giang 1983-03-26 Nam Định 5 Nghiên cứu NV002
NV025 Trần Lê Hoa 1980-03-15 Phú Thọ 4 Hành chính NV014
NV061 Hoàng Giang 1967-05-02 Hà Tĩnh 1 Lãnh đạo NV061

Có dư thừa thông tin trong quan hệ


Có thể xảy ra các dị thường cập nhật:
Dị thường chèn: Chèn một nhân viên mới chưa làm việc cho đơn vị nào, hoặc
chèn một đơn vị vừa thành lập chưa có nhân viên → phải chèn nhiều giá trị
null vào quan hệ
Dị thường xóa: Xóa thông tin một nhân viên duy nhất của đơn vị → xóa đơn
vị
Dị thường sửa đổi: Đơn vị đổi tên hoặc đổi người quản lý → phải sửa nhiều
bộ trong quan hệ
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 5/9
NT3: Tránh các giá trị null

Nếu một quan hệ chứa nhiều giá trị null


Tốn không gian lưu trữ
Kết quả của các phép nối bị giảm ý nghĩa
Các hàm nhóm như COUNT, SUM... không tính toán được trên giá
trị null

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 6/9


NT4: Tránh sinh các bộ giả

Giả sử chúng ta có hai quan hệ:


NHANVIEN_DIADIEM:
Ten DiadiemDA
Vân Hà Nội
Vân Nam Định
Sơn Bắc Ninh
Giang Hà Nội
và NHANVIEN_DUAN:
MaNV MaDA Sogio TenDA DiadiemDA
NV001 1 32 DA01 Hà Nội
NV001 2 7 DA02 Nam Định
NV016 3 40 DA03 Bắc Ninh
NV018 1 20 DA01 Hà Nội

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 7/9


NT4: Tránh sinh các bộ giả
Kết quả NHANVIEN_DIADIEM ∗ NHANVIEN_DUAN:
DiadiemDA

DiadiemDA MaNV MaDA Sogio TenDA Ten


Bắc Ninh NV016 3 40 DA03 Sơn
Hà Nội NV001 1 32 DA01 Vân
Hà Nội NV001 1 32 DA01 Giang
Hà Nội NV018 1 20 DA01 Vân
Hà Nội NV018 1 20 DA01 Giang
Nam Định NV001 2 7 DA02 Vân

Bộ thứ 3 là bộ giả: Nhân viên có mã số NV001 làm việc ở 2 dự án


DA01 và DA02 ở Hà Nội và Nam Định → tên là Vân
Bộ thứ 4 là bộ giả: Nhân viên có mã số NV018 làm việc cho dự án
DA01 ở Hà Nội → tên là Giang
Nên thiết kế các lược đồ để thực hiện các phép nối với điều kiện bằng
trên khóa chính và/hoặc khóa ngoài để tránh các bộ giả
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 8/9
Cơ sở lý thuyết cho thiết kế

Phụ thuộc hàm (functional dependency)


Chuẩn hóa (normalization)
Các thuật toán thiết kế cơ sở dữ liệu quan hệ

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Nguyên tắc thiết kế https://bit.ly/3hbYFD6 9/9


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
8. Phụ thuộc hàm: các khái niệm, qui tắc suy diễn và
thuật toán

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 1 / 25


Định nghĩa phụ thuộc hàm

Giả sử X và Y là hai tập thuộc tính của lược đồ quan hệ R


Một phụ thuộc hàm từ X vào Y là một ràng buộc trên các bộ của
mọi trạng thái hợp lệ r (R) sao cho với hai bộ bất kỳ t1 , t2 ∈ r (R),
nếu t1 [X ] = t2 [X ] thì t1 [Y ] = t2 [Y ]
Phụ thuộc hàm từ X vào Y được ký hiệu là X → Y với X là vế trái
và Y là vế phải của phụ thuộc hàm
Các cách diễn đạt khác: Y phụ thuộc hàm vào X hoặc X xác định
hàm Y
Một phụ thuộc hàm là một tính chất của lược đồ quan hệ R và
không phải là tính chất của trạng thái quan hệ r (R)
Một phụ thuộc hàm không thể được phát hiện một cách tự động từ
các trạng thái r (R) mà phải xác định từ ngữ nghĩa của lược đồ quan
hệ R

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 2 / 25


Ví dụ phụ thuộc hàm 1
Lược đồ quan hệ
MUONSACH(Sothe, MaSach, Nguoimuon, Tensach, Ngaymuon) có các
phụ thuộc hàm:
Sothe → Nguoimuon
Masach → Tensach
Sothe, Masach → Ngaymuon

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 3 / 25


Ví dụ phụ thuộc hàm 2

Lược đồ quan hệ CONGDAN(SoCMND, Hoten, Ngaysinh, Gioitinh) có các


phụ thuộc hàm:
SoCMND → Hoten
SoCMND → Ngaysinh
SoCMND → Gioitinh

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 4 / 25


Phụ thuộc hàm suy diễn được

Giả sử F là một tập phụ thuộc hàm trên lược đồ quan hệ R


Một phụ thuộc hàm X → Y được gọi là suy diễn được từ F nếu
X → Y đúng trong mỗi trạng thái hợp lệ r (R). Điều này có nghĩa là
khi r (R) thỏa mãn các phụ thuộc hàm trong F, r (R) cũng thỏa mãn
X →Y
X → Y suy diễn được từ F được ký hiệu là F |= X → Y
Bao đóng của tập phụ thuộc hàm F, ký hiệu là F + , được định
nghĩa như sau:

F + = F ∪ {X → Y , F |= X → Y } (1)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 5 / 25


Các qui tắc suy diễn đối với các phụ thuộc hàm

Armstrong1 đưa ra 6 qui tắc suy diễn đối với phụ thuộc hàm (1974):
QT1. (phản xạ): Nếu X ⊇ Y thì X → Y
QT2. (tăng): {X → Y } |= XZ → YZ 2

QT3. (bắc cầu): {X → Y , Y → Z } |= X → Z


QT4. (chiếu): {X → YZ } |= X → Y và X → Z
QT5. (hợp): {X → Y , X → Z } |= X → YZ
QT6. (tựa bắc cầu): {X → Y , WY → Z } |= WX → Z

1
William Ward Armstrong là nhà toán học và khoa học máy tính người Canada. Ông nhận bằng
tiến sĩ năm 1966 tại trường Đại học British Columbia (University of British Columbia).
2
Để cho tiện, {X , Y } được viết tắt là XY
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 6 / 25
Chứng minh QT1, QT2

QT1: Nếu X ⊇ Y thì X → Y


Giả sử X ⊇ Y và t1 , t2 là hai bộ bất kỳ trong r (R) thỏa mãn
t1 [X ] = t2 [X ]. Khi đó, do X ⊇ Y nên t1 [Y ] = t2 [Y ]. Vậy X → Y .
QT2: {X → Y } |= XZ → YZ
Giả sử X → Y nhưng XZ 6→ YZ . Khi đó theo định nghĩa phụ thuộc
hàm, tồn tại hai bộ t1 , t2 ∈ r (R) sao cho:
t1 [X ] = t2 [X ], (2)
t1 [Y ] = t2 [Y ], (3)
t1 [XZ ] = t2 [XZ ] (4)
nhưng
t1 [YZ ] 6= t2 [YZ ] (5)
Từ (2) và (4) ta có:
t1 [Z ] = t2 [Z ] (6)
Từ (3) và (6) suy ra t1 [YZ ] = t2 [YZ ] =⇒ mâu thuẫn với (5).
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 7 / 25
Chứng minh QT3

QT3: {X → Y , Y → Z } |= X → Z
Giả sử ta có
X →Y (7)

Y →Z (8)
Khi đó, với hai bộ t1 , t2 ∈ r (R) bất kỳ sao cho t1 [X ] = t2 [X ], từ (7)
chúng ta suy ra:
t1 [Y ] = t2 [Y ] (9)
Từ (8) và (9) ta có:
t1 [Z ] = t2 [Z ] (10)
Từ t1 [X ] = t2 [X ] và (10) chúng ta có X → Z

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 8 / 25


Chứng minh QT4

QT4: {X → YZ } |= X → Y và X → Z
Ta có
X → YZ (11)
Do YZ ⊇ Y nên theo QT1:

YZ → Y (12)

Áp dụng QT3 cho (11) và (12): X → Y . Tương tự, ta có: X → Z .

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 9 / 25


Chứng minh QT5

QT5: {X → Y , X → Z } |= X → YZ
Giả sử ta có
X →Y (13)

X →Z (14)
Áp dụng QT2 cho (13):
XX → YX (15)
Áp dụng QT2 cho (14):
YX → YZ (16)
Áp dụng QT3 cho (15), (16) và do XX = X : X → YZ .

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 10 / 25


Chứng minh QT6

QT6: {X → Y , WY → Z } |= WX → Z
Giả sử ta có:
X →Y (17)

WY → Z (18)
Áp dụng QT2 cho (17):
WX → WY (19)
Áp dụng QT3 cho (19): WX → Z .

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 11 / 25


Các qui tắc suy diễn đối với phụ thuộc hàm

Amstrong đã chứng minh rằng các quy tắc suy diễn QT1, QT2 và QT3 là
đúng và đầy đủ:
Đúng: cho trước một tập phụ thuộc hàm F trên một lược đồ quan hệ
R, bất kỳ một phụ thuộc hàm nào suy diễn được bằng cách áp dụng
các quy tắc từ từ QT1 đến QT3 cũng đúng trong mỗi trạng thái
quan hệ r (R) thoả mãn các phụ thuộc hàm trong F
Đầy đủ: việc sử dụng các quy tắc từ QT1 đến QT3 lặp lại nhiều lần
để suy diễn các phụ thuộc hàm cho đến khi không còn suy diễn được
nữa sẽ cho kết quả là một tập hợp đầy đủ các phụ thuộc hàm có thể
được suy diễn từ F
Các qui tắc QT1, QT2 và QT3 được gọi là các qui tắc suy diễn
Armstrong

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 12 / 25


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

Giả sử F là một tập phụ thuộc hàm trên lược đồ quan hệ R và X là


một tập thuộc tính của R
Bao đóng của tập thuộc tính X dưới F, ký hiệu là X + được định
nghĩa như sau:

X + = {A, A là thuộc tính của R, F |= X → A} (20)

Khi cần chỉ rõ tập phụ thuộc hàm, chúng ta ký hiệu bao đóng của X
dưới F là XF+

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 13 / 25


Tìm bao đóng của tập thuộc tính

Thuật toán 1: Tìm bao đóng X + của X dưới F


Vào: Lược đồ quan hệ R, tập phụ thuộc hàm F và tập thuộc tính X
Ra: Tập thuộc tính X + là bao đóng của X
1 X+ = X;
2 repeat
3 OldX + = X + ;
4 for mỗi phụ thuộc hàm Y → Z trong F do
5 if X + ⊃ Y then
6 X+ = X+ ∪ Z;
7 end
8 end
9 until OldX + = X + ;

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 14 / 25


Ví dụ bao đóng của tập thuộc tính
Lược đồ quan hệ R(MaNV , Hoten, MaDA, TenDA, Diadiem, Sogio) có tập
phụ thuộc hàm: F = {MaNV → Hoten,
MaDA → {TenDA, Diadiem}, {MaNV , MaDA} → Sogio}

MaNV + = {MaNV , Hoten}, MaDA+ = {MaDA, TenDA, Diadiem}


{MaNV , MaDA}+ = {MaNV , Hoten, MaDA, TenDA, Diadiem, Sogio}
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 15 / 25
Bao đóng của tập thuộc tính và khóa

Giả sử ta có lược đồ quan hệ R(A1 , A2 , ..., An )


Nếu X + = {A1 , A2 , ..., An } thì X xác định hàm các thuộc tính còn
lại, điều này tương đương với X là siêu khóa
Có thể kiểm tra một tập thuộc tính X có là khóa hay không bằng
cách:
1 Kiểm tra X là siêu khóa hay không: X + = {A1 , A2 , ..., An }?
2 Nếu có, kiểm tra X có là siêu khóa tối thiểu hay không: Có tồn
tại tập thuộc tính S ( X sao cho S + = {A1 , A2 , ..., An }?

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 16 / 25


Ví dụ bao đóng và khóa
Lược đồ quan hệ R(MaNV , Hoten, MaDA, TenDA, Diadiem, Sogio)

{MaNV , MaDA}+ = {MaNV , Hoten, MaDA, TenDA, Diadiem, Sogio},


MaNV + = {MaNV , Hoten}, MaDA+ = {MaDA, TenDA, Diadiem}

{MaNV , MaDA} là siêu khóa tối thiểu =⇒ {MaNV , MaDA} là khóa


N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 17 / 25
Tìm khóa của lược đồ quan hệ

Thuật toán 2: Tìm một khóa của lược đồ quan hệ


Vào: Lược đồ quan hệ R(A1 , A2 , ..., An ) và tập phụ thuộc hàm F
Ra: Một khóa của lược đồ quan hệ R
1 K = {A1 , A2 , ..., An };
2 for mỗi thuộc tính A của K do
3 Xác định (K − A)+ F ; // Thực hiện thuật toán 1
4 if (K − A)+
F = {A1 , A2 , ..., An } then
5 K = K − {A}
6 end
7 end
Thời gian thực hiện bước 3 phụ thuộc số lượng phụ thuộc hàm trong F
(xem vòng for bước 4–8, thuật toán 1) =⇒ có thể loại bỏ các phụ thuộc
hàm "dư thừa" trong F?

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 18 / 25


Sự tương đương của các tập phụ thuộc hàm

Một tập phụ thuộc hàm E được phủ bởi một tập phụ thuộc
hàm F hay F phủ E nếu E ⊂ F + . Điều này có nghĩa là:
∀X → Y ∈ E, F |= X → Y
Hai tập phụ thuộc hàm E và F được gọi là tương đương nếu
E+ = F+
Để kiểm tra F phủ E (E ⊂ F + ), với mỗi X → Y là phụ thuộc hàm
trong E:
Tính X + dưới F ∀X → Y ∈ E
Nếu X + ⊃ Y đúng với tất cả các phụ thuộc hàm X → Y trong
E thì F phủ E

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 19 / 25


Ví dụ hai tập phụ thuộc hàm tương đương
Lược đồ quan hệ R(A, C , D, E , H); ký hiệu {A, E }+
E là bao đóng của tập thuộc tính
{A, E } dưới tập phụ thuộc hàm E:

F = {A → C , AC → D, E → AD, E → H}
E = {A → CD, E → AH}
{A}+
E = {A, C , D} ⊃ {C }
{A}+
F = {A, C , D} ⊃ {C , D}
{A, C }+
E = {A, C , D} ⊃ {D}
{E }+
F = {E , A, H, C , D} ⊃
{A, H} {E }+
E = {E , A, H, C , D}:
{E }+ +
E ⊃ {A, D} và {E }E ⊃ {H}
=⇒ E tương đương với F
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 20 / 25
Tập phụ thuộc hàm tối thiểu và phủ tối thiểu

Một tập phụ thuộc hàm F là tối thiểu nếu thoả mãn các điều
kiện sau:
(vế phải tối thiểu) Vế phải của các phụ thuộc hàm trong F chỉ
có một thuộc tính.
(vế trái tối thiểu) Chúng ta không thể thay thế bất kỳ một phụ
thuộc hàm X → A trong F bằng phụ thuộc hàm Y → A, trong
đó Y là tập con đúng của X mà vẫn còn là một tập phụ thuộc
hàm tương đương với F.
(số lượng phụ thuộc hàm tối thiểu) Chúng ta không thể bỏ đi
bất kỳ phụ thuộc hàm nào ra khỏi F mà vẫn có một tập phụ
thuộc hàm tương đương với F
Một phủ tối thiểu của một tập phụ thuộc hàm F là một tập phụ
thuộc hàm tối thiểu G tương đương với F (tức là G + = F + )
Một tập phụ thuộc hàm bất kỳ có thể có nhiều phủ tối thiểu

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 21 / 25


Tìm phủ tối thiểu
Thuật toán 3: Tìm một phủ tối thiểu cho tập phụ thuộc hàm
Vào: Lược đồ quan hệ R, tập phụ thuộc hàm F
Ra: Một tập phụ thuộc hàm G là phủ tối thiểu của F
1 G = F;
2 Thay thế mỗi phụ thuộc hàm X → {A1 , A2 , ..., An } trong G bằng n phụ thuộc
hàm X → A1 , X → A2 , . . . , X → An ;
3 for mỗi phụ thuộc hàm X → A trong G do
4 for mỗi thuộc tính B là một phần tử của X do
5 if (G − (X → A)) ∪ ((X − {B}) → A) là tương đương với G then
6 thay thế X → A bằng (X − {B}) → A ở trong G;
7 end
8 end
9 end
10 for mỗi phụ thuộc hàm X → A còn lại trong G do
11 if (G − {X → A}) là tương đương với G then
12 loại bỏ X → A ra khỏi G;
13 end
14 end

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 22 / 25


Ví dụ tìm phủ tối thiểu
Lược đồ quan hệ R(A, B, C , D, E ) có tập phụ thuộc hàm F = {A → BCDE , CD → E }:

G=F
Tách vế phải của các phụ thuộc hàm:
G = {A → B, A → C , A → D, A → E , CD → E }
Vế trái của CD → E là tối thiểu
A → C , A → D |= A → CD
A → CD, CD → E |= A → E =⇒ A → E dư thừa và có thể loại bỏ khỏi G =⇒
G = {A → B, A → C , A → D, CD → E }
Chúng ta không bỏ được bất kỳ phụ thuộc hàm nào khỏi G để có một tập phụ
thuộc hàm tương đương, do đó G là tối thiểu
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 23 / 25
Ví dụ tìm phủ tối thiểu

G = {A → B, A → C , A → D, CD → E }
F = {A → BCDE , CD → E } là phủ tối thiểu của F

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 24 / 25


Tóm tắt

Phụ thuộc hàm, bao đóng của tập phụ thuộc hàm
Các qui tắc suy diễn của Armstrong
Bao đóng của tập thuộc tính
Tìm khóa của lược đồ quan hệ dựa vào bao đóng
Tập phụ thuộc hàm tương đương, tập phụ thuộc hàm tối thiểu và
phủ tối thiểu

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 25 / 25


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
8. Chuẩn hóa

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 1 / 23


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

Quá trình chuẩn hóa (Codd đề nghị năm 1972): lấy một lược đồ quan
hệ và thực hiện các phép kiểm tra để xác nhận lược đồ có thỏa mãn
một số điều kiện nhất định (dạng chuẩn) hay không; nếu không các
lược đồ quan hệ sẽ được tách ra
Codd đề xuất ba dạng chuẩn 1, 2 và 3 (1NF, 2NF, 3NF)
Sau đó Boyce và Codd đề nghị dạng chuẩn Boyce-Codd (BCNF)
mạnh hơn 3NF
Các dạng chuẩn này dựa trên các phụ thuộc hàm giữa các thuộc tính
của một lược đồ quan hệ
Sau đó dạng chuẩn 4 (4NF) và 5 (5NF) được đề xuất dựa trên phụ
thuộc hàm đa trị và phụ thuộc hàm nối

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 2 / 23


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

Chuẩn hóa dữ liệu có thể được xem là quá trình phân tích và tách
các lược đồ quan hệ để đạt được hai mục tiêu:
Cực tiểu hóa sự dư thừa
Cực tiểu hóa các phép cập nhật bất thường
Phép tách các lược đồ quan hệ cần có hai tính chất:
Tính chất nối không mất mát (phải đạt được)
Tính chất bảo toàn phụ thuộc

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 3 / 23


Các dạng chuẩn dựa trên
khóa chính

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 4 / 23


Dạng chuẩn 1 (1NF)

Một lược đồ quan hệ R(A1 , A2 , ..., An ) là ở dạng chuẩn 1 (1NF -


first normal form) nếu Dom(Ai ) chỉ chứa các giá trị nguyên tố
(không phân chia được) ∀i và
∀t =< t1 , t2 , ..., tn >∈ r (R), ti ∈ Dom(Ai ), ti nhận giá trị đơn
Như vậy 1NF không cho phép có các thuộc tính đa trị hoặc các nhóm
thuộc tính lặp

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 5 / 23


Thuộc tính đa trị và nhóm thuộc tính lặp

MaDV TenDV MaNQL Diadiem


5 Nghiên cứu NV002 Nam Định,Hà Nội,Bắc Ninh
4 Hành chính NV014 Hà Nội
1 Tài vụ NV061 Hà Nội

MaDA TenDA TenNV Sogio


1 DA01 Vân,Nam 15,20
2 DA02 Nam,Thanh,Bằng 10,12,28
3 DA03 Thanh 20

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 6 / 23


Chuẩn hóa 1NF

Giả sử K là khóa của lược đồ quan hệ R và A là thuộc tính đa trị


hoặc là nhóm thuộc tính lặp
Để chuẩn hóa R về 1NF:
Loại A ra khỏi R
Tạo một lược đồ quan hệ mới S(K , A) với khóa chính của S là:
{K , A} nếu A là thuộc tính đa trị
{K , KA } nếu A là nhóm thuộc tính lặp, KA là khóa bộ phận
của A

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 7 / 23


Ví dụ chuẩn hóa 1NF

1 Lược đồ DONVI(MaDV , TenDV , MaNQL, Diadiem), với Diadiem là


thuộc tính đa trị:
Loại Diadiem ra khỏi DONVI: DONVI1 (MaDV , TenDV , MaNQL)
Tạo lược đồ quan hệ mới DIADIEMDV (MaDV , Diadiem)
2 Lược đồ NHANVIEN_LAMVIEC (MaDA, TenDA, MaNV , Sogio),
trong đó (MaNV , Sogio) là nhóm thuộc tính lặp
Loại (MaNV , Sogio) ra khỏi NHANVIEN_LAMVIEC :
NHANVIEN_LAMVIEC1 (MaDA, TenDA)
Tạo lược đồ quan hệ mới
NHANVIEN_SOGIO(MaDA, MaNV , Sogio)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 8 / 23


Dạng chuẩn 2 (2NF)

Một phụ thuộc hàm X → Y là một phụ thuộc hàm đầy đủ nếu bỏ
đi bất kỳ một thuộc tính A ∈ X thì phụ thuộc hàm đó không còn
đúng nữa
Nếu tồn tại một thuộc tính B sao cho (X − B) → Y , chúng ta nói
rằng Y phụ thuộc hàm bộ phận vào X
Một lược đồ quan hệ R là ở dạng chuẩn 2 (2NF - second normal
form) nếu:
R là 1NF, và
Mỗi thuộc tính không khóa A trong R phụ thuộc hàm đầy đủ
vào khóa chính của R

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 9 / 23


Chuẩn hóa 2NF

Giả sử R là lược đồ quan hệ ở dạng chuẩn 1NF và không là 2NF, có


khóa K
Để chuẩn hóa R về 2NF, đối với mỗi nhóm thuộc tính không khóa X
phụ thuộc hàm bộ phận vào K :
Loại X ra khỏi R
Gọi khóa bộ phận của K xác định hàm X là KX : KX → X
Tạo lược đồ quan hệ mới S(KX , X ) với KX là khóa chính

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 10 / 23


Ví dụ chuẩn hóa 2NF

Lược đồ quan hệ ở dạng chuẩn 1NF


NHANVIEN_DUAN(MaNV , MaDA, Sogio, Hoten, TenDA, Diadiem)
với các phụ thuộc hàm:
{MaNV , MaDA} → {Sogio, Hoten, TenDA, Diadiem}
MaNV → Hoten (phụ thuộc hàm bộ phận)
MaDA → {TenDA, Diadiem} (phụ thuộc hàm bộ phận)
NHANVIEN_DUAN không là 2NF do Hoten, TenDA và Diadiem phụ
thuộc hàm bộ phận vào khóa chính {MaNV , MaDA}
Chuẩn hóa về 2NF:
Loại Hoten, TenDA, Diadiem ra khỏi NHANVIEN_DUAN:
NHANVIEN_DUAN1 (MaNV , MaDA, Sogio)
Tạo lược đồ quan hệ mới 1: N1 (MaNV , Hoten)
Tạo lược đồ quan hệ mới 2: N2 (MaDA, TenDA, Diadiem)

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 11 / 23


Dạng chuẩn 3 (3NF)

Một phụ thuộc hàm X → Y trong một lược đồ quan hệ R là một


phụ thuộc hàm bắc cầu nếu tồn tại một tập hợp thuộc tính Z của
R không phải là khóa và không phải là tập con của khóa sao cho
X → Z và Z → Y đều đúng
Một lược đồ quan hệ R là ở dạng chuẩn 3 (3NF - third normal
form) nếu
R là 2NF, và
Không có thuộc tính không khóa nào của R phụ thuộc hàm bắc
cầu vào khóa chính

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 12 / 23


Chuẩn hóa 3NF

Giả sử R là lược đồ quan hệ có khóa chính K ; R ở dạng chuẩn 2NF


và không ở dạng chuẩn 3NF
Để chuẩn hóa R về 3NF, với mỗi thuộc tính X phụ thuộc bắc cầu
vào K :
Loại bỏ X ra khỏi R
Gọi Y là thuộc tính bắc cầu, ta có: K → Y và Y → X
Tạo lược đồ quan hệ mới S(Y , X ) với Y là khóa chính

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 13 / 23


Ví dụ chuẩn hóa 3NF

Lược đồ
LAMVIEC (MaNV , Hoten, Ngaysinh, MaDV , TenDV , MaDA, TenDA)
với các thuộc tính đơn, ở dạng chuẩn 2NF vì khóa chính chỉ có một
thuộc tính (→ không có phụ thuộc hàm bộ phận), có các phụ thuộc
hàm:
MaNV → {Hoten, Ngaysinh, MaDV , TenDV , MaDA, TenDA}
MaDV → TenDV
MaDA → TenDA
LAMVIEC không ở dạng chuẩn 3NF vì các phụ thuộc hàm bắc cầu
MaNV → MaDV → TenDV và MaNV → MaDA → TenDA
Chuẩn hóa LAMVIEC về 3NF:
Loại {TenDV , TenDA} phụ thuộc bắc cầu vào khóa chính:
LAMVIEC1 (MaNV , Hoten, Ngaysinh, MaDV , MaDA)
Tạo lược đồ quan hệ mới N1 (MaDV , TenDV )
Tạo lược đồ quan hệ mới N2 (MaDA, TenDA)
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 14 / 23
Dạng chuẩn Boyce-Codd (BCNF)

Một lược đồ quan hệ R là ở dạng chuẩn Boyce-Codd (BCNF -


Boyce-Codd normal form) nếu
R là 3NF, và
Không có thuộc tính khóa phụ thuộc hàm vào thuộc tính không
khóa trong R

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 15 / 23


Chuẩn hóa BCNF

Giả sử R là lược đồ quan hệ có khóa K , R là 3NF và không là BCNF


Để chuẩn hóa R về BCNF, đối với mỗi thuộc tính không khóa A xác
định hàm thuộc tính khóa A → KS , với KS ⊂ K :
Loại KS ra khỏi R và bổ sung A vào khóa chính của R. Khóa
chính mới của R là: K − KS ∪ {A}
Tạo lược đồ mới S(A, KS ) với A là khóa chính

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 16 / 23


Ví dụ chuẩn hóa BCNF
Lược đồ R(A1 , A2 , A3 , A4 , A5 , A6 ) có các phụ thuộc hàm:
{A1 , A2 } → {A3 , A4 , A5 , A6 }: {A1 , A2 } là khóa chính
A4 → A2
A6 → A1
R là 2NF (không có phụ thuộc hàm bộ phận) và 3NF (không có phụ
thuộc hàm bắc cầu từ khóa chính)
R không là BCNF vì có thuộc tính khóa phụ thuộc hàm vào thuộc
tính không khóa
Chuẩn hóa về BCNF:
Loại A2 ra khỏi R và bổ sung A4 vào khóa chính:
R(A1 , A4 , A3 , A5 , A6 )
Tạo quan hệ mới S1 (A4 , A2 ) với A4 là khóa chính
Loại A1 ra khỏi R và bổ sung A6 vào khóa chính:
R(A6 , A4 , A3 , A5 )
Tạo quan hệ mới S2 (A6 , A1 ) với A6 là khóa chính
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 17 / 23
Minh họa và "từ khóa" của các dạng chuẩn

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 18 / 23


Định nghĩa tổng quát các
dạng chuẩn

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 19 / 23


Dạng chuẩn 1 (1NF)

Một lược đồ quan hệ R(A1 , A2 , ..., An ) là ở dạng chuẩn 1 (1NF) nếu


Dom(Ai ) chỉ chứa các giá trị nguyên tố (không phân chia được) ∀i và
∀t =< t1 , t2 , ..., tn >∈ r (R), ti ∈ Dom(Ai ), ti nhận giá trị đơn

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 20 / 23


Dạng chuẩn 2 (2NF)

Một lược đồ quan hệ R là ở dạng chuẩn 2 (2NF) nếu mỗi thuộc


tính không khóa trong R không phụ thuộc hàm bộ phận vào một
khóa bất kỳ của R

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 21 / 23


Dạng chuẩn 3 (3NF)

Một lược đồ quan hệ R là ở dạng chuẩn 3 (3NF) nếu với mọi phụ thuộc
hàm X → A thỏa mãn trong R thì ta đều có:
X là một siêu khóa của R, hoặc
A là một thuộc tính khóa của R

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 22 / 23


Dạng chuẩn Boyce-Codd (BCNF)

Một lược đồ quan hệ R là ở dạng chuẩn Boyce-Codd (BCNF) nếu


với mọi phụ thuộc hàm X → A thỏa mãn trong R thì ta đều có X là
một siêu khóa của R

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 23 / 23


BÀI GIẢNG
CƠ SỞ DỮ LIỆU
Ứng dụng bao đóng của tập thuộc tính

Nguyễn Hải Châu

Khoa Công nghệ Thông tin


Trường Đại học Công nghệ, ĐHQGHN

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 1 / 12
Định nghĩa bao đóng của tập thuộc tính

Giả sử F là một tập phụ thuộc hàm trên lược đồ quan hệ


R(A1 , A2 , ..., An ) và X ⊆ {A1 , A2 , ..., An } là một tập thuộc tính
của R
Bao đóng của tập thuộc tính X dưới F, ký hiệu là X + được
định nghĩa như sau:

X + = {A, A là thuộc tính của R, F |= X → A} (1)

Khi cần chỉ rõ tập phụ thuộc hàm, chúng ta ký hiệu bao đóng
của X dưới F là XF+

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 2 / 12
Tìm bao đóng của tập thuộc tính

Thuật toán 1: Thuật toán tìm bao đóng X + của X dưới F


Vào: Lược đồ quan hệ R, tập phụ thuộc hàm F và tập thuộc tính X
Ra: Tập thuộc tính X + là bao đóng của X
1 X+ = X;
2 repeat
3 OldX + = X + ;
4 for mỗi phụ thuộc hàm Y → Z trong F do
5 if X + ⊃ Y then
6 X+ = X+ ∪ Z;
7 end
8 end
9 until OldX + = X + ;

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 3 / 12
Lược đồ quan hệ và các phụ thuộc hàm

Lược đồ quan hệ R(A1 , A2 , A3 , A4 , A5 , A6 ) có tập phụ thuộc hàm:


F = {{A1 , A2 } → {A3 , A4 , A5 , A6 }, A4 → A2 , A6 → A1 }

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 4 / 12
Chương trình cài đặt thuật toán tìm bao đóng

$ ./introdb closure vidu 1 0 A6 # Chỉ in kết quả


Tập thuộc tính của ’vidu’ = {A1, A2, A3, A4, A5, A6}
Tập thuộc tính X = {A6}
Tập phụ thuộc hàm = {A1, A2}->{A3, A4, A5, A6}; {A4}->{A2}; {A6}->{A1}
Bao đóng X+ = {A6, A1}

$ ./introdb closure vidu 1 1 A6 # In các bước thực hiện


Tập thuộc tính của ’vidu’ = {A1, A2, A3, A4, A5, A6}
Tập thuộc tính X = {A6}
Tập phụ thuộc hàm = {A1, A2}->{A3, A4, A5, A6}; {A4}->{A2}; {A6}->{A1}
Khởi động thuật toán tính bao đóng. Tập thuộc tính X = {A6}
X+ = {A6}

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 5 / 12
Chương trình cài đặt thuật toán tìm bao đóng

Lặp 1:
oldX+ = {A6}
X+ = {A6}
Lặp 1.1:
X+ = {A6}
Y->Z = {A1, A2}->{A3, A4, A5, A6}
X+ không chứa Y.
Lặp 1.2:
X+ = {A6}
Y->Z = {A4}->{A2}
X+ không chứa Y.
Lặp 1.3:
X+ = {A6}
Y->Z = {A6}->{A1}
X+ chứa Y, do đó X+ = X+ hợp Z. Giá trị mới của X+ = {A6, A1}
X+ != oldX+, tiếp tục.

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 6 / 12
Chương trình cài đặt thuật toán tìm bao đóng

Lặp 2:
oldX+ = {A6, A1}
X+ = {A6, A1}
Lặp 2.1:
X+ = {A6, A1}
Y->Z = {A1, A2}->{A3, A4, A5, A6}
X+ không chứa Y.
Lặp 2.2:
X+ = {A6, A1}
Y->Z = {A4}->{A2}
X+ không chứa Y.
Lặp 2.3:
X+ = {A6, A1}
Y->Z = {A6}->{A1}
X+ chứa Y, do đó X+ = X+ hợp Z. Giá trị mới của X+ = {A6, A1}
X+ == oldX+, dừng thuật toán.
Bao đóng X+ = {A6, A1}

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 7 / 12
Ứng dụng 1: Kiểm tra qui tắc suy diễn

Qui tắc suy diễn F |= {A2 , A6 } → A5 đúng hay sai?


Ta cần kiểm tra {A2 , A6 }+
F có chứa A5 hay không?
Thực hiện thuật toán tính bao đóng:
$ ./introdb closure vidu 1 0 A2 A6
Tập thuộc tính của ’vidu’ = {A1, A2, A3, A4, A5, A6}
Tập thuộc tính X = {A2, A6}
Tập phụ thuộc hàm = {A1, A2}->{A3, A4, A5, A6}; {A4}->{A2}; {A6}->{A1}
Bao đóng X+ = {A2, A6, A1, A3, A4, A5}
{A2 , A6 }+
F chứa A5 , vậy qui tắc suy diễn đúng

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 8 / 12
Ứng dụng 1: Kiểm tra qui tắc suy diễn

Qui tắc suy diễn F |= A6 → A5 đúng hay sai?


Ta cần kiểm tra {A6 }+
F có chứa A5 hay không?
Thực hiện thuật toán tính bao đóng:
$ ./introdb closure vidu 1 0 A6
Tập thuộc tính của ’vidu’ = {A1, A2, A3, A4, A5, A6}
Tập thuộc tính X = {A6}
Tập phụ thuộc hàm = {A1, A2}->{A3, A4, A5, A6}; {A4}->{A2}; {A6}->{A1}
Bao đóng X+ = {A6, A1}
{A6 }+
F không chứa A5 , vậy qui tắc suy diễn sai

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 9 / 12
Ứng dụng 2: Kiểm tra tập thuộc tính là siêu khóa

{A2 , A6 } có là siêu khóa không?

$ ./introdb closure vidu 1 0 A2 A6


Tập thuộc tính của ’vidu’ = {A1, A2, A3, A4, A5, A6}
Tập thuộc tính X = {A2, A6}
Tập phụ thuộc hàm = {A1, A2}->{A3, A4, A5, A6}; {A4}->{A2}; {A6}->{A1}
Bao đóng X+ = {A2, A6, A1, A3, A4, A5}

{A2 , A6 }+
F = {A1 , A2 , A3 , A4 , A5 , A6 } do đó {A2 , A6 } là siêu khóa

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 10 / 12
Ứng dụng 2: Kiểm tra tập thuộc tính là khóa
{A2 , A6 } là siêu khóa; {A2 , A6 } có là khóa không?
Tìm {A6 }+
F:

$ ./introdb closure vidu 1 0 A6


Tập thuộc tính của ’vidu’ = {A1, A2, A3, A4, A5, A6}
Tập thuộc tính X = {A6}
Tập phụ thuộc hàm = {A1, A2}->{A3, A4, A5, A6}; {A4}->{A2}; {A6}->{A1}
Bao đóng X+ = {A6, A1}

Tìm {A2 }+
F:

$ ./introdb closure vidu 1 0 A2


Tập thuộc tính của ’vidu’ = {A1, A2, A3, A4, A5, A6}
Tập thuộc tính X = {A2}
Tập phụ thuộc hàm = {A1, A2}->{A3, A4, A5, A6}; {A4}->{A2}; {A6}->{A1}
Bao đóng X+ = {A2}

{A2 }+ +
F và {A6 }F đều là tập con thực sự của {A1 , A2 , A3 , A4 , A5 , A6 }, do đó
{A2 , A6 } là siêu khóa tối thiểu → là khóa

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 11 / 12
Ứng dụng 3: Tìm khóa của lược đồ quan hệ

Thực hiện thuật toán tìm một khóa:


Lần lặp Tập thuộc tính Bao đóng
1 A1, A2, A3, A4, A5, A6 A1, A2, A3, A4, A5, A6
2 A2, A3, A4, A5, A6 A2, A3, A4, A5, A6, A1
3 A3, A4, A5, A6 A3, A4, A5, A6, A2, A1
4 A4, A5, A6 A4, A5, A6, A2, A1, A3
5 A5, A6 A5, A6, A1
6 A4, A6 A4, A6, A2, A1, A3, A5
7 A4 A4, A2
Khóa tìm được: {A4 , A6 }

N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 12 / 12

You might also like