Bài giảng Cơ sở dữ liệu

1, Đại số quan hệ

2, Ngôn ngữ truy vấn SQL

3, Ràng buộc toàn vẹn

pdf55 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 1925 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Cơ sở dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
tên có tên ‘Nguy n La_’ (ví d Lam, Lan)ễ ụ
Select MaNV, HoTen from NhanVien where HoTen like ‘Nguy n La_’ễ
Câu h i 24 (tt)ỏ : Tìm nh ng nhân viên có tên Lan.ữ
Select MaNV, HoTen from NhanVien where HoTen like ‘% Lan’
Câu h i 25 (tt)ỏ : Tìm nh ng nhân viên có tên lót là “Văn”.ữ
Select MaNV, HoTen from NhanVien where HoTen like ‘% Văn %’
 2. SQL – HÀM COUNT,SUM,MAX,MIN,AVG
a) S d ng các hàm COUNT, SUM, MIN, MAX, ử ụ
AVG trên 1 nhóm l n (trên toàn b quan h ):ớ ộ ệ
– Câu h i 27: Tính s nhân viên c a công tyỏ ố ủ .
– Câu h i 28: Tính s l ng nhân viên qu n lý tr c ti p nhân ỏ ố ượ ả ự ế
viên khác.
– Câu h i 29: Tìm m c l ng l n nh t, m c l ng trung bình, ỏ ứ ươ ớ ấ ứ ươ
t ng l ng c a công tyổ ươ ủ .
– Câu h i 30: Cho bi t nhân viên có m c l ng l n nh t.ỏ ế ứ ươ ớ ấ
Select COUNT(MaNV) as SoNV from NhanVien
Select COUNT (DISTINCT Ma_NQL) from NhanVien
Select MAX(Luong), AVG(Luong), SUM(Luong) from NhanVien
Select HoTen from NhanVien 
Where Luong = (Select MAX(Luong) from NhanVien )
 2. SQL – M NH Đ GROUP BYỆ Ề
Câu h i 31ỏ : Cho bi t nhân viên có m c l ng trên m c l ng ế ứ ươ ứ ươ
trung bình c a công ty.ủ
Select HoTen from NhanVien where Luong > (Select 
AVG(Luong) from NhanVien )
b) S d ng các hàm COUNT, SUM, MIN, MAX, ử ụ
AVG trên t ng nhóm nh : m nh đ GROUP BYừ ỏ ệ ề
– Chia các dòng thành các nhóm nhỏ dựa trên tập 
thuộc tính chia nhóm.
– Thực hiện các phép toán trên nhóm như: Count (thực 
hiện phép đếm), Sum (tính tổng), Min(lấy giá trị nhỏ 
nhất), Max(lấy giá trị lớn nhất), AVG (lấy giá trị trung 
bình).
 2. SQL – M NH Đ GROUP BYỆ Ề
nh ó m
Các thuộc tính GROUP BY: Q
a
a
b
b
c
c
c
c
c
d
d
d
Chia các dòng thành các 
nhóm dựa trên tập thuộc 
tính chia nhóm
Q Count(S)
Q    S
a
b
c
d
2
2
5
3
10
2
9
5
10
8
6
4
10
16 Câu SQL: 
Select Q, count(S) 
From NV
Group by Q
Quan hệ NV
18
50
Tương tự cho các 
hàm SUM, MIN, 
MAX, AVG
 2. SQL – M NH Đ GROUP BYỆ Ề
Câu h i 32ỏ : Cho bi t s l ng nhân viên theo t ng phái? ế ố ượ ừ
Do c t phái có 2 giá tr “nam” và “n ”, tr ng h p này ta chia ộ ị ữ ườ ợ
b ng NhanVien thành 2 nhóm nh . Thu c tính chia nhóm là thu c ả ỏ ộ ộ
tính “Phai”.
Câu h i 33ỏ : Cho bi t s l ng nhân viên theo t ng phòng? ế ố ượ ừ
Do c t MaPH có 3 giá tr “NC” và “DH” và “QL”, tr ng h p này ta chia ộ ị ườ ợ
b ng nhân viên thành 3 nhóm nh . Thu c tính chia nhóm là thu c tính ả ỏ ộ ộ
“MaPH”. 
T ng t : cho bi t t ng l ng c a m i phòng, cho bi t m c l ng th p ươ ự ế ổ ươ ủ ỗ ế ứ ươ ấ
nh t c a t ng phòng, m c l ng cao nh t, m c l ng trung bình c a t ng ấ ủ ừ ứ ươ ấ ứ ươ ủ ừ
phòng
Select Phai, count(Manv) as SoNV from NhanVien 
Group by Phai
Select MaPH, count(Manv) from NhanVien Group by MaPH
 2. SQL – M NH Đ GROUP BYỆ Ề
