You are on page 1of 183

LOGO Chương 1: Tổng quan về CSDL

Môn cơ sở dữ liệu
Cơ sở dữ liệu
❖Dữ liệu là gì?
❖Có các hình thức lưu trữ nào?

2
Dữ liệu là gì?
❖Những thông tin được lưu trữ lại bằng một
hình thức cụ thể.
❖Ví dụ: dữ liệu việc làm, dữ liệu học tập, dữ
liệu điểm số sinh viên, dữ liệu check in
của một hãng hàng không, dữ liệu không
gian,…

3
Hình thức lưu trữ dữ liệu
❖Khắc trên đá, đồ vật
❖Vẽ trên vải
❖Ghi trên giấy
❖Lưu trên máy tính
❖Lưu trữ với công nghệ điện toán đám mây

4
Cơ sở dữ liệu là gì?
❖Một tập hợp các dữ liệu có mối quan hệ
với nhau chứa thông tin về một tổ chức
nào đó (như một trường học, một công ty,
một nhà máy,…)
❖Được lưu trữ trên máy tính để đáp ứng
nhu cầu khai thác thông tin của nhiều
người sử dụng với nhiều mục đích khác
nhau.

5
Hệ cơ sở dữ liệu
❖Bao gồm:
▪ Cơ sở dữ liệu
▪ Hệ quản trị cơ sở dữ liệu

Sơ đồ Hệ cơ sở dữ liệu

6
Kiến trúc 3 mức của hệ CSDL


View level

Logical level

Physical level

7
Kiến trúc 3 mức của hệ CSDL(tt)
❖Mức vật lý (Physical level)
▪ Mô tả cách tổ chức lưu trữ dữ liệu trên đĩa.
▪ Do hệ quản trị CSDL đảm nhiệm
❖Mức logic (Logical level)
▪ Mô tả cách thức tổ chức dữ liệu trong
database dựa trên các mô hình dữ liệu.
▪ Ví dụ: mô hình thực thể kết hợp, mô hình
quan hệ.
❖Mức khung nhìn (View level)
▪ Các chương trình ứng dụng giao tiếp với
người dùng 8
Hệ quản trị cơ sở dữ liệu
❖Database Manager System (DBMS) Là
chương trình ứng dụng có khả năng tạo ra
cơ sở dữ liệu, quản lý, lưu trữ và xử lý
truy vấn trên cơ sở dữ liệu.
❖Hỗ trợ cài đặt mô hình cụ thể (VD: mô
hình quan hệ, mô hình hướng đối
tượng,…)
❖Hỗ trợ các ngôn ngữ giao tiếp với người
sử dụng

9
Các ngôn ngữ của DBMS
❖Ngôn ngữ định nghĩa dữ liệu (Data
Definition Language – DDL)
▪ Định nghĩa trúc cơ sở dữ liệu và các đối
tượng trong cơ sở dữ liệu(create database,
create table, create view,…)
❖Ngôn ngữ thao tác dữ liệu (Data
Manipulation Language - DML)
▪ Thực hiện các lệnh cập nhật dữ liệu: insert,
update, delete

10
Các ngôn ngữ của DBMS(tt)
❖Ngôn ngữ truy vấn dữ liệu (Structured
Query Language - SQL)
▪ Truy vấn thông tin trên cơ sở dữ liệu: Select –
From – Where
❖ Ngôn ngữ quản lý dữ liệu (Data Control
Language – DCL)
▪ Thay đổi cấu trúc đối tượng (Alter table, Alter
Procecure, …)
▪ Tạo và quản lý người dùng truy cập cơ sở dữ
liệu (Create user, Create login, Grant,
Revoke…)
11
Một số DBMS thông dụng
❖MS SQL Server (Microsoft)
❖DB2 (IMB)
❖Oracle database (Oracle)
❖MongleDB (MongoDB Inc)
❖MySQL (Oracle Corporation)
❖Db4J (Actian)
❖Neo4j (Neo4j inc)

12
Các đối tượng sử dụng CSDL
❖Quản trị viên CSDL
▪ Quản lý tài nguyên cơ sở dữ liệu
▪ Quản lý quyền truy cập, điều phối, giám sát
việc sử dụng cơ sở dữ liệu
❖Phân tích thiết kế viên hệ thống
▪ Khảo sát hệ thống
▪ Phân tích yêu cầu người dùng để thiết kế hệ
thống thông tin

13
Các đối tượng sử dụng CSDL(tt)
❖Lập trình viên ứng dụng
▪ Lập trình thành chương trình ứng dụng hoàn
chỉnh theo thiết kế đã có.
▪ Bảo trì chương trình ứng dụng.
❖Người sử dụng CSDL
▪ Khai thác thông tin từ cơ sở dữ liệu
▪ Cập nhật dữ liệu có trên cơ sở dữ liệu

14
Mô hình dữ liệu
❖Biểu diễn dữ liệu và sự quan hệ giữa
chúng một cách trừu tượng trong một hệ
thống cụ thể (Ví dụ: quản lý bán hàng,
quản lý bệnh viện, quản lý nhân sự,…)
❖Một số mô hình dữ liệu:
▪ Network model
▪ Hierarchical Model
▪ Relation Data Model
▪ Entity – Relationship Model
▪ Object Oriented Data Model
15
Network Model
▪ Ra đời năm 1960
▪ Dễ sử dụng nhưng phức tạp khi biểu diễn cơ
sở dữ liệu lớn

16
Hierarchical Model
▪ Ra đời cuối năm 1950
▪ Tổ chức ở dạng cây, mỗi nút của cây biểu
diễn một thực thể

17
Relation Data Model
❖Được E.F.Codd đưa ra vào năm 1970
❖Nền tảng cơ bản dựa vào lý thuyết tập hợp
❖Dữ liệu được tổ chức thành các bảng.
❖Được sử dụng rộng rãi cho đến ngày nay.

18
Entity – Relationship Model
❖Do P.P.Chen đề xuất vào năm 1976
❖Được sử dụng biểu diễn dữ liệu ở mức
quan niệm.

19
Object Oriented Data Model
❖Ra đời sau 1990, tiếp cận hướng đối
tượng gồm các khái niệm: lớp, kế thừa.
❖Đặc trưng cơ bản: tính đóng gói, tính đa
hình, tính tái sử dụng

20
Chương 2: Mô hình thực thể kết hợp
LOGO & mô hình quan hệ
Môn cơ sở dữ liệu
Mô hình thực thể kết hợp
❖Entity Relationship Model gọi tắt là ER hay
ERD là mô hình dữ liệu được dùng để
thiết kế cơ sở dữ liệu mức quan niệm.
❖Các khái niệm chính:
▪ Thực thể
▪ Kiểu thực thể
▪ Thuộc tính
▪ Mối kết hợp
▪ Phân loại kiểu thực thể
▪ Phân loại thuộc tính
22
Thực thể (Entity)
❖Là một đối tượng trong thế giới thực, tồn tại
một cách cụ thể hay tồn tại quan niệm.
❖Ví dụ: trong một lớp học gồm các thực thể:
▪ Tồn tại cụ thể: Huyền, Châu, Tuấn, Mai, Long.
▪ Tồn tại quan niệm: môn Toán, môn Lý, môn Hóa

Châu
Tuấn

Long
Huyền Mai
23
Kiểu thực thể (Entity types)
▪ Một tập các thực thể có cùng các thuộc tính
▪ Biểu diễn: Tên kiểu thực thể

Các thực thể Kiểu thực thể


Mai
Huyền
Long SINH_VIEN
Châu Tuấn

Cơ sở dữ liệu
Toán rời rạc
Lập trình Web MON_HOC
Lập trình C
24
Thuộc tính (Attribute)
▪ Mô tả đặc trưng của thực thể
▪ Ví dụ:
• Thực thể Huyền, Mai, Châu, Tuấn, Long đều có
các thuộc tính là Mã sinh viên, Họ tên, Ngày sinh,
Giới tính, Tuổi.
• Thực thể Toán rời rạc, CSDL, Lập trình C, Lập
trình Web đều có các thuộc tính là Mã môn học,
tên môn học, số tín chỉ Mã số: 012335

Tên: Huyền

Ngày sinh: 19/04/99

Giới tính: Nữ

Tuổi: 18

25
Thuộc tính và kiểu thực thể
❖ Quan hệ giữa thuộc tính và thực thể
được biểu diễn bằng một trong 2 cách
sau:
HoTen
MaSV SINH_VIEN
MaSV
SINH_VIEN GioiTinh
HoTen
NgaySinh
Tuoi GioiTinh
NgaySinh Tuoi

