Professional Documents
Culture Documents
Môn học:
CƠ SỞ DỮ LIỆU
Điểm đánh giá quá trình: 50% Điểm thi kết thúc học phần: 50%
✓ Điểm danh ✓ Hình thức thi: Trắc nghiệm
✓ Bài kiểm tra cá nhân ✓ Thời gian thi: 60 phút
✓ Điểm cộng các hoạt động trên lớp ✓ Không sử dụng tài liệu
✓ Hoạt động nhóm
01
NỘI DUNG
01 Tổng quan về Cơ sở dữ liệu
02 Mô hình hóa dữ liệu ở mức quan niệm
03 Mô hình quan hệ và đại số quan hệ
04 Ngôn ngữ truy vấn SQL
05 Ràng buộc toàn vẹn
06 Phụ thuộc hàm và chuẩn hóa cơ sở dữ liệu
1
15/09/2022
1
TỔNG QUAN
VỀ CSDL
▪ Dữ This is a
liệu (data): slide
Dữtitle
liệu là toàn bộ những gì máy tính lưu trữ và xử lý. Dữ liệu có thể là
các ký tự, con số, hình ảnh, âm thanh, sự kiện có ý nghĩa
▪ Thông tin (Information): dữ liệu được xử lý để giúp cho việc ra quyết
định.
Vd:
Dữ liệu của Sinh viên Dữ liệu Xe hơi Dữ liệu về Hàng hóa
- Họ tên
- Màu xe
- NTNS
- Năm SX
- Nơi sinh
- Hãng sản
- Hộ khẩu TT
xuất
- Giới tính
- Công suất
- Email
- Mức tiêu thụ
- Điện thoại
nhiên liệu
5 - Hình
▪ Cơ This is a
sở dữ liệu slide
(Database):
Là một
titletập hợp dữ liệu được tổ chức theo một cấu trúc chặt chẽ được
lưu trữ trong máy tính. CSDL được thiết kế, xây dựng cho phép người dùng
lưu trữ dữ liệu, cập nhật dữ liệu, truy xuất thông tin
Lưu trữ, cập nhật dữ liệu
Cơ sở
Người dùng dữ liệu
(Database) Truy xuất Thông tin
Vd: CSDL nhân viên, CSDL hàng hóa, CSDL sách, CSDL sinh viên,…
2
15/09/2022
This
Ví dụ 1 CSDL is a slide Dữ liệu là các
cuốn sách
title
Cơ sở dữ liệu lưu trữ
thông tin các cuốn sách
Dữ liệu về từng cuốn sách gồm:
- Tên sách
- Tên tác giả
- Nhà xuất bản
- Năm xuất bản Truy cập CSDL để tìm
- Giá bán
- … các cuốn sách theo tên
tác giả, theo nhà xuất
bản….
▪ Hệ This
quản trịis
cơ a
sởslide
dữ liệu (Database Management System - DBMS):
là hệ thống
titlephần mềm cung cấp công cụ:
• Xây dựng CSDL
• Thao tác trên dữ liệu của CSDL
• Kiểm soát việc truy xuất dữ liệu
▪ Các hệ QT CSDL thương mại lớn:
Oracle, IBM DB2, Microsoft SQL Server, SyBase,…
▪ Các hệ QT CSDL mã nguồn mở mạnh:
MySQL, PostgreSQL, SQLite, Ingres, Apache Derby,…
3
15/09/2022
▪ Mô This is liệu:
hình dữ a slide
là mô hình trừu tượng dùng để mô tả dữ liệu và
phương thức truy xuất dữ liệu
title
▪ Có nhiều loại mô hình dữ liệu:
• Mô hình phân cấp (hierarchical model)
• Mô hình mạng (network model)
• Mô hình thực thể kết hợp (Entity Relation model)
• Mô hình quan hệ (rational model)
• Mô hình hướng đối tượng (Object oriented model)
• …
10
10
11
11
HPhan SVien
Mức 2:
TenHP SLuong TenSV Lop Nganh
MHoc
Mức 3:
TenMH Khoa TinChi
12
12
4
15/09/2022
Mô hình quan hệ
13
13
Mô hình mạng
14
14
Diem
DiemTH mo
DiemLT
DiemPrj
0..*
SuaDiem()
MHoc
Ten
Khoa +MHoc truoc
SoTinChi
0..*
CapNhatSTC()
0..* Dieu kien
+MHoc sau
15
15
5
15/09/2022
16
This is a slide
title
Relational Object
Mô hình
vật lýl
17
17
18
18
6
15/09/2022
2
MÔ HÌNH HÓA DỮ LIỆU
Ở MỨC QUAN NIỆM
19
19
Mở đầu
This
Các bước iskếaCSDL:
thiết slide
▪ thập và phân tích nhu cầu:
Thutitle
• Các yêu cầu về CSDL
• Các yêu cầu chức năng (các thao tác trên CSDL)
▪ Thiết kế mức quan niệm và phân tích chức năng:
• Tạo mô hình quan niệm, vd: mô hình thực thể kết hợp (ERD)
• Đặc tả giao tác cấp cao tương ứng với các thao tác lên CSDL
▪ Thiết kế mức logic
• Ánh xạ lược đồ mức quan niệm sang lược đồ mức logic, vd: mô hình
quan hệ
▪ Thiết kế mức vật lý
• Cấu trúc lưu trữ và tổ chức tập tin
• Thiết kế chương trình ứng dụng và cài đặt giao tác
20
20
▪ This
Mô hình isthể
thực a -slide
kết hợp (Entity-Relationship Diagram)
▪ title
Được dùng để thiết kế CSDL ở mức quan niệm
▪ Biểu diễn trừu tượng cấu trúc của CSDL
21
21
7
15/09/2022
22
22
✓KýThis
hiệu: is a slide
Tên tập thực thể
Danh từ hoặc cụm danh từ
title
Vd: Nhân viên Sinh viên Đơn đặt hàng
✓ Tập thực thể yếu: thực thể tồn tại phụ thuộc vào thực thể khác.
Vd: Tập thực thể “Thân nhân” phụ thuộc vào tập thực thể “Nhân viên”
23
23
Thistính
• Thuộc is a(Attributes):
slide các tính chất đặc trưng của thực thể hoặc
mối kết hợp
title
Thuộc tính
Thuộc tính của của thực
thực thể Sinh thể Hàng
viên: hóa:
Mã SV, Họ, Tên,
NTNS, Nơi sinh,
Địa chỉ, Số điện
thoại, Giới tính,
Email
• Tất cả các thực thể nằm trong tập thực thể có cùng tập thuộc tính
• Mỗi thuộc tính đều có miền giá trị tương ứng với nó. Miền giá trị của
24 thuộc tính: Kiểu chuỗi, Kiểu số nguyên, Kiểu số thực…
24
8
15/09/2022
✓ KýThis
hiệu: is a Thuộc
slidetính
title
✓ Vd: thực thể Sinh viên có các thuộc tính: Mã sinh viên, Họ, Tên, NTNS,
Địa chỉ, Giới tính, Nơi sinh
Mã sinh
viên Họ Tên
Nơi
sinh
Giới Sinh viên NTNS
tính
Địa chỉ
25
25
This
Các loại istính
thuộc a slide
- Thuộc tính đơn: không thể tách nhỏ ra được. Vd: Giới tính
title
- Thuộc tính kết hợp: có thể tách thành nhiều thuộc tính nhỏ hơn
Vd:
Địa chỉ: Số nhà, đường, phường, quận, thành phố
Họ tên: Họ, Tên lót, Tên Số nhà
Đường
Phường/
Nhân viên Địa chỉ Xã
Quận/
Huyện
Thành phố/
Tỉnh
26
26
- This
Thuộc is trị:
tính đơn a slide
có giá trị duy nhất cho một thực thể. Vd: Số CMND
- Thuộc tính đa trị: có thể có nhiều giá trị khác nhau cho cùng 1 thực thể.
title
Vd: số điện thoại, email
27
27
9
15/09/2022
Chuyên Chuyên
môn Mã nv Họ tên NTNS môn Mã nv Họ tên NTNS
Email Email
Nhân viên Nhân viên
Số ĐT Số ĐT
28
28
• MốiThis
kết hợp:
is làamối liên hệ giữa các 2 hay nhiều thực thể
slide
✓Ký hiệu: Tên mối
title kết hợp
Động từ hoặc cụm động từ
Vd: Quản
Nhân viên lý
Làm
Nhân viên việc
Phòng ban
Mối quan hệ phản thân
Đăng
Sinh viên ký
Môn học Môn học
Buổi
Ngày học
Lớp học
29
2.4 Bản số
• BảnThis isbuộc
số: ràng a slide
về số lượng các thực thể tham gia vào mối kết hợp.
✓Ký title
hiệu bởi 1 cặp (min, max)
Min: qui định giá trị tối thiểu các thực thể khi tham gia vào mối kết
hợp. Giá trị từ 0, 1, 2,…
Max: qui định giá trị tối thiểu các thực thể khi tham gia vào mối kết
hợp. Giá trị từ 1, 2,…
30
10
15/09/2022
2.4 Bản số
1,n
Vd: This isNhân
a slide
viên
0,1
Làm việc Phòng ban
title
Hiểu là: một nhân viên chỉ thuộc (làm việc) trong một phòng, một phòng có nhiều nhân viên làm việc
0,1
0,n
0,1 0,n
Con người Sống ở Thành phố
1,1 0,n
Sinh tại
31
31
32
32
This
- Thuộc tính is
trênamối
slide
kết hợp: mô tả tính chất cho mối quan hệ đó. Thuộc
tính này không thể gắn liền với những thực thể tham gia vào mối quan hệ
title
(0,n) (1,n)
Nhân viên Phân công Dự án
Số giờ
(0,1) (1,1)
Nhân viên Là trưởng Phòng
phòng
Ngày nhận
chức
33
33
11
15/09/2022
34
34
35
- XácThis
định các
is tập thực thể và thuộc tính của tập thực thể:
a slide
✓ Nhân viên: họ, tên, mã số, địa chỉ, lương, giới tính, ngày sinh
title
✓ Thân nhân: họ, tên, giới tính, ngày sinh, mối quan hệ
✓ Phòng: tên, mã phòng
✓ Dự án: tên, mã, địa điểm
- Xác định các mối quan hệ giữa các tập thuộc tính:
✓ Nhân viên có các Thân nhân. Thân nhân của Nhân viên
✓ Nhân viên quản lý phòng gọi là trưởng phòng. Trưởng phòng là một nhân
viên của công ty
✓ Nhân viên làm việc tại 1 phòng. Phòng có nhiều nhân viên
✓ Phòng kiểm soát nhiều dự án khác nhau. Dự án do 1 phòng quản lý
36
36
12
15/09/2022
Mô hình ERDtle
37
37
38
Mô
Thishình ERDtle
is a slide title
39
39
13
15/09/2022
40
40
41
41
Hệ thống quản lý thư viện của một trường Đại học được mô tả như sau:
- Thư viện bao gồm nhiều chi nhánh được đặt tại các cơ sở khác nhau của
trường. Thông tin của mỗi chi nhánh bao gồm: mã chi nhánh, tên chi nhánh và
địa chỉ
- Các cuốn sách trong thư viện được lưu trữ các thông tin sau: mã sách, tên sách,
nhà xuất bản, tác giả
- Một tác giả có thể viết nhiều cuốn sách. Một cuốn sách có thể do nhiều tác giả
cùng viết
- Một nhà xuất bản có nhiều cuốn sách. Một cuốn sách do một nhà xuất bản xuất
bản. Thông tin về Nhà xuất bản gồm có Tên, Địachỉ và Sốđiệnthoại.
- Một cuốn sách có thể có nhiều bản sao được lưu trữ tại các nhánh. Thông tin về
bản sao sách gồm Mã sách, số các bản sao.
- Thư viện có những người mượn sách. Thông tin về những người mượn sách
gồm có Số thẻ, Họ tên, Địa chỉ và Số điện thoại.
- Sách được cho các người mượn mượn tại các chi nhánh. Thông tin về một lần
42
mượn gồm có Ngày mượn và ngày trả.
42
14
15/09/2022
2.6 Sử dụng Power Designer vẽ mô hình thực thể kết hợp (ERD)
43
43
2.6 Sử dụng Power Designer vẽ mô hình thực thể kết hợp (ERD)
- Double click vào mối kết hợp để nhập tên và thuộc tính (nếu có)
This is a slide
- Double click vào bản số để sửa bản số phù hợp tại Cardinality
title
- Sau khi vẽ xong mô hình, RC chọn Check Model để kiểm tra lỗi. Sửa các
Error để hoàn chỉnh mô hình
Assocition Link
Entity
44
44
2.6 Sử dụng Power Designer vẽ mô hình thực thể kết hợp (ERD)
45
45
15
15/09/2022
This is a slide
•Nội dung 1: Trả lời các câu hỏi:
title
1. Trình bày khái niệm mô hình thực thể kết hợp (ERD)?
2. Mô hình ERD là mô hình được thiết kế ở giai đoạn nào trong quá trình
thiết kế CSDL?
3. Nêu cách xây dựng ERD?
• Nội dung 2: SV chọn đề tài theo nhóm, thực hiện các công việc sau:
1. Mô tả bài toán thực tế
2. Vẽ mô hình ERD
3. Vẽ mô hình ERD trên phần mềm Power Designer
46
46
3 MÔ HÌNH QUAN HỆ
47
47
48
48
16
15/09/2022
- Mô hình quan hệ thể hiện CSDL dưới dạng tập hợp các quan hệ (relation).
- Một quan hệ được tạo ra bởi 2 phần:
▪ Thể hiện quan hệ (realtion instance): một bảng (table) có nhiều dòng và
nhiều cột
▪ Lược đồ quan hệ (relation schema): đặc tả tên quan hệ, cùng với tên và
miền giá trị của mỗi cột
▪ Thuộc tính (Attribute): tên gọi của 1 cột của quan hệ
▪ Bộ (Tuple): là một dòng của một quan hệ (không phải là dòng tiêu đề)
▪ Miền giá trị (domain): là một tập các giá trị cho phép của một hay nhiều
thuộc tính
49
49
50
NHÂNVIÊN(MÃNV,HỌNV,TÊNNV,NGÀYSINH,ĐỊACHỈ,PHÁI,LƯƠNG,ĐIỆNTHOẠI,MAPH)
PHÒNG(MÃPHG,TÊNPHG,ĐIAĐIỂMPH,TRPHG,NGNHẬNCHỨC)
THÂNNHÂN(MÃNVIÊN,TÊNTN,GT,NS,QUANHỆ)
DỰÁN(MÃDA,TÊNDA,ĐĐIỂM_DA,MÃPHÒNG)
PHÂNCÔNG(MÃNV, MÃDA, ĐỊAĐIỂMDA)
51
51
17
15/09/2022
52
52
53
54
54
18
15/09/2022
55
55
56
56
57
57
19
15/09/2022
MAPHG TENPHG
1 1 Kế toán
2 2 Kinh doanh tổng hợp
3 3 Kiểm định chất lượng sản phẩm
58
NHANVIEN(MANV,HONV,TENNV,NS,DCHI,GT,LUONG,PHG)
Khóa chính
Thuộc tính được gọi là khóa ngoại của 1 quan hệ nếu nó tham chiếu đến
khóa chính của 1 quan hệ khác
59
59
Xác định khóa chính, khóa ngoại cho lược đồ CSDL sau:
NHANVIEN
HONV TENLOT TENNV MANV NGNSINH DCHI PHAI LUONG MA_NQL PHG
PHONGBAN DIADIEM_PHG
DEAN
PHANCONG
TENDA MADA DDIEM_DA PHONG MA_NVIEN SODA THOIGIAN
THANNHAN
MA_NVIEN TENTN PHAI NGAYSINH QUANHE
60
60
20
15/09/2022
61
61
3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ
HONV
(1,1) (1,n)
NHANVIEN Lam_viec
TENNV PHONG
PHAI
(1,1) (1,1)
La_truong_phong
PHONG(MAPHG,TENPH)
NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG)
62
62
3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ
Tên Địa điểm
Ngày nhận phòng phòng
Họ tên
chức
Ngày sinh
Lương (1,1)
Là trưởng Phòng
Mã nv phòng
Phái
(0,1) (1,n) (0,n)
Điện Mã
Làm việc phòng
thoại Nhân viên
cho
(1,1)
(0,n) (0,n)
Địa chỉ
Kiểm soát
Số giờ
Thực hiện Mã DA
(1,1)
Tên TN Quan hệ
(1,n) Dự án Tên DA
Có Thân nhân
Địa điểm DA
(1,1)
Ngày Phái
Sinh
63
21
15/09/2022
3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ
HONV
THOIGIAN MADA
DUAN
TENNV
NHANVIEN
TENDA
(1,n) (1,n)
Phan_cong
PHAI
64
3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ
• Mối quan hệ Một-Nhiều: Thêm vào quan-hệ-một thuộc tính khóa của
quan-hệ-nhiều
MANV
NGSINH LUON DCHI
G TENPHG MAPHG
HONV
(1,1) (1,n)
NHANVIEN Lam_viec PHONGBAN
TENNV
PHAI
65
65
3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ
NG_NHANCHUC
TENNV
NHANVIEN PHONGBAN
(1,1) (1,1)
PHAI La_truong_phong
66
22
15/09/2022
3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ
HONV
TENNV
NHANVIEN (1,n)
Co_than_nhan QUAN HE
PHAI
THANNHAN
TENTN
67
68
68
Bậc n=3
DOM(TENNV) = DOM(TENTN)
DOM(NGSINH) = DOM(NG_SINH)
DOM(PHAI) = DOM(PHAITN)
69
69
23
15/09/2022
• Phép hội: Cho 2 lược đồ quan hệ R(A1, A2, …, An) và S(S1, S2,…, Sn)
và hai quan hệ r(R), s(S) khả hợp, phép hội của r và s:
- Ký hiệu r s
- Là một quan hệ gồm các bộ thuộc r hoặc thuộc s, hoặc cả hai (các bộ
trùng lắp sẽ bị bỏ)
r s = { t / tr ts }
Vd:
r s rs
A B A B A B
1 2 1
2 3 2
1 1
3 70
70
r s = { t / (tr) (ts)}
Vd: r s rs
A B A B A B
1 2 2
2 3
1
71
71
• Phép trừ:
Cho 2 quan hệ r và s khả hợp. Phép trừ của r và s
- Ký hiệu r − s
- Là một quan hệ gồm các bộ thuộc r và không thuộc s
r − s = { t / (tr) (ts) }
Vd:
r s r-s
A B A B A B
1 2 1
2 3 1
1
72
24
15/09/2022
• Phép chọn:
Được dùng để lấy ra các bộ của quan hệ r thỏa điều kiện chọn.
- Ký hiệu: <điều kiện chọn>(r)
- Điều kiện chọn là biểu thức luận lýđược tạo thành dựa trên các thuộc
tính của r và có dạng
▫ <tên thuộc tính> <phép so sánh> <hằng số>
▫ <tên thuộc tính> <phép so sánh> <tên thuộc tính>
<phép so sánh> gồm , , , , , =
- Các mệnh đề được nối lại nhờ các toán tử logic như And () , Or() ,
Not()
- Kết quả trả về là một quan hệ
▫ 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
73
73
A B C D AB C D
1 7 1 7
5 7 23 10
12 3
23 10
74
74
MÃNV Lê Minh
N111 HỌNV TÊNNV 23/4/1983
Huy NTNS GT
Nam LƯƠNG
10.000.000 PHÒNG
P2
N112 Nguyễn
N112 Nguyễn Tiến
Tiến 12/6/1989
12/6/1989 Nam
Nam 8.000.000
8.000.000 P1
P1
N113 TrầnNgọc
N113 Trần Ngọc Lan
Lan 5/2/1990
5/2/1990 Nữ
Nữ 6.000.000
6.000.000 P1
P1
75
75
25
15/09/2022
Vd: Tìm các nhân viên có lương trên 8.500.000 ở phòng 1 hoặc các nhân
viên có lương trên 6.000.000 ở phòng 2
▫ Quan hệ: NHÂNVIÊN
▫ Thuộc tính: LƯƠNG, PHÒNG
▫ Điều kiện:
▪ LƯƠNG>8500000 và PHÒNG=P1 hoặc
▪ LƯƠNG>6000000 và PHÒNG=P2
76
• Phép chiếu:
Dùng để lấy ra một số thuộc tính của một quan hệ.
- Ký hiệu: A1, A2,…Ak (r)
- Kết quả trả về là một quan hệ
▫ Có k thuộc tính
▫ Có số bộ luôn ít hơn hoặc bằng số bộ của r
-Phép chiếu không có tính giao hoán X,Y (R) = X (Y (R))
r A, C(r)
Vd:
A B C A C
a x x
b x x
c x y
d y
77
Ví dụ: Cho biết mã, họ tên và lương của các nhân viên
Chương 2: Mô hình dữ liệu quan hệ
▫ Quan hệ: NHÂNVIÊN
▫ Thuộc tính: HỌNV, TÊNNV, LƯƠNG
78
26
15/09/2022
• Phép gán
Khi biểu thức đại số quan hệ phức tạp có liên quan đến nhiều phép
toán, ta có thể làm đơn giản chúng bằng cách cho thực hiện từng phép
toán riêng biệt và gán kết quả cho một quan hệ trung gian
Ký hiệu:
Cú pháp: r E
Khi đó kết quả của biểu thức đại số quan hệ E sẽ được gán cho quan
hệ r. Sau đó có thể dung r như là toán hạng cho một phép toán đại số
quan hệ khác
Vd: Cho biết mã, họ tên các nhân viên làm việc tại phòng P1
NHÂNVIÊN_P1 PHÒNG=1 (NHÂNVIÊN)
KẾTQUẢ MÃNV,HỌNV, TÊNNV(NHÂNVIÊN_P1)
79
80
81
27
15/09/2022
82
• Phép kết:Chương
dùng để2:
tổMô
hợp hình dữliên
2 bộ có liệu quan
quan từ 2hệ
quan hệ thành 1 bộ
- Ký hiệu:
Phép kết dùng để kết hợp các bộ có liên quan từ 2 quan hệ tham gia
vào phép kết. Mối liên quan này được thể hiện trong điều kiện kết.
Cho R(A1, A2,…, An), S(B1, B2,…, Bm) và r(R), s(S). R(R) có n bộ,
s(S) có m bộ, kết quả của phép kết là một quan hệ có m+n thuộc tính,
có lược đồ quan hệ là Q (A1, A2,…, An,B1, B2,…, Bm). Với mỗi bộ r0
thuộc r, nếu có một bộ s0 thuộc s thỏa mãn <điều kiện kết> thì sẽ sinh
ra một bộ trong kết quả q
83
- Phân loại
▪ Kết theta (theta join) là phép kết có điều kiện
Ký hiệu r Cs
C gọi là điều kiện kết trên thuộc tính
▪ Kết bằng (equi join) khi C là điều kiện so sánh bằng
▪ Kết tự nhiên (natural join): Kết quả của phép kết bằng bỏ bớt đi 1
cột giống nhau
84
28
15/09/2022
Ví dụChương 2:nhiên
phép kết tự Mô hình dữ liệu quan hệ
Quan hệ r Quan hệ s r s
A B C C D A B r.C s.C D
1 2 3 3 1 1 2 3 3 1
4 5 6 6 2 1 2 3 6 2
7 8 9 4 5 6 3 1
4 5 6 6 2
7 8 9 3 1
7 8 9 6 2
85
A B C C D A B C D
1 2 3 3 1 1 2 3 1
4 5 6 6 2 1 2 6 2
7 8 9
86
87
29
15/09/2022
r A B C S D E A B C D E
1 2 3 3 1 1 2 3 3 1
4 6 6 6 2 4 6 6 6 2
7 8 9
r C>D B>5 s
Ví dụ theta kết:
r A B C S D E A B C D E
1 2 3 3 1 7 8 9 3 1
4 6 6 6 2 7 8 9 6 2
7 8 9
88
▪ Kết ngoài (outer join): được sử dụng khi muốn giữ lại
ở quan hệ kết quả tất cả các bộ của quan hệ bên trái
(left outer join) hoặc tất cả các bộ của quan hệ bên phải
(right outer join) hoặc của cả 2 quan hệ (outer join).
Kí hiệu:
Vd:
NHÂNVIÊN PHÒNGBAN
89
Equi join
90
30
15/09/2022
▪ Phép chia
Chương 3: Mô hình dữ liệu quan hệ
Được dùng để lấy 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
- Ký hiệu r s A B
r a1 b1 s rs
a2 b1 A B
a3 b1 a1 b1
a4 b1 a2 b4
a1 b2 a3
a3 b2
a2 b3
a3 b3
a4 b3
a1 b4
a2 b4
a3 b4
91
▪ Hàm kếtChương
hợp (Aggregation
2: Mô function)
hình dữ liệu quan hệ
Nhận vào tập hợp các giá trị và trả về một giá trị đơn. Các hàm thường sử
dụng: Avg: tính giá trị trung bình; Min: tính giá trị nhỏ nhất; Max: tính giá trị
lớn nhất; Sum: tính tổng các giá trị; Count: đếm số lượng
Vd:
r A B sum(B) = 10
1 2 avg(A) = 1.5
3 4 min(A) = 1
1 2 max(B) = 4
1 2
count(A) = 4
92
Ví dụ:
Chương
MÃNV HỌNV 2: TÊNNV
Mô hình
NTNSdữ liệu
GT quan hệ
LƯƠNG PHÒNG
Sum (LƯƠNG)=
Count(MÃNV)=
Min (LƯƠNG)=
Max (LƯƠNG)=
Avg(LƯƠNG)=
93
31
15/09/2022
94
Chương
Vd: Tìm số lượng2: Môviên
nhân hình dữmỗi
trong liệuphòng
quan hệ
MA_PHG F COUNT (MANV) (NHANVIEN)
KT NV01 KT 3
TCHC NV02 TCHC 2
TCHC NV03
KT NV04
KT NV05
95
4 Ngôn ngữ
truy vấn SQL
96
96
32
15/09/2022
97
97
98
98
99
33
15/09/2022
100
101
101
102
34
15/09/2022
103
- Hoặc:
CREATE TABLE NHANVIEN
( MANV CHAR(10),
HONV VARCHAR(100) NOT NULL,
TENNV VARCHAR(50) NOT NULL,
NGAYSINH DATETIME ,
DIACHI VARCHAR(150) DEFAULT ‘Chưa có’
PHAI VARCHAR(30) CHECK (PHAI IN (‘Nam’, ‘Nữ’, ‘Khác’)),
LUONG FLOAT,
MAPHONG CHAR(10),
PRIMARY KEY(MANV)
)
104
105
35
15/09/2022
- Đặt tên cho ràng buộc: CONSTRAINT <Tên ràng buộc> <RBTV>
Vd:
CREATE TABLE NHANVIEN
( MANV CHAR(10)
CONSTRAINT PK_NHANVIEN PRIMARY KEY,
HONV VARCHAR(100) NOT NULL,
TENNV VARCHAR(50) NOT NULL,
NGAYSINH DATETIME ,
DIACHI VARCHAR(150)
CONSTRAINT DF_DIACHI_NHANVIEN DEFAULT ‘Chưa có’
PHAI VARCHAR(30)
CONSTRAINT CK_PHAI_NHANVIEN CHECK (PHAI IN (‘Nam’, ‘Nữ’, ‘Khác’)),
LUONG FLOAT,
MAPHONG CHAR(10),
CONSTRAINT FK_MAPHONG_NHANVIEN FOREIGN KEY (MAPHONG)
REFERENCES PHONG(MAPHONG)
)
106
Lệnh Alter Table: Dùng để thay đổi cấu trúc của bảng (thêm hoặc xóa
thuộc tính trong bảng
▫ Thêm thuộc tính:
ALTER TABLE <tên bảng>
ADD <thuộc tính> <kiểu dữ liệu>
Ví dụ:
Thêm thuộc tính (cột) NGHENGHIEP có kiểu dữ liệu chuỗi, tối đa chứa 12
ký tự vào bảng NHANVIEN:
ALTER TABLE NHANVIEN
ADD NGHENGHIEP VARCHAR(12)
107
107
108
108
36
15/09/2022
109
110
Thêm nhiều dòng vào một bảng, các bộ này là kết quả từ một câu truy vấn:
INSERT INTO <BẢNG> {<thuộc tính 1>, <thuộc tính 2>,…}
SELECT …
FROM …
WHERE …
111
37
15/09/2022
112
113
114
114
38
15/09/2022
<tên bảng>
Tên bảng liên quan đến thuộc tính trong câu truy vấn
115
115
Vd: Cho biết mã nhân viên, họ, tên nhân viên và lương của họ
KẾT QUẢ
116
116
ASTERISK (*)
Vd: Cho biết thông tin của tất cả các nhân viên trong công ty
SELECT *
FROM NHANVIEN
117
117
39
15/09/2022
DISTINCT, ALL
- Trong mệnh đề SELECT, sử dụng:
DISTINCT: loại bỏ các bộ trùng trong kết quả
ALL: hiển thị tất cả các bộ
118
119
119
Mệnh đề WHERE
- Điều kiện lọc dữ liệu theo hàng
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
<điều kiện> có thể là:
▪ WHERE <tên cột> <phép so sánh> <giá trị>
• Trong đó: <phép so sánh>: =, <>, >, >=, <, <=
• Nếu nhiều mệnh đề điều kiện nối với nhau, sử dụng phép toán
logic như sau:
WHERE <ĐK1> AND <ĐK2>
WHERE <ĐK1> OR <ĐK2>
120
120
40
15/09/2022
121
122
Vd: Cho biết các nhân viên có lương nằm trong khoảng 7 triệu đến 10 triệu
SELECT *
FROM NHANVIEN
WHERE LUONG NOT BETWEEN 7000000 AND 10000000
123
123
41
15/09/2022
124
- Thuộc tính trùng: Khi tên thuộc tính trong các quan hệ khác nhau được đặt giống
nhau, bắt buộc phải chỉ rõ thuộc tính được lấy từ bảng nào:
<Tên quan hệ>. <Tên thuộc tính>
MAPH
125
- Left Join: chỉ định việc so sánh giá trị các cột trong bảng được ưu tiên cho
mối quan hệ bên nhánh trái
- Right Join: chỉ định việc so sánh giá trị các cột trong bảng được ưu tiên cho
mối quan hệ bên nhánh phải
126
42
15/09/2022
- Left Join: Bảng A LEFT [OUTER] JOIN với bảng B thì kết quả gồm các bản ghi có
trong bảng A, với các bản ghi không có mặt trong bảng B thì các cột từ B được điền
NULL. Các bản ghi chỉ có trong B mà không có trong A sẽ không được trả về.
Ví dụ:
SELECT MANV, HOTEN, NHANVIEN.MAPH, TENPH, TRPH
FROM NHANVIEN INNER JOIN PHONGBAN
ON NHANVIEN. MAPH= PHONGBAN.MAPH
127
128
- Sắp xếp kết quả trả về với ORDER BY: dùng để sắp xếp thứ tự (mặc định là sắp
xếp tăng dần)
SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện>
ORDER BY <danh sách các cột> <ASC/DESC>
Vd: Cho biết mã nhân viên, họ tên, sắp xếp theo mã nhân viên giảm dần
SELECT MANV, HONV, TENNV
FROM NHANVIEN
ORDER BY MANV DESC
129
43
15/09/2022
130
Chương
Vd: Tìm số lượng2: Môviên
nhân hình dữmỗi
trong liệuphòng
quan hệ
MA_PHG F COUNT (MANV) (NHANVIEN)
KT NV01 KT 3
TCHC NV02 TCHC 2
TCHC NV03
KT NV04
KT NV05
131
Chương 3: SQL
Chia các dòng thành các
Q S
nhóm dựa trên tập thuộc tính
a 1
a 02 chia nhóm
b 9
Q
b 5 Count(S) Tương tự cho các
c 1 a 2 hàm SUM, MIN,
nhóm
c 08 b 2
MAX, AVG
c 6 c 5
c 4 d 3
c 1
d 01
d 16 Câu SQL:
d 85 Select Q, count(S)
0
Các thuộc tính GROUP BY: Q From NV
Group by Q
132
44
15/09/2022
133
Vd: Cho biết mã phòng có số lượng nhân viên từ 2 người trở lên
SELECT MAPH, COUNT(MANV)
FROM NHANVIEN
GROUP BY MAPH
HAVING COUNT(MANV)>=2
134
- Hàm tính tổng hợp trong SQL: COUNT, SUM, MAX, MIN, AVG
Vd: Tìm lương cao nhất, thấp nhất, trung bình của các nhân viên
SELECT MAX(LUONG), MIN(LUONG), AVG(LUONG)
FROM NHANVIEN
135
45
15/09/2022
- Truy vấn lồng: sử dụng một khối lệnh SELECT – FROM – WHERE trong mệnh
đề WHERE của một câu truy vấn khác. So sánh tập hợp: các toán tử thường được
sử dụng trong so sánh là In, Not In, All, Any, Some, Exists, Not Exists
136
Vd:
Cho biết mã nhân viên, họ tên nhân viên thuộc phòng Tài chính
SELECT MANV, HONV+ ‘ ‘+TENNV AS HOTENNV
FROM NHANVIEN
WHERE MAPH IN (SELECT MAPH
FROM PHONG
WHERE TENPH=‘Tài chính’)
Vd: Cho biết họ tên nhân viên không thuộc Phòng Kế Toán
SELECT HONV, TENNV
FROM NHANVIEN
WHERE MANV NOT IN (SELECT MAPH FROM PHONG
WHERE TENPH=‘Kế Toán’)
137
Bài tập: Cho lược đồ CSDL “quản lý đề án công ty” như sau
138
46
15/09/2022
NHANVIEN
MANV HOTEN NTNS PHAI MA_NQL MaPH LUONG
001 Vuong Ngoc Quyen 22/10/195 Nu QL 3.000.00
7 0
002 Nguyen Thanh Tung 09/01/195 Nam 001 NC 2.500.00
5 0
003 Le Thi Nhan 18/12/196 Nu 001 DH 2.500.00
0 0
004 Dinh Ba Tien 09/01/196 Nam 002 NC 2.200.00
8 0
005 Bui Thuy Vu 19/07/197 Nam 003 DH 2.200.00
2 0
006 Nguyen Manh Hung 15/09/197 Nam 002 NC 2.000.00
3 0
007 Tran Thanh Tam 31/07/197 Nu 002 NC 2.200.00
5 0
008 Tran Hong Minh 04/07/197 Nu 004 NC 1.800.00
6 0
PHANCONG MANV MADA THOIGIA
N
DEAN 001 TH001 30,0
139
Câu hỏi 1: Sử dụng =,>,>=,… Danh sách các nhân viên sinh trong khoảng từ năm
1978 đến 1983?
Câu hỏi 2: Sử dụng BETWEEN, ORDER BY. Danh sách các nhân viên sinh trong
khoảng từ năm 1978 đến 1983? Sắp xếp theo mức lương giảm dần.
Câu hỏi 3: Sử dụng IS NULL. Cho biết những nhân viên không có người quản lý trực
tiếp? (không chịu sự quản lý trực tiếp của người nào)
140
Câu hỏi 4: Sử dụng Is Not Null. Cho biết những nhân viên có người quản lý trực
tiếp?Thông tin hiển thị gồm: mã nhân viên, họ tên, mã người quản lý.
Câu hỏi 5: Sử dụng IN (so sánh với một giá trị cụ thể). Cho biết họ tên nhân viên
thuộc phòng ‘NC’?
Câu hỏi 6: Sử dụng IN (so sánh với một tập hợp giá trị chọn từ câu SELECT
khác). Cho biết họ tên nhân viên thuộc phòng ‘NC’ hoặc phòng ‘DH’?
141
47
15/09/2022
Câu hỏi 7: Cho biết mã số, họ tên, ngày tháng năm sinh của những nhân viên đã
tham gia đề án?
Câu hỏi 8: Sử dụng NOT IN. Cho biết mã số, họ tên, ngày tháng năm sinh của
những nhân viên không tham gia đề án nào?
Gợi ý cho mệnh đề NOT IN: thực hiện câu truy vấn “tìm nhân viên có tham gia đề
án (dựa vào bảng PhanCong)”, sau đó lấy phần bù.
142
Câu hỏi 9: so sánh chuỗi = chuỗi. Liệt kê mã nhân viên, ngày tháng năm sinh, mức
lương của nhân viên có tên “Nguyễn Tường Linh”?
Câu hỏi 10: Sử dụng LIKE (%: thay thế 1 chuỗi ký tự). Tìm những nhân viên có họ
Nguyễn.
Câu hỏi 12: Tìm những nhân viên có tên lót là “Văn”.
143
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 13: Tính số nhân viên của công ty.
– Câu hỏi 14: 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 15: 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 16: Cho biết nhân viên có mức lương lớn nhất.
– Câu hỏi 17: 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
–Câu hỏi 18: Cho biết số lượng nhân viên theo từng phái?
–Câu hỏi 19: Cho biết số lượng nhân viên theo từng phòng?
–Câu hỏi 20: Với mỗi phòng, cho biết số lượng nhân viên theo từng phái?
–Câu hỏi 21: Đếm số đề án của từng nhân viên tham gia?
–Câu hỏi 22: Cho biết những nhân viên tham gia từ 2 đề án trở lên?
–Câu . biết mã phòng ban có trên 4 nhân viên?
hỏi 23: Cho
144
48
15/09/2022
5 RÀNG BUỘC
TOÀN VẸN
145
145
146
146
Quan hệ 1 + + -
………
Quan hệ n - - +(A)
147
49
15/09/2022
148
Ràng buộc toàn vẹn liên thuộc tính trên cùng một quan hệ.
Rbtv liên thuộc tính trên một quan hệ là sự ràng buộc giữa các thuộc tính trong cùng
một quan hệ
Vd:
DUAN (MADA, TENDA, DDIEM_DA, PHONG, NGBD_DK, NGKT_DK)
Rb: Với mọi dự á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)
- Bối cảnh: DUAN
- Biểu diễn: d DUAN ( d.NGBD_DK <= d.NGKT_DK)
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa
DUAN + - +(NGBD_DK, NGKT_DK)
149
150
50
15/09/2022
Vd 2: DUAN(MADA,TENDA,ĐĐIEM_DA,MAPHONG)
Chương 4: RÀNG BUỘC TOÀN VẸN
Rb: Tên dự án là duy nhất
Bối cảnh: DUAN
Biểu diễn: d1, d2 DUAN (d1d2 d1.TENDAd2.TENDA)
Bảng tầm ảnh hưởng:
Thêm Xóa Sửa
DUAN + - +(TENDA)
151
NHANVIEN - + +(MANV)
152
153
51
15/09/2022
154
155
6
PHỤ THUỘC
HÀM VÀ
CHUẨN HÓA
CSDL
156
156
52
15/09/2022
157
NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005
NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003
NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002
NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005
Dư thừa
Thông tin về mã phòng, tên phòng và trưởng phòng lặp lại nhiều lần thông tin
158
Các dị thường khi thực hiện các thao tác cập nhật
Thêm: Khi thêm 1 nhân viên thì phải thêm thông tin về phòng hoặc là cho các
giá trị liên quan đến phòng là null.
Không thể thêm một phòng mới nếu chưa có nhân viên thuộc về phòng đó
MANV HOTENNV NGAYSINH DIACHI MAPHONG TENPHONG TRPHONG
NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005
NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003
NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002
NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005
NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 Null Null Null
159
53
15/09/2022
Sửa: Khi sửa thông tin về phòng thì phải sửa tất cả các dòng có liên quan nếu
không sẽ xảy ra tình trạng không nhất quán
Xóa: Có thể bị mất thông tin. Xem trường hợp xóa NV0003.
NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005
NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003
NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002
NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005
NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 Null Null Null
160
NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 2 Nhân sự NV0005
Lược đồ 2
MANV HOTENNV NGAYSINH DIACHI
NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức MAPHONG TENPHONG TRPHONG
161
54
15/09/2022
Nhận xét:
- PTH thể hiện ràng buộc từ thế giới thực
- Khi K là khóa của R thì ta có PTH: K → U
- PTH dùng để đánh giá một kết quả thiết kế CSDL
163
NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 2 Nhân sự NV0005
164
165
55
15/09/2022
166
- Bao đóng của một tập thuộc tính X nhờ vào tập phụ thuộc hàm cho sẵn:
X+ F = {Y/ X → Y}
theo định nghĩa: X X+ F
- Khái niệm bao đóng của X dùng để xét xem một phụ thuộc hàm f có được suy dẫn
từ F hay không.
167
168
56
15/09/2022
169
170
Nhận xét
▪Xác định tập
5.5 BAO ĐÓNG CỦA TẬP PHỤ THUỘC HÀM (tt)
F + dựa vào bộ luật dẫn có thể dẫn đến tâp F + rất lớn.
▪Thực tế người ta thường không đi tính F + mà chỉ sử dụng bộ luật dẫn để trả lời
cho các câu hỏi thuộc dạng:
F |= X→ Y
Vd: Cho U = ABEGIH;
F={AB → E, AG → I, E → G}. CM: F |= AB→ G
Giải : Ta có: AB → E
E→G
Theo luật bắc cầu ta có: AB→ G
Vậy F |= AB→ G
171
57
15/09/2022
-Tập nguồn : bao gồm các thuộc tính chỉ xuất hiện ở vế trái của tập phụ thuộc hàm F
- Tập đích: bao gồm các thuộc tính chỉ xuất hiện ở vế phải của tập phụ thuộc hàm F
- Tập trung gian : bao gồm các thuộc tính xuất hiện ở cả vế phải và vế trái của tập phụ
thuộc hàm F
- Tập thuộc tính không xuất hiện trong tập phụ thuộc hàm F
Bước 2:
- Tập các thuộc tính khoá K ban đầu bao gồm: các thuộc tính thuộc tập nguồn và tập thuộc
tính không xuất hiện trong tập phụ thuộc hàm.
- Tính bao đóng của K trên F (K+F )
- Nếu K+F = U (tập thuộc tính) thì kết luận K là khoá duy nhất của quan hệ. Kết thúc thuật
toán.
- Ngược lại, chuyển sang bước 3
172
173
174
58
15/09/2022
175
175
176
177
59
15/09/2022
• Thuộc tính phụ thuộc đầy đủ vào một tập thuộc tính: A là một thuộc tính phụ
thuộc đầy đủ vào X nếu X →A là một phụ thuộc hàm đầy đủ
Vd:
PHANCONG (MANV, MADA, HOTENNV, TENDA, SOGIO, DIADIEM)
F={MANV, MADA → HOTENNV, TENDA, SOGIO, DIADIEM
MANV → HOTENNV
MADA → TENDA}
Trong quan hệ PHANCONG khóa là MANV, MADA
Thuộc tính khóa: MANV, MADA
Thuộc tính không khóa: HOTENNV, TENDA, SOGIO, DIADIEM
Thuộc tính không khóa HOTENNV không phụ thuộc đầy đủ vào khóa MANV,
MADA vì có MANV → HOTENNV
Xét các thuộc tính không khóa còn lại?
178
• Một lược đồ đạt DC2 nếu như lược đồ đó đã đạt DC1 và các thuộc tính không
khóa phụ thuộc đầy đủ vào thuộc tính khóa
Vd1: PHANCONG (MANV, MADA, HOTENNV, TENDA, SOGIO, DIADIEM)
F={MANV, MADA → HOTENNV, TENDA, SOGIO, DIADIEM
MANV → HOTENNV
MADA → TENDA}
Quan hệ PHANCONG không đạt DC2 thì có thuộc tính không khóa HOTENNV
không phụ thuộc đầy đủ vào khóa MANV, MADA
Vd2: PHANCONG (MANV, MADA, SOGIO, DIADIEM)
F={MANV, MADA → HOTENNV, TENDA, SOGIO, DIADIEM}
Quan hệ PHANCONG đạt DC2 vì các thuộc tính không khóa phụ thuộc đầy đủ vào
khóa
179
180
60
15/09/2022
181
182
183
61
15/09/2022
Nhận xét
- Mọi lược đồ đạt DC3 đều đạt DC2
- PTH bắc cầu là nguyên nhân dẫn đến trùng lắp dữ liệu và làm cho lược đồ không đạt DC3
- DC3 không đạt được là do sự xuất hiện của các thuộc tính không khóa trong lược đồ suy ra
được lẫn nhau
- DC3 là DC tối thiểu trong thiết kế CSDL
184
185
186
62
15/09/2022
187
188
188
63