Câu h i 35ỏ : V i m i phòng, cho bi t s l ng nhân viên theo t ng ớ ỗ ế ố ượ ừ
phái? 
Do c t MaPH có 3 giá tr “NC” và “DH” và “QL”, m i phòng chia ộ ị ỗ
nh theo t ng phái: 2 nhóm “Nam” và “N ”, tr ng h p này ta ỏ ừ ữ ườ ợ
chia b ng nhân viên thành 6 nhóm nh . Nh v y, t p thu c tính ả ỏ ư ậ ậ ộ
chia nhóm cho câu truy v n là (Phong, Phai).ấ 
Select MaPH, Phai, count(Manv) from NhanVien 
Group by Phong, Phai
Câu h i 34ỏ : Cho bi t tên phòng và s l ng nhân viên theo t ng phòng?ế ố ượ ừ
Select TenPH, count(Manv) as SoLuongNV 
From NhanVien n, PhongBan p Where n.MaPh=p.MaPH
Group by TenPH
Gi ng câu 29 nh ng b sung thêm b ng PhongBan đ l y tên ố ư ổ ả ể ấ
phòng. Thu c tính chia nhóm là (TenPH) thay cho MaPH.ộ
 2. SQL – M NH Đ GROUP BYỆ Ề
Câu h i 36ỏ : Đ m s đ án c a t ng nhân viên tham gia? ế ố ề ủ ừ
Select MaNV, count(MaDA) as SoDATG From PhanCong
Group by MaNV
- Do c t MaNV có 7 giá tr “NV001”,…”NV008” (không có nhân viên ộ ị
“005”), tr ng h p này ta chia b ng PhanCong thành 7 nhóm nh . ườ ợ ả ỏ
V i m i nhóm nh (MaNV), ta đ m s đ án (count(MADA)) tham ớ ỗ ỏ ế ố ề
gia. Thu c tính chia nhóm là thu c tính “MaNV”. ộ ộ
- T ng t : tính t ng s gi làm vi c c a m i nhân viên (SUM), th i ươ ự ổ ố ờ ệ ủ ỗ ờ
gian làm vi c th p nh t c a m i nhân viên (MIN), th i gian làm vi c ệ ấ ấ ủ ỗ ờ ệ
l n nh t c a m i nhân viên (MAX), th i gian làm vi c trung bình,…ớ ấ ủ ỗ ờ ệ
Câu h i 37ỏ : Cho bi t mã, tên nhân viên và s đ án mà n/v đã tham gia? ế ố ề
Select n.MaNV, HoTen, count(MaDA) as SoDATG 
From PhanCong pc, NhanVien n where pc.manv=n.manv 
Group by MaNV, HoTen
 2. SQL – M NH Đ HAVINGỆ Ề
Câu h i 38ỏ : Cho bi t nh ng nhân viên tham gia t 2 đ ế ữ ừ ề
án tr lên? ở
 Lọc kết quả theo điều kiện, sau khi đã gom nhóm
 Điều kiện của HAVING là điều kiện về các hàm 
tính toán trên nhóm (Count, Sum, Min, Max, AVG) 
và các thuộc tính trong danh sách GROUP BY.
Select MaNV, count(MaDA) as SoDATG From PhanCong
Group by MaNV
Having count(MaDA) >=2
Select MaPH, count(Manv) from NhanVien Group by MaPH
Having count(Manv)>4
Câu h i 39ỏ : Cho bi t mã phòng ban có trên 4 nhân viên? ế
1. Ràng bu c toàn v nộ ẹ
3. RÀNG BU C TOÀN V NỘ Ẹ
• RBTV có b i c nh trên m t quan hố ả ộ ệ
– Ràng bu c mi n giá trộ ề ị
– Ràng bu c liên bộ ộ
– Ràng bu c liên thu c tínhộ ộ
• RBTV có b i c nh trên nhi u quan hố ả ề ệ
– Ràng bu c liên thu c tính liên quan hộ ộ ệ
– Ràng bu c khóa ngo i (tham chi u)ộ ạ ế
– Ràng bu c liên b liên quan hộ ộ ệ
– Ràng bu c do thu c tính t ng h p (Count, Sum)ộ ộ ổ ợ
3. RBTV – CÁC Đ C TR NGẶ Ư
Các đặc trưng của 1 RBTV:
Nội dung : phát biểu bằng ngôn ngữ hình thức 
(phép tính quan hệ, đại số quan hệ, mã giả,…)
Bối cảnh: là những quan hệ có khả năng 
làm cho RBTV bị vi phạm.
Tầm ảnh hưởng: là bảng 2 chiều, xác 
định các thao tác ảnh hưởng (+) và thao 
tác không ảnh hưởng (­) lên các quan hệ 
nằm trong bối cảnh.
3. RBTV – B NG T M NH H NGẢ Ầ Ả ƯỞ
Thêm Xóa S aử
Quan h 1ệ + + - (*)
………
Quan h nệ - - +(A)
Ký hiệu +     : Có thể gây ra vi phạm RBTV
Ký hiệu ­      : Không thể gây ra vi phạm RBTV
Ký hiệu +(A) : Có thể gây ra vi phạm RBTV khi thao  
          tác trên thuộc tính A 