26
Mối kết hợp (Relationship)
❖Thể hiện sự liên kết giữa 2 thực thể phản
ánh một thực tế về quản lý
❖Có 3 loại mối kết hợp:
▪ Một – Nhiều (1 – n)
▪ Một – Một (1 – 1)
▪ Nhiều – Nhiều (n – n)

27
Mối kết hợp Một – Nhiều
❖Cách 1:
▪ Biểu diễn: E F

▪ Mô tả: Mỗi thực thể thuộc kiểu thực thể E có


thể liên kết với một hoặc nhiều thực thể thuộc
kiểu thực thể F. Ngược lại, mỗi thực thể kiểu
F có liên kết với nhiều nhất một thực thể kiểu
E

28
Mối kết hợp Một – Nhiều (tt)
❖Cách 2: sử dụng cặp chỉ số (min,max)
▪ Biểu diễn: (1,n) (1,1)
E F

▪ Mô tả:
• Mỗi thực thể thuộc kiểu thực thể E có liên kết với ít
nhất 1 và nhiều nhất n thực thể thuộc kiểu thực thể F.
• Ngược lại, Mỗi thực thể thuộc kiểu thực thể F có liên
kết với ít nhất 1 và nhiều nhất 1 thực thể thuộc kiểu
thực thể E
• Các chỉ số min, max có thể thay đổi như: 0, 1,
30,…tùy thuộc vào yêu cầu thực tế.

29
Ví dụ mối kết hợp 1 – N
Huyền
Lop01 Châu
Lop02 Tuấn
Lop03 Long
Mai
TenLo
Cách 1 MaLop p
MaSV HoTen

LOP SINH_VIEN GioiTinh

Siso NgaySinh Tuoi

Cách 2
30
Mối kết hợp Một – Một
❖Cách 1:
▪ Biểu diễn: E F

▪ Mô tả:
• Mỗi thực thể thuộc kiểu thực thể E có liên kết với
nhiều nhất một thực thể thuộc kiểu thực thể F.
• Ngược lại, mỗi thực thể kiểu F có liên kết với
nhiều nhất một thực thể kiểu E

31
Mối kết hợp Một – Một (tt)
❖Cách 2: sử dụng cặp chỉ số (min,max)
▪ Biểu diễn: (1,1) (1,1)
E F

▪ Mô tả:
• Mỗi thực thể thuộc kiểu thực thể E có liên kết với ít
nhất 1 và nhiều nhất 1 thực thể thuộc kiểu thực thể F.
• Ngược lại, Mỗi thực thể thuộc kiểu thực thể F có liên
kết với ít nhất 1 và nhiều nhất 1 thực thể thuộc kiểu
thực thể E
• Các chỉ số min, max có thể thay đổi như: 0, 1,
30,…tùy thuộc vào yêu cầu thực tế.

32
Ví dụ mối kết hợp Một – Một
Giả sử rằng quan hệ giữa phòng ban và trưởng phòng
như sau:
P.Kinh Huyền
Doanh
P.Kế Tuấn
toán
P.Quản trị Mai

TenPH MaTP HoTen


MaPH

Cách 1 PHONGBAN TR_PHONG GioiTinh

DiaDiem NgaySinh Tuoi

Cách 2
33
Mối kết hợp Nhiều – Nhiều
❖Cách 1:
▪ Biểu diễn: E F

▪ Mô tả:
• Mỗi thực thể thuộc kiểu thực thể E có liên kết với
một hoặc nhiều thực thể thuộc kiểu thực thể F
• Ngược lại, Mỗi thực thể thuộc kiểu thực thể F có thể
liên kết với một hoặc nhiều thực thể thuộc kiểu thực
thể E

34
Mối kết hợp Nhiều – Nhiều (tt)
❖Cách 2: sử dụng cặp chỉ số (min,max)
▪ Biểu diễn: (1,n) (1,n)
E F

▪ Mô tả:
• Mỗi thực thể thuộc kiểu thực thể E có liên kết với ít
nhất 1 và nhiều nhất n thực thể thuộc kiểu thực thể F.
• Ngược lại, Mỗi thực thể thuộc kiểu thực thể F có liên
kết với ít nhất 1 và nhiều nhất n thực thể thuộc kiểu
thực thể E

35
Ví dụ mối kết hợp Nhiều – Nhiều
Huyền
ToanCC
Châu
CSDL
Tuấn
LTC
Long

TenMH MaSV HoTen


MaMH

Cách 1 MON_HOC SINH_VIEN GioiTinh

NgaySinh Tuoi
SoTC

Cách 2
36
Phân loại thuộc tính
❖ Thuộc tính khóa (định danh)
❖ Thuộc tính đơn trị
❖ Thuộc tính đa trị
❖Thuộc tính gộp
❖ Thuộc tính dẫn xuất

37
Thuộc tính khóa (định danh)
▪ Dùng để xác định duy nhất một thực thể trong
một kiểu thực thể. Ký hiệu gạch dưới tên
thuộc tính.
▪ Ví dụ:
• MaSV là khóa trong kiểu thực thể SINH_VIEN
• MaMH là khóa trong kiểu thực thể MON_HOC

38
Thuộc tính đơn trị
▪ Có giá trị đơn (nguyên tử) nghĩa là không thể
chia nhỏ giá trị thành các phần có ý nghĩa.
▪ Ví dụ:
• Thuộc tính Tuoi có giá trị 20
• Thuộc tính GioiTinh có giá trị Nam

39
Thuộc tính đa trị
▪ Có chứa nhiều giá trị
▪ Ví dụ: Một nhân viên có 2 bằng cấp chuyên
môn là Kỹ sư Công nghệ thông tin và Cử
nhân ngoại ngữ. Vậy thuộc tính BangCap của
nhân viên là đa trị vì có thể chứa nhiều giá trị.
▪ Biểu diễn: BangCap

40
Thuộc tính gộp
▪ Giá trị có thể phân tách thành nhiều phần có ý
nghĩa.
▪ Ví dụ:
• HoTen có thể tách thành 2 phần là Họ, Tên.
• DiaChi có thể tách thành Số nhà, Đường, Quận,
Thành phố.

41
Thuộc tính dẫn xuất
▪ Có giá trị được tính toán từ các giá trị của các
thuộc tính khác.
▪ Trong thiết kế cơ sở dữ liệu có thể loại bỏ
những thuộc tính dẫn xuất để tối ưu bộ nhớ
lưu trữ.
▪ Ví dụ: ThanhTien có giá trị được tính từ 2
thuộc tính là SoLuong và DonGia

42
Phân loại kiểu thực thể
❖Kiểu thực thể mạnh (Strong Entity Types)
❖Kiểu thực thể yếu (Weak Entity Types)

43
Kiểu thực thể mạnh
▪ Là kiểu thực thể có thuộc tính khóa định danh.
▪ Tồn tại độc lập mà không phụ thuộc vào sự tồn
tại của thực thể khác.
▪ Ví dụ: Các kiểu thực thể mạnh: NhanVien,
PhongBan, DeAn

44
Kiểu thực thể yếu
▪ Là kiểu thực thể không có thuộc tính định
danh riêng.
▪ Tồn tại phụ thuộc vào sự tồn tại của thực thể
khác.
▪ Ví dụ: Kiểu thực thể yếu ThanNhan phụ thuộc
vào kiểu thực thể NhanVien. ThanNhan chỉ
tồn tại khi có sự tồn tại của NhanVien.
▪ Biểu diễn:
ThanNhan

45
Mô hình quan hệ
❖Được E.F.Cold đề nghị vào năm 1970
❖Dựa trên nền tảng lý thuyết tập hợp
❖Các khái niệm chính
▪ Quan hệ (Relation)
▪ Thuộc tính (Attribute)
▪ Miền giá trị (Domain)
▪ Bộ (Tupe)
▪ Lược đồ quan hệ (Schema)
▪ Thể hiện quan hệ (Instance)
▪ Khóa (Key)
46
Quan hệ (Relation)
▪ Là đối tượng để trình bày dữ liệu được biểu
diễn bằng bảng 2 chiều.
▪ Ví dụ:

47
Thuộc tính, miền
▪ Mô tả tính chất đặt trưng riêng cho mỗi đối
tượng cần được quản lý và lưu trữ trong cơ
sở dữ liệu.
▪ Ví dụ: Các thuộc tính của đối tượng SinhVien
gồm: Mã sinh viên, họ tên, ngày sinh,…
▪ Tập các giá trị cho phép của thuộc tính gọi là
miền giá trị (Domain) của thuộc tính.
▪ Giá trị của thuộc tính thường là nguyên tử
(atomic).
▪ Thuộc tính có thể chứa giá trị rỗng (Null)

