Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
50 views17 pages

On Tap CSDL 2

The document discusses database concepts including database models, entity relationship modeling, and relational modeling. It covers converting an entity relationship diagram to relational schema by handling one-to-one, one-to-many, and many-to-many relationships. Examples of converting entity relationship diagrams to relational schemas are provided. SQL query language basics including query structure and order of execution are also introduced.

Uploaded by

Trường Vũ
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views17 pages

On Tap CSDL 2

The document discusses database concepts including database models, entity relationship modeling, and relational modeling. It covers converting an entity relationship diagram to relational schema by handling one-to-one, one-to-many, and many-to-many relationships. Examples of converting entity relationship diagrams to relational schemas are provided. SQL query language basics including query structure and order of execution are also introduced.

Uploaded by

Trường Vũ
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

ÔN TẬP MÔN CƠ SỞ DỮ LIỆU

CHƢƠNG 1: TỔNG QUAN VỀ CSDL


– Cơ sở dữ liệu là gì?
– Lợi ích của việc sử dụng cơ sở dữ liệu
– Kiến trúc 3 mức: View level, Logical level, Physical level
– Tính chất của cơ sở dữ liệu quan hệ, các hệ thống sử dụng cơ sở dữ liệu quan hệ.
– Cơ sở dữ liệu không quan hệ.
CHƢƠNG 2: MÔ HÌNH THỰC THỂ KẾT HỢP VÀ MÔ HÌNH QUAN HỆ
1. Mô hình thực thể kết hợp:
– Thực thể, Kiểu thực thể (loại thực thể)
– Thuộc tính
– Mối kết hợp: 1-1, 1-N, N-N
– Chỉ số của mối kết hợp (min, max)

A B D
G
E F
C

A B D
G
(1,n) (1,1)
E F
C

MALOP
TENLOP

LOP
(30,60) SISO

NGAYSINH LANTHI MAMH


(1,1) TENMH
MASV (1,N) (1,1) (1,1) (0,N)
SINHVIEN KETQUA MONHOC

HOTEN DIEM SOTC

2. Mô hình quan hệ:


– Quan hệ
– Thuộc tính
– Bộ
– Lược đồ quan hệ

Page 1
Ví dụ quan hệ MONHOC
MAMH TENMH SOTC
MH01 CSDL 3
MH02 TCC 2
MH03 LTW 3
MH04 ABC
Lược đồ quan hệ tương ứng: MONHOC(MAMH,TENMH,SOTC)
– Khóa chính: gồm một hoặc nhiều thuộc tính, được chọn từ tập khóa, có duy nhất 1,
giá trị ko được rỗng (Not null).
Ví dụ: Lược đồ quan hệ NHAVIEN(MANV, HOTEN, EMAIL, DIENTHOAI, CMND)
có 4 khóa: MANV, EMAIL, DIENTHOAI, CMND. Trong các khóa này, MANV được chọn
làm khóa chính.
– Khóa ngoại: gồm một hoặc nhiều thuộc tính, tham chiếu đến khóa chính, trên mỗi
quan hệ có thể không có, có 1 hoặc nhiều, có thể rỗng (null)
Ví dụ: Xét 2 quan hệ LOP và SINHVIEN. Trên quan hệ SINHVIEN có khóa ngoại là
MALOP tham chiếu đến khóa chính là MALOP trên quan hệ LOP.
Lưu ý: Thuộc tính khóa chính và khóa ngoại có thể khác nhau, tuy nhiên kiểu dữ liệu và
chiều dài phải giống nhau.
LOP
MALOP TENLOP SISO
L01 11DHTH 30
L02 12DHTH 50
SINHVIEN
MASV HOTEN MALOP
SV01 MINH L01
SV02 CHÂU L01
SV03 BÌNH L02
– Siêu khóa là tập thuộc tính chứa hoặc bằng khóa.
3. Chuyển mô hình thực thể kết hợp sang mô hình quan hệ:
– Chuyển mối kết hợp 1-N:

A B D
G
E F

hoặc

Page 2
E
F
A
D
B
G
C

Chuyển sang lược đồ quan hệ:


E(A,B,C)
F(D,G,A)
Ví dụ: chuyển sơ đồ sau sang các lược đồ quan hệ:

MALOP MASV NGAYSINH

LOP SINHVIEN

TENLOP SISO HOTEN

LOP(MALOP,TENLOP,SISO)
SINHVIEN(MASV,HOTEN,NGAYSINH,MALOP)
– Chuyển mối kết hợp 1-1

