Giới thiệuĐại số quan hệ – Là tập hợp các phép toán cơ sở của mô hình dữ liệu quan hệ– Biểu thức đại số quan hệ là sự kết hợp của các toán hạng và toán tử– Kết quả của một biểu thức đại
Trang 1Phần 1
Đại số quan hệ
TS Nguyễn Đình ThuânKhoa Hệ thống thông tinTrường ĐH Công nghệ Thông tin
Trang 2Giới thiệu
Đại số quan hệ
– Là tập hợp các phép toán cơ sở của mô hình dữ liệu
quan hệ– Biểu thức đại số quan hệ là sự kết hợp của các toán
hạng và toán tử– Kết quả của một biểu thức đại số quan hệ là một thể
hiện của quan hệ
Ý nghĩa :
– Là cơ sở hình thức cho các phép toán của mô hình QH– Là cơ sở để cài đặt và tối ưu hóa các truy vấn trong các
hệ QT CSDL
Trang 3• Hàm tính toán và gom nhóm: avg(), min(), max(), sum(), count().
Khái niệm khả hợp: Hai lược đồ quan hệ R1 và R2 là khả hợp
nếu cùng bậc n và DOM(Ai)=DOM(Bi) (1≤i≤n)
Trang 5Phép hợp
Ví dụ :
r ( A B C) s ( A B C) r ∪ s = ( A B C) _ a1 b1 c1 a1 b1 c1 a1 b1 c1 a2 b1 c2 a2 b2 c2 a2 b1 c2 a2 b2 c1 a2 b2 c2 a2 b2 c1
Trang 8Kí hiệu: r x s
Công thức :
r x s = { t: t có dạng (a1, a2, , an, b1, b2, ,bm) trong đó (a1,
,an )∈ r và (b1, ,bm)∈ s }
Trang 9Phép tích Descartes
Ví dụ :
r (A B C) s (D E) r × s = p (A B C D E) a1 b1 1 1 e1 a1 b1 1 1 e1
a2 b2 2 2 e2 a1 b1 1 2 e2
a3 b3 3 a2 b2 2 1 e1
a2 b2 2 2 e2 a3 b3 3 1 e1 a3 b3 3 2 e2
Trang 10Phép chiếu (Projection)
Phép chiếu trên một quan hệ thực chất là loại bỏ
đi một số thuộc tính và giữ lại những thuộc tính còn lại của quan hệ đó
Công thức : π < ds_thuộc tính>(< tên quan hệ >)
<ds_thuộc tính>:dsách các thuộc tính được lấy
Kết quả của phép chiếu là tập các thuộc tính
trong danh sách với cùng thứ tự.
Nếu <ds_thuộc tính> chỉ có những thuộc tính
không khoá thì phép chiếu sẽ bỏ đi những bộ
lặp.
Phép chiếu không có tính giao hoán.
π ( π (R)) ≠ π ( π (R))
Trang 12Phép chọn(Selection)
Phép chọn dùng để trích chọn một tập con trong một quan
hệ, các bộ được trích chọn phải thoả mãn điều kiện chọn.
Công thức : σ < điều kiện > (< Tên quan hệ >)
< Tên quan hệ >: chỉ quan hệ được chọn
Kết quả thu được là một quan hệ có danh sách thuộc tính
được chỉ ra trong Tên quan hệ.
<Điều kiện> : là các biểu thức điều kiện cần thoả mãn Các
định ), ∧ (và), ∨ (hoặc).
Phép chọn có tính giao hoán.
Trang 13Phép chọn(Selection)
Ví dụ : Cho quan hệ SV(Mã SV,Họ tên,Ngày sinh,Điểm)
Trang 14Phép kết nối (Join)
Phép ghép bộ: Giả sử cho hai bộ u = (a1, ., an)
và v = (b1, ., bm) Phép ghép bộ u với bộ v, ký hiệu (u,v), được định nghĩa
(u,v) = (a1, ., an, b1, ., bm)
Phép kết nối hai quan hệ thực chất là phép ghép các cặp bộ của hai quan hệ thoả mãn một điều kiện nào đó trên chúng, điều kiện đó được gọi
là điều kiện kết nối hay biểu thức kết nối
Biểu thức kết nối được định nghĩa là phép hội
của các toán hạng, mỗi toán hạng là một phép
so sánh đơn giản giữa một thuộc tính của quan
hệ r và một thuộc tính của quan hệ s
Trang 15Phép kết nối θ (Inner join, join)
Định nghĩa: Cho 2 quan hệ r(U) và s(V)
A θ B
A θ B
A θ B
Trang 16Phép kết nối(Join)
Ví dụ :
r ( A B C ) s( C D E ) r s = ( A B C C D E)
a1 1 1 1 d1 e1 a1 1 1 1 d1 e1 a2 2 1 2 d2 e2 a2 2 1 1 d1 e1 a1 2 2 3 d3 e3 a2 2 1 2 d2 e2
a1 2 2 1 d1 e1 a1 2 2 2 d2 e2
B≥ C
Kết nối tự nhiên
r(ABC) * s(CDE) = ( A B C D E) a1
1 1 d1 e1 a2 2 1 d1 e1 a1 2 2 d2 e2
Trang 17Phép kết nối tự nhiên (Natural-Join Operation)
Nếu kết nối θ dựa trên phép so sánh “=“ tại các thuộc
tính cùng tên của 2 quan hệ R và S và một trong hai thuộc tính đó bị loại bỏ qua phép chiếu thì gọi là
phép kết nối tự nhiên, ký hiệu *.
Ví dụ: Tìm tên các môn học có dạy trong học kỳ 2 10-11.
MAMH TENMON
TH409 Cơ Sở Dữ Liệu TH364 Trí Tuệ Nhân Tạo
B: πmamh, TenMon (MON)
A * B
Những dòng không có ở cả
2 bảng sẽ không có mặt ở
bảng KQ
Trang 18Phép kết nối ngoài (Outer join)
Định nghĩa: Phép toán này cho phép làm việc với thông tin bị thiếu, tức là vẫn thực hiện phép kết nối tự nhiên trên các trị trống của thuộc tính dùng để kết nối.
Có 3 loại kết nối mở rộng: trái, phải và hai bên
Trang 19Phép kết nối ngoài – ví dụ (Outer join)
1232 Phan Phương Lan
MAGV HOTEN_GV MAGV MAMH
1250 Lê Phú Thọ NULL NULL
1255 Nguyễn Khuyến 1255 TH490
1256 Đào Anh Vũ NULL NULL
1231 Trần Ngân Bình 1231 TH409
1232 Phan Phương Lan 1232 TH409
1232 Phan Phương Lan 1232 TH334
MAGV MAMH MAGV HOTEN_GV
1231 TH409 1231 Trần Ngân Bình
1232 TH409 1232 Phan Phương Lan
1232 TH334 1232 Phan Phương Lan
R: DS GV c a Khoa ủ
S: Phân công d y trong HK này ạ
R S
R S R S ?
Trang 20Phép gán (Assignment)
Dùng để diễn tả câu truy vấn phức tạp.
Ký hiệu: A ← B
Ví dụ:
R(HO,TEN,LUONG)← πHONV,TENNV,LUONG (NHANVIEN)
Kết quả bên phải của phép gán được gán cho biến quan
hệ nằm bên trái.
Trang 21, ( , /
S R
1 2
1
) )
((
)
(
R T
S T
R T
S R
S R
+ +
−
−
π π
Trang 22Ví dụ: Phép chia
Mahv
HV01 HV03
KETQUATHI Mahv Mamh Diem
] ,
[
Mamh MONHOC
MONHOC
Mamh Mahv
KETQUATHI
KETQUA
←
←
Trang 23Hàm tính toán và gom nhóm
Hàm tính toán gồm các hàm:
avg(), min(), max(), sum(), count()
Phép toán gom nhóm:
–E là biểu thức đại số quan hệ
–Gi là thuộc tính gom nhóm (rỗng, nếu không gom nhóm)
), , (
), (
, ,
n n
n F A F A F A G
G
Trang 24Hàm tính toán và gom nhóm
Điểm thi cao nhất, thấp nhất, trung bình của môn CSDL?
Điểm thi cao nhất, thấp nhất, trung bình của từng môn?
)
() (
), min(
), max(Diem Diem avg Diem KETQUATHI
)
(
CSDL' '
Mamh )
( ), min(
), max(Diem Diem agv Diem = KETQUATHI
Trang 25S1 P1 300 S1 P2 200 S1 P3 400 S2 P1 300 S2 P2 400
S
P SP
Cho sơ đồ quan hệ sau :
Trang 26S# SNAME STATUS CITY
Liệt kê danh sách các mặt hàng màu đỏ :
σCOLOR = ‘Red’(P)
Liệt kê P#, PName các mặt hàng màu đỏ và có Weight >15 :
∏P#,Pname (σColor = ’Red’ ^ Weight > 100(P))
Liệt kê S# của các hãng cung ứng mặt hàng ‘P1’ hoặc ‘P2’
Thực hiện các câu hỏi sau bằng ngôn ngữ đại số QH
Trang 27S# SNAME STATUS CITY
Thực hiện các câu hỏi sau bằng ngôn ngữ đại số QH
Liệt kê S# của các hãng cung ứng cả hai mặt hàng ‘P1’ và P2’
∏S# (σP# = ’P1’ (SP)) ∩ ∏s# (σP# = ’P2’(SP))
Liệt kê S# của các hãng cung ứng ít nhất một Mhàng màu đỏ
∏S# (SP * σCOLOR=’Red’(P))
Trang 28Ví dụ 2:
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Phát biểu:
•Mỗi một đề tài thuộc duy nhất một loại và có một giảng viên
hướng dẫn
•Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm.
•Một sinh viên có thể tham gia làm một hay nhiều đề tài
Trang 29Ví dụ: Dùng Đại số quan hệ
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Câu 1: Liệt kê mã sinh viên có tham gia đề tài với
các mã đề tài là ‘HTT1’ và ‘HTT2’.
Lời giải:
Trang 30Ví dụ: Dùng Đại số quan hệ
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Câu 1b: Liệt kê mã đề tài được thực hiện bởi sinh viên có
họ tên là “Nguyen Van Dung”
Lời giải:
Trang 31Ví dụ 3:
Lược đồ CSDL quản lý bán hàng gồm có các quan hệ sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH,
DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Trang 32Mô tả các câu truy vấn sau bằng ĐSQH
1 In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc”
sản xuất có giá từ 30.000 đến 40.000
2 In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng
trong ngày 1/1/2013.
3 In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc”
sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2013.
4 Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số
“BB01” và “BB02”.
5 In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc”
sản xuất không bán được trong năm 2012.
6 Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản
xuất
Trang 331 In ra danh sách các sản phẩm (MASP, TENSP) do
“Han Quoc ” sản xuất có giá từ 30.000 đến 40.000.
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Lời giải:
Trang 342 In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2014.
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Lời giải:
Trang 353 In ra danh sách MSP, TENSP các sản phẩm do
“HanQuoc” sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2014.
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Lời giải:
Trang 364 Tìm các số hóa đơn đã mua cùng lúc các sản phẩm
có mã số “BB01” và “BB02”.
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Lời giải:
Trang 375 In ra MASP, TENSP các sản phẩm do
‘HanQuoc’ sản xuất không bán được trong
năm 2012.
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Lời giải:
Trang 386 Tìm số hóa đơn đã mua tất cả các sản
phẩm do Singapore sản xuất
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Lời giải:
Trang 39Phần 2
Ngôn ngữ truy vấn SQL
Trang 40Giới thiệu
SQL(Structured Query Language)
• Ngôn ngữ cấp cao
• Được phát triển bởi IBM, năm 1970
• Được chuẩn hóa bởi ANSI và ISO(SQL-86, SQL-92,
SQL-99)
Bao gồm :
• Ngôn ngữ định nghĩa dữ liệu
• Ngôn ngữ thao tác dữ liệu
• Ngôn ngữ truy vấn dữ liệu
• Ngôn ngữ quản lý dữ liệu
Các hệ quản trị CSDL đều có cách cài đặt ngôn ngữ khác nhau nhưng đều dựa trên chuẩn của SQL
Trang 41Ngôn ngữ định nghĩa dữ liệu(DDL)
Dùng để :
Mô tả lược đồ cho các quan hệ
Mô tả miền giá trị cho các thuộc tính
Mô tả các ràng buộc toàn vẹn
Chỉ mục trên mỗi quan hệ
Trang 42Các lệnh thao tác với bảng
Tạo bảng :
CREAT TABLE <Tên_bảng>
( <tên_ cột_1> <loại dữ_liệu_1> < kích thước 1>,
……….
<tên_ cột_n> <loại dữ_liệu_n> < kích thước n>,
[CONSTRAINT <tên ràng buộc toàn vẹn>]|NULL|NOT
NULL|
Primary Key (Khoá chính)
[Unique (Khoá )]
[Foreign Key (Khoá _ ngoài) Reference Tên_bảng]
[Check <Điều_ kiện_ràng_buộc>]
);
Trang 43Các lệnh thao tác với bảng
Trong đó :
• Chỉ thị NOT NULL : chỉ rằng cột không nhận giá trị rỗng
Ngầm định là Null Thuộc tính khoá ngầm định là Not Null
• Chỉ thị COSNTRAINT<tên các ràng buộc toàn vẹn>: khai
báo các ràng buộc toàn vẹn của CSDL
• Chỉ thị Primary Key (Khoá chính): Khai báo khoá chính
của mảng
• Chỉ thị Unique (Khoá) : Khai báo các khoá khác nếu có
• Chỉ thị Foreign Key Khoá_ ngoài Reference Tên_ bảng :
Khai báo các khoá ngoài của bảng
• Chỉ thị Check Điều_kiện_ràng_buộc : Khai báo các ràng
buộc dữ liệu
Trang 44Các lệnh thao tác với bảng
Ví dụ :
Tạo bảng S :
CREATE TABLE S
(S# INTEGER NOT NULL,
SNAME VARCHAR(8) NOT NULL,
STATUS INTEGER NOT NULL,
CITY VARCHAR(30) NOT NULL
CONSTRAINT S_Khoá_chính PRIMARY KEY (S#) )
Trang 45Các lệnh thao tác với bảng
Trang 46Các lệnh thao tác với bảng
Thêm một cột :
ALTER TABLE <Tên_bảng>
ADD COLUMN <Tên_cột><Kiểu_dữ_liệu >[NOT NULL]
Xoá một cột :
ALTER TABLE <Tên_bảng>
DROP COLUMN <Tên_cột>
Sửa kiểu dữ liệu của một cột đã định nghĩa :
ALTER TABLE <Tên_bảng>
CHANGE COLUMN <Tên_cột> <Kiểu_dữ_liệu_mới >
Trang 47Các lệnh thao tác với bảng
Thêm một ràng buộc :
ALTER TABLE <Tên_bảng>
ADD CONSTRAINT <Tên_ràng_buộc><Kiểu_ràng_buộc >
Xóa một ràng buộc :
ALTER TABLE <Tên_bảng>
DROP CONTRAINT <Tên_ràng_buộc>
Xoá bảng :
DROP TABLE <tên_bảng>
VD : DROP TABLE NHANVIEN
Trang 48[WHERE <biểu thức điều kiện>]
[GROUP BY<dsách tên cột>[HAVING<bthức điều kiện>]] [ORDER BY<dsách tên cột>|<biểu thức>] [ASC|DESC] [UNION | INTERSECT | MINUS<Câu truy vấn>]
Kết quả của câu truy vấn là một bảng dữ liệu được kết xuất từ 1 hoặc nhiều bảng
Trang 49Truy vấn đơn giản trên một bảng
Tìm kiếm không điều kiện
– Cho biết tên của các nhà cung cấp :
∀∏Sname (S)
• Select SNAME From S – Cho biết tên của các nhà cung cấp (loại bỏ trùng lặp)
dùng từ khóa Distinct trước SNAME :
• Select Distinct SNAME From S – Liệt kê danh sách các nhà cung cấp :
• Select * From S – Từ khóa “*” thay thế cho toàn bộ thuộc tính của một quan
Trang 50Đặt tên trong SQL
Trang 51Phép toán số học
Trang 52Các phép toán logic trong SQL
Dùng trong mệnh đề WHERE và HAVING để xây dựng các điều kiện chọn
• =,<>, <, >, ≤, ≥
• And, Or, Not
• Between<giá trị đầu> And <giá trị sau>
• In (<Danh sách giá trị>)
Đưa ra danh sách mã của các nhà cung cấp đã cung cấp
‘P1’ với số lượng >50
Select S# From SP Where P# = ‘P1’ And QTY>50
Ví dụ : Đưa ra danh sách mã của các nhà cung cấp đã
cung cấp 1 trong hai mặt hàng ‘P1’ hoặc ‘P2’
Select S# From SP Where P# = ‘P1’ Or P# = ‘P2’
Trang 54Truy vấn có xử lý xâu kí tự
SQL dùng toán tử LIKE để so sánh xâu.
SQL sử dụng kí tự ' %' để thay thế cho một xâu con, dấu phân cách '_' để thay thế cho một kí tự.
Trang 55Truy vấn có xử lý xâu kí tự
Ví dụ :
– Đưa ra thông tin về hãng cung ứng có tên là bắt đầu bằng chữ ‘H’ Select * From S
Where SNAME Like ‘H%’
– Đưa ra thông tin về sản phẩm mà tên có chứa từ ‘bánh’
Select * From P Where PNAME Like ‘%banh%’
Trang 56Các ví dụ
Trang 57Ví dụ:
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Phát biểu:
•Mỗi một đề tài thuộc duy nhất một loại và có một giảng viên
hướng dẫn
•Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm.
•Một sinh viên có thể tham gia làm một hay nhiều đề tài
Trang 58Ví dụ: Dùng SQL
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Câu 2: Liêêt kê danh sách gồm Mã sinh viên, Họ tên sinh viên
mà làm ít nhất 2 loại đề tài khác nhau
Lời giải:
Trang 59Ví dụ 1: Dùng SQL
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADT, TENDT, MAGV, MALOAI)
DETAI_SINHVIEN (MADT, MASV)
Câu 3: Liêêt kê danh sách gồm mã đề tài, tên đề tài, họ tên
giảng viên hướng dẫn mà chỉ có duy nhất một sinh viên
tham gia
Lời giải:
Trang 60Ví dụ 2:
LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO)
SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI)
PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU)
CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG)
Ghi chú :
<<HAN_LUU_KHO>>: thời gian tính bằng đơn vị là ngày để cho sản phẩm
thuộc loại đó có thể dự trữ trong kho mà không bị hỏng.
<<LOAI_PHIEU>> trong bảng Phieunhapxuat:
LOAI_PHIEU = 1: nhập LOAI_PHIEU = 0: xuất
Phát biểu :
- Mỗi một sản phẩm thuộc một loại sản phẩm.
- Mỗi lần nhập một sản phẩm về kho hay xuất ra kho đều được ghi nhận
trong bảng “PHIEUNHAPXUAT” với thuộc tính loại để phân biệt.
- Mỗi lần nhập hay xuất kho những mặt hàng nào thì được ghi nhận trong