48
Bộ (Tupe)
▪ Một bộ là một dòng dữ liệu biểu diễn thông tin
của một đối tượng cụ thể trong quan hệ.
▪ Không có 2 bộ trùng nhau trong một quan hệ.
▪ Các bộ trong quan hệ là không có thứ tự.

49
Lược đồ quan hệ (Relation Schema)
❖Biểu diễn cấu trúc của quan hệ gồm tên
và tập các thuộc tính của quan hệ
❖Ví dụ: quan hệ HOCVIEN và lược đồ
tương ứng

50
Thể hiện quan hệ (Instance)
❖Một thể hiện quan hệ (Relation Instance)
là giá trị của quan hệ tại một thời điểm cụ
thể.
❖Ví dụ:

51
Khóa (Key)
▪ Gọi U là tập tất cả các thuộc tính của R; t1, t2
là 2 bộ bất kỳ trên R.
▪ Tập thuộc tính K⊆U được gọi là khóa của R
nếu:
• ∀t1, t2 ∈ R, t1[K] ≠ t2 [K]
• ∀ K’⊂K đều không thỏa tính chất trên
▪ Ví dụ: Quan hệ KETQUA có một khóa là
{MaSV, MaMH}

t1
t2

52
Siêu khóa (Super key)
▪ Là tập thuộc tính chứa hoặc bằng khóa.
▪ Ví dụ: Quan hệ KETQUA có 2 siêu khóa là:
S1={MaSV, MaMH}
S2={MaSV, MaMH, DiemThi}

53
Khóa chính (Primary key)
❖Là khóa được chọn từ tập các khóa của
quan hệ
❖Ví dụ: Quan hệ NHANVIEN có 3 khóa là
MANV, EMAIL và SOCMND
Trong 3 khóa này, ta có thể chọn MANV
làm khóa chính

54
Khóa ngoại (Foreign key)
❖Là tập các thuộc tính tham chiếu đến một
khóa chính trên quan hệ.
❖Quan hệ được tham chiếu đến có thể
cùng hoặc khác quan hệ chứa khóa ngoại.
❖Ví dụ: MaPH trên quan hệ NHANVIEN là
khóa ngoại

2
3
55
Ví dụ khóa ngoại
❖ Cho các lược đồ quan hệ:
NHANVIEN(MANV, HOTEN, PHAI, TUOI)
KYNANG(MANV, MAKN)
DEAN(MADA, TENDA, NGAYBD, NGAYKT)
PHANCONG(MANV, MAKN, MADA, NGAYPC)
Mô tả: Việc phân công đề án cho nhân viên phải dựa
vào kỹ năng của nhân viên có phù hợp với tính chất
của đề án hay không.
Hãy xác định khóa ngoại có trên các quan hệ
KYNANG, PHANCONG

56
Câu hỏi và bài tập
Câu 1: Trong một hệ thống quản lý thư viện, hãy
liệt kê các thực thể, thuộc tính, mối kết hợp mà
anh chị biết.
Câu 2: Trình bày 2 thực thể yếu có trong một hệ
thống mà Anh/Chị biết. Diễn giải cụ thể.
Câu 3: Trình bày 2 thuộc tính đa trị tồn tại trong
thực tế mà Anh Chị biết. Diễn giải cụ thể.
Câu 4: Trình bày 2 ví dụ về mối kết hợp 1 – 1 giữa
2 kiểu thực thể mà Anh Chị biết.

57
Câu hỏi và bài tập (tt)
Câu 5: Việc thể hiện cặp chỉ số (min, max) trên
mối kết hợp có lợi ích gì? Hãy nêu một số trường
hợp mối kết hợp có chỉ số min khác 1
Câu 6: Hãy đưa ra 3 quy tắc khi thiết kế mô hình
thực thể kết hợp.
Câu 7: Phân biệt khóa, siêu khóa, khóa chính,
khóa ngoại. Cho ví dụ minh họa.
Câu 8: Hãy cho biết thứ tự nhập và xóa dữ liệu
trên 2 quan hệ có tham chiếu khóa chính – khóa
ngoại.

58
Câu hỏi và bài tập (tt)
Câu 9: Thiết kế mô hình thực thể kết hợp cho hệ
thống quản lý thư viện.
Câu 10: Thiết kế mô hình thực thể kết hợp cho hệ
thống quản lý mua bán hàng hóa.
Câu 11: Thiết kế mô hình thực thể kết hợp cho hệ
thống quản lý cho thuê phòng.
Câu 12: Thiết kế mô hình thực thể kết hợp cho hệ
thống quản lý sinh viên.

59
LOGO Chương 3: Đại số quan hệ
Môn cơ sở dữ liệu
Đại số quan hệ
❖Các phép toán tập hợp
▪ Hội, giao, trừ, tích đềcác
❖Các phép toán quan hệ
▪ Chọn, chiếu, kết, đổi tên, chia
❖Tính giá trị biểu thức đại số quan hệ
❖Viết biểu thức truy vấn bằng đại số quan hệ.

61
Các phép toán tập hợp
❖Tính khả hợp:
▪ Hai quan hệ có cùng bậc (cùng số thuộc tính)
▪ Miền giá trị của mỗi thuộc tính tương ứng trên
2 quan hệ phải giống nhau
▪ Ví dụ:
• Các quan hệ khả hợp: r, s
• Quan hệ không khả hợp: r và p; s và p

62
Phép hội (Union)
❖Xét 2 quan hệ khả hợp: r và s
❖r ∪ s = {t | t ∈ r ∨ t ∈ s}
❖Ví dụ:

63
Ví dụ phép hội

64
Phép giao (Intersection)
Xét 2 quan hệ khả hợp: r và s
r ∩ s = { t | t∈r ∧ t∈s }
Ví dụ:

65
Ví dụ phép giao

66
Phép trừ (Difference)
Xét 2 quan hệ khả hợp: r và s
r - s = { t | t ∈ r và t ∉ s}
Ví dụ:

67
Ví dụ phép trừ

Những sinh viên nào học lớp 03CNTT không là


đoàn viên?

68
Tích đề các (Product)
▪ R có m thuộc tính A1, A2, …,Am và p bộ
▪ S có n thuộc tính B1, B2, …, Bn và q bộ.
▪ R x S có m+n thuộc tính (A1, A2, …,Am, B1, B2,
…,Bn) và có p x q bộ.

69
Phép chọn (Selection)
σP(R)={t | P(t) đúng}
Chọn các bộ trên quan hệ R thỏa điều kiện
P. Biểu thức điều kiện có thể sử dụng các
phép toán: =, <, ≤, >, ≥, ∧, ∨, ¬

70
Ví dụ phép chọn

Hãy cho biết những nhân viên nào thuộc phòng Kinh
doanh trên 25 tuổi?

71
Phép chiếu (Projection)
ΠX(r) = {t[X] | t ∈ r}
t[X] là giá trị của bộ t trên tập thuộc tính X

72
Ví dụ phép chọn và phép chiếu

Cho biết mã và tên những môn học có số tín chỉ


lớn hơn 2 ?

73
Phép kết (Join)
❖Phép kết có điều kiện (Theta join)

▪ Trong đó:
• P là điều kiện dạng Ai θ Bj với Ai ∈ {A1, A2, …,Am},
Bj∈{B1, B2, …,Bn}
• θ là một trong các phép so sánh =, <, ≤, >, ≥, #

74
Phép kết tự nhiên (Natural join)
❖Là phép kết có điều kiện so sánh ‘=’ giữa
một hoặc tập các thuộc tính của 2 quan hệ
tham gia.

75
Ví dụ phép kết tự nhiên

Cho biết thông tin nhân viên và phòng ban mà


nhân viên đó trực thuộc ?

76
Ví dụ phép chọn, chiếu, kết

Mã và họ tên những nhân viên thuộc phòng


Quản trị ?

Cách thực hiện khác ? 77


Phép chia (Division)
❖R(X) ÷ S(Y) = V(X – Y)
❖Chọn ra một số bộ trong quan hệ R sao
cho thỏa với tất cả các bộ trong quan hệ S

78
Ví dụ phép chia

Nhân viên nào được


phân công vào tất cả
các đề án ?

79
Phép đổi tên (Rename)
❖R← A: Đổi tên quan hệ A thành R
Ví dụ