A B D
G
E F
C

TH1: E(A,B,C) TH2: F(D,G)


F(D,G,A) E(A,B,C,D)
Lưu ý: tùy vào gốc độ quản lý sẽ chọn trường hợp 1 hay trường hợp 2.
Ví dụ: Chuyển sơ đồ sau sang lược đồ quan hệ
NGAYSINH
MATHE
NGAYC
MASV
SINHVIEN THESV

HOTEN

Theo trường hợp 1:


SINHVIEN(MASV,HOTEN,NGAYSINH)
THESV(MATHE,NGAYC,MASV)
Theo trường hợp 2:
THESV(MATHE,NGAYC)
SINHVIEN(MASV,HOTEN,NGAYSINH,MATHE)
Ở đây, ta chọn trường hợp 1, vì theo thứ tự nhập dữ liệu thì thông tin sinh viên sẽ nhập
trước, thông tin thẻ sinh viên sẽ nhập sau.
(Lưu ý: thứ tự nhập liệu: quan hệ chứa khóa chính nhập trước, quan hệ chứa khóa ngoại
nhập sau).

Page 3
– Chuyển mối kết hợp N-N

A B D
G
E T F

C P

Ví dụ 1: Chuyển mô hình thực thể kết hợp sau sang các lược đồ quan hệ
MAHD DONGIA MAHG
TENHG

HOADON CHITHIETHD HANGHOA


S
NGAYLAP SOLUONG DVT

HOADON(MAHD, NGAYLAP)
HANGHOA(MAHG, TENHG, DVT)
CHITIETHD(MAHD, MAHG, SOLUONG, DONGIA)

Ví dụ 2: Mối kết hợp nhiều nhiều biểu diễn dạng kiểu thực thể yếu:
NGAYSINH LANTHI MAMH
TENMH
MASV
SINHVIEN KETQUA MONHOC

HOTEN DIEM SOTC

SINHVIEN(MASV,HOTEN,NGAYSINH)
MONHOC(MAMH, TENMH, SOTC)
KETQUA(MASV,MAMH, LANTHI, DIEM)

Bài tập: Chuyển môn hình thực thể kết hợp sau sang các lược đồ quan hệ:
MAKH TENKH TENNSX
MANSX
DIACHI NHASX
KHACH DIACHI

MAHD DONGIA MAHG MALOAI


TENHG

HOADON CHITHIETHD HANGHOA LOAIHANG


S
NGAYLAP SOLUONG DVT TENLOAI
TENNCC NGAYNHAP

NHACC PHIEUNHAP CHITHIETPN DONGIA

MANCC DIACHI MAPN SOLUONG

Page 4
CHƢƠNG 3: ĐẠI SỐ QUAN HỆ
- Dựa vào lược đồ quan hệ cho trước để thực hiện:
+ Phân tích câu truy vấn (yêu cầu, điều kiện, các quan hệ)
+ Xác định các phép toán cần sử dụng (giải thích được vì sao sử dụng các phép toán)
+ Xác định những quan hệ liên quan (lưu ý: ko được thừa)
+ Viết biểu thức truy vấn bằng đại số quan hệ.
Ví dụ: Cho cơ sở dữ liệu gồm các lược đồ quan hệ sau:
LOP (MaLop, TenLop)
SINHVIEN(MaSV, HoTen, NgaySinh, Phai, MaLop)
MONHOC(MaMH, TenMH, SoTC)
KETQUA(MaSV, MaMH, Diem)
a/ Cho biết mã và họ tên những sinh viên thuộc lớp có tên là 07DHTH
– Giải thích sử dụng phép toán:
Câu truy vấn sử dụng các phép toán: Phép kết tự nhiên (vì có liên quan đến 2 quan hệ là
SINHVIEN và LOP), phép chọn (vì có điều kiện chọn tên lớp = 07DHTH), phép chiếu (vì
yêu cầu cho biết mã và họ tên sinh viên)
– Viết biểu thức truy vấn:

MASV,HOTEN(TENLOP='07dhth'(LOP*SINHVIEN))

hoặc cách 2:

MASV,HOTEN(TENLOP='07dhth'(LOP) *SINHVIEN)

a’/ Cho biết mã và họ tên những sinh viên thuộc lớp có mã là L01