Ký hiệu –(*)  : Không thể gây ra vi phạm RBTV do thao tác không   
        thực hiện được
B ng t m nh h ng c a RBTV có d ng nh sau:ả ầ ả ưở ủ ạ ư
3. RBTV – TRÊN B I C NH LÀ 1 QUAN HỐ Ả Ệ
• Xét l c đ quan hượ ồ ệ
– NHANVIEN (MANV, HONV, TENLOT, TENNV, 
NGSINH, PHAI, DCHI, MA_NQL, PHONG, 
MLUONG) 
Câu h i 40ỏ : Phái c a nhân viên ch có th là ‘Nam’ ho c ‘N ’ủ ỉ ể ặ ữ
– N i dungộ :
∀∀n ∈ NHANVIEN: n.PHAI IN {‘Nam’,’N ’}ữ
– B i c nhố ả : quan h NHANVIENệ
– B ng t m nh h ng (TAH):ả ầ ả ưở
3.1. Ràng bu c toàn v n mi n giá trộ ẹ ề ị
Thêm Xóa S aử
NHANVIEN +(PHAI) - +(PHAI)
3. RBTV – TRÊN B I C NH LÀ 1 QUAN HỐ Ả Ệ
3.2. Ràng bu c toàn v n liên thu c tính: ộ ẹ ộ ràng bu c ộ
gi a các thu c tính trong cùng m t quan h .ữ ộ ộ ệ
Xét l c đ quan hượ ồ ệ
DEAN (MADA, TENDA, DDIEM_DA, PHONG, 
NGBD_DK, NGKT_DK) 
Câu h i 41ỏ : V i m i đ án, ngày b t đ u d ki n ớ ọ ề ắ ầ ự ế
(NGBD_DK) ph i nh h n ngày k t thúc d ki n ả ỏ ơ ế ự ế
(NGKT_DK)
N i dungộ : 
∀d ∈ DEAN, d.NGBD_DK <= d.NGKT_DK
3. RBTV – TRÊN B I C NH LÀ 1 QUAN HỐ Ả Ệ
– B i c nhố ả : quan h DEAN ệ
– B ng t m nh h ngả ầ ả ưở :
Thêm Xóa S aử
DEAN + (NGBD_DK,
NGKT_DK)
- +(NGBD_DK,
NGKT_DK)
3.3. Ràng bu c toàn v n liên b : ộ ẹ ộ ràng bu c gi a các ộ ữ
b giá tr trong cùng m t quan h .ộ ị ộ ệ
Cho l c đ quan h : ượ ồ ệ
NHANVIEN(MaNV, HoTen, HESO, MucLuong)
Câu h i 42ỏ : các nhân viên có cùng h s l ng thì có cùng ệ ố ươ
m c l ng.ứ ươ
3. RBTV – TRÊN B I C NH LÀ 1 QUAN HỐ Ả Ệ
– N i dungộ :
• ∀n1,n2 ∈ NHANVIEN: n1.HESO=n2.HESO thì
 (n1.MUCLUONG = n2.MUCLUONG) 
– B i c nhố ả : quan h NHANVIENệ 
– B ng t m nh h ngả ầ ả ưở :
Thêm Xóa S aử
NHANVIEN + (HESO, 
MucLuong)
- +(HESO, MucLuong)
3. RBTV – B I C NH NHI U QUAN HỐ Ả Ề Ệ
• RBTV tham chiếu còn gọi là ràng buộc phụ thuộc tồn tại hay ràng 
buộc khóa ngoại.
• Xét lược đồ quan hệ
PHONGBAN (MAPH, TENPH, TRPH, NGNC)
NHANVIEN (MANV, HOTEN, NTNS, PHAI, MA_NQL, MAPH, 
LUONG) 
Câu hỏi 43: M i tr ng phòng ph i là m t nhân viên trong công tyỗ ưở ả ộ .
– Nội dung: 
 ∀p ∈ PHONGBAN, ∃n ∈ NHANVIEN: 