80
LOGO Chương 4: Ngôn ngữ truy vấn SQL
Môn cơ sở dữ liệu
Ngôn ngữ truy vấn SQL
❖ Giới thiệu ngôn ngữ SQL
❖ Các lệnh khai báo cấu trúc
❖ Các lệnh cập nhật dữ liệu
❖ Lệnh truy vấn dữ liệu

82
Ngôn ngữ SQL là gì?
❖ SQL (Structured Query Language) là
ngôn ngữ hỏi đáp, có cấu trúc, được dùng
để khai thác cơ sở dữ liệu quan hệ.
❖ SQL có các tiêu chuẩn:
▪ ANSI (American National Standards Institute)
▪ SQL-92 (SQL2)
▪ SQL-99 (SQL3) mở rộng từ SQL2

83
Các lệnh khai báo cấu trúc
❖ Lệnh tạo cấu trúc bảng:
CREATE TABLE <tên_bảng>
( <tên cột 1> <kiểu dữ liệu> [null | not null],
<tên cột 2> <kiểu dữ liệu> [null | not null],

<tên cột n> <kiểu dữ liệu> [null | not null],
[constraint <tên ràng buộc khóa chính> primary
key (khóa chính)],
[constraint <tên ràng buộc khóa ngoại> foreign key
(khóa ngọai) references <bảng>])

84
Diễn giải Lệnh Create Table
❖Tên bảng:
▪ Là chuỗi ký tự bất kỳ không chứa khoảng trắng.
▪ Không trùng với các từ khóa.
❖ Tên cột:
▪ Là chuỗi ký tự bất kỳ không chứa khoảng trắng.
▪ Không trùng với tên cột khác bên trong bảng.
▪ Thứ tự các cột trong bảng là không quan trọng

85
Diễn giải Lệnh Create Table (tt)
❖ Giá trị Null
▪ Là giá trị rỗng, sẽ được áp dụng khi người dùng
không nhập dữ liệu vào bảng.
▪ Thuộc tính khoá chính bị ràng buộc Not Null
❖ Kiểu dữ liệu:
▪ Qui định dạng dữ liệu mà cột sẽ lưu trữ bên
trong bảng.
▪ Một số kiểu dữ liệu thông dụng trong hệ quản trị
CSDL SQL Server: Char, Varchar, Nchar,
Nvarchar, int, float, Numeric, Datetime

86
Ví dụ lệnh tạo cấu trúc bảng
Cho lược đồ CSDL như sau:
LOP(MaLop, TenLop, Siso)
SINHVIEN(MaSV, HoTen, NgaySinh, Phai,
MaLop)
MONHOC(MaMH, TenMH, SoTC)
KETQUA(MaSV, MaMH, Diem)
Viết lệnh tạo các bảng tương ứng.

87
Ví dụ lệnh tạo cấu trúc bảng (tt)
LOP(MaLop, TenLop, Siso)

CREATE TABLE LOP


( MaLop NCHAR(10) Not Null,
TenLop NVARCHAR(50),
Siso int,
Constraint PK_Lop Primary Key(MaLop)
)
Lưu ý: Các ràng buộc khoá chính, khoá ngoại có
thể tạo sau khi tạo bảng.

88
Xác định kiểu dữ liệu
❖ Việc xác định kiểu dữ liệu phù hợp cho các
cột là rất quan trọng, tránh sự ảnh hưởng
đến dữ liệu trong quá trình vận hành cơ sở
dữ liệu.
❖ Kiểu dữ liệu được xác định dựa vào dữ
liệu cần lưu trữ khảo sát trong thực tế.
❖ Chiều dài dữ liệu được xác định sao cho
bao phủ được giá trị lớn nhất của dữ liệu
trong tương lai nhưng không nên quá thừa.

89
Kiểu dữ liệu chuỗi ký tự
Char, Nchar Varchar, NVarchar
- Cấp phát vùng nhớ tĩnh - Cấp phát vùng nhớ động
- Chiều dài cố định - Chiều dài biến đổi
- Bộ nhớ được cấp phát - Bộ nhớ chỉ được cấp
ngay khi tạo bảng phát khi nhập dữ liệu
- Ví dụ: Char(10): Dữ liệu - Varchar(10): Dữ liệu
nhập: ‘A001’. Vẫn cấp nhập ‘A001’ chỉ cấp phát
phát 10 ô nhớ để lưu trữ 4 ô nhớ lưu trữ vừa đủ
chuỗi. chuỗi.
- Tốc độ xử lý nhanh hơn - Tốc độ xử lý chậm hơn
kiểu Varchar kiểu Char

90
Kiểu dữ liệu chuỗi ký tự (tt)
Char, Varchar Nchar, NVarchar
- Không sử dụng cho dữ - Sử dụng cho dữ liệu
liệu Unicode Unicode
- Ký tự đầu N(National):
Dạng dữ liệu được thông
hiểu trên thế giới
- Dữ liệu nhập đặt trong cặp - Dữ liệu nhập có ký tự N
dấu nháy. Ví dụ: ‘A001’ phía trước. Ví dụ: N‘A001’

91
Ví dụ lệnh tạo cấu trúc bảng (tt)
SINHVIEN(MaSV, HoTen, NgaySinh, MaLop)
CREATE TABLE SINHVIEN
( MaSV Nchar(10) Not Null, MaLop là thuộc tính
khoá ngoại nên kiểu dữ
HoTen Nvarchar(50), liệu và chiều dài phải
NgaySinh DateTime, giống hoàn toàn với
MaLop Nchar(10), MaLop trong bảng LOP
Constraint PK_SV Primary Key(MaSV),
Constraint FK_SV_Lop Foreign Key (MaLop) Refercences
LOP(MaLop)
)
Lưu ý: Khi tạo ràng buộc khoá ngoại trong bảng phải đảm bảo
bảng chứa khoá chính tương ứng đã được tạo trước

92
Ví dụ lệnh tạo cấu trúc bảng(tt)
❖ Sinh viên viết lệnh tạo các cấu trúc bảng
còn lại dựa trên lược đồ CSDL:
MONHOC(MaMH, TenMH, SoTC)
KETQUA(MaSV, MaMH, Diem)

93
Lệnh sửa cấu trúc bảng
❖ Sử dụng lệnh ALTER TABLE để thay đổi
cấu trúc bảng.
❖Các thay đổi thông thường là:
▪ Thêm cột
▪ Xoá cột
▪ Sửa kiểu dữ liệu của cột
▪ Thêm, xoá ràng buộc (khoá chính, khoá ngoại
và các ràng buộc khác)

94
Lệnh thêm cột
❖Cú pháp:
ALTER TABLE <tên_bảng>
ADD <tên_cột> <kiểu_dữ_liệu>
❖ Ví dụ:
Thêm cột GhiChu (ghi chú) vào bảng SINHVIEN:
ALTER TABLE SINHVIEN
ADD GhiChu Nvarchar(100)

95
Lệnh xoá cột
❖Cú pháp:
ALTER TABLE <tên_bảng>
DROP COLUMN <tên_cột>
❖ Ví dụ:
Xoá cột GhiChu (ghi chú) trên bảng SINHVIEN:
ALTER TABLE SINHVIEN
DROP COLUMN GhiChu

96
Lệnh sửa cột
❖Cú pháp:
ALTER TABLE <Tên_bảng>
ALTER COLUMN <Tên_cột>
<Kiểu_dữ_liệu_mới>
❖ Ví dụ:
Sửa cột GhiChu (ghi chú) trên bảng SINHVIEN:
ALTER TABLE SINHVIEN
ALTER COLUMN GhiChu NVARCHAR(150)

97
Lệnh thêm ràng buộc
❖Cú pháp:
ALTER TABLE <Tên_bảng>
ADD CONTRAINT<cấu trúc contraint 1>,
CONTRAINT<cấu trúc contraint 2>,
….
❖Ví dụ:
Thêm ràng buộc khoá ngoại trên bảng SINHVIEN:
ALTER TABLE SINHVIEN
ADD Constraint FK_SV_Lop Foreign Key (MaLop) Refercences
LOP(MaLop)

98
Lệnh xoá ràng buộc
❖Cú pháp:
ALTER TABLE <Tên_bảng>
DROP CONSTRAINT<tên constraint 1>,
<tên constraint 2>,

❖Ví dụ:
Xoá ràng buộc khoá ngoại trên bảng KETQUA:
ALTER TABLE KETQUA
DROP Constraint FK_SV, FK_MH

99
Các lệnh cập nhật dữ liệu
❖ Cập nhật dữ liệu gồm các thao tác:
▪ Thêm dữ liệu
▪ Xoá dữ liệu
▪ Sửa dữ liệu
❖ Các thao tác này làm cho dữ liệu trong cơ
sở dữ liệu bị thay đổi.