MASV,HOTEN(MALOP='L01'(SINHVIEN))
b/ Mã và tên những môn học nào có số tín chỉ <2
c/ Liệt kê danh sách những sinh viên (mã sinh viên, họ tên) học môn có mã là MH001
d/ Liệt kê danh sách những sinh viên (mã sinh viên, họ tên) học môn có tên là Cơ sở dữ liệu
e/ Cho biết danh sách môn học (mã mh, tên mh) mà sinh viên có mã sv001 học
e’/ Cho biết danh sách môn học (mã mh) mà sinh viên có mã sv001 học

Page 5
CHƢƠNG 4: NGÔN NGỮ SQL
4.1 Cấu trúc câu truy vấn SQL
SELECT [* | DISTINCT] <danh_sách_cột>//Lưu ý: chỉ những cột yêu cầu
FROM <danh_sách_bảng liên quan> //Lưu ý: ko được thừa bảng
[WHERE <biểu_thức_điều_kiện>]
[GROUP BY <danh_sách_tên_nhóm>]
[HAVING <biểu_thức_điều_kiện_nhóm>]
[ORDER BY<tên_cột 1> [ASC | DESC], <tên_cột 2> [ASC | DESC],...]
4.2. Thứ tự thực thi một câu truy vấn
FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY
Ví dụ: Cho 2 quan hệ như sau:
NHANVIEN THAMGIA
MANV HOTEN PHAI MANV MADA SOGIO
NV001 Trần Văn Tuấn Nam NV01 DA1 20
NV002 Đỗ Thị Bình Nữ NV01 DA2 30
NV003 Nguyễn Thị Lan Nữ NV02 DA1 15
NV004 Trần Minh Nam NV02 DA3 25
NV03 DA3 10
NV03 DA2 15

Xét câu truy vấn: Cho biết mã, họ tên, phái của những nhân viên NỮ tham gia >= 2 đề án.
SELECT NHANVIEN.MANV, HOTEN, PHAI
FROM NHANVIEN, THAMGIA
WHERE NHANVIEN.MANV=THAMGIA.MANV AND PHAI=N'Nữ'
GROUP BY NHANVIEN.MANV, HOTEN, PHAI
HAVING COUNT(MADA)>=2

Thứ tự thực thi của câu truy vấn trên đƣợc thể hiện nhƣ sau:
1. FROM: Xác định các quan hệ liên quan là NHANVIEN và THAMGIA
NHANVIEN THAMGIA
MANV HOTEN PHAI MANV MADA SOGIO
NV001 Trần Văn Tuấn Nam NV01 DA1 20
NV002 Đỗ Thị Bình Nữ NV01 DA2 30
NV003 Nguyễn Thị Lan Nữ NV02 DA1 15
NV004 Trần Minh Nam NV02 DA3 25
NV03 DA3 10

2. WHERE: Thực hiện điều kiện


NHANVIEN.MANV=THAMGIA.MANV

MANV HOTEN PHAI MADA SOGIO


NV001 Trần Văn Tuấn Nam DA1 20
NV001 Trần Văn Tuấn Nam DA2 30
NV002 Đỗ Thị Bình Nữ DA1 15
NV002 Đỗ Thị Bình Nữ DA3 25
NV003 Nguyễn Thị Lan Nữ DA3 10

Page 6
PHAI=N'Nữ'

MANV HOTEN PHAI MADA SOGIO


NV002 Đỗ Thị Bình Nữ DA1 15
NV002 Đỗ Thị Bình Nữ DA3 25
NV003 Nguyễn Thị Lan Nữ DA3 10

3. GROUP BY: Thực hiện gom nhóm


GROUP BY MANV, HOTEN, TUOI

MANV HOTEN PHAI MADA SOGIO


DA1 15
NV002 Đỗ Thị Bình Nữ
DA3 25
NV003 Nguyễn Thị Lan Nữ DA3 10

4. HAVING: Lấy điều kiện trên nhóm


COUNT(MADA)>=2

MANV HOTEN PHAI MADA SOGIO


DA1 15
NV002 Đỗ Thị Bình Nữ
DA3 25

5. SELECT: Lấy yêu cầu


SELECT MANV, HOTEN, TUOI

MANV HOTEN TUOI PHAI


NV002 Đỗ Thị Bình 32 Nữ

4.3 Phân tích yêu cầu để viết câu truy vấn


