CƠ SỞ DỮ LIỆU
Vũ Song Tùng
Khoa Điện tử - Viễn Thông
ĐHBK – Hà Nội
Chương 1. Các khái niệm cơ bản
•
Cơ sở dữ liệu (CSDL): Tập hợp các dữ liệu của
một hệ thống thông tin, được lưu trữ theo một
cung cách nhất định để có thể xử lý bằng máy
tính điện tử.
–
MS Access, SQL server, MySQL, Oracle
•
Hệ quản trị (HQT) CSDL: Tập hợp các chương
trình, thuật toán để thao tác trên CSDL.
•
Kiến trúc của CSDL:
Gồm 3 mức: vật lý (physical), khái niệm (logical)
và khung nhìn (view)
Chương 1. Các khái niệm cơ bản
Khung nhìn
Khái niệm
Vật lý
Chương 1. Các khái niệm cơ bản
•
Quan hệ (Relation): Tập con của tích Đề-các
của các miền.
•
Miền (domain): Tập các giá trị.
–
Gọi D
i
là một miền.
–
Tích Đề-các của n miền D
1
x D
2
x … x D
n
là tập tất
cả n-bộ (tuple), mỗi bộ là một tập hợp của n giá
trị (v
1
, v
2
, …, v
n
) với v
i
∈ D
i
| i = 1…n
Chương 1. Các khái niệm cơ bản
VD:
VD:
•
Miền THIÊN CAN (10 giá trị): Giáp, Ất,
Bính, Đinh, Mậu, Kỷ, Canh, Tân, Nhâm, Quý
•
Miền ĐỊA CHI (12 giá trị): Tý, Sửu, Dần,
Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuất,
Hợi
•
Tích Đề-các của THIÊN CAN x ĐỊA CHI là
120 bộ:
{ (Giáp, Tý), (Giáp, Sửu), …, (Quý, Hợi) }
Chương 1. Các khái niệm cơ bản
•
Một số ký hiệu:
•
R = {A
1
, A
2
, …, A
n
} – Tập các thuộc tính
•
r(R) – Quan hệ trên tập thuộc tính của R
•
r(A
1
, A
2
, …, A
n
) – Quan hệ trên tập thuộc tính
{A
1
, A
2
, …, A
n
}
Chương 1. Các khái niệm cơ bản
•
Nếu biểu diễn quan hệ dưới dạng bảng thì mỗi hàng
là một bộ và mỗi cột là một thuộc tính của quan hệ.
A
1
… A
n
Giá trị
Thuộc tính (Cột)Biến quan hệ
(Tên bảng)
r
Tiêu đề
Thân
Quan hệ
Bản ghi (Hàng)
Chương 1. Các khái niệm cơ bản
VD:
VD:
•
nếu R = { THIÊN CAN, ĐỊA CHI }
•
thì quan hệ tuổi(R) là tập hợp của 60 trong 120
bộ của tích Đề-các THIÊN CAN x ĐỊA CHI:
t
1
= (Giáp, Tý)
t
2
= (Ất, Sửu)
…
t
11
= (Giáp, Tuất)
t
13
= (Bính, Tý)
…
t
60
= (Quý, Hợi)
Chương 1. Các khái niệm cơ bản
VD:
VD:
•
Quan hệ năm_tuổi(NĂM, THIÊN CAN, ĐỊA CHI) là
một tập vô hạn các bộ:
t
1
= (1984, Giáp, Tý)
t
2
= (1985, Ất, Sửu)
…
t
60
= (2043, Quý, Hợi)
t
61
= (2044, Giáp, Tý)
Chương 1. Các khái niệm cơ bản
•
Khóa (Key):
Khóa của quan hệ r(R) là tập con K ⊆ R
sao cho, với hai bộ bất kỳ t1, t2 ∈ r, luôn
tồn tại một thuộc tính A ∈ K mà t1(A) ≠
t2(A) hay t1(K) ≠ t2(K)
Chương 1. Các khái niệm cơ bản
VD:
VD:
–
Khóa của quan hệ tuổi(THIÊN CAN, ĐỊA CHI)
là tập hợp của cả 2 thuộc tính
–
Khóa của quan hệ năm_tuổi(NĂM, THIÊN
CAN, ĐỊA CHI) có thể là {NĂM}, {NĂM, THIÊN
CAN}, {NĂM, ĐỊA CHI} hoặc tập hợp của cả 3
thuộc tính
Chương 1. Các khái niệm cơ bản
•
Các phép toán cập nhật dữ liệu
–
Phép chèn (insert):
•
INSERT (r; A
1
=v
1
, A
2
= v
2
, …, A
n
= v
n
)
–
Phép xóa (delete):
•
DEL (r; K
1
= k
1
, K
2
= k
2
, …, K
m
= k
m
)
–
Phép chỉnh sửa (change):
•
CH (r; K
1
= k
1
, K
2
= k
2
, …, K
m
= k
m
; X
1
= v
1
, X
2
= v
2
, …, X
n
=
v
n
)
A
i
– Thuộc tính của r
K
i
– Khóa của r
X
i
– Thuộc tính không khóa của r
v
i
– giá trị trong miền của thuộc tính i của r
Chương 2. Ngôn ngữ SQL
•
SQL
Ngôn ngữ truy vấn có cấu trúc (Structured
Query Language)
•
Có thể chia làm 2 loại
–
Ngôn ngữ định nghĩa dữ liệu DDL (Data
Definition Language)
–
Ngôn ngữ thao tác dữ liệu (Data Manipulation
Language)
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
a. Phép hợp (Union): Phép hợp của hai quan
hệ khả hợp r
1
và r
2
, ký hiệu là r
1
∪ r
2
, là tập tất
cả các bộ thuộc r
1
hoặc r
2
hoặc thuộc cả hai
quan hệ, nghĩa là:
r
1
∪ r
2
= { t | t ∈ r
1
∨ t ∈ r
2
}
SELECT *, 1 AS LanThi FROM tblDiem
UNION
SELECT *, 2 AS LanThi FROM tblThiLai
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
b. Phép giao (Intersection): Phép giao của hai
quan hệ khả hợp r
1
và r
2
, ký hiệu là r
1
∩ r
2
, là
tập tất cả các bộ thuộc cả hai quan hệ,
nghĩa là:
r
1
∩ r
2
= { t | t ∈ r
1
∧ t ∈ r
2
}
SELECT * FROM tblSinhVien WHERE SHSV
IN (SELECT SHSV FROM tblThiLai)
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
c. Phép trừ (Minus): Phép trừ của hai quan hệ
khả hợp r
1
và r
2
, ký hiệu là r
1
– r
2
, là tập tất cả
các bộ thuộc r
1
nhưng không thuộc r
2
, nghĩa
là:
r
1
– r
2
= { t | t ∈ r
1
∧ t ∉ r
2
}
SELECT * FROM tblSinhVien WHERE NOT SHSV
IN (SELECT SHSV FROM tblThiLai)
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
d. Tích Đề-các (Cartesian Product): Phép tích Đề-
các của hai quan hệ r
1
(A
1
,…,A
n
) và r
2
(B
1
,…,B
m
), ký
hiệu là r
1
× r
2
, là tập tất cả (n+m)-bộ, mỗi bộ có n
thuộc tính thuộc r
1
và m thuộc tính thuộc r
2
, nghĩa là:
r
1
× r
2
= {t | t = (a
1
,…,a
n
,b
1
,…,b
n
) ∧ (a
1
,…,a
n
) ∈ r
1
∧ (b
1
,…,b
n
) ∈ r
2
}
SELECT SHSV, MaMon FROM tblSinhVien, tblMonHoc
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
e. Phép chiếu (Projection): Phép chiếu trên
tập thuộc tính X ⊆ A của quan hệ r(A), ký
hiệu là ∏
X
(r), là tập các bộ của r xác định
trên X, nghĩa là:
∏
X
(r) = { t[X] | t ∈ r }
SELECT SHSV FROM tblSinhVien
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
f. Phép chọn (Selection): Phép chọn trên quan hệ r
với biểu thức chọn F, ký hiệu là σ
F
(r), là tập các bộ
của r thỏa mãn F, nghĩa là:
σ
F
(r) = { t | t ∈ r ∧ F(t) = true }
F là một biểu thức gồm các toán tử logic ∧ (AND), ∨ (OR), ¬ (NOT)
và các toán tử so sánh >, <, ≥, ≤, =, ≠.
SELECT SHSV, MaMon FROM tblDiem
WHERE (Diem < 5) OR (Diem IS NULL)
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
g. Phép kết nối (Join): Phép kết nối hai quan hệ r
1
và r
2
, ký hiệu
là r
1
r
2
, là sự kết nối hai quan hệ dựa trên tương quan nào
đó giữa các thuộc tính của hai quan hệ. Có thể coi phép kết
nối là sự kết hợp của phép tích Đề-các và phép chọn, nghĩa
là:
r
1
r
2
= {t | t ∈ r
1
× r
2
∧ F(t(A∈r
1
), t(B∈r
2
)) = true}
F
SELECT Ho, Ten, TenMon, Diem FROM
tblSinhVien, tblDiem, tblMonHoc
WHERE
tblSinhVien.SHSV = tblDiem.SHSV AND
tblMonHoc.MaMon = tblDiem.MaMon
SELECT Ho, Ten, TenMon, Diem FROM
(tblSinhVien INNER JOIN tblDiem ON
tblSinhVien.SHSV = tblDiem.SHSV)
INNER JOIN tblMonHoc ON
tblDiem.MaMon = tblMonHoc.MaMon
Chương 2. Ngôn ngữ SQL
•
Đại số quan hệ
h. Phép chia (Division): Phép chia của hai quan hệ
r
1
(A
1
,…,A
n
) và r
2
(B
1
,…,B
m
) với (n > m ∧ r2 ≠ ∅), ký
hiệu là r
1
÷ r
2
, là tập tất cả (n−m)-bộ {t | t ∩ ∀u
∈ r1},
có thể coi phép chia là nghịch đảo của phép tích Đề-
các, nghĩa là:
r
1
÷ r
2
= r
3
⇒ r
1
⊇ r
3
× r
2
Chương 2. Ngôn ngữ SQL
•
Khối SELECT
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [,
[table.]field2 [AS alias2] [, ]]}
FROM
tableexpression [, ]
[WHERE ]
[GROUP BY ]
[HAVING ]
[ORDER BY ]
Chương 2. Ngôn ngữ SQL
•
Khối SELECT
predicate
Một trong các tiền tố: ALL, DISTINCT, DISTINCTROW, hoặc TOP.
Dùng tiền tố để chỉ ra số lượng bản ghi được chọn. Mặc định là
ALL.
*
Lấy tất cả các trường của bảng (hoặc các bảng).
table
Tên của bảng chứa trường được chọn.
field1, field2
Tên của trường được chọn. Trong trường hợp các trường được liệt
kê rõ thì thứ tự các cột sẽ là thứ tự các trường trong danh sách.
alias1, alias2
Tên hình thức. Dùng làm tiêu đề của một cột trong table.
tableexpression
Tên bảng dữ liệu
externaldatabase
Tên của CSDL chứa table. Dùng trong trường hợp cần lấy dữ liệu từ
CSDL khác
Chương 2. Ngôn ngữ SQL
•
Khối SELECT – các hằng
123 Số nguyên
123.5 Số thực
‘abc’ hoặc “abc” Xâu ký tự
#5/19/2010# Ngày tháng
Chương 2. Ngôn ngữ SQL
•
Mệnh đề WHERE
–
Các biểu thức với các toán tử so sánh
–
Sử dụng các toán tử logic AND, OR để nối các biểu
thức
–
Sử dụng toán tử NOT để phủ định một biểu thức
SELECT * FROM
tblPhongBan
WHERE
((MaPhongBan=1)
OR
(MaPhongBan=2))
MaPhongBan TenPhongBan
1 Phòng hành chính
2 Phòng tài vụ