Tài liệu ôn thi cao học - thạc sĩ khoa học máy tính, hệ thống thông tin trường ĐH KHTN TP.HCM:p1
Trang 1Ôn tập Cơ sở Dữ liệu
6
Sửa Bài tập03/04/2008
3
Ngôn ngữ truy vấn SQL28/02/2008
Buổi
Trang 2Các khái niệm cơ bản của CSDL
Hệ quản trị CSDL (Database Management System)
{ Tập hợp các chương trình cho phép người sử dụng định nghĩa, xây dựng, và khai
thác CSDL một cách hiệu qủa và tiện lợi
Hệ QTCSDL
Ch ương trình Quản Trị CSDL
Truy xuất
Trang 306/03/2008 Ôn thi tuyển sinh cao học 2008 5
Vai trò Hệ QTCSDL
Mục tiêu : hỗ trợ
{ Khai thác thông tin từ CSDL
{ Lưu trữ thông tin vào CSDL
Tính năng : cung cấp các cơ chế
{ Định nghĩa cấu trúc lưu trữ dữ liệu
{ Thao tác, xử lý dữ liệu
{ Bảo đảm an toàn dữ liệu
{ Kiểm soát chia sẻ dữ liệu
Trang 406/03/2008 Ôn thi tuyển sinh cao học 2008 7
Lược đồ vật lý
Các Khung nhìn (views)
Độc lập vật lý :
Khả năng thay đổi lược đồ trong mà không làm thay đổi lược đồ quan niệm cũng như lược đồ ngoài
Trang 506/03/2008 Ôn thi tuyển sinh cao học 2008 9
Lược đồ và thể hiện của CSDL
MaMH MaMH_Truoc DKien
SVien
TenMH Nhap mon tin hoc Cau truc du lieu
Mhoc
Toan roi rac
Co so du lieu
MaMH COSC1310 COSC3320 MATH2410 COSC3380
TinChi Khoa 4 4 3 3
CNTT CNTT TOAN CNTT
MaMH MaMH_Truoc
DKien
COSC3380 COSC3320 COSC3380 MATH2410 COSC3320 COSC3380
112 85 102
10 9 10
Mô hình dữ liệu (Data model)
Tập hợp các phương tiện cho phép biễu diễn dữ liệu, quan hệ dữ
liệu và các ràng buộc dữ liệu
{ Các khái niệm biểu diễn dữ liệu
{ Các phép toán xử lý dữ liệu
Các mức trừu tượng
{ Mô hình quan niệm (conceptual model)
các khái niệm độc lập với các hệ thống tin học
vd : ER, UML
{ Mô hình logic (logical model)
các khái niệm sử dụng bởi một họ các CSDL nhưng độc lập với một CSDL cụ thể
vd : Phân cấp, mạng, quan hệ, hướng đối tượng, XML
{ Mô hình mức thấp
các khái niệm được cài đặt trong một CSDL cụ thể
vd Oracle, Sybase
Trang 606/03/2008 Ôn thi tuyển sinh cao học 2008 11
Ngôn ngữ CSDL
Ngôn ngữ định nghĩa dữ liệu (DDL – Data Definition Language)
{ Đặc tả các khái niệm biễu diễn trong lược đồ CSDL (quan niệm / logic)
Ngôn ngữ lưu trữ dữ liệu
(SDL – Storage Definition Language) : Ngôn ngữ định nghĩa lược đồ trong
Ngôn ngữ định nghĩa khung nhìn
(VDL – View Definition Language) : Ngôn ngữ định nghĩa lược đồ ngoài
Ngôn ngữ thao tác dữ liệu (DML – Data Manipulation Language)
{ Đặc tả các thao tác truy xuất, vấn tin CSDL
{ Phân loại :
Ngôn ngữ thủ tục (Procedural)
Ngôn ngữ khai báo (Declarative)
Giới thiệu
Các khái niệm của mô hình quan hệ
Các đặc trưng của quan hệ
Trang 706/03/2008 Ôn thi tuyển sinh cao học 2008 13
Giới thiệu
Do tiến sĩ E F Codd đưa ra
{ “A Relation Model for Large Shared Data Banks”, Communications of ACM,
Các khái niệm của mô hình quan hệ
Quan hệ (Relation)
Thuộc tính (Attribute)
Lược đồ quan hệ(Relation Schema)
Bộ (Tuple)
Miền giá trị (Domain)
Các loại Khoá của quan hệ (Key)
Trang 806/03/2008 Ôn thi tuyển sinh cao học 2008 15
NHANVIEN
1 cột là 1 thuộc tính của nhân viên
1 dòng là 1 nhân viên
Phản ánh nội dung CSDL tại một thời điểm
Được biểu diễn bằng một bảng 2 chiều
Một Quan hệ được định nghĩa bởi
{ Tập hợp các dòng → Một dòng ~ Một thực thể
Quan hệ ~ Tập thưc thể
{ Tập hợp các cột → Một cột ~ Một thuộc tính
NHANVIEN
Trang 906/03/2008 Ôn thi tuyển sinh cao học 2008 17
Phản ánh một đặc tính của một đối tượng
Một thuộc tính được định nghĩa bởi
{ Tên (cột của quan hệ)
Biểu diễn cấu trúc bảng 2 chiều thể hiện quan hệ
Lược đồ quan hệ được định nghĩa bởi
{ Tên của quan hệ
{ Tên của tập thuộc tính
{ Tân từ phản ánh ngữ nghĩa của quan hệ
Có thể có nhiều quan hệ cùng được định nghĩa trên một lược đồ quan hệ
NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG, PHG)
Là tập hợp
Trang 1006/03/2008 Ôn thi tuyển sinh cao học 2008 19
NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG, PHG)
PHONGBAN(MAPHG, TENPHG, TRPHG, NG_NHANCHUC)
DIADIEM_PHG(MAPHG, DIADIEM)
THANNHAN(MA_NVIEN, TENTN, PHAI, NGSINH, QUANHE)
DEAN(TENDA, MADA, DDIEM_DA, PHONG)
Dữ liệu cụ thể của thuộc tính
Bộ
Là các dòng của quan hệ (trừ dòng tiêu đề - tên của các thuộc tính)
Thể hiện dữ liệu cụ thể của các thuộc tính trong quan hệ
<Tung, Nguyen, 12/08/1955, 638 NVC, Q5, Nam, 40000, 5>
Trang 1106/03/2008 Ôn thi tuyển sinh cao học 2008 21
Lược đồ quan hệ R(A1:D1, A2:D2, …, An:Dn)
{ A1, A2, …, Anlà các thuộc tính
{ D1, D2, …, Dnlà các miền giá trị tương ứng của A1, A2, …, An
Bậc của lược đồ quan hệ là số lượng thuộc tính trong lược đồ
NHANVIEN(MANV:integer, TENNV:string, HONV:string,
NGSINH:date, DCHI:string, PHAI:string, LUONG:integer,
PHONG:integer)
{ NHANVIEN là một lược đồ bậc 8 mô tả đối tượng nhân viên
{ MANV là một thuộc tính có miền giá trị là số nguyên
{ TENNV là một thuộc tính có miền giá trị là chuỗi ký tự
Quan hệ r của lược đồ quan hệ R(A1, A2, …, An)
{ Ký hiệur(R)
{ r = {t1, t2, …, tk}
ti = 1 bộ → ti là 1 danh sách có thứ tự của n giá trị ti=<v1, v2, …, vn>
Mỗi vjlà một phần tử của miền giá trị DOM(Aj) hoặc giá trị rỗng
Trang 1206/03/2008 Ôn thi tuyển sinh cao học 2008 23
Miền giá trị của thuộc tính A
{ DOM(A) hay MGT(A)
Giá trị tại thuộc tính A của bộ thứ t
{ t.A hay t[A]
Khóa
Dùng để nhận biết một bộ trong quan hệ
{ Đặc trưng của lược đồ quan hệ, không phụ thuộc vào thể hiện quan hệ
Siêu khóa (Super Key)
{ SK ⊆ R+, SK ≠ ∅ , SK là siêu khóa khi
{ Mọi lược đồ quan hệ có tối thiểu một siêu khóa
Khóa chỉ định (Candidate key)
{ K ⊆ R+, K ≠ ∅
{ K là khóa chỉ định nếu thỏa đồng thời 2 điều kiện
K là một siêu khóa (nhỏ nhất) của R
Khóa chính (primary key) : khoá chỉ định được chọn để chỉ mục
⇒
∀ r, ∀ t1,t2 ∈ r, t1 t2≠ t1[SK] ≠ t2[SK]
∀K’ ⊂ K , K’ ≠ K , K’ không phải là siêu khóa của R
Trang 1306/03/2008 Ôn thi tuyển sinh cao học 2008 25
Các thuộc tính khoá không được nhận giá trị NULL
NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG, PHONG)
NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG, PHONG)
Một bộ trong quan hệ R, tại thuộc tính A nếu nhận một giá trị từ một
thuộc tính B của quan hệ S, ta gọi R tham chiếu S
{ Bộ được tham chiếu phải tồn tại trước
Trang 1406/03/2008 Ôn thi tuyển sinh cao học 2008 27
Xét 2 lược đồ R và S
{ FK ⊆ S+, FK ≠ ∅
{ FK là khóa ngoại (Foreign Key) của S khi
Các thuộc tính FK phải có cùng miền giá trị với các thuộc tính khóa chính của R
Giá trị tại FK của một bộ t1∈S
{ Hoặc bằng giá trị tại khóa chính của một bộ t2∈R
{ Hoặc bằng giá trị rỗng
A ⊆ R+, A có thể tham gia vào khóa chính, vừa tham gia vào khóa ngoại
FK có thể tham chiếu đến PK trên cùng 1 lược đồ quan hệ
Có thể có nhiều FK tham chiếu đến cùng một PK
NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG, PHG)
Trang 1506/03/2008 Ôn thi tuyển sinh cao học 2008 29
Các đặc trưng của quan hệ
Thứ tự các bộ trong quan hệ là không quan trọng
Thứ tự giữa các giá trị trong một bộ là quan trọng
Bộ <Nguyen, Tung, 12/08/1955, 638 NVC Q5, Nam, 40000, 5>
Trang 1606/03/2008 Ôn thi tuyển sinh cao học 2008 31
Đại số (Algebra) : hệ thống toán học bao gồm
{ Toán hạng (operand) : các biến/giá trị dùng để xây dựng một giá trị mới
{ Toán tử (operator) : các ký hiệu biểu diễn thủ tục xây dựng một giá trị mới từ các
Hằng số là thể hiện của quan hệ
Biểu thức đại số quan hệ
{ Được gọi là câu truy vấn
{ Là chuỗi các phép toán đại số quan hệ
{ Kết quả trả về là một thể hiện của quan hệ
Nền tảng của các ngôn ngữ truy vấn kiểu thủ tục
{ cơ sở của SQL
Đại số quan hệ vs Phép tính quan hệ (Relational calculus)
Trang 1706/03/2008 Ôn thi tuyển sinh cao học 2008 33
Kết quả của ∪, ∩, và − là một quan hệ có cùng tên thuộc tính với
quan hệ đầu tiên (R)
Trang 1806/03/2008 Ôn thi tuyển sinh cao học 2008 35
α
R ∪ S
α β
1 2 1
α
R ∩ S
2
Trang 1906/03/2008 Ôn thi tuyển sinh cao học 2008 37
Trang 2006/03/2008 Ôn thi tuyển sinh cao học 2008 39
{ Có cùng danh sách thuộc tính với R
{ Có số bộ luôn ít hơn hoặc bằng số bộ của R
NHANVIEN(MANV, TENNV, LUONG, PHG)
{ Cho biết các nhân viên ở phòng số 4
{ Tìm các nhân viên có lương trên 25000 ở phòng 4 hoặc các nhân viên có lương
D 7 7 3 10
α β β β
α
C 1
D 7 10
α β
σPHG=4 (NHANVIEN)
σ(LUONG>25000 ∧ PHG=4) ∨ (LUONG>30000 ∧ PHG=5) (NHANVIEN)
Trang 2106/03/2008 Ôn thi tuyển sinh cao học 2008 41
10 20 30
C 1 1 1
NHANVIEN(MANV, TENNV, LUONG, PHG)
Cho biết tên và lương của các nhân viên
Mở rộng phép chiếu bằng cách cho phép sử dụng các phép toán số học
trong danh sách thuộc tính
{ Ký hiệu πF 1 , F2, …, Fn (E)
E là biểu thức ĐSQH
F 1 , F 2 , …, Fn là các biểu thức số học liên quan đến Hằng số/Thuộc tính trong E
{ Cho biết tên của các nhân viên và lương của họ sau khi tăng 10%
πTENNV,LUONG (NHANVIEN)
πTENNV, LUONG*1.1 (NHANVIEN)
Trang 2206/03/2008 Ôn thi tuyển sinh cao học 2008 43
E + +
+ +
+ - -
-
D + +
D + +
+ +
+ - -
-Đổi tên
-B→X
Trang 2306/03/2008 Ôn thi tuyển sinh cao học 2008 45
ρX, C, D (R) : Đổi tên thuộc tính B thành X
Đổi tên quan hệ R thành S và thuộc tính B thành X
C là điều kiện kiểm tra bằng trên tất cả các thuộc tính chung
Phép kết tự nhiên loại bỏ các thuộc tính trùng trong quan hệ kết quả
R ⋈ S
Trang 2406/03/2008 Ôn thi tuyển sinh cao học 2008 47
D 3
E 1
S.C 3
D 1
S.C D 3
S
6
1 2
ρ(S.C,D)S
Trang 2506/03/2008 Ôn thi tuyển sinh cao học 2008 49
C 3
D 1 2
R(XY)
Trang 2606/03/2008 Ôn thi tuyển sinh cao học 2008 51
3 1
1 1 1
1 1
Trang 2706/03/2008 Ôn thi tuyển sinh cao học 2008 53
2 2
SUM(B) = 10 AVG(A) = 1.5 MIN(A) = 1 MAX(B) = 4 COUNT(A) = 4
{ A1, A2, …, An là các thuộc tính tính toán trong hàm F
G1, G2, …, GnIF1(A1), F2(A2), …, Fn(An)(E)
Trang 2806/03/2008 Ôn thi tuyển sinh cao học 2008 55
Ví dụ
ISUM(C)(R)SUM_C 27
2 2
C 7 7 3
SUM_C 14 3 10
Tính số lượng nhân viên và lương trung bình của cả công ty
ICOUNT(MANV)AVG(LUONG)(NHANVIEN)
Trang 2906/03/2008 Ôn thi tuyển sinh cao học 2008 57
Tính số lượng nhân viên và lương trung bình của từng phòng ban
PHGICOUNT(MANV)AVG(LUONG)(NHANVIEN)
Trang 3006/03/2008 Ôn thi tuyển sinh cao học 2008 59
Outer Join – Example
Relation loan
Relation borrower
customer_name loan_number
JonesSmithHayes
L-170L-230L-155
300040001700
L-170L-230L-260
branch_name
DowntownRedwoodPerryridge
Outer Join – Example
customer_name
JonesSmith
branch_name
DowntownRedwood
JonesSmith
customer_name branch_name
DowntownRedwoodPerryridge
Left Outer Join
loan Borrower
Trang 3106/03/2008 Ôn thi tuyển sinh cao học 2008 61
Outer Join – Example
null
customer_name
JonesSmithHayes
branch_name
DowntownRedwood
null
customer_name
JonesSmith
null
Hayes
branch_name
DowntownRedwoodPerryridge
Cho biết họ tên nhân viên và tên phòng ban mà họ phụ trách nếu có
{ Quan hệ: NHANVIEN, PHONGBAN
{ Thuộc tinh: TENNV, TENPH
R1 ← NHANVIEN MANV=TRPHGPHONGBAN
KQ ← πHONV,TENNV, TENPHG (R1)
Tung Nguyen Nghien cuu
Trang 3206/03/2008 Ôn thi tuyển sinh cao học 2008 63
Kết hợp các phép toán đại số quan hệ
{ Lồng các biểu thức lại với nhau
Cần đặt tên cho quan hệ
Được sử dụng để nhận lấy kết quả trả về của một phép toán
{ Thường là kết quả trung gian trong chuỗi các phép toán
Trang 3306/03/2008 Ôn thi tuyển sinh cao học 2008 65
Ví dụ Quản lý Ngân hàng
BANK (BNAME, HEADAQUATERS)
{ tên ngân hàng là xác định duy nhất
BRANCH (BRNUMBER, BNAME, BCITY, ASSETS)
{ mỗi thành phố chỉ có 1 chi nhánh
CUSTOMER (CNAME, CSTREET, CCITY)
{ tên khách hàng là duy nhất
ACCOUNT (ANUMBER, BRNUMBER, BALANCE)
{ sốtài khoản được phân biệt trong từng ngân hàng
LOAN (LNUMBER, BRNUMBER, AMOUNT)
{ số hiệu khoảnvayđược phân biệt trong từng ngân hàng
DEPOSITOR (CNAME, ANUMBER)
{ mỗi khách hàng có thể có nhiều tài khoản
BORROWER (CNAME, LNUMBER)
{ mỗi khách hàng có thể có nhiều khoảng vay
Cấu trúc CSDL : xác định khoá
BANK (BNAME, HEADAQUATERS)
BRANCH (BRNUMBER, BNAME, BCITY, ASSETS)
CUSTOMER (CNAME, CSTREET, CCITY)
ACCOUNT (ANUMBER, BRNUMBER, BALANCE)
LOAN (LNUMBER, BRNUMBER, AMOUNT)
DEPOSITOR (CNAME, ANUMBER)
BORROWER (CNAME, LNUMBER)
Trang 3406/03/2008 Ôn thi tuyển sinh cao học 2008 67
Yêu cầu truy vấn
Q1 : Cho biết các khoảng vay lớn hơn $1200
Q2 : Cho biết số hiệu của các khoảng vay lớn hơn $1200
σamount> 1200(LOAN)
∏Lnumber(σamount> 1200 (LOAN))
Q3 : Cho biết tên tất cả các khách hàng có giao dịch với ngân hàng
Yêu cầu truy vấn
Q4: Cho biết tên tất cả các khách hàng có giao dịch gởi và vay tiền tại
ngân hàng
Q5: Cho biết tên tất cả các khách hàng có giao dịch vay tiền tại ngân
hàng chi nhánh Sàigòn
Trang 3506/03/2008 Ôn thi tuyển sinh cao học 2008 69
Yêu cầu truy vấn
Q6: Cho biết tên tất cả các khách hàng có giao dịch vay tiền tại ngân
hàng chi nhánh Sàigòn nhưng không có tài khoảng ở một chi nhánh
khác của ngân hàng
Example Queries
Cho biết tài khoản tiền gởi lớn nhất
{ Tìm các tài khoản có tiền gởi không lớn nhất
Cần đổi tên quan hệ Account để có thể so sánh các tài khoản với nhau
trên quan hệ tích của chính nó
{ Dùng phép trừ để chọn các account không được trích ở bước trên
R1 ← σaccount.balance <= d.balance(ACCOUNT x ρD(ACCOUNT)))
∏balance(ACCOUNT) - ∏account.balance(R1)