+ Yêu cầu của câu truy vấn là gì? => đặt trong SELECT
+ Những bảng nào cần thiết (tối thiểu) sử dụng trong câu truy vấn => FROM
+ Điều kiện câu truy vấn là gì? => WHERE
+ Nhận biết câu truy vấn có gom nhóm hay không? => GROUP BY
+ Có điều kiện nhóm hay không? => HAVING
+ Có dùng truy vấn con hay không? (có...nhiều nhất/ít nhất, không/chưa đăng ký...)
Ví dụ: Cho lƣợc đồ CSDL nhƣ sau:
LOP (MaLop, TenLop)
SINHVIEN(MaSV, HoTen, NgaySinh, Phai, MaLop)
MONHOC(MaMH, TenMH, SoTC)
KETQUA(MaSV, MaMH, Diem)
Hãy phân tích và viết các câu truy vấn sau bằng SQL:
1/ Sinh viên Trần Văn Nam học những môn nào? thông tin liệt kê gồm: mã môn học,
tên môn học.
SELECT MONHOC.MAMH,TENMH
FROM SINHVIEN,MONHOC,KETQUA
Page 7
WHERE SINHVIEN.MASV=KETQUA.MASV
AND MONHOC.MAMH=KETQUA.MAMH
AND HOTEN=N'Trần Văn Nam'

2/ Cho biết mã môn, tên môn và số lượng sinh viên học tương ứng
SELECT MAMH,TENMH,COUNT(MASV)
FROM MONHOC,KETQUA
WHERE MONHOC.MAMH=KETQUA.MAMH
GROUP BY MAMH,TENMH

3/ Mã những môn học nào có số sinh viên học > 50


SELECT MAMH
FROM KETQUA
GROUP BY MAMH
HAVING COUNT(MASV)>50

4/ Mã và tên những lớp nào có số lượng sinh viên nhiều nhất


SELECT MALOP,TENLOP
FROM LOP,SINHVIEN
WHERE LOP.MALOP=SINHVIEN.MALOP
GROUP BY MALOP,TENLOP
HAVING COUNT(MASV)>=ALL(SELECT COUNT(MASV)
FROM SINHVIEN
GROUP BY MALOP)

5/ Mã và tên những môn học nào không có sinh viên học.


SELECT MAMH,TENMH
FROM MONHOC
WHERE MAMH NOT IN(SELECT MAMH
FROM KETQUA)
hoặc
SELECT MAMH,TENMH
FROM MONHOC
WHERE NOT EXISTS(SELECT *
FROM KETQUA
WHERE MONHOC.MAMH=KETQUA.MAMH)

6/ Liệt kê những sinh viên (Mã sv, họ tên) có điểm môn cơ sở dữ liệu cao nhất.
SELECT SINHVIEN.MASV,HOTEN
FROM SINHVIEN,KETQUA,MONHOC
WHERE SINHVIEN.MASV=KETQUA.MASV AND KETQUA.MAMH=MONHOC.MAMH
AND TENMH=N'Cơ sở dữ liệu'
AND DIEM>=ALL(SELECT DIEM
FROM KETQUA,MONHOC
WHERE KETQUA.MAMH=MONHOC.MAMH
AND TENMH=N'Cơ sở dữ liệu')

4.4 Từ câu truy vấn đã có, tìm câu hỏi tƣơng ứng
Dựa vào ý nghĩa của từng mệnh đề trong cấu trúc câu truy vấn để viết ngược từ câu truy vấn
sang yêu cầu câu hỏi.
Ví dụ:
SELECT SINHVIEN.MASV,HOTEN
FROM SINHVIEN,KETQUA,MONHOC

Page 8
WHERE SINHVIEN.MASV=KETQUA.MASV AND KETQUA.MAMH=MONHOC.MAMH
AND TENMH=N'Cơ sở dữ liệu' AND DIEM>=8
Chọn từ các mệnh đề:
SELECT SINHVIEN.MASV,HOTEN =>Cho biết mã và họ tên những sinh viên
WHERE ...TENMH=N'Cơ sở dữ liệu' AND DIEM>=8 => học môn cơ sở dữ liệu,
điểm từ 8 từ 8 trở lên.