100
Lệnh thêm dữ liệu
❖ Cú pháp:
INSERT INTO TênBảng[(Danh sách cột)]
VALUES(Danh sách giá trị)
❖ Ví dụ:
Xét quan hệ MONHOC(MaMH, TenMH, SoTC)
Thêm dữ liệu vào bảng MONHOC
INSERT INTO MONHOC(MaMH, TenMH, SoTC)
VALUES(‘101001756’, ‘Cấu trúc dữ liệu’, 4)
Hoặc:
INSERT INTO MONHOC
VALUES(‘101001756’, ‘Cấu trúc dữ liệu’, 4)
101
Lệnh xoá dữ liệu
❖ Cú pháp:
DELETE FROM TênBảng
[WHERE <Điều kiện xoá>]
❖ Ví dụ: Xét quan hệ
MONHOC(MaMH, TenMH, SoTC)
Xoá môn học có mã số là ‘101001756’
DELETE FROM MONHOC
WHERE MaMH= ‘101001756’

102
Lệnh sửa dữ liệu
❖ Cú pháp:
UPDATE <Tên Bảng>
SET <Tên cột>=<giá trị>
[WHERE <Điều kiện sửa>]
❖ Ví dụ: Xét quan hệ:
MONHOC(MaMH, TenMH, SoTC)
Sửa số tín chỉ của môn học mã số ‘101001756’ có giá
trị mới là 4
UPDATE MONHOC
SET SoTC=4
WHERE MaMH= ‘101001756’
103
Truy vấn dữ liệu
❖Cấu trúc lệnh truy vấn:
SELECT [* | DISTINCT] <danh_sách_cột>
FROM <danh_sách_bảng>
[WHERE <biểu_thức_điều_kiện>]
[GROUP BY <danh_sách_tên_nhóm>]
[HAVING <biểu_thức_điều_kiện_nhóm>]
[ORDER BY {tên_cột_thứ_tự |
số_thứ_tự_cột | biểu thức] } [ASC | DESC]

104
Áp dụng truy vấn đơn giản
SELECT <các cột yêu cầu>
FROM <d/s bảng liên quan>
WHERE <điều kiện dòng>
▪ Xét lược đồ quan hệ:
SINHVIEN(MaSV, HoTen, Phai, MaLop)
Cho biết Mã và họ tên những sinh viên lớp ‘07DHTH’ ?
• Yêu cầu: Mã, họ tên
SELECT MaSV, HoTen
• Bảng liên quan: SINHVIEN FROM SINHVIEN
• Điều kiện: lớp ’07DHTH’ WHERE MaLop= ’07DHTH’

Lưu ý: Trong một câu truy vấn, mệnh đề SELECT và


FROM bắt buộc phải có. Các mệnh đề khác có thể không
có tuỳ thuộc vào câu truy vấn
105
Truy vấn đơn giản
Xét bảng dữ liệu MONHOC như sau:

Liệt kê danh sách mã và tên những môn học


có số tín chỉ >2
SELECT MaMH, TenMH
From MONHOC
Where SoTC>2
106
Biểu thức kết nối
Cú pháp:
TênBảng1.TênCột1=TênBảng2.TênCột2
Ví dụ: Xét các bảng tương ứng với 2 quan hệ:
LOP(MaLop, TenLop)
SINHVIEN(MaSV, HoTen, Tuoi, MaLop)

Biểu thức kết nối 2 quan hệ trên là:


SINHVIEN.MaLop=LOP.MaLop

Khoá ngoại Khoá chính


107
Sử dụng từ khoá AS
❖ Từ khoá AS được dùng để đổi tên cột, tên bảng
trong câu truy vấn
▪ Ví dụ: Cho biết mã và họ tên những sinh viên học lớp
Đại học CNTT khoá 07

SELECT MASV, HOTEN


FROM SINHVIEN, LOP
WHERE SINHVIEN.MALOP=LOP.MALOP
AND TENLOP=‘ĐH CNTT khóa 07’

108
Sử dụng từ khoá AS
❖ Từ khoá AS được dùng để đổi tên cột, tên bảng
trong câu truy vấn
▪ Ví dụ: Cho biết mã và họ tên những sinh viên học lớp
Đại học CNTT khoá 07
SELECT sv.MASV, sv.HOTEN AS SV07
FROM SINHVIEN AS sv, LOP
WHERE sv.MaLop=LOP.MaLop
AND TenLop=‘Đại học CNTT khoá 07’

109
Sử dụng từ ký hiệu ‘*’
❖Ký hiệu ‘*’ được dùng để lấy tất cả các cột
trên bảng.
❖Cú pháp: Select * hay Select TênBảng.*

Select * Select SINHVIEN.*


From SINHVIEN From SINHVIEN, LOP
Where MaLop= ’07DHTH’ Where SINHVIEN.MaLop=LOP.MaLop
AND TenLop= ‘Đại học CNTT khoá 07’

110
Sử dụng ký hiệu ‘%’
❖ Ký hiệu ‘%’ được dùng để thay thế cho
một chuỗi con bất kỳ
❖ Sử dụng trong mệnh đề Where
❖Cú pháp:
▪ TênCột LIKE ‘%chuỗi’
▪ TênCột LIKE ‘chuỗi%’
▪ TênCột LIKE ‘%chuỗi%’

111
Ví dụ sử dụng ký hiệu ‘%’
❖ Liệt kê những sinh viên có họ Trần

Select * From SINHVIEN


Where HoTen LIKE ‘Trần%’

112
Từ khoá DISTINCT
❖ DISTINCT được dùng để loại bỏ dòng
trùng trong kết quả câu truy vấn
❖ Cú pháp: Select DISTINCT DanhSáchCột
❖Ví dụ: Liệt kê danh sách mã môn mà sinh
viên 2001180021 đã học
Select DISTINCT MaMH
From KETQUA
Where MaSV= ‘2001180021’

113
Từ khoá Between…And
❖ Dùng để thiết lập điều kiện trong một
khoảng cho trước
❖ Cú pháp:
TênCột Between GiáTrịĐầu AND GiáTrịCuối
❖Ví dụ:
Select MaSV, MaMH
From KETQUA
Where Diem Between 6 And 8

Lưu ý: Diem Between 6 And 8 ⇔ Diem ≥6 And Diem≤8 114


Mệnh đề ORDER BY
❖ ORDER BY được dùng để sắp xếp thứ
tự kết quả truy vấn
❖ Cú pháp: ORDER BY TênCột ASC|DESC
▪ ASC (Ascending): Sắp xếp tăng dần
▪ DESC (Descending): Sắp xếp giảm dần
❖ Có thể sắp xếp cùng lúc nhiều cột, khi đó
độ ưu tiên sắp xếp từ trái sang phải

115
Ví dụ mệnh đề ORDER BY
❖Liệt kê danh sách tất cả sinh viên, sắp xếp
tăng dần theo họ tên sinh viên, nếu trùng
tên thì sắp giảm dần theo ngày sinh
SELECT *
FROM SINHVIEN
ORDER BY HOTEN ASC, NGSINH DESC

116
Các hàm thống kê
❖SUM(TênCột)
❖MAX(TênCột)
❖MIN(TênCột)
❖AVG(TênCột)
❖COUNT(TênCột|*)
Lưu ý: Các hàm này chỉ được đặt tại
SELECT hoặc HAVING. Không được đặt
trực tiếp trong WHERE

117
Ví dụ hàm thống kê

Cho biết số lần thi môn ‘TRR’ của sinh viên có mã


số = ‘2001180021’
SELECT COUNT(LanThi) AS SoLanThi
FROM KETQUA
WHERE MaSV= ‘2001180021’ AND MaMH = ‘TRR’
118
Mệnh đề GROUP BY
❖GROUP BY được sử dụng để gom nhóm
các bộ có cùng thuộc tính trong quan hệ,
mỗi nhóm bao gồm tập hợp các bộ có
cùng giá trị trên các thuộc tính gom nhóm

Tập thuộc tính trong


mệnh đề SELECT
⊆ Tập thuộc tính trong
mệnh đề GROUP BY

119
Ví dụ mệnh đề GROUP BY
❖Cho biết mã lớp và số sinh viên trong từng
lớp
SINHVIEN

SELECT MaLop, Count(MaSV) AS SoSV


FROM SINHVIEN
GROUP BY MaLop
120
Mệnh đề HAVING
▪ Sử dụng cho điều kiện lọc trên các nhóm.
▪ Cú pháp: HAVING BiểuThứcĐiềuKiện
▪ Ví dụ: Liệt kê danh sách những lớp (MaLop)
có trên 2 sinh viên