p.TRPH= n.MANV
Hay: PHONGBAN[TRPH] ⊆ NHANVIEN[MANV])
3.4. Ràng bu c toàn v n tham chi uộ ẹ ế
3. RBTV – B I C NH NHI U QUAN HỐ Ả Ề Ệ
–B i c nhố ả : NHANVIEN, PHONGBAN
–B ng t m nh h ngả ầ ả ưở :
Thêm Xóa S aử
PHONGBAN +(TRPH) - +(TRPH)
NHANVIEN - + - (*)
3.5. Ràng bu c toàn v n liên thu c tính liên quan hộ ẹ ộ ệ
Xét các l c đ quan h :ượ ồ ệ
DATHANG(MADH, MAKH, NGAYDH)
GIAOHANG(MAGH, MADH, NGAYGH)
3. RBTV – B I C NH NHI U QUAN HỐ Ả Ề Ệ
– B i c nhố ả : DATHANG, GIAOHANG
– B ng t m nh h ngả ầ ả ưở :
Câu h i 44ỏ : Ngày giao hàng không đ c tr c ngày đ t hàngượ ướ ặ
- N i dungộ :
∀g∈GIAO_HANG, 
∃!d∈DAT_HANG:d.MADH= g.MADH ∧ d.NGAYDH 
>= g.NGAYGH
Thêm Xóa S aử
DATHANG - - + (ngaydh)
GIAOHANG +(ngaygh) - + (ngaygh)
3. RBTV – B I C NH NHI U QUAN HỐ Ả Ề Ệ
3.6. Ràng bu c toàn v n liên b , liên quan hộ ẹ ộ ệ
• RBTV liên b , liên quan h là đi u ki n gi a các b trên nhi u ộ ệ ề ệ ữ ộ ề
quan h khác nhau.ệ
• Xét các l c đ quan hượ ồ ệ
– PHONGBAN (MAPH, TENPH, TRPH, NGNC)
– DIADIEM_PHG (MAPH, DIADIEM) 
 Câu h i 45ỏ : M i phòng ban ph i có ít nh t m t đ a đi m phòngỗ ả ấ ộ ị ể
 - N i dungộ
• M i phòng ban ph i có ít nh t m t đ a đi m phòngỗ ả ấ ộ ị ể
∀∀p ∈ PHONGBAN, ∃d ∈ DIADIEM_PHG: 
p.MAPH = d.MAPH
3. RBTV – B I C NH NHI U QUAN HỐ Ả Ề Ệ
3.7. Ràng bu c toàn v n do thu c tính t ng h pộ ẹ ộ ổ ợ
– B i c nhố ả : PHONGBAN, DIADIEM_PHG
– B ng t m nh h ngả ầ ả ưở :
Thêm Xóa S aử
PHONGBAN + - -
DIADIEM_PHG - + + (MAPH)
PXUAT(SOPHIEU, NGAY, TONGTRIGIA)
CTIET_PX(SOPHIEU, MAHANG, SL, DG)
Câu h i 46ỏ : T ng tr giá c a 1 phi u xu t ph i b ng t ng ổ ị ủ ế ấ ả ằ ổ
tr giá các chi ti t xu t.ị ế ấ
3. RBTV – B I C NH NHI U QUAN HỐ Ả Ề Ệ
N i dungộ
∀ ∀px∈PXUAT,
 px.TONGTRIGIA = Σ(ct ∈ CTIET_PX ∧ ct.SOPHIEU = px.SOPHIEU) (ct.SL*ct.DG)
– B i c nhố ả : PXUAT,CTIET_PX 
– B ng t m nh h ngả ầ ả ưở :
Thêm Xóa S aử
PXUAT -(*) - + (tongtrigia)
CTIET_PX +(sl,dg) + + (sl,dg)
-(*) th i đi m thêm m t b vào PXUAT, Ở ờ ể ộ ộ
giá tr b đó t i TONGTRIGIA là tr ng.ị ộ ạ ố
GI I Ả BÀI T PẬ

File đính kèm:

  • pdfGiáo trình Cơ sở dữ liệu.pdf
Tài liệu liên quan