=> Cho biết mã và họ tên những sinh viên học môn cơ sở dữ liệu có điểm từ 8 trở lên.
4.5. Xác định khóa chính, khóa ngoại. Viết lệnh SQL tạo khóa chính, khóa ngoại
- Xác định khóa chính, khóa ngoại (xem bài tập chương 2 - giáo trình CSDL khoa CNTT)
- Viết lệnh tạo khóa chính, khóa ngoại: dùng cấu trúc
ALTER TABLE <tên bảng>
ADD CONSTRAINT PK_<tên ràng buộc> PRIMARY KEY (tên cột khóa chính)
ADD CONSTRAINT FK_<tên ràng buộc> FOREIGN KEY(tên cột khóa ngoại)
REFERENCES <tên bảng chứa khóa chính>(tên cột khóa chính)
4.6. Xác định kết quả của câu truy vấn, giải thích từng bƣớc cách thực hiện một câu
truy vấn.
SELECT MONHOC.MAMH,TENMH
FROM MONHOC,KETQUA
WHERE MONHOC.MAMH=KETQUA.MAMH
GROUP BY MONHOC.MAMH,TENMH
HAVING COUNT(MASV)>=ALL(SELECT COUNT(MASV)
FROM KETQUA
GROUP BY MAMH)

- Kết quả: tìm ra danh sách môn học (MAMH, TENMH) với điều kiện là có nhiều sinh viên
học nhất.
- Giải thích: Truy vấn con thực hiện trước cho kết quả là số sinh viên của từng môn học. Từ
khóa >= ALL sẽ tìm được số sinh viên cao nhất. Kết quả này sẽ làm điều kiện cho truy vấn
lớn để tìm được những môn học có số sinh viên học cao nhất.

CHƢƠNG 5: RÀNG BUỘC TOÀN VẸN


*Định nghĩa: Ràng buộc toàn vẹn là các quy tắc được thiết lập trên quan hệ nhằm kiểm tra
dữ liệu mỗi khi thay đổi (thêm/xóa/sửa) phải hợp lý.
Ví dụ: Xét quan hệ MONHOC như sau:

MAMH TENMH SOTC


M001 Cơ sở dữ liệu 3
M002 Thiết kế web 2
M003 Cấu trúc dữ liệu 4
M004 CTRR 3

Trên quan hệ này tồn tại các ràng buộc toàn vẹn:

Page 9
- Giá trị mã môn học phải duy nhất
- Số tín chỉ >=1
* Phân loại ràng buộc toàn vẹn:
- Ràng buộc toàn vẹn trên 1 quan hệ:
+ Liên bộ
+ Miền giá trị
+ Liên thuộc tính
- Ràng buộc toàn vẹn trên nhiều quan hệ:
+ Tham chiếu
+ Liên bộ - liên quan hệ
+ Liên thuộc tính - liên quan hệ
- Liệt kê các ràng buộc toàn vẹn có trên quan hệ.
* Biểu diễn các ràng buộc toàn vẹn:
+ Phát biểu
+ Bối cảnh
+ Nội dung
+ Bảng tầm ảnh hưởng.

Ví dụ 1: Biểu diễn ràng buộc toàn vẹn miền giá trị:


+ Phát biểu: "Số tín chỉ của môn học >=1"
+ Bối cảnh: MONHOC
+ Nội dung:  t  MONHOC: t.SoTC >=1
+ Bảng tầm ảnh hưởng:

Ví dụ 2: Biểu diễn ràng buộc toàn vẹn miền giá trị:


+ Phát biểu: Tuổi của nhân viên phải từ 18 trở lên (>=18)
+ Bối cảnh: NHANVIEN
+ Nội dung:  
+ Bảng tầm ảnh hưởng:

Thêm Xóa Sửa


NHANVIEN + - +(TUOI)

Ví dụ 3: Biểu diễn ràng buộc tham chiếu giữa PHONGBAN và NHANVIEN:


PHONGBAN(MaPH, TenPH, DiaDiem)
NHANVIEN(MaNV, HoTen, Tuoi, Phai, Luong, MaPH)

Page 10
Lưu ý dạng phát biểu: Mỗi đối tượng thuộc quan hệ chứa khóa ngoại phải có/thuộc
trong quan hệ chứa khóa chính
+ Phát biểu: Mỗi nhân viên phải thuộc về một phòng ban
+ Bối cảnh: NHANVIEN, PHONGBAN
+ Nội dung:   
+ Bảng tầm ảnh hưởng:

Thêm Xóa Sửa


NHANVIEN + - +(MAPH)
PHONGBAN - + +(MAPH)

Ví dụ 4: Biểu diễn ràng buộc tham chiếu giữa PHANCONG và NHANVIEN

NHANVIEN(MaNV, HoTen, Tuoi, Phai, Luong, MaPH)