SELECT MaLop
FROM SINHVIEN
GROUP BY MaLop
HAVING Count(MaSV)>2

Lưu ý: Count(MaSV) ⇔ Count(*) 121


Truy vấn lồng/truy vấn con (Subquery)
❖ Là dạng thức mà một truy vấn này được
nhúng vào trong một truy vấn khác
❖Có 2 dạng truy vấn lồng:
▪ Lồng phân cấp
▪ Lồng tương quan

122
Lồng phân cấp
❖Hoạt động: Truy vấn con thực thi trước,
kết quả của truy vấn con sẽ trả về cho truy
vấn lớn thực hiện tiếp theo

Kết quả
Query Subquery

123
Lồng tương quan
❖Hoạt động: Truy vấn con và truy vấn lớn
thực thi song song.

Song song
Query Subquery

124
Một số từ khoá cho truy vấn lồng
❖ IN/NOT IN
❖ ALL
❖ ANY/SOME
❖ EXISTS/ NOT EXISTS

125
Ví dụ truy vấn lồng phân cấp
▪ Cho biết mã và tên môn học có số tín chỉ lớn
nhất

SELECT MAMH, TENMH


FROM MONHOC
WHERE SOTC>=ALL(SELECT SOTC >=ALL(2,3)
FROM MONHOC)
>=3
126
Ví dụ truy vấn lồng tương quan

▪ Cho biết mã và tên những môn học mà chưa có


sinh viên nào học ?
SELECT MAMH, TENMH
FROM MONHOC
WHERE NOT EXISTS(SELECT * FROM KETQUA
WHERE MONHOC.MAMH=KETQUA.MAMH)
127
Ví dụ truy vấn lồng phân cấp

▪ Cho biết mã và tên những môn học mà chưa có


sinh viên nào học ?
SELECT MAMH, TENMH
FROM MONHOC
WHERE MAMH NOT IN (SELECT MAMH
FROM KETQUA)
128
LOGO Chương 5: Ràng buộc toàn vẹn
Môn cơ sở dữ liệu
Ràng buộc toàn vẹn (integrity constraints)

❖ Ràng buộc toàn vẹn là gì?


❖ Các đặc trưng của ràng buộc toàn vẹn
❖ Phân loại ràng buộc toàn vẹn

130
Ràng buộc toàn vẹn là gì?
❖ Là các quy tắc, điều kiện được thiết lập
trên cơ sở dữ liệu nhằm đảm bảo tính
đúng đắn của cơ sở dữ liệu trong quá
trình tương tác của người sử dụng.
❖ Những thao tác cập của người dùng có
thể làm thay đổi dữ liệu trong CSDL:
▪ Thêm dữ liệu
▪ Xoá dữ liệu
▪ Sửa dữ liệu

131
Các đặc trưng của RBTV
▪ Bối cảnh: Các quan hệ mà RBTV có thể bị vi
phạm khi có các thao tác cập nhật dữ liệu
trên các quan hệ đó
▪ Nội dung: Sự mô tả, biểu diễn hình thức các
quy tắc, điều kiện không được vi phạm trong
CSDL
▪ Tầm ảnh hưởng:
‘+’ Có thể vi phạm các quy tắc của RBTV
‘–’ Không vi phạm

132
Phân loại RBTV
❖ RBTV có trên một quan hệ
▪ Liên bộ
▪ Miền giá trị
▪ Liên thuộc tính
❖ RBTV có trên nhiều quan hệ
▪ Tham chiếu
▪ Liên bộ – liên quan hệ
▪ Liên thuộc tính – liên quan hệ
▪ Tổng hợp

133
RBTV liên bộ
❖ Là ràng buộc giữa các bộ giá trị trong
cùng một quan hệ.
❖ Sự tồn tại của một hay nhiều bộ phụ
thuộc vào sự tồn tại của một hay nhiều bộ
khác trong cùng quan hệ.
❖ Ràng buộc toàn vẹn về khóa là một
trường hợp của RBTV liên bộ.

134
Ví dụ RBTV liên bộ
Xét lược đồ quan hệ:
MOHOC(MaMH, TenMH, SoTC)
Trong quan hệ này tồn tại RBTV: Hai bộ khác nhau
bất kỳ sẽ có mã môn học khác nhau.
Bối cảnh: MONHOC
Nội dung: ∀ t1,t2 ∈ MONHOC,t1 ≠ t2:
t1.MaMH ≠ t2.MaMH
Bảng tầm ảnh hưởng:

135
RBTV Miền giá trị
❖ Qui định các giá trị mà một thuộc tính có
thể nhận
❖ Ví dụ: Số tín chỉ của môn học >=1
MOHOC(MaMH, TenMH, SoTC)
Bối cảnh: MONHOC
Nội dung: ∀ t ∈ MONHOC: t.SoTC >=1
Bảng tầm ảnh hưởng:

136
RBTV liên thuộc tính
❖ Là ràng buộc giữa các thuộc tính trong cùng
một quan hệ.
❖ Ví dụ: Xét quan hệ khoá học:
KHOAHOC(MaKH, TenKH, NgayBD, NgayKT)
Biểu diễn RBTV: Mỗi khoá học có ngày kết thúc khoá
học > ngày bắt đầu.
Bối cảnh: KHOAHOC
Nội dung: ∀ t ∈ KHOAHOC: t.NgayKT >t.NgayBD
Bảng tầm ảnh hưởng:

137
RBTV tham chiếu
❖ Là RBTV về phụ thuộc tồn tại hay RBTV
về khoá ngoại.
❖ Phổ biến trong cơ sở dữ liệu vì các quan
hệ trong CSDL luôn luôn có mối liên hệ
mật thiết với nhau.
❖ Bộ giá trị của một quan hệ được thêm
vào hợp lệ nếu như tồn tại một bộ giá trị
tương ứng ở một quan hệ khác

138
Ví dụ RBTV tham chiếu
LOP(MaLop, TenLop)
SINHVIEN (MaSV, HoTen, Phai, MaLop)
Trên 2 quan hệ này tồn tại RBTV tham chiếu: Mỗi
sinh viên phải thuộc về một lớp
Bối cảnh: LOP, SINHVIEN
Nội dung: ∀ t ∈ SINHVIEN, ∃ u ∈ LOP:
t.MaLop=u.MaLop
Bảng tầm ảnh hưởng:

139
RBTV liên bộ - liên quan hệ
❖ Là ràng buộc xảy ra giữa các bộ trên
nhiều quan hệ khác nhau
❖ Ví dụ: Xét 2 quan hệ:
HOADON(MaHD, NgayLap, KH)
CHITIETHD(MaHD, MaHG, SoLuong, DonGia)
Trên 2 quan hệ này tồn tại RBTV liên bộ - liên
quan hệ: Mỗi hoá đơn phải có ít nhất một mặt
hàng

140
Ví dụ RBTV liên bộ - liên quan hệ
HOADON(MaHD, NgayLap, KH)
CHITIETHD(MaHD, MaHG, SoLuong, DonGia)
Biểu diễn RBTV: Mỗi hoá đơn phải có ít nhất một
mặt hàng
Bối cảnh: HOADON, CHITIETHD
Nội dung: ∀ t ∈ HOADON, ∃ u ∈ CHITIETHD:
t.MaHD=u.MaHD
Bảng tầm ảnh hưởng:

141
RBTV liên thuộc tính – liên quan hệ
❖ Là ràng buộc xảy ra giữa các thuộc tính
trên nhiều quan hệ khác nhau.
❖ Ví dụ: Xét 2 lược đồ quan hệ:
DATHANG(MaDH, MaKH, NgayDH)
GIAOHANG(MaGH, MaDH, NgayGH)
Trên 2 quan hệ này tồn tại RBTV liên thuộc tính –
liên quan hệ giữa ngày đặt hàng và ngày giao
hàng

142
Ví dụ RBTV liên thuộc tính – liên quan hệ

DATHANG(MaDH, MaKH, NgayDH)


GIAOHANG(MaGH, MaDH, NgayGH)
Biểu diễn RBTV: Mỗi phiếu giao hàng có ngày
giao hàng sau hoặc cùng ngày đặt hàng.
Bối cảnh: DATHANG, GIAOHANG
Nội dung: ∀ t ∈ GIAOHANG, ∃ u ∈ DATHANG:
t.MaDH=u.MaDH ∧
t.NgayGH>=u.NgayDH
Bảng tầm ảnh hưởng:

143
Bài tập chương 5
Cho lược đồ cơ sở dữ liệu sau:
PHONGBAN(MaPH, TenPH, DiaDiem)
NHANVIEN(MaNV, HoTen, Tuoi, Phai, Luong, MaPH)
DEAN(MaDA, TenDA, NgayBD, NgayKT)
PHANCONG(MaNV, MaDA, NgayPC)
Biểu diễn các ràng buộc toàn vẹn sau:
1/ Các RBTV liên bộ có trên mỗi quan hệ
2/ Các RBTV tham chiếu có trên NHANVIEN, PHANCONG
3/ RBTV miền giá trị có trên NHANVIEN
4/ RBTV liên thuộc tính có trên DEAN
5/ RBTV liên thuộc tính – liên quan hệ có trên DEAN,
PHANCONG
6/ Mỗi đề án được phân công cho ít nhất 1 nhân viên 144
LOGO Chương 6: Lý thuyết về thiết kế CSDL
Môn cơ sở dữ liệu
Lý thuyết về thiết kế CSDL
❖ Phụ thuộc hàm
❖ Khoá của lược đồ quan hệ
❖ Các dạng chuẩn

146
Phụ thuộc hàm

1/ Sinh viên ‘SV001’ có tên là gì? Biết mã sinh viên có tìm được chính xác
tên của sinh viên hay không ?

2/ Sinh viên LAN có mã là gì ? Biết tên sinh viên có tìm được chính xác
mã sinh viên hay không ?

3/ Sinh viên mã lớp 01 có tên là gì? Biết mã lớp có tìm được chính xác tên sinh
viên hay không ?

147
Phụ thuộc hàm

1/ MASV xác định được TENSV, viết là: MASV → TENSV

2/ TENSV không xác định được MASV

3/ MALOP không xác định được TENSV

148
Phụ thuộc hàm
❖ Định nghĩa:
Cho lược đồ quan hệ R, tập thuộc tính U, X,Y ⊂ U.
X→Y (X xác định Y hay Y phụ thuộc hàm vào X):
∀t1, t2∈R, nếu t1[X] = t2[X] thì t1 [Y] = t2 [Y]

Ví dụ: Xác định các phụ thuộc có thể có hàm có trong quan
hệ sau: A->B, A-/>C, C->B

t1
1
t2

149
Hệ tiên đề Armstrong
❖Cho lược đồ quan hệ R, tập thuộc tính U
và X,Y,Z,W ⊆ U
▪ Luật phản xạ:
Nếu Y ⊆ X thì X → Y
▪ Luật tăng trưởng:
Nếu Z ⊂ U và X → Y thì XZ → YZ
▪ Luật bắc cầu:
Nếu X → Y và Y → Z thì X → Z

150
Hệ tiên đề Armstrong(tt)
❖ Luật bổ sung từ hệ tiên đề Armstrong
▪ Luật phân rã:
Nếu X → YZ thì X → Y và X → Z
▪ Luật hợp:
Nếu X → Y và X → Z thì X → YZ
▪ Luật tựa bắc cầu:
Nếu X → Y và YZ → W thì XZ → W

BT: Từ các luật của hệ tiên đề Armstrong,


chứng minh các luật bổ sung trên.
151
Ví dụ áp dụng hệ tiên đề
Armstrong
1/ Cho R(ABCD), F={A→B, C →D}
Chứng minh AC → ABCD
Ta có: A→B => AC →BC (tăng trưởng C) (1)
C →D => AC →AD (tăng trưởng A) (2)
(1) và (2) => AC → ABCD (hợp)

152
Ví dụ áp dụng hệ tiên đề
Armstrong
2/ Cho R(ABCDE), F={B→C, A→E, BC→A, D→B}
Chứng minh: B→E
D→AEC
(sv tự chứng minh)

153
Bao đóng của tập thuộc tính
❖Định nghĩa:
Cho F là tập các phụ thuộc hàm trên tập thuộc
tính U, X ⊆ U. Bao đóng của tập các thuộc tính
X trên tập các phụ thuộc hàm F ký hiệu là X+F
được định nghĩa là:
X+F = {A|X→A∈ F+}.

154
Thuật toán tìm bao đóng
❖ Cho lược đồ quan hệ R, tập thuộc tính U, tập phụ thuộc
hàm F, X ⊆ U. Cần tìm bao đóng X+F ?
❖ Phương pháp:
Tính liên tiếp tập các thuộc tính X0, X1, X2,… theo các
bước:
1. Đặt X0 = X
2. Lần lược xét các phụ thuộc hàm của F, nếu Y→Z có
Y⊆ Xi thì Xi+1 = Xi ∪ Z, loại Y→Z ra khỏi F
3. Tiếp tục cho đến khi Xi+1=Xi thì thuật toán dừng
Kết luận: X+F = Xi

155
Ví dụ tìm bao đóng
Cho R(ABCDE), F={B→C, A→E, BC→A, D→B}
Tìm bao đóng của các tập thuộc tính: BC
BC+F=?
X0=BC
X1=X0∪A=ABC (xét phụ thuộc hàm BC→A)
X2=X1∪E=ABCE (xét phụ thuộc hàm A→E)
X3=X2 dừng
=> BC+F= ABCE
❖Tương tự, tìm bao đóng của các tập thuộc
tính D, AE
156
Khoá của lược đồ quan hệ
❖Định nghĩa:
Cho lược đồ quan hệ R, tập thuộc tính U, tập phụ
thuộc hàm F, X⊆U. Ta nói X là một khóa của R
nếu thỏa 2 điều kiện sau:
1. X→U
2. Không tồn tại Y⊂X sao cho Y ≠ ∅ mà Y→U

Để chứng minh X là khoá, thực hiện như sau:


1. X→U ⇔ X+=U
2. ∀Y⊂X, Y ≠ ∅ ta có Y+≠ U

157
Ví dụ áp dụng
Cho R(ABCDE),
F = {A→B, C→E, D→C, EB→D}
Chứng minh AD là một khoá của R
• CM: AD→U
AD+F=ADCEB=U=> AD→U (1)
• ∀Y⊂AD, Y ≠ ∅ ta có Y+≠ U
A+F=AB ≠ U
D+F=DCE ≠ U (2)
(1),(2)=> AD là một khóa của R

158
Các thuật toán tìm khoá
❖ Thuật toán dựa trên đồ thị
❖ Thuật toán loại bỏ thuộc tính
❖ Thuật toán tìm tất cả các khoá

159
Tìm khoá dựa trên đồ thị
Cho lược đồ quan hệ R, tập thuộc tính U, tập phụ
thuộc hàm F. Một đồ thị được mô tả như sau:
▪ Mỗi nút của đồ thị là tên của một thuộc tính trong R
▪ Nút trung gian là nút thể hiện tập gồm nhiều thuộc
tính, ký hiệu là ο
▪ Cung nối 2 thuộc tính A, B thể hiện phụ thuộc hàm
A→B
▪ Thuộc tính chỉ có các cung đi ra (tức là chỉ nằm trong
vế trái của các phụ thuộc hàm) được gọi là nút gốc.
▪ Thuộc tính chỉ có các cung đi vào (tức là chỉ nằm
trong vế phải của phụ thuộc hàm) được gọi là nút lá.

160
Tìm khoá dựa trên đồ thị (tt)
▪ Khóa của R phải bao phủ tập các nút gốc, đồng thời
không chứa bất kỳ nút lá nào của đồ thị.
▪ Xuất phát từ tập các nút gốc (X), tính X+F .Nếu X+F = U
thì X là khóa duy nhất
Ngược lại bổ sung một thuộc tính không thuộc nút lá
vào X rồi tìm bao đóng. Tiếp tục cho đến khi tìm được
bao đóng của X bằng U, khi đó X là khóa của R.

161
Ví dụ tìm khoá dựa trên đồ thị
Cho R(ABCDE)
F = {A→B, C→D, AE→C, D→E}
Đồ thị được vẽ như sau:
Tập nút gốc {A}
Tập nút lá: {B}
A+F= AB≠U
Bổ sung C vào tập nút gốc
AC+F= ABCDE = U
⇒ AC là một khoá của R

162
Tìm khoá bằng loại bỏ thuộc tính
❖ Cho lược đồ quan hệ R, tập thuộc tính U,
tập phụ thuộc hàm F
▪ Đặt K=U
▪ Loại khỏi K thuộc tính A nếu {K-A}+F=U, đặt
K={K-A}
▪ Dừng nếu không thể loại được nữa. Khi đó, K
là một khoá của R