PHANCONG(MaNV, MaDA, NgayPC)
+ Phát biểu: Mỗi nhân viên được phân công đề án phải thuộc danh sách nhân viên
+ Bối cảnh... ?
+ Nội dung... ?
+ Bảng tầm ảnh hưởng... ?
Ví dụ 5: Biểu diễn ràng buộc tham chiếu giữa DEAN và PHANCONG
DEAN(MaDA, TenDA, NgayBD, NgayKT)
PHANCONG(MaNV, MaDA, NgayPC)
+ Phát biểu: Mỗi đề án khi phân công cho nhân viên phải thuộc danh sách đề án
+ Bối cảnh... ?
+ Nội dung... ?
+ Bảng tầm ảnh hưởng... ?
Bài tập
Cho lƣợc đồ cơ sở dữ liệu:
PHONGBAN(MaPH, TenPH, DiaDiem)
NHANVIEN(MaNV, HoTen, Tuoi, Phai, Luong, MaPH)
DEAN(MaDA, TenDA, NgayBD, NgayKT)
PHANCONG(MaNV, MaDA, NgayPC)
Biểu diễn các ràng buộc toàn vẹn sau:
1/ Các RBTV liên bộ có trên mỗi quan hệ
2/ Các RBTV tham chiếu có trên NHANVIEN, PHANCONG
3/ RBTV miền giá trị có trên NHANVIEN
Page 11
4/ RBTV liên thuộc tính có trên DEAN
5/ RBTV liên thuộc tính – liên quan hệ có trên DEAN, PHANCONG

CHƢƠNG 6: PHỤ THUỘC HÀM


6.1 Phụ thuộc hàm
- Phụ thuộc hàm là gì?
X  Y: Đọc là X xác định Y hoặc Y phụ thuộc hàm vào X
Mỗi giá trị tại X xác định (tìm được) duy nhất một giá trị tại Y
Ví dụ 1:

MASV  TENSV
MASV  TUOI
MASV  PHAI
MASV  MALOP
Có thể viết gộp: MASV  TENSV, TUOI, PHAI, MALOP
Giải thích: Vì biết được mã sinh viên sẽ xác định (tìm được) chính xác tên sv, tuổi, phái và
mã lớp. Ví dụ có mã sv là SV003 sẽ tìm được chính xác tên sinh viên là LAN, tuổi 20, phái
Nữ và thuộc lớp có mã lớp là 03.
6.2 Hệ tiên đề armstrong
Cho lược đồ quan hệ R, tập thuộc tính U và X,Y,Z,W  U
1. Luật phản xạ:   (tập lớn xác định tập con)
2. Luật tăng trưởng:  
3. Luật ắc cầu:   
4. Luật phân r :    (lưu ý: Chỉ được phân rã vế phải)
5. Luật hợp:   
6. Luật tựa bắc cầu:   

Ví dụ 2: Cho R(ABCD), F={AB, C D}. Chứng minh AC  ABCD


Ta có: AB => AC BC (tăng trưởng C) (1)
C D => AC AD (tăng trưởng A) (2)
(1) và (2) => AC  ABCD (hợp)

Ví dụ 3: Cho R(ABCDE), F={BC, AE, BCA, DB}. Chứng minh: DAEC


Ta có: DB, BC => D  C (bắc cầu) (1)
DB (giả thuyết), D  C => D  BC (hợp)
Page 12
D  BC, BC  A(gt) => D  A (bắc cầu) (2)
D  A, A  E (gt) => D  E (bắc cầu) (3)
Từ (1),(2),(3)=> D  AEC (hợp)
6.2 Bao đóng của một tập thuộc tính
Thuật toán tìm ao đóng:
Cho lược đồ quan hệ , tập thuộc tính U, tập phụ thuộc hàm F, X  . Cần tìm ao đóng X+F ?
Phương pháp:
Tính liên tiếp tập các thuộc tính X0, X1, X2, theo các ước:
1. Đặt X0 = X
2. Lần lược x t các phụ thuộc hàm của , nếu YZ có Y Xi thì Xi+1 = Xi  Z, loại YZ ra khỏi
3. Tiếp tục cho đến khi Xi+1=Xi thì thuật toán dừng, kết luận: X+F = Xi

Ví dụ 4: Cho R(ABCDE), F={BC, AE, BCA, DB}


Tìm ao đóng của các tập thuộc tính: BC (BC+F=?)
X0=BC
X1=X0A=ABC (xét phụ thuộc hàm BCA)
X2=X1E=ABCE (xét phụ thuộc hàm AE)
X3=X2 dừng
=> BC+F= ABCE
Tương tự, tìm ao đóng của các tập thuộc tính D, AE?