163
Ví dụ tìm khoá bằng loại thuộc tính
Cho R(ABCDE)
F = {A→B, C→D, AE→C, D→E}
▪ Đặt K=ABCDE
▪ Loại E, ABCD+F=U, K=ABCD
▪ Loại D, ABC+F=U, K=ABC
▪ Loại C, AB+F=AB≠U (không loại được)
▪ Loại B, AC+F=U, K=AC
▪ Loại A, C+F=CDE≠U (không loại được). Dừng
⇒ K=AC là một khoá của R

164
Thuật toán tìm tất cả khoá
❖Cho lược đồ quan hệ R, tập thuộc tính U,
tập phụ thuộc hàm F
▪ Tập nguồn (TN): Gồm các thuộc tính chỉ xuất
hiện ở vế trái các phụ thuộc hàm hoặc các
thuộc tính thuộc R nhưng không xuất hiện
trong các phụ thuộc hàm.
▪ Tập trung gian (TG): Gồm các thuộc tính xuất
hiện ở cả 2 vế các phụ thuộc hàm.

165
Thuật toán tìm tất cả khoá(tt)
1. Xác định tập nguồn (TN) và tập trung gian
(TG). Nếu {TN}+F=U thì {TN} là một khoá duy
nhất của R. ngược lại qua bước 2
2. Liệt kê tất cả các tập con Xi của tập trung gian
và tính {Xi∪TN}. Nếu {Xi∪TN}+F=U thì {Xi∪TN}
là một siêu khoá Si
3. So sánh các siêu khoá Si và Sj, nếu Si⊂Sj thì
loại Sj ra khỏi tập khoá K. Các tập thuộc tính
còn lại chính là các khoá.

166
Ví dụ tìm tất cả khoá
Cho R(ABC), F={AC→B, B→A}
TN={C}, TG={A, B}

R có 2 khoá là AC và BC

167
Các dạng chuẩn
❖ Dạng chuẩn 1 (1 Normal Form – 1NF)
❖ Dạng chuẩn 2 (2 Normal Form – 2NF)
❖ Dạng chuẩn 3 (3 Normal Form – 3NF)
❖ Dạng chuẩn BC (Boyce-Codd Normal
Form – BCNF)

168
Thuộc tính khoá và không khoá
Cho lược đồ quan hệ R, tập thuộc tính U và tập
phụ thuộc hàm F
▪ Thuộc tính khoá: thuộc tính A∈U được gọi là
thuộc tính khóa nếu A có tham gia vào một
khóa của R
▪ Thuộc tính không khoá: thuộc tính A∈U được
gọi là thuộc tính không khóa nếu A không
tham gia vào tất cả các khóa của R
▪ Ví dụ: cho R(ABCDE) có 2 khoá là AB và AC
• Các thuộc tính khoá: A, B, C
• Các thuộc tính không khoá: D, E

169
Phụ thuộc hàm đầy đủ
▪ Xét X→Y: thuộc tính Y được gọi là phụ thuộc
đầy đủ vào tập thuộc tính X nếu mọi tập con
của X đều không xác định Y
▪ Ví dụ: R(ABCDE), F={AB→E, D →CE, A →D}
• Xét phụ thuộc hàm AB→E
• Ta có A →D và D →CE ⇒ A →CE ⇒ A →E mà
A⊂AB ⇒ E không phụ thuộc đầy đủ vào AB

170
Phụ thuộc bắc cầu
▪ Một thuộc tính A được gọi là phụ thuộc bắc
cầu vào tập thuộc tính X nếu thỏa đồng thời
các điều kiện sau:
1. X → Y, Y → A
2. Y → X
3. A ∉ (X∪Y)
▪ Ví dụ: Cho R(ABCDE),
F={A→B, B→E, E→A, EB→D, D→C}
Kiểm tra E có phụ thuộc bắc cầu vào A?
• Ta có A → B, B → E thỏa điều kiện (1) nhưng
B→A (do B→E, E→A) nên điều kiện (2) không
thỏa, suy ra E không phụ thuộc bắt cầu vào A
171
Dạng chuẩn 1(1 NF)
Định nghĩa:
Một lược đồ quan hệ R được gọi là đạt
chuẩn 1 (1NF) nếu không có thuộc tính lặp
và không có thuộc tính kép (khi đó miền giá
trị chỉ chứa các giá trị nguyên tử)

172
Dạng chuẩn 1 (tt)
❖ Thuộc tính lặp:

❖ Thuộc tính kép:

173
Dạng chuẩn 2 (2NF)
Định nghĩa:
Một lược đồ quan hệ R được gọi là đạt
chuẩn 2 nếu nó đạt chuẩn 1 và mọi thuộc
tính không khóa đều phụ thuộc đầy đủ vào
khóa.

174
Ví dụ dạng chuẩn 2
Cho R(ABCD)
F= {A→B, C→D, B→D}
Kiểm tra R có đạt chuẩn 2 không ?

▪ R có một khoá là AC, thuộc tính không khoá


là B,D
▪ Xét AC→B có A⊂ AC mà A→B với B là thuộc
tính không khoá ⇒ B không phụ thuộc đầy đủ
vào khoá AC nên R không đạt chuẩn 2

175
R(ABCD), F={AB → C, B → D, BC → A}
Kiểm tra R có đạt chuẩn 2 không?
R có 2 khoá: AB và BC
=> thuộc tính ko khóa: D
Xét BC→D, có B⊂ BC mà B→D với D là thuộc tính
không khoá ⇒ D không phụ thuộc đầy đủ vào
khoá BC nên R không đạt chuẩn 2

176
Ví dụ dạng chuẩn 2(tt)
Kiểm tra các quan hệ sau có đạt chuẩn 2 không?
❖SINHVIEN(MaSV, HoTen, Tuoi, MaLop,
TenLop)
F={ MaSV→HoTen,Tuoi, MaLop
MaLop→TenLop }
Khóa: TN={MaSV}, TG={MaLop}
{MaSV}+F={MaSV,HoTen,Tuoi, MaLop, TenLop}=U
⇒ Có 1 khóa duy nhất là {MaSV}
Vì mọi PTH trong F đều có vế trái 1 thuộc tính => Các PTH
này đều đầy đủ => quan hệ SINHVIEN đạt chuẩn 2.

❖HOCTAP(MaSV, MaMH, SoTC, DiemThi)


F={ MaSV, MaMH→DiemThi 177
Dạng chuẩn 3 (3NF)
Định nghĩa 1:
Một lược đồ quan hệ R được gọi là đạt
chuẩn 3 nếu mọi phụ thuộc hàm không hiển
nhiên X → A định nghĩa trên F (trong đó X là
tập thuộc tính, A là một thuộc tính) thỏa một
trong hai điều kiện sau:
1. Hoặc X là siêu khóa
2. Hoặc A là thuộc tính khóa

178
Ví dụ dạng chuẩn 3
R(ABCD), F={AB → C, B → D, BC → A}
Kiểm tra R có đạt chuẩn 3 không?

R có 2 khoá: AB và BC
Xét B → D có B không là siêu khoá và D không là
thuộc tính khoá ⇒ R không đạt chuẩn 3

179
Dạng chuẩn 3 (tt)
Định nghĩa 2:
Một lược đồ quan hệ R được gọi là đạt
chuẩn 3 nếu R đạt chuẩn 2 và mọi thuộc
tính không khóa đều không phụ thuộc bắt
cầu vào một khóa bất kỳ của R

180
Ví dụ dạng chuẩn 3 (tt)
R(ABCD), F={AB → C, B → D, BC → A}
Kiểm tra R có đạt chuẩn 3 không?

R có 2 khoá: AB và BC
Thuộc tính không khoá: D
Ta có:
▪ AB → B, B → D
▪ B → AB
▪ D ∉ AB ∪ B
D phụ thuộc bắc cầu vào khoá AB ⇒ R không đạt
chuẩn 3
181
Dạng chuẩn BC
Định nghĩa:
Một lược đồ quan hệ R được gọi là đạt
chuẩn BC nếu mọi phụ thuộc hàm không
hiển nhiên của F đều có vế trái là siêu khóa.

Phụ thuộc hàm X→Y đuợc gọi là hiển nhiên nếu


Y⊆X

182
Ví dụ dạng chuẩn BC
Cho R(ABCD) có F={AB → CD, AC → B}

R có 2 khoá là AB và AC
Xét lần lượt các phụ thuộc hàm trong F:
▪ AB → CD: có AB là siêu khoá
▪ AC → B: có AC là siêu khoá
⇒ R đạt chuẩn BC

183

You might also like