Định lý
Nếu X+F Y <=> X  Y
Ví dụ 5: Áp dụng định lý để chứng minh phụ thuộc hàm ở ví dụ 2 và ví dụ 3
* Cho R(ABCD), F={AB, C D}. Chứng minh AC  ABCD
AC+F=ACBD = ABCD (vế phải của pth) => theo định lý trên thì AC  ABCD
* Cho R(ABCDE), F={BC, AE, BCA, DB}. Chứng minh: DAEC
D+F=DBCAE  AEC => DAEC
6.3 Chứng minh một tập thuộc tính là khóa
Cho lược đồ quan hệ R, tập thuộc tính U, tập phụ thuộc hàm F, XU. Ta nói X là một khóa
của R nếu thỏa điều kiện sau:
1. XU (X+=U)
2.  Y X thì Y U (Y+ U)
Ví dụ 6: Cho R(ABCDE), F = {AB, CE, DC, EBD}
Chứng minh AD là một khoá của R
+ Chứng minh điều kiện 1: ADU?
Ta có: AD+F=ADCEB=U=> ADU (1)

+ Chứng minh điều kiện 2:


Page 13
Xét A AD, A+F=AB  U =>A U
Xét D AD, D+F= DCE  U =>D U
=> Y AD thì Y U (2)
(1),(2)=> AD là một khóa của R
6.4. Thuật toán tìm tất cả các khóa
Định nghĩa:
* Tập nguồn: (TN): Gồm các thuộc tính chỉ xuất hiện ở vế trái các phụ thuộc hàm hoặc các
thuộc tính thuộc nhưng không xuất hiện trong các phụ thuộc hàm.
* Tập trung gian (TG): Gồm các thuộc tính xuất hiện ở cả 2 vế các phụ thuộc hàm.
Ví dụ 7: Cho R(ABCDEG), F={AB, BCD, DAG}. Xác định tập nguồn và tập trung
gian
TN={C, E}, TG={A, B, D}
Thuật toán:
1. Xác định tập nguồn (TN) và tập trung gian (TG). Nếu {TN}+F=U thì {TN} là một khoá duy
nhất của . ngược lại qua ước 2
2. Liệt kê tất cả các tập con Xi của tập trung gian và tính {XiTN}. Nếu {XiTN}+F=U thì
{XiTN} là một siêu khoá Si
3. So sánh các siêu khoá Si và Sj, nếu Si Sj thì loại Sj ra khỏi tập khoá K. Các tập thuộc tính còn
lại chính là các khoá.

Ví dụ 8: Cho R(ABC), F={ACB, BA}. Tìm tất cả các khoá của R


TN={C}, TG={A, B}

Lưu ý: Nếu TN+F=U thì R có 1 khoá duy nhất là tập nguồn


Ví dụ 9: Cho R(ABCDE), F={A  CE, DB  E, E  B}. Tìm tất cả các khoá của R
TN={A, D}, TG={B, E}
TN+F=ADCEB=U => R có 1 khoá duy nhất là tập nguồn AD
6.5 Các dạng chuẩn
6.5.1. Dạng chuẩn 1: Xem slide bài giảng.
Lưu ý: Lược đồ quan hệ bất kỳ xem như đạt chuẩn 1 nên không cần kiểm tra R có đạt chuẩn
1 hay không.

Page 14
6.5.2. Dạng chuẩn 2:
Định nghĩa: Một lược đồ quan hệ được gọi là đạt chu n nếu mọi thuộc tính không khóa
đều phụ thuộc đầy đủ vào khóa
* Khoá: Dùng thuật toán tìm khoá để tìm ra tất cả các khoá của lược đồ R
* Thuộc tính không khoá: =U-{tập các thuộc tính khoá}
Ví dụ 10: R(ABCDE) có 2 khoá là AB và AE
Thuộc tính không khoá=U-{A,B,E}={C,D}
* Phụ thuộc đầy đủ: Xét XY, Y được gọi là phụ thuộc đầy đủ vào X nếu  Z X thì Z Y
Ví dụ 11: R(ABCDE), F={ABE, D CE, A D}
Xét phụ thuộc hàm ABE. Hỏi E có phụ thuộc đầy đủ vào AB không?
Ta có A AB mà A+F=ADCE  E => A  E => E không phụ thuộc đầy đủ vào AB
* Kiểm tra lƣợc đồ R có đạt chuẩn 2 không?
Ví dụ 12: Cho R(ABCD), F={ABC, BD, BCA}. Kiểm tra có đạt chu n 2 không?
R có 2 khoá: AB và BC (lưu ý: dùng thuật toán để tìm ra tất cả các khoá)
=> thuộc tính ko khóa: U-{A,B,C}=D
Xét BCD, có B BC mà BD (gt) với D là thuộc tính không khoá  D không phụ
thuộc đầy đủ vào khoá BC nên không đạt chu n 2
Lưu ý: xét phụ thuộc hàm BCD phải có cấu trúc: vế trái là khoá và vế phải là thuộc tính
không khoá. Ta được phép ghi BC D mặc dù phụ thuộc hàm này không có trong F vì BC
là khoá thì xác định bất kỳ thuộc tính nào có trong R.
* Nếu tất cả các khoá của R đều có 1 thuộc tính thì R luôn đạt chuẩn 2
Bài tập.
1. Cho R(ABCDE), F={EG  C, E  B, C  DE, EG  A}. Hãy kiểm tra có đạt chu n
2 hay không?
2. Cho R(ABCDEG), F={G  CD, DA  E, D  B, DA  G}. Chứng tỏ không đạt
chu n 2
6.5.3. Dạng chuẩn 3:
Định nghĩa: Một lược đồ quan hệ được gọi là đạt chu n nếu mọi phụ thuộc hàm
XYF thỏa một trong hai điều kiện sau:
+ Hoặc X là siêu khóa
+ Hoặc Y là thuộc tính khóa
Siêu khoá: Một tập thuộc tính X gọi là siêu khoá nếu X chứa một khoá bất kỳ
Siêu khoá  Khoá
Ví dụ 13: Cho R(ABCD), F={AB  C, B  D, BC  A}
Page 15
Kiểm tra có đạt chu n 3 không?
R có 2 khoá: AB và BC (lưu ý: dùng thuật toán để tìm ra tất cả các khoá)
Xét B  D có B không là siêu khoá và D không là thuộc tính khoá  R không đạt chu n 3
6.5.3. Dạng chuẩn BC:
Định nghĩa: Một lược đồ quan hệ được gọi là đạt chu n BC nếu mọi phụ thuộc hàm
XY đều có vế trái là siêu khóa.
Ví dụ 14: Cho (ABCD) có = AB  CD, AC  B}
R có 2 khoá là AB và AC (lưu ý: dùng thuật toán để tìm ra tất cả các khoá)
Xét lần lượt các phụ thuộc hàm trong F:
AB  CD: có AB là siêu khoá => thoả chu n BC
AC  B: có AC là siêu khoá => thoả chu n BC
 đạt chu n BC
6.6. Xác định dạng chuẩn cao nhất của lƣợc đồ
Có 2 cách:
1. Xác định từ chu n 2 -> chu n BC
. Xác định từ chu n BC -> chu n 2
Lưu ý: Lược đồ quan hệ mặc định đạt chuẩn 1 nên ko cần ktra chuẩn 1.
Nếu chuẩn cao nhất của R là:
– Chu n 1 => cần chứng minh ko đạt chu n 2.
– Chu n 2 => cần chứng minh đạt chu n và không đạt chu n 3
– Chu n 3 => cần chứng minh đạt chu n và không đạt chu n BC
– Chu n BC => cần chứng minh đạt chu n BC
Ví dụ 15: Cho R(ABCDE), F={DB  A, E  CB, D  BA, C  E}. Hãy xác định dạng
chu n cao nhất của R?
R có 2 khoá: DC và DE, thuộc tính không khoá là A, B
Kiểm tra chuẩn 2:
Xét DC  A, ta có D DC mà D  BA => D  A => thuộc tính không khoá A phụ thuộc
không đầy đủ vào khoá DC => không đạt chu n 2
Vì không đạt chu n 2 nên dạng chu n cao nhất của R là chu n 1.
Bài tập
Xác định dạng chu n cao nhất của các lược đồ sau:
a/ R(A,B,C,D); F={A  C, D  B, C  AD, C  B}
b/ R(A,B,C,D,E); F={BC  D, D  E, D  C}

Page 16
c/ R(A,B,C,D); F={AB  C, B  D, C  AB}
d/ R(A,B,C,D,E); F={A  E, CD  B, E  D, B  C}
e/ R(A,B,C,D,E); F={AE  BCD, C  A, A  E}
f/ R(A,B,C,D,E,G); F={AE  C, CG  A, BD  G, GA  E}

Page 17

You might also like