309
CƠ SỞ DỮ LIỆU Email: [email protected]

Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Embed Size (px)

Citation preview

Page 1: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

CƠ SƠ DƯ LIÊU

Email: [email protected]

Page 2: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

2 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

GIƠI THIÊU MÔN HOC

• Môn học cung cấp cho sinh viên các kiến thức lý thuyết về thiết kế cơ sở dữ liệu, xét dạng chuẩn và phân rã các ược đồ cơ sở dữ liệu đạt chuẩn tốt nhất, truy vấn trên cơ sở dữ liệu.

• Gôm 7 chương:– Chương 1: Giới thiệu – Chương 2: Mô hình dữ liệu quan hệ– Chương 3: Ngôn ngữ SQL– Chương 4: Ràng buộc toàn vẹn– Chương 5: Phụ thuộc hàm– Chương 6: Chuẩn hóa cơ sở dữ liệu– Chương 7: Tối ưu hóa câu truy vấn

• Số Tín chỉ: 4 (45,0,,0,105) • Số tiết: 75 LT: 45 TH: 30• Đánh giá:

– Điểm thứ 1: 10% Kiểm tra trên lớp– Điểm thứ 2: 20% Kiểm tra thực hành giữa kỳ – Điểm thứ 3: 70% Thi viết cuối kỳ

Page 3: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

3 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

GIƠI THIÊU MÔN HOC

• Thông tin giang viên: – ThS. Lương Thi Ngoc Khanh– Email: [email protected]

– http://itam.tut.edu.vn/~khanhltn

Page 4: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

4 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tài liệu tham khảo

– Tóm tắt bài giảng môn Cơ sở dữ liệu – Trương ĐH Tôn Đưc Thăng

– Lập trình ứng dụng chuyên nghiệp SQL server 2000 – Pham Hữu Khang

– Modern Database Management – Jeffrey A.Hoffer 2000– Nguyên ly cac hê cơ sơ dư liêu va cơ sơ tri thưc – D. Ullman– Cac hê cơ sơ dư liêu – ly thuyêt va thưc hanh (tâp 1, 2) - Hô

Thuân, Hô Câm Ha– Giao trinh nhâp môn cơ sơ dư liêu – Nguyên An Tê

Page 5: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Chương I

GIƠI THIÊU

Email: [email protected]

Page 6: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

6 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương I

• CSDL là gì? Tại sao cần tới các hệ CSDL? • Cơ sơ dư liêu

– Khai niêm

– Ưu điêm

– Cac đôi tương sư dung csdl

– Hê quan tri csdl

• Cac mô hình dữ liệu

Page 7: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

7 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CSDL là gì? Tại sao cần tới các hệ CSDL? - Các hệ thống dùng phương pháp xử lý tập tin

• Để lưu trữ thông tin và dữ liệu cho công việc của các cơ quan tổ chức, có thể lưu trữ dưới dạng các file riêng rẽ và lúc cần lại lấy ra để thao tác, xử lý.

Hệ thống dùng phương pháp xử lý tập tin được sử dụng rộng rãi trong suốt những năm 60s, 80s này có ưu điểm là thời gian triển khai ngắn, ít đầu tư lớn về vật chất, nhân sự và công sức phân tích - thiết kế, rất phù hợp với các bài toán nhỏ.

Tuy nhiên, đối với các bài toán có nhu cầu xử lý dữ liệu lớn các vấn đề sau sẽ nảy sinh:

Page 8: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

8 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CSDL là gì? Tại sao cần tới các hệ CSDL? - Các hệ thống dùng phương pháp xử lý tập tin

– Tính dư thừa dữ liệu: • đó là sự lặp đi lặp lại của những thông tin được lưu trữ gây ra lãng

phí công sức và dễ dẫn đến tình trạng dị thường.

– Tính dị thường (không nhất quán): • tại một thời điểm thông tin về cùng một đối tượng lại có thể khác

nhau trên các tập tin khác nhau trong cùng một hệ thống thông tin, điều này thường là do dư thừa dữ liệu gây ra.

– Các vấn đề toàn vẹn: • khi có thêm những ràng buộc mới, khó thay đổi các chương trình để

có thể tuân thủ chúng.

– Các vấn đề về tính nguyên tố của các giao tác: • với tệp xử lý truyền thống khó có thể đảm bảo được tính chất “hoặc

thực hiện hoàn toàn hoặc không thực hiện gì” và khó đưa được hệ thống trở về trạng thái nhất quán trước khi xảy ra sự cố.

Page 9: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

9 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CSDL là gì? Tại sao cần tới các hệ CSDL? - Các hệ thống dùng phương pháp xử lý tập tin

– Sự thiếu chia sẻ thông tin giữa các hệ thống và khó mở rộng hệ thống hay kết nối với các hệ thống khác.

– Các dị thường của truy cập tương tranh: • để tăng tính hiệu quả và trả lời nhanh hơn, nhiều hệ thống

cho phép nhiều người dùng cập nhật dữ liệu đồng thời và như vậy có thể dẫn đến dữ liệu không nhất quán.

– Tính không toàn vẹn, an toàn dữ liệu: • Thể hiện sự không đầy đủ của các thông tin cần lưu trữ cho

các mục đích yêu cầu của hệ thống thông tin. An toàn dữ liệu như các cơ chế bảo mật, phân cấp đối tượng sử dụng dữ liệu và cả việc sao lưu dữ liệu dự phòng.

Để khắc phục và giải quyết được các vấn đề trên, buộc chúng ta phải thay đổi cách tiếp cận hệ thống tiếp cận CSDL.

Page 10: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

10 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sơ dư liêu - Khai niêm

• Cơ sơ dư liêu:– Co thê đươc xem la tâp hơp co câu truc cua thông tin, đươc lưu

trư trên cac thiêt bi trư tin đê co thê thoa man yêu câu khai thac thông tin đông thơi cho nhiêu ngươi sư dung hay nhiêu chương trinh ưng dung vơi cac muc đich khac nhau.

• Ưu điêm:

– 1. Vê ban thân thông tin lưu trư:• Giam thiêu sư trung lăp thông tin đên mưc thâp nhât, do đo giup

– Bao đam tinh nhât quan– Tinh toan ven cua dư liêu

• Đam bao dư liêu co thê đươc truy xuât theo nhiêu cach khac nhau.• Kha năng chia se thông tin cho nhiêu ngươi sư duungj va nhiêu ưng

dung khac nhau.

Page 11: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

11 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sơ dư liêu- Ưu điêm

• Ưu điêm: (tt)– Vê hiêu qua sư dung thông tin:

• Chia se thông tin cho nhiêu ngươi dung khac nhau• Tiêt kiêm tai nguyên• Tăng hiêu qua khai thac

– Nhưng vân đê nay sinh:• Cân xac đinh ro trach nhiêm đôi vơi

– Sư an toan cua dư liêu– Tinh chinh xac cua dư liêu

» Ai co trach nhiêm câp nhât, chinh sưa» Nhưng thông tin nao đươc phep sưa

– Cân môt cơ chê bao mât hay phân quyên khai thac thông tin cua ngươi sư dung

– Giai quyêt sư tranh châp trong truy câp dư liêu khi co nhiêu ngươi dung cung truy câp đên môt nguôn dư liêu.

Page 12: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

12 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sơ dư liêu- Cac đôi tương sư dung csdl

• Ngươi sư dung không chuyên vê linh vưc tin hoc va csdl:– Csdl cân co cac công cu đê nhưng ngươi nay co thê sư dung va

khai thac csdl khi cân.

• Chuyên viên tin hoc biêt khai thac csdl:– Nhưng ngươi nay co thê xây dưng cac ưng dung khac nhau

phuc vu cho nhiêu muc đich khac nhau trên csdl.

• Ngươi quan tri csdl:– La ngươi hiêu biêt vê tin hoc, vê cac hê quan tri csdl va hê thông

may tinh. – La ngươi tô chưc csdl (khai bao câu truc, ghi nhân yêu câu bao

mât)– La ngươi câp quyên han khai thac csdl.

Page 13: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

13 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Mô hình dữ liệu:– Là sự hình thức hóa toán học gồm có hai phần:

• ký hiệu mô tả dữ liệu • tập hợp các phép toán diễn tả sự ràng buộc trong dữ liệu và

các phép xử lý trên dữ liệu.

Cơ sơ dư liêu- Kiến trúc ba mức của một hệ CSDL

Page 14: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

14 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 14

3 mức biểu diễn một CSDL:

• Mức vật lý (mức trong):

– Là các loại tệp dữ liệu, tệp giao dịch, tệp chỉ dẫn… theo cấu trúc nào đó được lưu trữ trên các thiết bị lưu trữ tin.

• Mức khung nhìn (View - mức ngoài):

– Là cách nhìn, là quan điểm của từng người sử dụng đối với CSDL mức khái niệm. Mỗi khung nhìn là một phần của CSDL hoặc trừu tượng hóa một phần của CSDL mức khái niệm.

• Mức khái niệm: (mô hình ER)

– Là sự trừu tượng hóa thế giới thực khi gắn liền với người sử dụng CSDL. HQTCSDL cung cấp khả năng định nghĩa dữ liệu ở mức quan niệm nhằm mô tả sơ đồ quan niệm, thường gọi là mô hình CSDL. Có thể xem mức vật lý là sự cài đặt cụ thể của mức khái niệm.

Cơ sơ dư liêu- Kiến trúc ba mức của một hệ CSDL (tt)

Page 15: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

15 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sơ dư liêu- Kiến trúc ba mức của một hệ CSDL (tt)

User 1

User 2

User n

View 1

View n

View 2 CSD mức vật lý

CSDL mức khái niệm

Page 16: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

16 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sơ dư liêu- Hê quan tri CSDL

• Hệ quản trị cơ sở dữ liệu (HQTCSDL, database management system). – Phần mềm dùng để tạo lập và xử lý dữ liệu.– Các HQTCSDL thường gặp như: Oracle, Paradox,

MS Access, Sybase, Foxpro, SQL Server….

• CSDL là một thành phần trong HQTCSDL.

Page 17: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

17 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sơ dư liêu- Hê quan tri CSDL (tt)

• Ví dụ: Một DS các số điện thoại, họ tên, địa chỉ của những người quen.– có thể lưu trữ DS này trong một chiếc đĩa sử dụng

máy tính cá nhân và các phần mềm như ACCESS hoặc, EXCEL…

– Tập hợp các dữ liệu có liên quan với nhau này hàm chứa trong nó một ngữ nghĩa nào đó vì vậy đó là một CSDL. Các phần mềm Access, Excel là hệ quản trị CSDL.

Page 18: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

18 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sơ dư liêu- Hê quan tri CSDL (tt)

• Các chức năng của HQTCSDLMột HQTCSDL phải có khả năng giải quyết tốt những vấn đề mà cách tổ chức CSDL đặt ra, hai khả năng cơ bản là:– Quản lý dữ liệu ở mức xử lý tệp như một hệ điều hành– Truy cập các khối lượng dữ liệu lớn có hiệu quả

Ngoài ra còn có các chức năng khác như:– Cung cấp giao diện giữa users và CSDL và giữa CSDL với các

hệ thống khác.– Cung cấp một số ngôn ngữ bậc cao thường là ngôn ngữ phi thủ

tục giúp users truy xuất và thao tác CSDL.– Quản lý giao tác, phân quyền và an toàn dữ liệu khi có một hay

nhiều người tham gia sử dụng.– Điều khiển sự tương hợp, tính toàn vẹn khi chuyển hóa dữ liệu

và khi có sự cố của hệ thống…– Kiểm tra độ tin cậy của dữ liệu.

Page 19: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

19 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cac mô hình dữ liệu

• Mô hình dữ liệu – là một tập hợp các khái niệm và ký pháp dùng để mô

tả dữ liệu, các mối quan hệ của dữ liệu, các ràng buộc trên dữ liệu của một tổ chức.

– gồm ba thành phần:• phần mô tả cấu trúc của CSDL;• phần mô tả các thao tác, định nghĩa các phép toán được

phép trên dữ liệu;• phần mô tả các ràng buộc toàn vẹn để đảm bảo sự chính

xác của dữ liệu.

– Mỗi loại mô hình đặc trưng cho một phương pháp tiếp cận dữ liệu của người phân tích - thiết kế dữ liệu.

Page 20: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

20 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cac mô hình dữ liệu (tt)

Phân chia thành 3 nhóm:• Mô hình dữ liệu logic trên cơ sở đối tượng:

– mô hình thực thể mối quan hệ – mô hình hướng đối tượng– mô hình dữ liệu ngữ nghĩa – mô hình dữ liệu chức năng

• Mô hình dữ liệu logic trên cơ sở bản ghi: – mô hình quan hệ– mô hình mạng– mô hình phân cấp

• Mô hình dữ liệu vật lý: mô tả dữ liệu ở mức thấp nhất, nghĩa là mô tả dữ liệu được lưu trữ thế nào trong máy tính. – Có hai mô hình vật lý quen dùng là: mô hình hợp nhất và

mô hình bộ nhớ khung.

Page 21: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

21 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cac mô hình dữ liệu (tt)

• Mô hình dữ liệu logic trên cơ sở bản ghi: – Mô hình mạng (Network model):

• các khái niệm chính: các mẩu tin (record), loại mẩu tin (record type) và loại liên hệ (set type).

• Mỗi loại mẩu tin đặc trưng cho một đối tượng riêng biệt như: Khoa, SinhVien,…

• mỗi loại mẩu tin được ký hiệu bằng một hình chữ nhật, mỗi thể hiện của một loại mẩu tin được gọi là mẩu tin.

• Ví dụ, loại mẩu tin SinhVien có các mẩu tin là các sinh viên đang theo học tại trường.

• Loại liên hệ là sự liên kết giữa mẩu tin chủ và mẩu tin thành viên.Mô hình được biểu diễn là một đồ thị có hướng.

Khoa SinhVienGồm

Page 22: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

22 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cac mô hình dữ liệu (tt)

• Mô hinh thưc thê kêt hơp (Entity Relationship Model)– Cac khai niêm chinh:

• Thưc thê: – La môt đôi tương hoăc môt khai niêm co thê nhân biêt môt

cach duy nhât (tương tư khai niêm mâu tin trong mô hinh dư liêu mang). Vd: SinhVien, Khoa, MonHoc

– Co 2 loai thưc thê:» Thưc thê yêu: la thưc thê ma sư tôn tai cua no phu thuôc

vao môt thưc thê khac. Vd: Thưc thê ThanNhan phu thuôc vao NhanVien. Ki hiêu băng đương viên ke đôi.

» Thưc thê manh: la thưc thê co môt hay nhiêu thưc thê yêu phu thuôc vao sư tôn tai cua no. Ki hiêu băng đương viên ke đơn.

Page 23: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

23 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cac mô hình dữ liệu (tt)

• Mô hinh thưc thê kêt hơp (tt)• Loai thưc thê: la môt loai đôi tương hoăc khai niêm tôn tai

đôc lâp.• Thuôc tinh cua loai thưc thê: la cac đăc tinh riêng biêt cua

loai thưc thê.• Khoa cua loai thưc thê: la cac thuôc tinh nhân diên loai thưc

thê.• Loai cua môi kêt hơp: la sư liên kêt giưa môt loai thưc thê

manh va môt loai thưc thê yêu. Giưa 2 thưc thê co nhiêu môi kêt hơp.

• Sô ngôi cua môi kêt hơp: tông sô loai thưc thê tham gia vao môi kêt hơp. Môi kêt hơp cung co thuôc tinh riêng cua no.

Page 24: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

24 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cac mô hình dữ liệu (tt)

– Mô hình phân cấp (Hierachical model): • Mô hình dữ liệu là một cây, trong đó các nút biểu diễn tập các thực

thể, giữa các nút cha và nút con được liên hệ theo một mối quan hệ xác định.

– Mô hình quan hệ (Relation model):• Mô hình dựa trên cơ sở khái niệm lý thuyết tập hợp của các quan

hệ, tức là các tập k-bộ với k cố định.– Mô hinh hương đôi tương (Object Oriented Data Model)

• Sư dung cac khai niêm như: lơp (class), đôi tương, sư kê thưa (inheritance), kê thưa bôi.

• Đăc trưng cơ ban cua cach tiêp cân nay la: tinh đong goi (encapsulation), tinh đa hinh (polymorphism) va tinh tai sư dung (reusability).

• Hương tiêp cân nay hiên đang nhân đươc sư quan tâm va phat triên va co thê no se la mô hinh csdl cua tương lai.

Page 25: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Chương II

MÔ HÌNH DỮ LIỆU QUAN HỆ

Email: [email protected]

Page 26: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

26 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nôi dung chương II

• Cac đinh nghia:– Mở đầu– Các khái niệm: thuộc tính, miền giá trị– Mô hình quan hệ

– Lược đồ quan hệ, lược đồ CSDL

– Khoa cua lươc đô quan hê

• Đai sô quan hê• Bai tâp chương II

Page 27: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

27 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA - MỞ ĐẦU

maSoSV hoTenSV ngaySinh diemTB mucHBg

Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000

Ti05023 Nguyễn Mỹ Truyền 20-02-1987 8.2 180.000

Ti05027 Phạm Thu Hoa 23-05-1987 8.5 180.000

Ti05006 Phạm Thu Hường 23-06-1987 7.8 120.000

• Bảng trên lưu thông tin về xếp loại học bổng của sinh viên. Trong bảng này, ta có: – maSoSV, hoTenSV, ngaySinh, mucHBg được gọi là các

thuộc tính, – {9.0, 8.2, 8.5, 7.5…} chính là miền giá trị của thuộc tính

diemTB. – Một dòng trong bảng:

Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000

đgl một bộ. Bảng có tên là HOCBONG đgl một quan hệ.

Page 28: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

28 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA - MỞ ĐẦU (tt)

• Cho tập hữu hạn các phần tử U = {A1, A2, … An}. tập U được gọi là tập các thuộc tính. Mỗi phần tử Ai- của tập U có một miền giá trị tương ứng, ta ký hiệu là D(Ai).

Page 29: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

29 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA - Mô hình quan hệ là gì?

• Mô hình CSDL quan hệ gọi tắt là mô hình quan hệ do E.F Codd đề xuất năm 1971, mô hình này bao gồm:– Một hệ thống các ký hiệu để mô tả dữ liệu dưới dạng

dòng và cột như quan hệ, bộ, thuộc tính, khóa cính, khóa ngoại,…

– Một tập hợp các phép toán trên dữ liệu như phép toán tập hợp, phép toán quan hệ.

– Ràng buộc toàn vẹn quan hệ.

Page 30: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

30 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Thuộc tính

Thuộc tính (attribute, arity)– Là các đặc trưng của đối tượng

• Vd: BTQL điểm thi của sinh viên, với đối tượng sinh viên ta cần phải chú ý đến các đặc trưng riêng như: họ tên, ngày sinh, học bổng, tỉnh, lớp mà sinh viên theo học… các thuộc tính.

– được phân biệt bằng tên gọi – phải thuộc vào một kiểu dữ liệu nhất định (số, chuỗi, ngày tháng,

lôgic, hình ảnh…). – Lưu ý: trong cùng một đối tượng không được có hai thuộc tính

cùng tên.– Thông thường mỗi thuộc tính chỉ chọn lấy giá trị trong một tập

con của kiểu dữ liệu miền giá trị của thuộc tính đó. – Ví dụ điểm thi của sinh viên chỉ là các số nguyên từ 0 đến 10.– Thường dùng các chữ cái hoa A, B, C để biểu diễn các thuộc

tính, hoặc A1, …, An để biểu diễn một số lượng lớn các thuộc tính.

Page 31: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

31 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA– Lược đồ quan hệ, Lược đồ CSDL

• Lược đồ quan hệ (Relation – là tập tất cả các thuộc tính cần quản lý của một đối

tượng cùng với những mối liên hệ giữa chúng.– Sau này ta thường nói là cho lược đồ quan hệ R trên

tập thuộc tính U, ký hiệu R(U), hoặc R(A1,…,An).– Vd: ta có LĐQH sinh viên (đặt tên là SV) với các

thuộc tính như sau:

SV(maSoSV, hoTenSV, ngaySinh, diemTB, mucHbg)

- Một LĐQH có một ý nghĩa gọi là tân từ của LĐQH- Mỗi sinh viên có một mã số duy nhất, mỗi mã số xác định tất

cả các thuộc tính của sinh viên đó như họ tên, ngày sinh, mức học bổng…

Page 32: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

32 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Lược đồ QH, Lược đồ CSDL (tt)

• Nhiều lược đồ quan hệ cùng nằm trong một hệ thống quản lý được gọi là một lược đồ CSDL.– Ví dụ lược đồ CSDL để quản lý điểm của sinh viên có thể

gồm những lược đồ quan hệ sau:SV(maSV, hotenSV, ngaySinh, maLop, tinh, hocBong)Lop(maLop, tenLop, siSo, maKhoa)Khoa(maKhoa, tenKhoa, soCB)MonHoc(maMH, tenMH, soTiet)KetQua(maSV, maMH, diemThi)– Nhận xét:

• khi nói cho tập thuộc tính U = {A1, A2…, An} ta coi như cho trước lược đồ quan hệ (LĐQH) và cùng với nó ta có quan hệ rỗng r = ∅.

• Khi lược đồ được nạp thêm ít nhất một dòng thì ta có một quan hệ khác rỗng.

Page 33: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

33 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Lược đồ QH, Lược đồ CSDL (tt)

• Định nghĩa quan hệ (relation):

– Sự thể hiện của lược đồ quan hệ ở một thời điểm.

– Cụ thể, một quan hệ r trên lược đồ quan hệ R là một tập con của tích Descartes (Decac) của các miền giá trị D(Ai) với i = 1…n.

– Một cách hình thức, r là một QH trên tập thuộc tính U nếu:

r ⊂ D(A1) x D(A2) x … x D(An)

trong đó D(Ai) là miền giá trị của thuộc tính Ai.

– Lưu ý: Thường dùng các ký hiệu R, Q, S để chỉ các lược đồ quan hệ và các ký hiệu r, q, s để chỉ các quan hệ.

• Ví dụ:

– Bảng 2.1 lưu trữ hồ sơ sinh viên là một quan hệ, với U = {maSoSV, hoTenSV, ngaySinh, diemTB, mucHbg}.

Page 34: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

34 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Lược đồ QH, Lược đồ CSDL (tt)

• Nhận xét:– quan hệ r là một bảng hai chiều:

• trên cột thứ i là các giá trị của D(Ai),

• trên mỗi dòng của bảng là bộ n giá trị của các miền giá trị của các thuộc tính Ai. Một dòng chứa thông tin về một đối tượng và gọi là một bộ (phần tử) của quan hệ.

– Trên một lược đồ quan hệ có thể xây dựng được nhiều quan hệ khác nhau, cứ thay đổi một dòng hoặc một cột ta được một quan hệ mới.

– cần lưu ý với cách nhìn của tập hợp thì việc thêm vào một dòng (cột) giống với dòng (cột) đã có thì quan hệ không thay đổi. Đồng thời thứ tự trước sau của các dòng (cột) không làm thay đổi quan hệ.

Page 35: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

35 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Lược đồ QH, Lược đồ CSDL (tt)

ma hoten nsinh donvi luong phucap thuong

01 Minh 1965 K.CNTT 800 50 100

02 Đông 1946 K. toán 700 122 48

03 Long 1954 K. lý 1.500 100 90

04 Kiên 1956 K. hóa 1.900 150 75

05 Đại 1958 K. văn 3.000 60 80

• Ví dụ: Cho U = {ma, hoten, donvi, nsinh, luong, phucap, thuong} và quan hệ r trên lược đồ R(U) như trên:– Quan hệ r ở trên có năm phần tử. Mỗi phần tử là một bộ 8 giá trị

(còn gọi là 7-bộ)• Lưu ý:

– Về sau không cần quan tâm đến bản chất nội tại của mô hình quan hệ, đôi khi để cho tiện ta ký hiệu các thuộc tính bằng các chữ cái in hoa A, B, C và tập các thuộc tính bằng X, Y, Z, còn các giá trị cụ thể của miền giá trị của chúng bằng các chữ cái thường a, b, c…

Page 36: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

36 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Khóa của lược đồ quan hệ

• Siêu khóa của một lược đồ quan hệ R – là một tập hợp gồm một hay nhiều thuộc tính của lược đồ

R có tính chất xác định duy nhất một bộ trong mỗi thể hiện của R.

• Nếu ký hiệu tập thuộc tính có tính chất như vậy là SK thì thì có một ràng buộc trên r(R) đó là: ti(SK) ≠ tj(SK), với ti, tj là hai bộ khác nhau bất kỳ trong r.

• Nhận xét: – Cho R (U), nếu SK là siêu khóa của R thì SK ⊆ U

– Dễ thấy một quan hệ có ít nhất một siêu khóa, đó là tập U gồm tất cả các thuộc tính của quan hệ.

– Mọi tập con của U chứa một siêu khóa cũng là siêu khóa.

Page 37: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

37 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Khóa của lược đồ quan hệ (tt)

• Khóa của lược đồ quan hệ là một siêu khóa của lược đồ này sao cho mọi tập con thực sự của nó không là siêu khóa. khóa là siêu khóa tối thiểu.

• Ví dụ:– Lược đồ quan hệ SV, thuộc tính maSV là khóa.

• Khóa chính (primary key)– Khóa chính là một khóa tối tiểu được người phân tích

chọn để cài đặt.• Khóa dự tuyển (candidate key)

– Các khóa dự tuyển là các khóa tối tiểu khác mà không phải là khóa chính.

Page 38: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

38 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA – Khóa của lược đồ quan hệ (tt)

• Khóa ngoài (khóa ngoại) của một lược đồ quan hệ là một tập hợp gồm một hay nhiều thuộc tính là khóa của một lược đồ quan hệ khác.

• Trong mô hình dữ liệu quan hệ, khóa đóng vai trò quan trọng vì nó giúp nhận biết thực thể một cách nhanh chóng trong CSDL.

• Thuộc tính khóa– Là thuộc tính có tham gia vào một khóa bất kỳ (dự

tuyển hay khóa chính)• Ngược lại, thuộc tính không tham gia vào một

khóa nào gọi là thuộc tính không khóa.

Page 39: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

39 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA - Lược đồ và thể hiện của CSDL

• Toàn bộ mô tả CSDL được gọi là lược đồ CSDL (database schema). Tương ứng với ba mức trừu xuất dữ liệu nói trên có ba loại lược đồ:– Ở mức cao nhất ta có nhiều lược đồ ngoài (còn gọi là lược đồ

con) cho những cách nhìn dữ liệu khác nhau của những người sử dụng khác nhau.

– Ở mức logic ta có lược đồ logic.– Ở mức thấp nhất ta có lược đồ vật lý.

• Toàn bộ dữ liệu lưu trữ trong CSDL tại một thời điểm nhất định được gọi là một thể hiện của CSDL (database instance).

Nhiều thể hiện của CSDL có thể tương ứng với cùng một lược đồ CSDL.

Page 40: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

40 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CÁC ĐỊNH NGHĨA - Lược đồ và thể hiện của CSDL (tt)

MaNV Hodem Ten Tuoi Luong MaNV Ten Ma_chi_nhanh

MaNV Hodem Ten Ngay_sinh Tuoi Luong Ma_chi_nhanh

Khung nhìn 1 Khung nhìn 2

Mức logic

Mức vật lý

Struct NHANVIEN{int MaNV; int Ma_chi_nhanh; char Hodem[15];

char Ten[15]; struct date Ngay_sinh;float Luong;struct NHANVIEN next; /* con trỏ đến bản ghi tiếp của tệp

NHANVIEN*/};

Page 41: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

41 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Giới thiệu

• Đại số quan hệ – là phương pháp để mô hình hóa các phép toán để

thao tác trên CSDL quan hệ. – là ưu điểm của mô hình dữ liệu quan hệ (tiếp cận các

kết quả của công cụ toán học trong việc xây dựng ngôn ngữ khai thác, xử lý dữ liệu).

– các phép toán của đại số quan hệ khá đơn giản, những nó khá mạnh và là một đại số có tính đầy đủ, phi thủ tục.

– là một cơ sở cho việc thiết lập các ngôn ngữ con dữ liệu bậc cao hơn.

Page 42: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

42 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Giới thiệu

• Để định nghĩa các phép toán đại số quan hệ, trước hết chúng ta có một số khái niệm sau:– hai quan hệ r1, r2 là tương thích với nhau nếu chúng

có cùng tập thuộc tính U. Và r1, r2 được gọi là hai quan hệ rời nhau nếu chúng không có thuộc tính chung.

– Khái niệm xếp cạnh nhau:

Giả sử cho bộ t = (a1, a2,…, an), u = (b1, b2, …, bm) ta có: ⟨t,u⟩ = (a1, a2,…, an, b1, b2, …, bm)

Page 43: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

43 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép chọn

• Phép chọn (Selection): ký hiệu σ– Phép chọn được dùng để xây dựng một tập con các bộ của

quan hệ đã cho thỏa mãn một điều kiện cho trước. Điều kiện C được biểu diễn bởi một biểu thức lôgic trả về giá trị True/False.

– Kết quả của phép chọn trên quan hệ r với điều kiện C được ký hiệu là σ C(r).

σ C(r) = {t / t ∈ r, C(t) = True}

– Biểu thức lôgic C được tạo thành từ các biểu thức có dạng

⟨tên thuộc tính⟩ ⟨toán tử so sánh⟩ ⟨giá trị hằng⟩ hoặc

⟨tên thuộc tính⟩ ⟨toán tử so sánh⟩ ⟨tên thuộc tính⟩ ,

– trong đó∀ ⟨tên thuộc tính⟩ là tên của một thuộc tính thuộc R∀ ⟨toán tử so sánh⟩ là các toán tử thông thường {=, <, ≤, >, ≥, ≠} ∀ ⟨giá trị hằng⟩ là một giá trị trong miền thuộc tính.

Page 44: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

44 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép chọn (tt)

• Ví dụ: Trên quan hệ HOCBONG,– phép chọn σ (DiemTB≥9.0)(HOCBONG) ta có kết quả như

sau:

maSoSV hoTenSV Ngaysinh ĐiemTB MucHBg

Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000

• Lưu ý:

– Toán tử so sánh trong tập {=, <, ≤, >, ≥, ≠} chỉ áp dụng được cho những thuộc tính có MGT có thứ tự. Nếu miền thuộc tính ko có thứ tự, khi đó toán tử so sánh có thể áp dụng chỉ là tập {=, ≠}.

– Các toán tử chọn có tính giao hoán, cụ thể:

σ <C1>(σ <C2>(R)) = σ <C2>(σ <C1>(R))

Page 45: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

45 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép chọn (tt)

• Cho các lược đồ quan hệ sau:– SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc)

• Mỗi sinh viên có Mã số duy nhất, họ tên, quê quán và học lực

– DETAI (MaDT, TenDT, Chunhiem, Kinhphi)• Mỗi đề tài có Mã số duy nhất, tên đề tài, chủ nhiệm đề tài, kinh phí thực hiện

đề tài (đơn vị tính: triệu đồng)

– SV_DT (MaSV, MaDT, NoiAD, KQ)• Mỗi SV có thể thực hiện một hoặc nhiều ĐT: mã số sinh viên, mã đề tài, nơi

áp dụng, kết quả thực hiện đề tài

Page 46: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

46 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép chọn (tt)

Ví dụ:

Vd: Tìm những sinh viên sinh trước năm 1984 và quê quán ở Đồng Thápσ (Namsinh<1984 ^ QQ='Đồng Tháp')

(SINHVIEN)

Page 47: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

47 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép chiếu

• Phép chiếu (Projection): Ký hiệu π– Cho r là một quan hệ trên lược đồ quan hệ R(U), X ⊆ U, khi đó

π X(r) = {t[X] / t ∈ r} trong đó t[X] là giá trị bộ t trên tập thuộc tính X.

Vd: phép chiếu π MasoSV,DiemTB(HOCBONG) ta có kết quả sau:

maSoSV diemTb

Ti05020 9.0

Ti05023 8.2

Ti05027 8.5

Ti05006 7.8

• Nhận xét:– Để thực hiện phép chiếu 1QH trên một tập thuộc tính thực hiện

2 thao tác: Giữ lại các thuộc tính trong tập X và chọn bộ đại diện trong các bộ giống nhau.

Page 48: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

48 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép chiếu (tt)

Ví dụ: Xem lại csdl•Tìm họ tên, năm sinh của những sinh viên có quê quán ở Cần Thơ             ∏ Hoten, Namsinh(σ (QQ='Cần thơ')(SINHVIEN))

    • Tìm mã số, tên của những đề tài do Thầy Lê Đức Phúc chủ nhiệm có kinh phí từ 10 triệu trở lên.         ∏ MaDT, TenDT(σ (Chunhiem='Lê Đức Phúc' ^ Kinhphi >= 10)

(DETAI))

Page 49: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

49 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán

• Phép tích Descartes– Tích Descartes của hai quan hệ chỉ xét trên hai lược đồ

quan hệ rời nhau.

– Cho hai lược đồ R1, R2 tương ứng với hai tập thuộc tính: U1 = {A1, A2,…,An}

U2 = {B1, B2,…,Bm} với U1 ∩ U2 = ∅– Giả sử r, s là hai quan hệ trên R1, R2 tương ứng, khi

đó:• Tích Descartes của r và s ký hiệu r × s là quan hệ gồm các

(n+m)_bộ trên lược đồ R1 ∪ R2, theo thứ tự, sao cho mỗi bộ này có n thành phần đầu là một bộ thuộc r và m thành phần sau là bộ thuộc s.

r × s = {t/ t = ⟨t1, t2⟩ , t1 ∈ r, t2 ∈ s)}

Page 50: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

50 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán

Page 51: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

51 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép kết nối

• Phép kết nối

– Cho θ là một trong các phép so sánh sau: =, >,<, ≠, ≥, ≤.

– r là một quan hệ xác định trên tập thuộc tính (A1, A2, …, An) và s là một quan hệ trên tập thuộc tính (B1, B2,…,Bm).

– Kết quả của phép kết nối quan hệ r với quan hệ s theo điều kiện Ai θ Bj được ký hiệu:

r ⋈Ai θ Bj s = {⟨t,u⟩ / t ∈ r, u ∈ s và t[Ai] θ u[Bj]}• giả thiết mỗi giá trị thuộc dom(Ai) và mỗi giá trị thuộc dom(Bj) có thể

so sánh được qua phép θ

Page 52: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

52 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép kết nối (tt)

– Nếu θ là “=” thì phép kết nối đó được gọi là kết nối bằng.

– Nếu kết nối bằng tại thuộc tính trùng tên của hai quan hệ r, s phép kết nối tự nhiên và ký hiệu là r ∗ s (hoặc r s) ⋈cho kết quả của nó.

• một trong hai thuộc tính đó được loại bỏ khỏi kết quả

– Ví dụ: Tìm tên những đề tài được áp dụng ở Đồng Tháp và cho biết họ tên của những sinh viên thực hiện tương ứng.

∀ π TenDT, Hoten(σ (NoiAD='Đồng Tháp')(SINHVIEN * SV_DT * DETAI))

Page 53: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

53 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:

• Ý nghĩa:– Phép kết nối được dùng để kết hợp hai bộ có liên quan nhau

thuộc hai quan hệ khác nhau thành một bộ mới. – nói cách khác, phép kết nối cho phép xử lý mối liên quan giữa

các quan hệ trong một CSDL.

Đại số quan hệ- Các phép toán – Phép kết nối (tt)

r A B C

a1 b1 1

a2 b2 3

a3 b 2

s D F

2 f1

3 f2

r ⋈C>=Ds A B C D F

a1 b1 3 2 f1

a2 b2 3 3 f2

a3 b 2 2 f1

Page 54: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

54 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép hợp

• Phép hợp

– Hợp của hai quan hệ tương thích r1, r2 ký hiệu r1 ∪ r2 là một quan hệ trên U gồm các phần tử thuộc r1 hoặc r2.

r1∪ r2 = {t: t ∈ r1 hoặc t ∈ r2}

– Ví dụ:

Canbo(Maso, Hoten, Ngsinh, QQ, Hs_luong)Giangvien(Maso, Hoten, Ngaysinh, QQ, Hs_luong)

In ra danh sách gồm: mã số và họ tên của tất cả các cán bộ và giảng viên: ∏Maso, Hoten(Canbo U Giảngviên)

Page 55: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

55 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép giao

• Phép giao

– Giao của hai quan hệ tương thích r1, r2 ký hiệu r1 ∩ r2 là một quan hệ trên U gồm các bộ vừa thuộc r1 vừa thuộc r2.

r1∩ r2 = {t: t ∈ r1 và t ∈ r2}

– Vd: In ra mã sinh viên và họ tên của những sinh viên vừa thực hiện đề tài "DT001" vừa thực hiện đề tài "DT005”

∏MaSV, Hoten(σ (MaDT='DT001')(SINHVIEN * SV_DT )) ∩∏MaSV, Hoten(σ(MaDT='DT005')(SINHVIEN * SV_DT ))

Page 56: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

56 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán – Phép hiệu

• Phép hiệu

– Hiệu của hai quan hệ tương thích r và s ký hiệu là r - s, là một quan hệ gồm tất cả các bộ thuộc r nhưng không thuộc s.

r – s = {t: t ∈ r và t ∉ s}

– Ví dụ: In ra mã sinh viên và họ tên của những sinh viên không thực hiện đề tài có nơi áp dụng ở Vĩnh Long

∏MaSV, Hoten(SINHVIEN) -

∏MaSV, Hoten(σ MaDT(σ (Noi_AD='Vinh Long')(SV_DT))*SINHVIEN * SV_DT ))

Page 57: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

57 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán

Page 58: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

58 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán

• Phép đặt lại tên– Để có kết quả cho một câu hỏi, có thể ta phải thực hiện tổ

hợp nhiều phép toán đại số quan hệ. Trong trường hợp này, sẽ rõ ràng hơn nếu chúng ta sử dụng phép đặt tên để đặt tên cho các quan hệ trung gian.

– ký hiệu ⟨tên quan hệ trung gian⟩ ⟨biểu thức đại số quan hệ⟩

• Ví dụ:– Với biểu thức σ DiemTB≥9.0(HOCBONG) ∗ (THANHTICH)

• (trong đó THANHTICH là bảng lưu thành tích của sinh viên gồm các thuộc tính maSoSV, thanhTichSV), ta có thể dùng phép đặt tên như sau:

XuatSac σ DiemTB≥9.0(HOCBONG) KetQua XuatSac ∗ THANHTICH

– Có thể đặt lại tên cho các thuộc tính trong quan hệ trung gian và quan hệ kết quả bằng cách liệt kê tên mới của các thuộc tính trong dấu ngoặc đi kèm theo tên quan hệ.

Page 59: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

59 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đại số quan hệ- Các phép toán

• Phép chia– Cho lược đồ quan hệ R(A1, A2, …, An), S là lược đồ

con của R. Giả sử r và s là các quan hệ trên R và S tương ứng. Phép chia của quan hệ r cho quan hệ s, ký hiệu r ÷ s là quan hệ trên lược đồ R – S gồm các (n-m)_bộ t sao cho tồn tại bộ ts ∈ s mà t ghép với ts ta được bộ thuộc r.

r ÷ s = {t: ∃ ts ∈ s và ⟨t, ts⟩ ∈ r}

Page 60: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

60 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

BÀI TẬP CHƯƠNG 2

• Cho các lược đồ quan hệ sau:• Hanghoa(MaHG, TenHG, DVT, Dongia, Cohang)

– Mỗi mặt hàng có một mã số duy nhất có tên hàng, đơn vị tính, đơn giá và hàng có còn trong kho hay không (Cohang = 0 nếu hết hàng, Cohang = 1 nếu còn hàng)

• Khach(MaKH, Hoten, Diachi, Daily)– Mỗi khách hàng có một mã số duy nhất, họ tên, địa chỉ và

khách có phải là đại lý hay khách hàng lẻ (Daily = 1 nếu khách là đại lý, Daily = 0 nếu khách là khách mua bán lẻ)

• Hoadon(SoHD, Ngaylap, Ngaygiao, Trigia, MaKH)– Mỗi hóa đơn có một số hóa đơn duy nhất, ngày lập, trị giá

hóa đơn, ngày giao hàng và giao cho khách hàng nào• Chitiet_HD(SoHD, MaHG, Soluong, Giaban)• Lưu thông tin chi tiết của hóa đơn bao gồm số HĐ, mã

hàng, số lượng bán và giá bán của mặt hàng đó.

Page 61: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

61 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

BÀI TẬP CHƯƠNG 2 (TT)

• Viết các biểu thức đại số quan hệ cho các câu hỏi sau:– Cho biết Mã số và tên của các mặt hàng còn trong kho– Cho biết họ tên và địa chỉ của các khách hàng là đại lý– Cho biết trị giá của những hóa đơn lập vào ngày 12/05/2007– Cho biết họ tên, địa chỉ của các khách hàng lẻ mua hàng vào

ngày 15/01/2007– In ra thông tin gồm mã số, tên hàng và đơn vị tính của các mặt

hàng được các khách hàng ở Đồng Tháp mua vào ngày 15/12/2006

Page 62: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

62 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

BÀI TẬP CHƯƠNG 2 (TT)

– In ra mã số, tên của các mặt hàng thuộc các hóa đơn có trị giá lớn hơn 1000

– Cho biết tên của những mặt hàng chưa từng được bán– Cho biết mã số, tên của những đại lý không mua hai mặt hàng

“H001” và “H002”– Tìm tên của những mặt hàng vừa được mua bởi các đại lý ở

Vĩnh Long vừa được mua bởi các khách hàng lẻ ở Trà Vinh. – Tìm những hóa đơn mua các mặt hàng ít ra như là các mặt

hàng của hóa đơn 999– Tìm địa chỉ và tên của những đại lý đã mua tất cả các mặt hàng

mà đại lý “KH009” đã mua vào ngày 20/01/2007

Page 63: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Chương III

NGÔN NGƯ SQLNGÔN NGƯ SQL

Email: [email protected]

Page 64: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

64 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 65: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

65 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Sơ lược về hệ QTCSDL SQL Server 2000

• SQL server 2000:– là một hệ quản trị cơ sở dữ liệu quan hệ phổ biến

hiện nay.– có thể lưu trữ được dữ liệu rất lớn– Tính bảo mật cao– Hỗ trợ việc sao lưu dữ liệu dự phòng mạnh

• Transact - SQL (T-SQL):– Là ngôn ngữ SQL mở rộng dựa trên chuẩn ANSI– T-SQL gồm các nhóm:·

• Data Definition Language (DDL): ngôn ngữ định nghĩa dữ liệu

• Data Manipulation Language (DML): ngôn ngữ xử lý dữ liệu

Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Page 66: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

66 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các kiểu dữ liệu trong SQL

• Kiểu dữ liệu là một thuộc tính, nó chỉ định kiểu của dữ liệu và dung lượng có thể lưu trữ của một đối tượng

• SQL Server hỗ trợ một số kiểu dữ liệu được cài sẵn như sau:

Page 67: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

67 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các kiểu dữ liệu trong SQL (tt)

Mục Kiểu dữ liệu Mô tả

Exact Numbers

int - sử dụng 4 byte trong bộ nhớ máy tính. - thường được sử dụng để lưu trữ giá trị số nguyên

smallint - sử dụng 2 byte trong bộ nhớ máy tính. - có thể lưu trữ các số nguyên từ -32768 đến 32767.

tinyint - chiếm 1 byte trong bộ nhớ. - Có giá trị từ 0 đến 255

bigint - sẽ sử dụng 8 byte trong bộ nhớ máy tính. - có thể lưu trữ các số nguyên từ -263 (-

9223372036854775807) đến 263-1

numeric(p,d) - Kiểu số với độ chính xác cố định- Biều diễn số gồm p chữ số và 1 dấu chấm, có d chữ

số bên phải dấu chấm thập phân

money - sử dụng 8 byte trong bộ nhớ máy tính. - Biểu diễn giá trị dữ liệu tiền tệ từ (-263/10000) đến

(263-1).

Page 68: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

68 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Mục Kiểu dữ liệu Mô tả

Approximate numerics

float(n) - sử dụng 8 byte trong bộ nhớ máy tính. - Biễu diễn các số chấm động từ -1.79E+308 đến 1.79E+308.

real -sử dụng 4 byte trong bộ nhớ máy tính. -Biễu diễn các số chấm động có độ chính xác từ -3.4E+38 đến 3.40E+38.

Date and time datetime - Biễu diễn ngày và giờ. Được lưu trữ như

là 2 số integer, chiếm 8 byte. Chính xác đến phần trăm của giây

smalldatetime Biểu diễn ngày và giờ, chính xác đến phút

Các kiểu dữ liệu trong SQL (tt)

Page 69: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

69 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Mục Kiểu dữ liệu Mô tả

Character String

char Lưu trữ dữ liệu kí tự, nó được cố định kích thước và không hỗ trợ Unicode.

varchar Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và không hỗ trợ Unicode.

Unicode Types

text Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và không hỗ trợ Unicode.

ntext Lưu trữ dữ liệu kiểu chuỗi, độ dài lớn và có hỗ trợ Unicode

nchar Lưu trữ dữ liệu kí tự, nó được cố định kích thước và có hỗ trợ Unicode.

nvarchar Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và có hỗ trợ Unicode.

Các kiểu dữ liệu trong SQL (tt)

Page 70: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

70 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 71: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

71 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo cơ sở dữ liệu

• Sử dụng cú pháp sau để tạo một cơ sở dữ liệu trong SQL:– CREATE DATABASE <tên csdl>

• Ví dụ: Tạo cơ sở dữ liệu QLNV:– CREATE DATABASE QLNV

Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Page 72: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

72 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng - Khái niệm bảng

• Bảng dùng để lưu trữ các thông tin của một đối tượng trong thực tế– Gồm có dòng và cột– Bảng trong CSDL thường có khoá chính

– Các bảng thường liên hệ với nhau bằng các mối quan hệ

• Bảng trong CSDL SQL Server 2000 có thể có các ràng buộc, trigger

Page 73: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

73 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng - các thuộc tính của bảng

• Tên bảng

• Tên cột

• Kiểu dữ liệu– Độ dài dữ liệu

– Số ký số lưu trữ– Số số lẻ lưu trữ

• Thuộc tính trên cột– Allow null

– Identity– Default value

Page 74: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

74 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng

Cú pháp:

CREATE TABLE <tên bảng>(

<tên cột 1><kiểu dữ liệu>[CONSTRAINT<tên 1>],

( <tên cột 2><kiểu dữ liệu>[CONSTRAINT<tên 2>],

….

( <tên cột n><kiểu dữ liệu>[CONSTRAINT<tên n>]

[,CONSTRAINT <tên 1>]

[, CONSTRAINT <tên 2>]

[,CONSTRAINT <tên n>]

);

Page 75: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

75 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng (tt)

• Trong đó, cú pháp khai báo của các ràng buộc toàn vẹn như sau:– [CONSTRAINT <tên ràng buộc toàn vẹn>] NULL|NOT

NULL|UNIQUE[(<tên cột i>,<tên cột j>…)]| PRIMARY KEY[(<tên cột i>,<tên cột j>…)]| FOREIGN KEY [[(<tên cột i>,<tên cột j>…)] REFERENCES <tên bảng>(<tên cột i>,<tên cột j>…)| CHECK (<điều kiện>)

75

Page 76: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

76 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng (tt)

• Ví dụ: Tạo bảng với lược đồ quan hệ sau:

HANGHOA (MaHG, TenHG, DVT)• Mã hàng hóa là khóa chính, tên hàng và đơn vị tính.

Tất cả không được rỗng.Create Table Hanghoa( MaHG varchar(10) Not Null Primary key,

TenHG nvarchar(50) Not Null, DVT varchar(5) Not Null

)

Page 77: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

77 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Đặc trưng của khả năng Null của một cột quyết định các hàng trong bảng có thể chứa giá trị Null cho cột đó• Khả năng Null của một cột có thể được định nghĩa khi tạo một bảng

• Từ khóa NULL được sử dụng để chỉ ra rằng giá trị null là được phép trong cột

• Từ khóa NOT NULL được sử dụng để chỉ ra rằng giá trị null là không được phép

• Ví dụ: CREATE TABLE Nhanvien(

manv char(5) NOT NULL, tennv nvarchar(30), manqly char(5) NULL

)

Tạo bảng – Cột được phép Null

Page 78: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

78 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Định nghĩa DEFAULT

• Default constraint có thể được tạo ra tại thời điểm tạo Table hoặc thêm sau khi Table được tạo.

• Với một cột, chỉ có thể tạo được một giá trị Default.

• Giá trị default có thể là một hằng, một hàm hệ thống, một biến toàn cục, hoặc một hàm do người dùng định nghĩa.

Page 79: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

79 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng - Định nghĩa DEFAULT (tt)

• Định nghĩa default trong khi tạo bảng:CREATE TABLE <tên bảng> <tên cột> <KDL>[NULL|NOT NULL][CONSTRAINT <tên ràng buộc>] DEFAULT <biểu thức>

Ví dụ: CREATE TABLE StoreProduct(

ProductID int NOT NULL, Name varchar(40) NOT NULL, Price money NOT NULL DEFAULT (100)

)

• Định nghĩa default đối với một bảng đã tồn tại:ALTER TABLE <tên bảng>ADD [CONSTRAINT <tên ràng buộc>] DEFAULT <biểu

thức> FOR <tên cột>

Page 80: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

80 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Thuộc tính IDENTITY của SQL Server được sử dụng để tạo ra các cột nhận dạng, chúng chứa các giá trị tự động phát sinh tuần tự để nhận dạng duy nhất mỗi hàng trong một bảng

• Một thuộc tính nhận dạng có hai thành phần:

– Giá trị khởi đầu

– Giá trị tăng

Tạo bảng - Thuộc tính IDENTITY

Page 81: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

81 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Cú pháp:• CREATE TABLE <table_name> (column_name data_type

[ IDENTITY [(seed_value, increment_value)]] NOT NULL )

– Trong đó, - seed_value là giá trị khởi đầu .

– - increment_value là giá trị tăng.

• Ví dụ: CREATE TABLE ContactPhone (

Person_ID int IDENTITY(500,1) NOT NULL,

MobileNumber bigint NOT NULL

)

Tạo bảng - Thuộc tính IDENTITY (tt)

Page 82: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

82 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ràng buộc là thuộc tính được chỉ định cho một cột hoặc một tập hợp các cột trong bảng để ngăn ngừa các giá trị không nhất quán được nhập vào.

• SQL Server hỗ trợ các loại ràng buộc sau:

– PRIMARY KEY

– UNIQUE

– FOREIGN KEY– CHECK

– NOT NULL

Tạo bảng – Ràng buộc

Page 83: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

83 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Ràng buộc - Primary Key (Khoá chính)

• Ràng buộc PRIMARY KEY được sử dụng để tạo một khóa chính và đảm bảo toàn vẹn thực thể bảng.

• Cú pháp để thêm một khóa chính trong khi tạo bảng:

• CREATE TABLE <tên bảng> (

<tên cột> <kiểu dữ liệu> PRIMARY KEY [ds cột] )

• CREATE TABLE <tên bảng> (<tên cột> <kdl> [ds cột] CONSTRAINT <tên RB> PRIMARY KEY)

Page 84: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

84 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Ràng buộc - Primary Key (Khoá chính) (tt)

• Ví dụ: Tạo bảng PhongBan với khóa chính là maphong

CREATE TABLE PhongBan (

maphong int PRIMARY KEY,tenphong navarchar(20),

trphong char(5), diadiem nvarchar(20)

)

Hoặc có thể viết như sau:

CREATE TABLE PhongBan (

maphong int constraint pk_pb PRIMARY KEY,

tenphong nvarchar(20),

trphong char(5), diadiem nvarchar(20))

Page 85: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

85 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Ràng buộc - UNIQUE - Khóa duy nhất

• Ràng buộc khóa duy nhất:

– được sử dụng để bảo đảm rằng chỉ các giá trị duy nhất được nhập vào trong cột hoặc một tập hợp các cột ( cho phép nhà phát triển chắc chắn rằng không có các giá trị trùng lặp được nhập vào)

– Được sử dụng trong câu lệnh create table để định nghĩa khóa phụ cho bảng

– Ràng buộc UNIQUE cho phép null

Page 86: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

86 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Ràng buộc - UNIQUE - Khóa duy nhất (tt)

• Cú pháp:– CREATE TABLE <tên bảng> ([ds cột, ] <tên cột> <kdl> [CONSTRAINT <tên RB>]UNIQUE [,ds cột])

• Ví dụ:

CREATE TABLE KhachHang (

makh int PRIMARY KEY,

tenkh nvarchar(30),

diachi nvarchar(30),

sodt char(10) UNIQUE )

Page 87: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

87 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Ràng buộc - Khóa ngoại (foreign key)

• Một khóa ngoại trong một bảng là một cột, nó chỉ đến một khóa chính trong một bảng khác

• Ràng buộc khóa ngoại được sử dụng để đảm bảo toàn vẹn tham chiếu

• Cú pháp:– CREATE TABLE <tên bảng 1>(

[ds cột,] <tên cột> <kdl> [CONSTRAINT <tên RB>]FOREIGN KEY REFERENCES<tên bảng 2>(cột làm khóa chính> [, ds cột])

Page 88: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

88 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Ràng buộc - Khóa ngoại (foreign key)

•Ví dụ:

CREATE TABLE Nhanvien(manv char(5) NOT NULL, tennv nvarchar(30), manqly char(5),phong int foreign key references PhongBan(maphong)

)

•Hoặc có thể viết như sau:

CREATE TABLE Nhanvien(manv char(5) NOT NULL,tennv nvarchar(30), manqly char(5), phong int constraint fk_nv_pb foreign key(phong) references PhongBan(maphong)

)

Page 89: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

89 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tạo bảng – Ràng buộc - Ràng buộc kiểm tra (Check)

•Ràng buộc check

–Được sử dụng để chỉ định điều kiện hợp lệ đối với dữ liệu

•Cú pháp:

– CREATE TABLE <tên bảng>([ds cột,] <tên cột> <kdl> [CONSTRAINT <tên RB>] CHECK (<điều kiện>)

•Ví dụ:

Create table KetQua(masv int, mamh char(4),diem float, lanthi int check(lanthi<3)

Page 90: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

90 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 91: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

91 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Câu lệnh cập nhật dữ liệu

• Là câu lệnh dùng để cập nhật dữ liệu.• Bao gồm các câu lệnh: INSERT, UPDATE, DELETE.

– Lệnh thêm dữ liệu vào bảng:INSERT INTO <Tên bảng> [(<DS các trường>)] VALUES (<DS các giá trị tương ứng>)

- Vd: MON (MaMH, TenMH, DVHT)Thêm vào bảng MON với mã môn TH345, tên môn Cơ sở dữ liệu, đơn vị học trình là 5INSERT INTO MON VALUES ('TH345', 'Cơ sở dữ liệu',5)

Hoặc: INSERT INTO MON (MaMH, TenMH, DVHT) VALUES('TH345', 'Cơ sở dữ liệu',5)

Page 92: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

92 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Câu lệnh cập nhật dữ liệu (tt)

• Một số lưu ý:– Thêm ký tự N trước chuỗi Unicode

• Ví dụ:

insert into NhanVien values(‘NV01’,N’Nguyễn văn Trường’, ‘Nam’)

– Thuộc tính NOT NULL• Nếu thuộc tính được khai báo là NOT NULL thì bắt buộc phải

có giá trị khi nhập 1 bộ vào bảng

Page 93: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

93 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Câu lệnh cập nhật dữ liệu (tt)

• Một số lưu ý (tt)– Nhập dữ liệu khi đã có ràng buộc khóa ngoại

• Trường hợp 1: – Cách 1:

• B1: Nhập PHONGBAN• B2: Nhập DEAN

– Cách 2: • B1: Nhập DEAN, nhập phong = null• B2: Nhập PHONGBAN• B3: Cập nhật DEAN

Page 94: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

94 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Câu lệnh cập nhật dữ liệu (tt)

• Một số lưu ý (tt)– Nhập dữ liệu khi đã có ràng buộc khóa ngoại

• Trường hợp 2: – Cách 1:

• B1: Nhập NHANVIEN, đặt phong = null• B2: Nhập PHONGBAN• B3: Cập nhật thuộc tính phong của

NHANVIEN

– Cách 2: • B1: Nhập PHONGBAN, đặt trphong =

null• B2: Nhập NHANVIEN• B3: Cập nhật PHONGBAN

Page 95: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

95 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Câu lệnh cập nhật dữ liệu (tt)

• Một số lưu ý (tt)– Nhập dữ liệu khi đã có ràng buộc khóa ngoại

• Trường hợp 3: – Cách 1:

• Những nhân viên có manql là null thì nhập trước

• Sau đó nhập những nhân viên mà đã nhập thông tin người quản lý nhân viên đó.

– Cách 2: • B1: Nhập NHANVIEN đặt manql =

null• B2: Cập nhật manql của NHANVIEN

Page 96: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

96 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Câu lệnh cập nhật dữ liệu (tt)- Lệnh Update, Delete

• Lệnh cập nhật dữ liệu trong bảng: UPDATE <Tên bảng> SET <Tên trường1> = <GT1>,...., <Tên trườngN> = <GTN> [WHERE <điều kiện>]

• Vd: Cập nhật số DVHT cho môn học 'TH345' tăng 1 UPDATE MON SET DVHT = DVHT + 1 WHERE MaMH = 'TH345'

• Lệnh xóa dữ liệu khỏi bảng: DELETE FROM <Tên bảng> [WHERE <điều kiện chọn>]

• Vd: Xóa các môn học có số DVHT nhỏ hơn 2 DELETE FROM MON WHERE DVHT < 2

• Lưu ý: Câu lệnh delete chỉ xóa dữ liệu của bảng, cấu trúc bảng tạo bởi câu lệnh create table vẫn được giữ nguyên.

Page 97: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

97 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 98: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

98 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các lệnh về thay đổi cấu trúc bảng- Thêm, xóa, sửa một cột (thuộc tính)

• Thêm một cột vào bảng có sẵn– Cú pháp

ALTER TABLE <tên bảng> ADD <tên cột 1> <kdl1>[,<tên cột 2> <kdl2>, ...]

– Ví dụ: Thêm cột ngaysinh vào bảng NhanVien

ALTER TABLE NhanVien ADD ngaysinh datetime

Page 99: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

99 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các lệnh về thay đổi cấu trúc bảng- Thêm, xóa, sửa một cột (thuộc tính) (tt)

• Chỉnh sửa cột trong bảng– Cú pháp

ALTER TABLE <table_name>

ALTER COLUMN <tên cột 1> <kdl1> [,<tên cột 2> <kdl2> ...]

– Ví dụ: Sửa cột tennv trong bảng NhanVien thành cột có kiểu dữ liệu là nvarchar(20)ALTER TABLE NhanVien ALTER tennv

nvarchar(20)

Page 100: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

100 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các lệnh về thay đổi cấu trúc bảng- Thêm, xóa, sửa một cột (thuộc tính) (tt)

• Xóa cột trong bảng– Cú pháp

ALTER TABLE <table_name> DROP COLUMN <column_name1> [,<column_name2>

– Ví dụ: Xóa cột diadiem trong bảng PhongBanALTER TABLE PhongBan DROP COLUMN

diadiem

Page 101: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

101 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Thêm ràng buộc khóa chính

• Thêm RB khóa chính– Cú pháp

ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> PRIMARY KEY (<DS các cột làm khóa chính>)

- Ví dụ: Thêm khóa chính cho bảng KetQua

ALTER TABLE KetQua ADD CONSTRAINT pk_kq PRIMARY KEY(masv,mamh)

Page 102: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

102 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Thêm ràng buộc khóa ngoại

• Thêm RB khóa ngoại– Cú pháp

ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> FOREIGN KEY (<DS các cột làm khóa ngoại>) REFERENCES <tên bảng tham chiếu>(<ds cột>)

- Ví dụ: Thêm RB khóa ngoại cho bảng KetQua

ALTER TABLE KetQua ADD CONSTRAINT fk_kq_sv FOREIGN KEY(masv) REFERENCES SinhVien(masv)

Page 103: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

103 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Thêm ràng buộc kiểm tra (check)

• Thêm RB kiểm tra– Cú pháp

ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> CHECK(<điều kiện>)

- Ví dụ: Thêm RB kiểm tra đảm bảo thuộc tính phai trong bảng NhanVien chỉ nhận giá trị “nam” hoặc “nữ”

ALTER TABLE NhanVien ADD CONSTRAINT ck_phai CHECK(phai in (‘nam’,’nu’))

Page 104: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

104 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Xóa ràng buộc khóa chính, khóa ngoại, check

• Cú pháp

ALTER TABLE <tên bảng> DROP CONSTRAINT <tên RB>

- Ví dụ: - Xóa RB kiểm tra trong bảng NhanVien

ALTER TABLE NhanVien

DROP CONSTRAINT ck_phai- Xóa RB khóa ngoại trong bảng KetQua

ALTER TABLE KetQua

DROP CONSTRAINT fk_kq_sv

Page 105: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

105 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000

• Các kiểu dữ liệu trong SQL

• Câu lệnh định nghĩa dữ liệu– Tạo cơ sở dữ liệu

– Tạo bảng

– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng

– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản

– Truy vấn lồng

– Hàm kết hợp và gom nhóm

– Một số dạng truy vấn khác

• Khung nhìn

Page 106: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

106 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Xóa bảng

• Cú pháp:Drop table <tên bảng>

• Ví dụ: Xóa bảng NhanVienDrop table NhanVien

• Lưu ý khi xóa bảng có liên quan đến khóa ngoại:– Nếu không có tham chiếu vòng thì tiến hành xóa bảng

chứa khóa ngoại trước sau đó xóa bảng còn lại, hoặc xóa khóa ngoại rồi sau đó tiến hành xóa các bảng.

– Nếu có tham chiếu vòng thì xóa một khóa để làm mất tham chiếu vòng rồi tiến hành như trường hợp 1.

– Có thể sử dụng câu lệnh sau làm vô hiệu hóa các RB trên bảng trước khi xóa bảng:

Alter table <tên bảng> nocheck constraint all

Page 107: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

107 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ví dụ tổng hợp

• Tạo csdl gồm các lược đồ sau:– SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc)

– DETAI (MaDT, TenDT, Chunhiem, Kinhphi)

– SV_DT (MaSV, MaDT, NoiAD, KQ)Create table SinhVien(

masv int primary key, hoten nvarchar(30),

namsinh datetime, qq nvarchar(20), hocluc float)

Create table DeTai(

madt int primary key, tendt nvarchar(30),

chunhiem nvarchar(30), kinhphi int)

Create table SV_DT(

masv int foreign key references SinhVien(masv),

madt int foreign key references DeTai(madt),

noiAD nvarchar(20), kq float,

constraint pk_svdt primary key(masv,madt))

Page 108: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

108 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000

• Các kiểu dữ liệu trong SQL

• Câu lệnh định nghĩa dữ liệu– Tạo cơ sở dữ liệu

– Tạo bảng

– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng

– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản

– Truy vấn lồng

– Hàm kết hợp và gom nhóm

– Một số dạng truy vấn khác

• Khung nhìn

Page 109: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

109 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Cơ sở dữ liệu ví dụ

• Trong suốt phần sau của chương này, ta sử dụng csdl sau làm ví dụ minh họa:– NhanVien(manv, honv, tenlot, tennv, ngaysinh, diachi,

phai, luong, manql, phong)– PhongBan(maphong,tenphong,trphong, ngnhanchuc)

– DDPhong(maphong, diadiem)

– DeAn(tenda, mada, ddiemda, phong)– PhanCong(manvien, soda, thoigian)– ThanNhan(manvien, tentn, phai, ngaysinh, quanhe)

Page 110: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

110 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT110

Truy vấn dữ liệu

• Là ngôn ngữ rút trích dữ liệu – Thường đi kèm với một số điều kiện nào đó

• Dựa trên

– Cho phép kết quả trả về của bảng có nhiều dòng trùng nhau

Phép toán ĐSQH

Một số bổ sung

+

Page 111: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

111 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT111

Truy vấn cơ bản

• Gồm 3 mệnh đề

– <danh sách các cột>• Tên các cột cần được hiển thị trong kết quả truy vấn

– <danh sách các bảng>• Tên các bảng liên quan đến câu truy vấn

– <điều kiện>• Biểu thức boolean xác định dòng nào sẽ được rút trích

• Nối các biểu thức: AND, OR, và NOT

• Phép toán: < , > , <= , >= , <> , = , LIKE và BETWEEN

SELECT [DISTINCT] <danh sách các cột>

FROM <danh sách các bảng>

[WHERE] <điều kiện>

Từ khóa DISTINCT để loại bỏ các dòng trùng nhau

trong bảng kết quả

Page 112: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

112 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• SQL và ĐSQH

Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)

SELECT <danh sách các cột>

FROM <danh sách các bảng>

WHERE <điều kiện>σ

π×

SELECT L

FROM R

WHERE Cπ L (σ C (R))

Page 113: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

113 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)

• Ví dụ: Cho biết ds sinh viên lớp có mã là ‘Ti01’SELECT *

FROM SinhVien

WHERE malop = ‘Ti01’

– Tương đương với biểu thức đsqh sau:

σ malop = ‘Ti01’ (SinhVien)

Dấu * để chỉ tất cả các cột

Page 114: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

114 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)

• Ví dụ: Cho biết ds sinh viên nam của lớp có mã ‘Ti01’

SELECT masv, hoten, ngaysinh, phai, malop

FROM SinhVien

WHERE malop = ‘Ti01’ and phai = ‘Nam’

– Tương đương với biểu thức đsqh sau:

∏ masv, hoten, ngaysinh, phai, malop (σ malop = ‘Ti01’and phai=‘Nam’ (SinhVien))

Page 115: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

115 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)

• Tên bí danh: – Có thể đặt lại tên cho ds các thuộc tính trong bảng kết

quả (gọi là tên bí danh) bằng cách sử dụng cú pháp sau:

Select <tên cột> AS <tên mới cho cột>– Ví dụ

SELECT masv AS ma, hoten AS ‘Ho ten’, ngaysinh, phai, malop

FROM SinhVien

WHERE malop = ‘Ti01’ and phai = ‘Nam’

Page 116: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

116 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)

• Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của danh sách sinh viên lớp ‘công nghệ thông tin 01’

SELECT

FROM

WHERE

maso, hoten, ngaysinh, tenlop

SinhVien, LopHoc

tenlop=‘Cong nghe thong tin 01’

SinhVien.malop=LopHoc.malop

AND

Page 117: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

117 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)

• Tên bí danh cho bảng– Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của

danh sách sinh viên lớp ‘công nghệ thông tin 01’

Select maso, hoten, ngaysinh, tenlop

From SinhVien sv, LopHoc lh

Where tenlop = =‘Cong nghe thong tin 01’

and sv.malop = lh.malop

Page 118: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

118 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)- Toán tử between, not between, like, not like

• BETWEENSELECT MANV, TENNV

FROM NHANVIEN

WHERE LUONG > 20000 AND LUONG < 30000

• Có thể viết:SELECT MANV, TENNV

FROM NHANVIEN

WHERE LUONG BETWEEN 20000 AND 30000

• Sử dụng NOT BETWEEN tương tự

Page 119: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

119 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)- Toán tử between, not between, like, not like

• LIKESELECT masv, hoten, ngaysinh FROM SinhVienWHERE hoten LIKE ‘Nguyen _ _ _ _’

– HoặcSELECT masv, hoten, ngaysinh FROM SinhVienWHERE hoten LIKE ‘Nguyen %’

• Sử dụng NOT LIKE tương tự• Lưu ý:

– Like “ab\%cd%” cho ra những chuỗi bắt đầu với “ab%cd”

– Like “ab\\cd%” cho ra những chuỗi bắt đầu với “ab\cd”

Page 120: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

120 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)- Ví dụ

• Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã phòng ban chủ trì đề án, họ tên trưởng phòng cùng với ngày sinh và địa chỉ của người ấy

Page 121: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

121 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)- Ví dụ

• Cho biết họ tên của nhân viên phòng số 5 có tham gia vào đề án “Sản phẩm X” với số giờ làm việc trên 10 giờ

Page 122: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

122 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản (tt)- Ví dụ

• Cho biết họ tên của từng nhân viên và người quản lý trực tiếp nhân viên đó

• Tìm họ tên của những nhân viên được “Nguyen Thanh Tung” quản lý trực tiếp (ngược với câu trên)

Page 123: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

123 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản - Mệnh đề ORDER BY

• Dùng để hiển thị kết quả câu truy vấn theo một thứ tự nào đó

• Cú pháp:SELECT <ds các cột>

FROM <ds các bảng>

WHERE <điều kiện>

ORDER BY <danh sách các cột><kiểu sắp>

– Trong đó <kiểu sắp> có thể là: • ASC: tăng (mặc định)• DESC: giảm

Page 124: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

124 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn cơ bản - Mệnh đề ORDER BY (tt)

• Ví dụ: SELECT MANVIEN, SODA

FROM PHANCONG

ORDER BY MANVIEN DESC, SODA

SODA

10

30

999887777999887777

MANVIEN

10

30987987987987654321

987987987

10

20987654321 30987654321

Page 125: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

125 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 126: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

126 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Truy vấn lồng

• Các câu lệnh SELECT có thể lồng nhau ở nhiều mức

• Các câu truy vấn con trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic

• Câu truy vấn con thường trả về một tập các giá trị

• Cú pháp: SELECT <danh sách các cột>

FROM <danh sách các bảng>

WHERE <so sánh tập hợp> (

SELECT <danh sách các cột>

FROM <danh sách các bảng>

WHERE <điều kiện>)

Page 127: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

127 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT127

• Mệnh đề WHERE của câu truy vấn cha– <biểu thức> <so sánh tập hợp> <truy vấn con>– So sánh tập hợp thường đi cùng với một số toán tử

• IN, NOT IN

• ALL

• ANY hoặc SOME

– Kiểm tra sự tồn tại• EXISTS• NOT EXISTS

Truy vấn lồng (tt)

Page 128: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

128 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Có 2 loại truy vấn lồng– Lồng phân cấp

• Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha

• Khi thực hiện, câu truy vấn con sẽ được thực hiện trước, 1 lần

– Lồng tương quan• Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một

thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha

• Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộ của truy vấn cha

Truy vấn lồng (tt)

Page 129: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

129 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ: SELECT MANV, TENNV

FROM NHANVIEN, DDPhong

WHERE DIADIEM=‘TP HCM’ AND phong=maphong

• Tương đương với câu truy vấn lồng sau:SELECT MANV, TENNV

FROM NHANVIEN

WHERE PHONG IN (SELECT MAPHONG

FROM DDPHONG

WHERE DIADIEM=‘TP HCM’

)

Truy vấn lồng (tt)- Ví dụ lồng phân cấp

Page 130: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

130 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ: Tìm những nhân viên không có thân nhân nào

Truy vấn lồng (tt)- Ví dụ lồng phân cấp

Page 131: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

131 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:SELECT MANV, TENNV

FROM NHANVIEN

WHERE EXISTS (

SELECT *

FROM PHONGBAN

WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG)

Câu truy vấn trên cho kết quả gì? Tương đương với câu truy vấn đơn giản nào?

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG

Truy vấn lồng (tt)- Ví dụ lồng tương quan

Page 132: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

132 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Tìm nhân viên có người thân cùng tên và cùng giới tính với nhân viên đó

Truy vấn lồng (tt)- Ví dụ

Page 133: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

133 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Tìm những nhân viên có lương lớn hơn lương của ít nhất một nhân viên phòng 4

• Tìm những nhân viên có lương lớn hơn lương của tất cả nhân viên phòng 4

Truy vấn lồng (tt)- Ví dụ

Page 134: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

134 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT134

• IN– <tên cột> IN <câu truy vấn con>– Thuộc tính ở mệnh đề SELECT của truy vấn con phải

có cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE của truy vấn cha

• EXISTS– Không cần có thuộc tính, hằng số hay biểu thức nào

khác đứng trước– Không nhất thiết liệt kê tên thuộc tính ở mệnh đề

SELECT của truy vấn con– Những câu truy vấn có = ANY hay IN đều có thể

chuyển thành câu truy vấn có EXISTS

Truy vấn lồng (tt)- Nhận xét

Page 135: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

135 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 136: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

136 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm

• Hàm kết hợp:– Được sử dụng trong mệnh đề SELECT– Có các hàm kết hợp sau:

• COUNT

– COUNT(*) đếm số dòng

– COUNT(<tên thuộc tính>) đếm số giá trị khác NULL của thuộc tính

– COUNT(DISTINCT <tên thuộc tính>) đếm số giá trị khác nhau và khác NULL của thuộc tính

– MIN• MAX• SUM• AVG

Page 137: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

137 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)

• Ví dụ: – Tìm tổng lương, lương cao nhất, lương thấp nhất và

lương trung bình của các nhân viên– Select sum(luong) as ‘tong luong’, min(luong) as

‘luong nho nhat’, max(luong) as ‘luong lon nhat’, avg(luong) as ‘luong tb’

From NhanVien

– Cho biết số lượng nhân viên của phòng ‘Nghien cuu’

Page 138: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

138 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)

• Gom nhóm:– Nhóm các bộ có cùng giá trị ở một tập các thuộc tính

lại với nhau– Cú pháp:

SELECT <danh sách các cột>

FROM <danh sách các bảng>

WHERE <điều kiện>

GROUP BY <danh sách các cột gom nhóm>

Page 139: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

139 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)

• Ví dụ: – Cho biết số lượng nhân viên của từng phòng ban

– Cho biết thông tin của những phòng ban có nhiều hơn 10 nhân viên

Page 140: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

140 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)

• Ví dụ: – Với mỗi nhân viên cho biết mã số, họ tên, số lượng đề

án và tổng thời gian mà họ tham giaSELECT HONV, TENNV, COUNT(*) AS SL_DA,

SUM(THOIGIAN) AS TONG_TG

FROM PHANCONG, NHANVIEN

WHERE MANVIEN=MANV

GROUP BY MA_NVIEN, HONV, TENNV

– Cho biết những nhân viên tham gia từ 2 đề án trở lên

Page 141: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

141 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)

• Cú pháp:SELECT <danh sách các cột>

FROM <danh sách các bảng>

WHERE <điều kiện>

GROUP BY <danh sách các cột gom nhóm>

HAVING <điều kiện trên nhóm>

• Ví dụ: Cho biết những nhân viên tham gia từ 2 đề án trở lên

Page 142: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

142 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)

• Ví dụ: – Cho biết những phòng ban (TENPHONG) có lương

trung bình của các nhân viên lớn lơn 20000

Page 143: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

143 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)- Nhận xét

• Mệnh đề GROUP BY – Các thuộc tính trong mệnh đề SELECT (trừ những

thuộc tính trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP BY

• Mệnh đề HAVING– Sử dụng các hàm kết hợp trong mệnh đề SELECT để

kiểm tra một số điều kiện nào đó

– Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên từng bộ

– Sau khi gom nhóm điều kiện trên nhóm mới được thực hiện

Page 144: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

144 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)- Nhận xét

• Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING – (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề

WHERE– (2) Những dòng này sẽ được gom thành nhiều nhóm

tương ứng với mệnh đề GROUP BY

– (3) Áp dụng các hàm kết hợp cho mỗi nhóm

– (4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề HAVING

– (5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT

Page 145: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

145 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Hàm kết hợp và gom nhóm (tt)

• Ví dụ: – Tìm phòng ban có lương trung bình cao nhất

– Tìm 3 nhân viên có lương cao nhất

– Tìm tên các nhân viên được phân công làm tất cả các đồ án

Page 146: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

146 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 147: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

147 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM

• Thông thường điều kiện của phép kết nối được chỉ định trong mệnh đề where của câu truy vấn thông qua các biểu thức so sánh giữa các bảng tham gia câu truy vấn.

• Chuẩn SQL2 đưa ra một cách khác để biểu diễn cho phép nối. Trong cách biểu diễn này: – Điều kiện của phép kết nối được chỉ định ngay trong

mệnh đề From.– Ưu điểm: Cho phép biểu diễn phép nối và điều kiện

nối rõ ràng (đặc biệt trong trường hợp phép nối được thực hiện từ 3 bảng trở lên)

Page 148: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

148 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối bằng (kết nối trong)– Cú pháp:

SELECT <danh sách các cột>FROM R1 [INNER] JOIN R2 ON <biểu thức>WHERE <điều kiện>

- Ví dụ: Hiển thị họ tên và ngày sinh, tên lớp của danh sách sinh viên lớp ‘Cong nghe thong tin 01’ ta có thể viết theo 2 cách sau:select hoten, ngaysinh, tenlopFrom SinhVien, LopHocWhere SinhVien.malop = LopHoc.malop and tenlop = ‘Cong nghe thong tin 01’

- Hoặc có thể viết như sau:select hoten, ngaysinh, tenlopFrom SinhVien INNER JOIN LopHoc ON SinhVien.malop = LopHoc.malop

Where tenlop = ‘Cong nghe thong tin 01’

Page 149: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

149 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối ngoài– Cú pháp:

SELECT <danh sách các cột>

FROM R1 LEFT|RIGHT|FULL [OUTER] JOIN R2 ON <biểu thức> WHERE <điều kiện>

– Ví dụ:

Page 150: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

150 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối ngoài– Ví dụ: ta có 2 bảng NhanVien và DonVi như sau:

• Khi đó, phép kết nối ngoài trái 2 bảng trên cho kết quả sau:select *

from NhanVien left join DonVi

on NhanVien.madv = DonVi.madv

Page 151: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

151 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối ngoài– Ví dụ: ta có 2 bảng NhanVien và DonVi như sau:

• Phép kết nối ngoài phải 2 bảng trên cho kết quả sau:select *

from NhanVien right join DonVi

on NhanVien.madv = DonVi.madv

Page 152: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

152 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối ngoài– Ví dụ: ta có 2 bảng NhanVien và DonVi như sau:

• Phép kết nối ngoài đầy đủ 2 bảng trên cho kết quả sau:select *

from NhanVien full join DonVi

on NhanVien.madv = DonVi.madv

Page 153: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

153 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM (tt)

• Ví dụ:– Tìm mã và tên các nhân viên làm việc tại phòng

‘Nghien cuu’

– Cho biết họ tên nhân viên và tên phòng ban mà họ là trưởng phòng nếu có

Page 154: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

154 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Điều kiện kết ở mệnh đề FROM (tt)

• Ví dụ:– Tìm họ tên các nhân viên và tên các đề án nhân viên

tham gia nếu có

Page 155: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

155 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương III

• Giới thiệu sơ lược HQT CSDL SQL server 2000• Các kiểu dữ liệu trong SQL • Câu lệnh định nghĩa dữ liệu

– Tạo cơ sở dữ liệu– Tạo bảng– Câu lệnh cập nhật dữ liệu

– Câu lệnh thay đổi cấu trúc bảng– Xóa bảng

• Câu lệnh thao tác dữ liệu– Truy vấn dữ liệu cơ bản– Truy vấn lồng– Hàm kết hợp và gom nhóm– Một số dạng truy vấn khác

• Khung nhìn

Page 156: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

156 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Khung nhìn (View)

• Bảng là một quan hệ được tổ chức lưu trữ vật lý trong CSDL

• Khung nhìn cũng là một quan hệ– Không được lưu trữ vật lý (bảng ảo)– Không chứa dữ liệu – Được định nghĩa từ những bảng khác– Có thể truy vấn hay cập nhật thông qua khung nhìn

Page 157: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

157 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Khung nhìn (View)- Định nghĩa

• Tạo khung nhìn– CREATE VIEW <tên khung nhìn> AS <câu truy vấn>

– Bảng ảo này có• Danh sách thuộc tính trùng với các thuộc tính trong mệnh đề

SELECT• Số dòng phụ thuộc vào điều kiện ở mệnh đề WHERE• Dữ liệu được lấy từ các bảng ở mệnh đề FROM

• Xóa bỏ khung nhìn:

DROP VIEW <tên khung nhìn>

Page 158: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

158 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐTThs. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Khung nhìn (View)- Ví dụ

• Tạo khung nhìn NVP5 chứa danh sách các nhân viên phòng số 5

CREATE VIEW NVP5 AS

SELECT MANV, HONV, TENLOT, TENVN

FROM NHANVIEN

WHERE PHG=5

• Sử dụng khung nhìn như một bảng SELECT TENNV

FROM NVP5

WHERE luong > 2000

Page 159: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

159 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Khung nhìn (View)- Cập nhật, bổ sung và xóa dữ liệu qua view

• SV tự tìm hiểu

Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Page 160: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

160 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

BÀI TẬP CHƯƠNG III

• Cho lược đồ csdl QLBanHang được mô tả như sau:

Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Page 161: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

161 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

BÀI TẬP CHƯƠNG III (tt)

• Thực hiện các yêu cầu sau bằng SQL– Tạo csdl và tạo các bảng, nhập dữ liệu cho các bảng trong csdl

– Cho biết mã và tên của các mặt hàng có giá lớn hơn 10 và số lượng hiện có ít hơn 20

– Cho biết thông tin những khách hàng nào đã mua mặt hàng áo Việt Tiến

– Cho biết thông tin những mặt hàng nào chưa từng được khách hàng đặt mua?

– Cho biết tổng số lượng bán được của mỗi mặt hàng

– Bổ sung ràng buộc cho bảng DONDATHANG rang buộc kiểm tra ngày giao hàng và ngày chuyển hàng phải sau hoặc bằng với ngày đặt hàng.

– Cho biết thông tin những khách hàng có cùng ngày sinh

– Thống kê số lượng hóa đơn đã lập của mỗi nhân viên

Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Page 162: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Chương IV

RÀNG BUỘC TOÀN VẸN

email: [email protected]

Page 163: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

163 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CSDL mẫu

• A) CSDL HSSINHVIEN– SINH_VIEN(maSV, hotenSV, nam, ngSinh,

maKhoa)• maSV: mã số sinh viên• Nam = true nếu sinh viên là nam và = false nếu là nữ;

maKhoa: mã số khoa mà sinh viên đang theo học.

- KHOA(maKhoa, tenKhoa, soCB)• soCB: tổng số cán bộ giảng dạy của khoa.

– MON_HOC(maMH, tenMH, soTietLT, soTietTH)• soTietLT, soTietTH là tổng số tiết lý thuyết và tổng số tiết

thực hành của môn học.

– KET_QUA(maSV, maMH, lanThi, diem)

Page 164: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

164 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CSDL mẫu (tt)

• B) CSDL QLHANGHOA QL. đơn hàng và hóa đơn giao hàng của một cty thương mại.– KHACH(maKH, tenKh, diachiKH, dienThoai,

congNo)• congNo: công nợ với khách hàng, nếu congNo > 0: khách

hàng nợ công ty và ngược lại.

– HANG_HOA(maHH, tenHH, dvTinh)

– DAT_HANG(soDH, maHH, soLuongDat, ngayDH, maKH)

• soDH: mã số của của đơn đặt hàng, một đơn đặt hàng có thể gồm nhiều mặt hàng. maHH: mã số của h.hóa mà k.hàng cần đặt mua.

Page 165: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

165 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CSDL mẫu (tt)

– HOA_DON(soHD, ngayHD, soDH, trigiaHD, ngayXuat)• soHD: mã số của hóa đơn bán hàng cho khách. Một hóa

đơn bán hàng có thể gồm nhiều mặt hàng. • ngayHD: ngày phát hành hóa đơn• soDH: hóa đơn bán hàng theo yêu cầu của một đơn đặt

hàng có mã số là soDH và ngược lại, mỗi đơn đặt hàng sẽ được giải quyết chỉ trong một hóa đơn. Do điều kiện khách quan, có thể cty ko giao đầy đủ các mặt hàng cũng như số lượng từng mặt hàng như yêu cầu trong đơn đặt hàng nhưng ko bao giờ giao vượt ngoài yêu cầu.

Page 166: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

166 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CSDL mẫu (tt)

– CTIET_HD(soHD, maHH, giaBan, soLuongBan) (chi tiết những mặt hàng bán được cho khách hàng)

• soHD: mã số của hóa đơn bán hàng cho khách• maHH: mã số của hàng hóa bán cho khách theo yêu cầu

của đơn đặt hàng.

– PHIEU_THU(soPT, ngayPT, maKH, soTien)• soPT: mã số phiếu thu tiền của khách hàng; khách hàng có

thể trả tiền không theo một hóa đơn bán hàng nào cả và cũng có thể trả tiền trước khi nhận hàng xem như tiền đặt cọc.

• ngayPT: ngày phát hành phiếu thu tiền• maKH: mã số khách hàng trả tiền• soTien: số tiền thu của khách hàng

Page 167: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

167 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn- Khái niệm

• Trong một CSDL, – luôn tồn tại rất nhiều mối liên hệ,

– rất nhiều sự ràng buộc qua lại giữa các thuộc tính, các bộ với nhau…

– Các mối liên hệ, ràng buộc này là những điều kiện bất biến mà tất cả các bộ của những qh. có liên quan trong CSDL đều phải thỏa mãn ở bất kỳ thời điểm nào.

• RBTV là Những điều kiện bất biến mà các đối tượng của CSDL phải thỏa mãn ở bất kỳ thời điểm nào.

• Trong thực tế, RBTV là các QT. quản lý được áp đặt lên trên các đối tượng của thế giới thực.

Page 168: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

168 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn- Khái niệm (tt)

• Vd 1: Trong CSDL HSSINHVIEN ta có một số RBTV như sau:

• C1: Mỗi sinh viên có một mã số riêng biệt, không trùng với bất kỳ sinh viên nào khác.

• C2: Mỗi sinh viên chỉ được thi tối đa hai lần cho một môn học.

• C3: Mỗi sinh viên phải thuộc về một khoa nào đó.

• Công việc kiểm tra RBTV có thể được tiến hành vào một trong các thời điểm sau:– ngay khi thực hiện một thao tác câp nhật CSDL

(thêm, sửa, xóa…).

– định kỳ hay đột xuất.

Page 169: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

169 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn

• Một RBTV có ba yếu tố: điều kiện, bối cảnh và tầm ảnh hưởng

• Điều kiện của một RBTV– có thể được biểu diễn bằng ngôn ngữ tự nhiên, thuật

giải, ngôn ngữ đại số tập hợp, đại số quan hệ…

– cũng có thể được biểu diễn bằng phụ thuộc hàm. (sẽ tìm hiểu sau này)

Page 170: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

170 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn

• Bối cảnh của một RBTV C:– là những quan hệ mà RBTV đó có hiệu lực.– có thể là một hay nhiều quan hệ. – Vd 2: bối cảnh của RBTV C1 là quan hệ SinhVien.

Page 171: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

171 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt)

• Tầm ảnh hưởng của một RBTV– nhằm xác định thời điểm cần kiểm tra các RBTV đó.– Bảng tầm ảnh hưởng của một RBTV C

Thêm Sửa Xóa

R1 + + +

R2 – + –

Rn – + +

Thêm Sửa Xóa

SinhVien + –(*) –

Vd 3: Bảng tầm ảnh hưởng của ràng buộc C1

Trong đó, C có bối cảnh là các quan hệ R1,.., Rn+: cần phải kiểm tra RBTV C–: không cần kiểm tra RBTV C

Page 172: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

172 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại

• Các RBTV có thể được chia làm hai loại chính:– RBTV có bối cảnh là một quan hệ– RBTV có bối cảnh nhiều quan hệ

Page 173: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

173 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH

• RBTV về miền giá trị– liên quan đến miền giá trị của các thuộc tính.

• Vd 4: trong LĐQH Ketqua ta có: Miền giá trị(Diem)=0..10– phòng đào tạo quy định thêm một RBTV là: Điểm thi có

độ chính xác đến 0.5 điểm, điều kiện ràng buộc này có thể được biểu diễn như sau:

(t.Diem * 4) mod 2 = 0, ∀t ∈ Ketqua

– trong quan hệ NHANVIEN(maNV,tenNV, luong, tamUng, conLai), ta có: RBTV về miền giá trị:

tamUng ≤ luong

Page 174: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

174 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt)

• RBTV liên thuộc tính– thể hiện mối liên hệ giữa các thuộc tính trong cùng một

lược đồ quan hệ.

• Vd 5: Trong LĐQH HoaDon, ta có một RBTV liên thuộc tính như sau:

“Hàng hóa chỉ được xuất kho sau khi đã lập hóa đơn”

∀hd ∈ THOADON

hd.ngayHD ≤ hd.ngayXuat

– Lưu ý: MGT của một th.t A được tính toán từ các th.t khác trong cùng một LĐQH với A thì ta cũng có được một RBTV liên thuộc tính nhưng trong quá trình thiết kế ta có thể loại bỏ thuộc tính A ra khỏi LĐQH.

Page 175: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

175 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt)

• RBTV liên bộ– Là sự ràng buộc giữa các bộ bên trong một quan hệ.– Thường được biểu diễn bằng phụ thuộc hàm.– là loại RBTV rất phổ biến, có mặt trong mọi LĐQH

của CSDL và thường được các hệ quản trị CSDL hỗ trợ phần tự động kiểm tra.

– Vd 6: ràng buộc C1 thuộc loại ràng buộc toàn vẹn liên bộ.

Page 176: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

176 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH

• RBTV về phụ thuộc tồn tại– Còn được gọi là RB về khóa ngoại (foreign key) và rất

phổ biến.

Vd 7:– a) Trong quan hệ KetQua, sự tồn tại của một bộ kq =

(msv, mon, lanthi, diem) ∈ KetQua hoàn toàn phụ thuộc vào

sự tồn tại của bộ sv ∈ SinhVien sao cho sv.maSV = msv.

– b) Trong quan hệ SinhVien, sự tồn tại của bộ sv = (‘To012’, ‘Pham Anh Hoang’, ‘true’, ‘12/06/81’, ‘To’) hoàn toàn phụ thuộc vào sự tồn tại của một bộ k ∈ Khoa, k = (‘To’, ‘Toan’, 30).

Page 177: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

177 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt)

• Giả sử có hai lược đồ quan hệ R1, R2. Hai tập hợp K1 và K2 lần lượt là các khóa của R1 và R2.

Hai dấu hiệu của phụ thuộc tồn tại như sau:

– (1) Nếu K1 ⊆ K2 thì ta có phụ thuộc tồn tại của R2 vào R1.

– (2) Nếu K1 ⊆ R2 (tập thuộc tính của lược đồ quan hệ R2) thì ta có một phụ thuộc tồn tại của R2 vào R1.

Tập hợp K1 gọi là khóa ngoại của R2.

– Vd 8: • ví dụ 1.7a) là trường hợp ràng buộc với dấu hiệu (1) và 1.7b) là

trường hợp ràng buộc với dấu hiệu (2).

Page 178: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

178 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt)

• RBTV về liên bộ, liên quan hệ– có tác dụng đối với từng nhóm các bộ của nhiều quan

hệ khác nhau. (thường là hai quan hệ)– Vd 9: ràng buộc “mỗi hóa đơn bán hàng phải có ít

nhất một mặt hàng” liên quan đến hai quan hệ, HoaDon và CtietHD trên hai lược đồ HOA_DON và CTIET_HD.

• Lưu ý là hóa đơn được lập theo đơn đặt hàng, nhưng trong chi tiết hóa đơn mới biết được công ty bán cho khách hàng những mặt hàng nào.

Page 179: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

179 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt)

• RBTV liên thuộc tính, liên quan hệ– Là mối liên hệ giữa các thuộc tính trong nhiều lược

đồ quan hệ.

• Vd 10:– Xét hai qh. DatHang va HoaDon của một thể hiện của

CSDL, ta có RB: “Ngày làm hóa đơn in trên hóa đơn phải sau ngày đặt hàng (in trên đơn đặt hàng)”

Page 180: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

180 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt)

• RBTV về thuộc tính tổng hợp– được xác định trong trường hợp một thuộc tính A của

một lược đồ quan hệ R được tính toán giá trị từ các thuộc tính của các lược đồ quan hệ khác.

• Vd 11: – Trong CSDL QLHANGHOA ta có RBTV: “số tiền công

nợ của kh. A sẽ bằng hiệu số giữa tổng trị giá của các hóa đơn bán cho khách hàng A và tổng số tiền thu của khách đó”

Page 181: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

181 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt)

• RBTV do có chu trình trong đồ thị biểu diễn của lược đồ CSDL– Một lược đồ CSDL có thể được biểu diễn bằng một

đồ thị vô hướng. Trong đó ta có hai loại nút: • nút thuộc tính và nút lược đồ quan hệ. • Một cung vô hướng trong đồ thị nối một nút thuộc tính A với

một nút lược đồ quan hệ R có nghĩa A ∈ R.

Page 182: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

182 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt)

• Vd 12:– Xem xét một phần của đồ thị biểu diễn lược đồ CSDL

QLHANGHOA gồm các lược đồ quan hệ DAT_HANG, HOA_DON và CTIET_HD.

– Ở đây, ta thấy đồ thị biểu diễn lược đồ CSDL có chứa một chu trình gồm 3 LĐQH DAT_HANG, HOA_DON và CTIET_HD.

Page 183: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

183 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều qh

DAT_HANG HOA_DON

CTIET_HD

soDHngayDHngayHD

soHD

sLuongBangiaBan

maHH

Page 184: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

184 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều qh

• Trong trường hợp này lược đồ CSDL QLHANGHOA sẽ phải có một RBTV thỏa một trong ba trường hợp sau:– (1) Một hóa đơn thực hiện cho một đơn đặt hàng chỉ giao

những mặt hàng mà khách đã yêu cầu và phải gồm đầy đủ tất cả những mặt hàng có trong đơn đặt hàng.

– (2) Một hóa đơn thực hiện cho một đơn đặt hàng chỉ giao những mặt hàng mà khách đã yêu cầu và có thể không giao đầy đủ tất cả những mặt hàng có trong đơn đặt hàng.

– (3) Một hóa đơn thực hiện cho một đơn đặt hàng có thể gồm tùy ý các mặt hàng dù có hay không trong đơn đặt hàng của khách.

Page 185: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

185 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

BÀI TẬP CHƯƠNG IV

• Cho các lược đồ quan hệ sau:– SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc)

• Mỗi sinh viên có Mã số duy nhất, họ tên, quê quán và học lực

– DETAI (MaDT, TenDT, Chunhiem, Kinhphi)• Mỗi đề tài có Mã số duy nhất, tên đề tài, chủ nhiệm đề tài,

kinh phí thực hiện đề tài (đơn vị tính: triệu đồng)

– SV_DT (MaSV, MaDT, NoiAD, KQ)• Mỗi SV có thể thực hiện một hoặc nhiều ĐT: mã số sinh

viên, mã đề tài, nơi áp dụng, kết quả thực hiện đề tài

• Xác định tất cả các ràng buộc có thể có trong lược đồ csdl trên.

Page 186: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Chương V

PHỤ THUỘC HÀM VÀ KHÓA

Email: [email protected]

Page 187: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

187 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương V

• Lý thuyết thiết kế CSDL• Phụ thuộc hàm

– Định nghĩa– Pth được suy dẫn lôgic từ F– Hệ tiên đề cho pth– Bao đóng của tập thuộc tính

• Khóa– Định nghĩa– Các thuật toán tìm khóa

• Phủ tối thiểu (cực tiểu) của tập pth– Khái niệm pth tương đương– Tập pth tối thiểu– Thuật toán tìm phủ tối thiểu

• Bài tập

Page 188: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

188 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

LÝ THUYẾT THIẾT KẾ CSDL

• Làm thế nào để thiết kế CSDL cho tốt?– Xét ví dụ sau:

S(S#, Sname, add, pro, price)

S# Sname add pro Price

TL01 Thiên Long Lý Thường Kiệt Dream

TK03 Tân Kiều Lê Lợi Wave

TK03 Tân Kiều Lê Lợi Serius

PV01 Phước Vĩnh

Phạm Hữu Lầu Future neo

TK03 Tân Kiều Lê Lợi Atila

Page 189: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

189 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

LÝ THUYẾT THIẾT KẾ CSDL (tt)

• Các vấn đề nảy sinh:– Dư thừa dữ liệu (redundancy):

• Địa chỉ và tên NCC được lặp lại nhiều lần trong quan hệ

– Không nhất quán (Inconsistency):• Ví dụ: Khi sửa đổi địa chỉ NCC ở một bộ nào đó còn bộ khác

vẫn giữ nguyên một NCC lại có hai địa chỉ

– Dị thường khi thêm bộ (Insertion anomalies): • Nếu một NCC chưa cung cấp một mặt hàng nào cả thì không

thể đưa vào quan hệ vì thuộc tính pro và price NULL

– Dị thường khi xóa bộ (deletion anomalies): • Không thể xóa tất cả các mặt hàng được cung cấp bởi một NCC

vì mặt hàng đó có thể được cung cấp bởi các NCC khác.

• Cách giải quyết: tách lược đồ ban đầu thành các LĐ phù hợp hơn

Page 190: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

190 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương V

• Lý thuyết thiết kế CSDL• Phụ thuộc hàm

– Định nghĩa– Pth được suy dẫn lôgic từ F– Hệ tiên đề cho pth– Bao đóng của tập thuộc tính

• Khóa– Định nghĩa– Các thuật toán tìm khóa

• Phủ tối thiểu (cực tiểu) của tập pth– Khái niệm pth tương đương– Tập pth tối thiểu– Thuật toán tìm phủ tối thiểu

• Bài tập

Page 191: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

191 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM

• Định nghĩa– X xác định hàm Y hay Y phụ thuộc hàm vào X, ký

hiệu XY nếu:

Với ∀r quan hệ xây dựng trên R(U), với t1, t2 ∈ r:

t1.X = t2.X ⇒ t1.Y = t2.Y (t.X: bộ t thu hẹp trên tập thuộc tính X)

• Ví dụ:

Page 192: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

192 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM - Ví dụ

e# ename dept_name dept_addr class

10 Peter Math G16 2nd

20 Joan CS G15 1st

30 Mike CS G15 1st

40 Kate CS G15 1st

50 Peter Law G20 2nd

60 Albert Physics G20 1st

– FD: dept_name class– Các FD khác: dept_namedept_addr

e# ename

e# dept_name, dept_addr, class

Page 193: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

193 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM (tt)

• Nhận xét: – Khóa trong quan hệ xác định mọi thuộc tính khác.– Các pth diễn tả mối TBTV liên bộ, liên thuộc tính.– Ký hiệu R(U,F) là lược đồ quan hệ R xây dựng trên U với tập

các ràng buộc phụ thuộc F.

– XY nhưng điều ngược lại chưa chắc đúng.

• e# ename nhưng ename e#↛• e# → edept_name nhưng edept_name e#↛

e# ename dept_name dept_addr class

10 Peter Math G16 2nd

50 Peter Law G20 2nd

20 Joan CS G15 1st

30 Mike CS G15 1st

40 Kate CS G15 1st

60 Albert Physics G20 1st

Page 194: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

194 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Phụ thuộc được suy dẫn lôgic từ F

• Định nghĩa: – Cho R(U,F), f là một phụ thuộc hàm trên R(U). Ta nói

f được suy dẫn lôgic từ F và ký hiệu F f⊨ nếu với mọi quan hệ r trên R(U) thỏa F thì cũng thỏa f.

– Ký hiệu F* = {f/F f }⊨ và gọi là bao đóng của tập phụ thuộc hàm F.

• Ví dụ: Cho U = {ABC}, F = {AB, BC},

dễ thấy F A⊨ C

Page 195: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

195 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Hệ tiên đề cho phụ thuộc hàm

• Hệ tiên đề Armstrong– R(U,F), U = (A1,…, An), X, Y, Z ⊆ U.

Hệ tiên đề Armstrong bao gồm:– (A1) (phản xạ) : nếu Y ⊆ X thì X Y

– (A2) (tăng trưởng) : nếu Z ⊆ U, X Y thì ZX ZY

– (A3) (bắc cầu) : nếu X Y và Y Z thì X Z

• Bổ đề 1:– Hệ tiên đề Armstrong là đúng đắn.

Page 196: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

196 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Hệ tiên đề cho phụ thuộc hàm (tt)

• Nhận xét: – Quá trình chứng minh bổ đề chỉ ra rằng một phụ thuộc

hàm f được suy diễn Armstrong từ F thì cũng được suy diễn lôgic từ F.

– Ký hiệu quá trình suy diễn bằng hệ quy tắc này là ⊢Arm

– Ký hiệu F+ = {f| F ⊢Arm f}

Khi đó F+ ⊆ F*– Nói rằng f được suy dẫn từ F bởi hệ tiên đề Armstrong nếu

tồn tại một chuỗi các phụ thuộc dữ liệu trên R mà phụ thuộc cuối cùng là f,

• Mỗi phụ thuộc dữ liệu trong chuỗi hoặc thuộc F hoặc được suy ra từ tập các phụ thuộc trước đó_qua một số bước xác định_bằng một trong số các luật suy dẫn này.

– Nếu f được suy dẫn từ F nhờ một hệ tiên đề cụ thể ta ký hiệu F ⊢ f.

Page 197: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

197 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Hệ tiên đề cho phụ thuộc hàm (tt)

• Bổ đề 2 (quy tắc suy diễn bổ sung)– (1) (Q.T. hợp) : nếu X Y, X Z thì X YZ– (2) (Q.T. giả bắc cầu): nếu X Y, WY Z thì WX

Z, với W ⊆ U– (3) (Q.T. tách) : nếu X Y, Z ⊆ Y thì X Z

• Các quy tắc này có thể dễ dàng chứng minh dựa vào hệ tiên đề Armstrong.

Page 198: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

198 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Dẫn xuất từ các PTH

• Cho F = {AB BC} hỏi AC có đúng không?

AB BC

AC

• Cho F = {ABC} hỏi AB và AC có đúng không?

ABC và BCB (phản xạ)

AB

Tương tự ta có AC

Luật bắc cầu

Page 199: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

199 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Dẫn xuất từ các PTH

• Cho F = {AB BC}, hỏi ABC đúng không?

• Cho F = {AB}, hỏi ACB đúng không

A ∈ AC ⇒ ACA và AB

⇒ ACB đúng

AB AC (bắc cầu)

ABC (hợp)

Page 200: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

200 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Bao đóng của tập thuộc tính

• Định nghĩa:F là tập phụ thuộc hàm trên tập thuộc tính U, X ⊆ U. Bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F, ký hiệu XF

+, XF

+ = {A ∈ U | (XA) ∈ F+ } • Là tập những thuộc tính A sao cho X A được suy diễn từ F nhờ tập các

quy tắc suy diễn Armstrong.

• Nhận xét:– X ⊆ X+� ∀A ∈ X thì A ∈ X+– Nếu Y = Ai1Ai2…Aik và X→Y, từ tiên đề tách, ta có:

X→Aij ∀j=1..k– Ý nghĩa: X+ chính là những thuộc tính phụ thuộc vào

X.

Page 201: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

201 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Bao đóng của tập thuộc tính (tt)

• Bổ đề 3: X Y được suy diễn từ F nhờ hệ luật Armstrong khi và chỉ khi Y là tập con của bao đóng X đối với F, nghĩa là:

F ⊢Arm (X Y) ⇔ Y ⊂ XF+

• Thuật toán tìm bao đóng của một tập thuộc tính:Vào: R(U,F), X ⊆ U, Ra: X+Phương pháp:– B1: Đặt X0 = X

– B2: Với ∀i = 0,1,…, nếu tồn tại một FD V → W sao cho V ⊆ Xi ⇒ Xi+1 = Xi ∪ Aj ∀Aj ∈ W

– B3: Dừng khi Xi = Xi+1

– Kết luận: X+ = Xi

• Định lý:Hệ tiên đề Armstrong là đúng đắn và đầy đủ.

Page 202: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

202 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

PHỤ THUỘC HÀM- Bao đóng của tập thuộc tính (tt)

• Ví dụ: R = ABCDEG và tập phụ thuộc hàm F như sau:F = {AB→C C →A BC →D ACD→B D→EGBE→C CG→BD CE→AG}X = BD, tính X+

– Đầu tiên ta có X0 = BD, để tìm X1 ta tìm những phụ thuộc hàm trong F có vế trái nằm trong BD, ta có PTH D→EG thỏa mãn điều kiện đó.

– X1 = BDEG, tiếp tục để tìm X2 ta tìm những PTH có vế trái nằm trong BDEG, ta có BE→C, vậy X2 = BDEGC.

– Tương tự như vậy ta có X3 = ABCDEG đây là tập X+ = (BD)+ = R

Page 203: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

203 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương V

• Lý thuyết thiết kế CSDL• Phụ thuộc hàm

– Định nghĩa– Pth được suy dẫn lôgic từ F– Hệ tiên đề cho pth– Bao đóng của tập thuộc tính

• Khóa– Định nghĩa– Các thuật toán tìm khóa

• Phủ tối thiểu (cực tiểu) của tập pth– Khái niệm pth tương đương– Tập pth tối thiểu– Thuật toán tìm phủ tối thiểu

• Bài tập

Page 204: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

204 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Định nghĩa khóa

• Siêu khóa (super key)– Siêu khóa là một tập con X khác rỗng các thuộc tính

của lược đồ quan hệ R sao cho với bất kỳ hai bộ t1, t2 trong quan hệ r ∈ R thì t1[X] ≠ t2[X]

– X là siêu khóa trong R ⇔ X xác định hàm mọi thuộc tính của R: X U

• Nói cách khác: siêu khóa xác định duy nhất một hàng trong bảng.

• Khóa tối tiểu (minimal key – khóa)– Khóa tối tiểu K là siêu khóa kèm thêm tính chất là nếu

loại khỏi K bất kỳ thuộc tính nào cũng làm cho K không còn là siêu khóa.

• Khóa tối tiểu là siêu khóa nhỏ nhất

Page 205: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

205 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Định nghĩa khóa (tt)

• Định nghĩa khóa của LĐQH dựa trên tập PTH.– Cho R(U,F), – K ⊂ U đgl khóa của lược đồ quan hệ R(U,F) nếu K+ =

U và bớt từ K dù một phần tử nào thì bao đóng của nó khác U.

– K ⊂ U là khóa nếu: (1) K+ = U (X U ∈ F+)(2) (K - A)+ ≠ U, ∀A ∈K

• Nhận xét:– Trong một quan hệ có thể có nhiều khóa và luôn tồn tại

ít nhất một khóa.– Cho R(U), nếu U thỏa mãn hai điều kiện trên thì U là

khóa.

Page 206: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

206 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Định nghĩa khóa (tt)

• Khóa chính (primary key)– Khóa chính là một khóa tối tiểu được người phân tích

chọn để cài đặt.

• Khóa dự tuyển (candidate key)– Các khóa dự tuyển là các khóa tối tiểu khác mà

không phải là khóa chính.

Page 207: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

207 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa

• Tìm khóa từ một siêu khóa– Ý tưởng:

• Nếu X+ = U thì (X ∪ {A})+ =U, và nếu X là khóa tối tiểu thì

X \ {A})+ ≠ U ∀A ∈U

• Trực quan từ định nghĩa khóa tối tiểu, nếu X là một tập thuộc tính bất kỳ mà X+=U có thể bớt dần các phần tử của X để nhận được tập X bé nhất (vẫn thỏa X+ = U) và đó chính là khóa của lược đồ quan hệ.

Page 208: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

208 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Tìm khóa từ một siêu khóa• Nhắc lại: khóa là tập thuộc tính K mà bao đóng của K đúng

bằng U (K+ = U) và nếu bớt khỏi K một phần tử bất kỳ thì bao đóng của nó khác U.

– I: R(U,F)– O: Khóa tối tiểu K của R

• Thuật toán:– B1: đặt K = U

– B2: Lặp lại quá trình loại khỏi K phần tử A mà

(K – {A})+ = U.

Page 209: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

209 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Nhận xét:– Thuật toán trên tìm được một khóa tối tiểu của lược

đồ quan hệ R.– Muốn tìm các khóa khác (nếu có) của lược đồ quan

hệ, ta có thể thay đổi thứ tự loại bỏ các phần tử của K.

Page 210: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

210 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Ví dụ:

Tìm khóa của R(U,F), với U = ABCDEGHIF = {ACB (1) BIACD (2) ABCD 3)

HI (4) ACEBCD (5) CGAE (6) }

– B1: K = U = ABCDEGHI– B2: Lần lượt loại bỏ các thuộc tính có trong K:

Page 211: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

211 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

– B2: Lần lượt loại bỏ các thuộc tính có trong K:• Xét phần tử A: ta có (BCDEGHI)+ = U (6) nên K = BCDEGHI• Xét phần tử B: ta có (CDEGHI)+ = U (6,1) ) nên K = CDEGHI

• Xét phần tử C, ta có (DEGHI)+ ≠ U nên K = CDEGHI • Xét phần tử D, ta có (CEGHI)+ = U (6,1,3) nên K = CEGHI• Xét phần tử E, ta có (CGHI)+ = U (6,1,3) nên K = CGHI• Xét phần tử G, ta có (CHI)+ ≠ U, nên K = CGHI• Xét phần tử H, ta có (CGI)+ ≠ U, nên K = CGHI

• Xét phần tử I, ta có (CGH)+ = U, (6,1,3,4) nên K = CGH

– Vậy K = CGH là khóa của R.

Page 212: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

212 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Từ thuật toán ta có nhận xét sau:– Các thuộc tính không xuất hiện trong cả vế trái và vế

phải của tập phụ thuộc hàm phải có trong khóa.– Các thuộc tính chỉ xuất hiện bên trái của các PTH

trong F cũng phải thuộc khóa.– Trong quá trình tìm khóa có thể loại bỏ tất cả các

thuộc tính đơn phía bên phải các PTH của F. Tuy nhiên cần kiểm tra lại vì không phải lúc nào các thuộc tính đó cũng bỏ được.

• Ví dụ: Cho R(U,F) với U = ABCDE– Với tập PTH F1 = {AB, C E, C D}, khi đó khóa là K = AC

(bỏ đi ba thuộc tính đơn B,C,D xuất hiện ở vế phải).

– Tuy nhiên với tập PTH F2 = {A C, C ABDE} thì K1 = {A}, K2 = {C}

Page 213: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

213 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Tìm tất cả các khóa của LĐQH dựa trên tập PTH.– Ý tưởng:

Cho R(U,F), ta có một số ký hiệu như sau:

• UR, UL: tập các thuộc tính ở vế phải, vế trái của các PTH.

• N = U – UR: các thuộc tính cô lập: không xuất hiện trong bất kỳ PTH nào và các thuộc tính chỉ xuất hiện ở vế trái các PTH.

⇒N ⊂ Khóa• D = UR - UL : các thuộc tính chỉ xuất hiện ở vế phải các PTH.

⇒D ∩ khóa = ∅• L = U – (N ∪ D)

⇒L gồm các thuộc tính có thể thuộc khóa hoặc không thuộc khóa.

Page 214: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

214 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Thuật toán tìm tât cả các khóa.– I: R(U,F) O: Các khóa của R

– Phương pháp:• Tính N = U - UR

Nếu NF+ = U, thì N là khóa duy nhất của R, giải thuật dừng.

• Tính D = UR – UL và L = U – (N ∪ D)

• Với mọi Li ⊂ L,: thử với từng Li, các Li có ít phần tử làm trước.

X = N ∪ Li, nếu XF+ = U thì X là một khóa của R.

• Lưu ý: nếu X = N ∪ Li là khóa thì không cần thử với các Lj ⊂ L mà Li ⊂ Lj

Page 215: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

215 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Ví dụ 1: Cho R(U,F) U = ABCDEGF = {A BC, BD, AD E, CDA}

a) Tìm một khóa của R và xét xem khóa đó có duy nhất không.

• Ta có UR = ABCDE, UL = ABCD

• N = U \ UR = G và D = UR - UL = E

• L = U – (N ∪ D) = ABCD

• Ta có (GA)+ = U do đó K1 = GA là một khóa.

• Ngoài ra, N+ ≠ U do đó K1 = AG không phải là khóa duy nhất.

b) Tìm thêm khóa khác• Ta thấy (CDG)+ = U nên K2 = CDG là một khóa khác của R.

• (GBC)+ = U nên K3 = GBC là khóa

Page 216: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

216 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

KHÓA- Các thuật toán tìm khóa (tt)

• Ví dụ 2: U = ABCD,

F = {AB, ABC, ACD}

Tìm tất cả các khóa.

– UR = BCD

– N = U – UR = A

– N+ = U ⇒ K = A là khóa duy nhất của lược đồ quan hệ.

• Ví dụ 3:

R(U,F) U = ABCDEG

F = { AEC CGABDG

GAE }

Page 217: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

217 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Bài tập

• Cho lược đồ quan hệ sau:– R(U,F) với U = ABCDEGHIJLM

F = { MABC ABCH ABCEH

MBCDG DGHL}

a) Tính bao đóng X = M

b) MDG có được suy dẫn từ F hay không?

c) Tìm tất cả các khóa của lược đồ quan hệ

Page 218: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

218 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương V

• Lý thuyết thiết kế CSDL• Phụ thuộc hàm

– Định nghĩa– Pth được suy dẫn lôgic từ F– Hệ tiên đề cho pth– Bao đóng của tập thuộc tính

• Khóa– Định nghĩa– Các thuật toán tìm khóa

• Phủ tối thiểu (cực tiểu) của tập pth– Khái niệm pth tương đương– Tập pth tối thiểu– Thuật toán tìm phủ tối thiểu

• Bài tập

Page 219: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

219 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phủ tối thiểu của tập pth- Phụ thuộc hàm tương đương

Cho LĐQH R(A1A2…An), cho hai tập FD F, G,

• Tập FD F phủ tập G nếu như F+ chứa GKý hiệu F phủ G ⇔ F+ ⊃ G

– Các FD trong G đều có thể suy ra được nhờ các FD trong F

• F tương đương với G nếu F phủ G và G phủ F– Ký hiệu F tương đương G ⇔ F+ ⊃ G & G+ ⊃ F

• Để kiểm tra F và G có tương đương với nhau không, xét xem mọi FD X→Y ∈ F có thuộc G+ hay không và ngược lại.

Page 220: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

220 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phủ tối thiểu của tập pth- Phụ thuộc hàm tương đương (tt)

• Bổ đề:– Với mỗi tập FD F đều tìm được một tập các FD G

tương đương với F, mà vế phải các phụ thuộc hàm trong G bao gồm không quá một thuộc tính.

• Nhận xét: Từ bổ đề trên trong quá trình thiết kế dữ liệu, ta có thể giả sử vế phải các FD trong F chỉ bao gồm một thuộc tính.

Page 221: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

221 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tập phụ thuộc hàm tối thiểu

• Khái niệm phụ thuộc đầy đủVới XY ∈ F+, ta nói Y phụ thuộc đầy đủ vào X nếu với mọi X’ ⊂ X thì X’ Y ∉ F+

• Định nghĩa tập phủ tối thiểu

– Tập F được gọi là phủ tối thiểu nếu thỏa:• Vế phải của tất cả các pth trong F đều chỉ có một thuộc tính

• Mỗi phụ thuộc hàm XA trong F đều quan trọng (*)

Nghĩa là: Với mọi XA ∈F, F và F \ {XA} không tương đương.

• Mỗi thuộc tính ở vế trái của mỗi pth trong F đều quan trọng (*) (Mỗi thuộc tính vế phải phụ thuộc đầy đủ vào vế trái)

Nghĩa là: Với mỗi XA ∈F, ∀B ∈X

F và (F \ {XA}) U ({ X \ BA} ) không tương đương

Page 222: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

222 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Thuật toán tìm phủ tối thiểu

• I: Tập pth F, O: phủ tối thiểu của F

• Phương pháp:

– (1) Phân rã vế phải tất cả các phụ thuộc hàm và gọi G là tập pth thu được.

– (2) Loại bỏ các pth dư thừa trong G• Duyệt lần lượt các pth trong G, theo một thứ tự nào đó

Với mỗi XA ∈G ta đặt H = G\ {XA}

Nếu XA ∈H+ , tức là A ∈XH+ (bao đóng của X trên H) thì thay G

bằng H

– (3) Loại bỏ thuộc tính dư thừa ở vế trái các pth trong G• Duyệt lần lượt các pth của G

Với mỗi XA∈G, lần lượt xét các thuộc tính của X. Với B ∈X, xét pth f:X \ {B}A nếu f ∈G+ tức A ∈(X\{B})+, ta thay pth XA bằng f và đặt G = G \ {XA} U (X \ {B}A)

Page 223: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

223 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Thuật toán tìm phủ tối thiểu (tt)

• Ví dụ: Tìm phủ tối thiểu của các tập FD sau:a) R(U,F), F = { ABC CAB}

b) R(U,F), G = { ABC ACDB CGBD

CA DEG CEAG

BCD BEC }

Page 224: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

224 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ý nghĩa của phụ thuộc hàm và phủ tối thiểu

• Phụ thuộc hàm: – Trong các quan hệ hợp lệ, có một số dư thừa nào đó.

Những dư thừa có thể được thể hiện bằng những phụ thuộc nếu một quan hệ r được khẳng định là hợp lệ (thỏa một số phụ thuộc nào đó) thì từ một số thông tin về các giá trị hiện có của r, có thể suy ra được thông tin khác về giá trị hiện có của nó.

• Phủ tối tiểu– Trên một tập phụ thuộc hàm bao giờ ta cũng mong

muốn tìm ra một tập ràng buộc ít điều kiện nhất nhưng không bỏ sót đi đòi hỏi của thực tiễn.

Page 225: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

225 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Bài tập chương V

1. Cho lược đồ quan hệ R(U,F), U = ABCDEGF = { BEC CDAB ACBD

BCAE CAD}a) Tính (AC)+

b) Chứng tỏ BADEc) Tìm tất cả các khóa của lđqh trênd) Tìm phủ tối thiểu của tập pth trên

2. Cho lược đồ quan hệ R(U,F), U = ABCDEGF = {ABC CA BCD DEGCGBD

ACDB CDAG}a) Tính (CD)+

b) Tìm tất cả các khóa của lược đồ quan hệ trênc) Tìm phủ tối thiểu của tập phụ thuộc hàm F

Page 226: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

226 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Bài tập chương V (tt)

3. Cho lược đồ quan hệ R(U,F), U = ABCDEGF = { ACD ABDC DA

DEG DGBC CDB

CED DEAG}

a) Tính (AD)+

b) Tìm phủ tối thiểu của lđqh trên

c) Tìm một khóa của lđqh trên

d) Tìm tất cả các khóa của lđqh trên

Page 227: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Chương VI

CHUẨN HÓA CƠ SỞ DỮ LIỆUCHUẨN HÓA CƠ SỞ DỮ LIỆU

Email: [email protected]

Page 228: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

228 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương VI

• Tai sao• Chuẩn hóa dữ liệu• Cac dang chuân

– Dang chuân 1 (1NF)– Dang chuân 2 (2NF)– Dang chuân 3 (3NF)– Dang chuân Boyce codd (BCNF)

• Cac bươc chuân hoa lươc đô quan hê• Phân ra lươc đô quan hê

– Kiêm tra phân ra bao toan thông tin’– Kiêm tra phân ra bao toan phu thuôc ham– Phân ra 3NF– Phân ra BCNF

• Tông kêt vê chuân hoa CSDL• Bai tâp chương VI

Page 229: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

229 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tại sao?

– CungCapSP(maNCC, tenNCC, diaChi, sanPham, gia)

maNCC tenNCC diaChi sanPham gia

S01 Sanyo Tokyo, Nhật Bản Tủ lạnh 250

S01 Sanyo Tokyo, Nhật Bản Máy giặt 270

S01 Sanyo Tokyo, Nhật Bản Máy lạnh 200

S02 Sharp Hiroshima, Nhật Bản Tivi 140

S03 Samsung Hồng Kông, Đài Loan LCD 200

S03 Samsung Hồng Kông, Đài Loan Tivi 120

M01 Maytag New York, Mỹ Tủ lạnh 260

• Trùng lắp thông tin làm tăng chi phí lưu trữ thông tin và chi phí kiểm tra RBTV.

• Cách giải quyết: tách thành hai lược đồ như sau:– CungCap(maNCC, sanPham, gia) và NhaCC(maNCC, tenNCC, diaChi) quan hệ tương ứng:

Page 230: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

230 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Khóa chính là gì? {maNV, tenKH}

Sự bất thường ở bảng này? Thêm vào – không thể thêm vào 1 nhân viên mới mà không tham gia lớp nào Xoá đi – nếu xoá bỏ nhân viên 140, ta sẽ mất thông tin về lớp Luật thuế Hiệu chỉnh – để tăng lương cho nhân viên 100, đòi hỏi phải cập nhật 2 hàng

maNV tenNV donVi luong tenKH ngayKTKH

100 Nguyễn Văn An P. Tiếp thị 480 Anh văn 31/12/2009

100 Nguyễn Văn An P. Tiếp thị 480 NC thị trường 10/03/2010

140 Trần Thị Mỹ P. Kế toán 550 Luật thuế 15/04/2010

110 Lê Văn Minh P. Hệ thống thông tin 500 Anh văn 31/12/2009

110 Lê Văn Minh P. Hệ thống thông tin 500 C++ 31/01/2010

190 Trần Văn Ban P. Tài chính 520

150 Hồ Minh Nhật P. Tiếp thị 450 Anh văn 31/12/2009

150 Hồ Minh Nhật P. Tiếp thị 450 Java 10/01/2010

Tại sao?

Page 231: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

231 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Sự trùng lắp thông tin là nguyên nhân làm cho CSDL có chất lượng kém.

∀ ⇒ Cần đưa ra các tiêu chuẩn để có thể đánh giá chất lượng thiết kế của một lược đồ CSDL cũng như cần có phương pháp để làm cho một lược đồ CSDL trở nên tốt hơn.

Tại sao?

Page 232: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

232 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Chuẩn hóa dữ liệu

• Là một công cụ cơ bản để:– kiểm tra và cải tiến một thiết kế CSDL luận lý, thỏa

mãn các ràng buộc toàn vẹn giúp tránh sự trùng lắp dữ liệu (data duplication) không cần thiết.

• Là quá trình phân rã các quan hệ không bình thường (anomaly) thành các quan hệ có cấu trúc tốt (well-structured) nhỏ hơn– Quan hệ có cấu trúc tốt

• Có sự dư thừa dữ liệu tối thiểu• Cho phép người dùng thêm vào, xoá đi và cập nhật các

hàng (row) mà không gây ra sự mâu thuẫn dữ liệu nào

Page 233: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

233 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Chuẩn hóa dữ liệu (tt)

• Mục tiêu:– Giảm dư thừa dữ liệu– Tránh sự dị thường

• Dị thường khi thêm vào (Insertion anomaly) – thêm các hàng mới đòi hỏi người dùng tạo ra các dữ liệu trùng lắp

• Dị thường khi xoá (Deletion anomaly) – xoá các hàng đã có gây ra sự mất dữ liệu cần thiết cho các hàng khác

• Dị thường khi hiệu chỉnh (Modification anomaly) – thay đổi dữ liệu ở một hàng đòi hỏi thay đổi dữ liệu của các hàng khác vì trùng lặp

• Để chuẩn hóa dữ liệu dựa vào các dạng chuẩn

Page 234: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

234 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Chuẩn hóa dữ liệu (tt)

• Có các dạng chuẩn sau:– Dạng chuẩn 1 (First Normal Form) – 1NF– Dạng chuẩn 2 (Second Normal Form) – 2NF– Dạng chuẩn 3 (Third Normal Form) – 3NF

– Dạng chuẩn Boyce codd (Boyce codd Normal Form) – BCNF

1. Là gì?

2. Cách kiểm tra?

3. Cách chuẩn hóa?

Page 235: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

235 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 1 (1NF)

• Khái niệm thuộc tính đơn (thuộc tính nguyên tố):– Một thuộc tính A của R là một thuộc tính đơn nếu nó không phải

là sự tích hợp của nhiều thuộc tính khác.– Ngược lại, nếu người sử dụng có thể truy xuất đến từng phần

của thuộc tính A thì A đgl là thuộc tính kép (thuộc tính không nguyên tố).

• Ví dụ: LĐQH Chuyen_Mon (MaGV, Mon) và quan hệ rchuyen_Mon như sau: MaGV Mon

GV01 Pascal, CTDL, TRR

GV02 CSDL

GV03 CSDl, CTDL

LĐQH VatTu(maVT, tenVT, dvTinh) trong đó tenVT bao gồm cả tên của vật tư và quy cách tính của nó như vậy trong trường hợp này tenVT là thuộc tính kép.

Mon là thuộc tính kép

Page 236: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

236 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt)

• Định nghĩa 1NF:– Một lược đồ quan hệ đgl ở dạng chuẩn 1 (1NF) nếu

mọi thuộc tính của R đều là thuộc tính đơn.– Một lược đồ CSDL đgl ở dạng chuẩn 1 nếu mọi lược

đồ quan hệ con Ri của nó đều ở dạng chuẩn 1.

• Cách gọi:– Lược đồ quan hệ ở dạng chuẩn 1 (1NF) hay còn được

gọi là lược đồ quan hệ 1NF.– Lược đồ quan hệ 1NF còn được gọi là lược đồ quan

hệ chuẩn hóa.– Lược đồ quan hệ không ở dạng chuẩn 1 đgl lược đồ

quan hệ không chuẩn hay phi chuẩn.

Page 237: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

237 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt)

• Kiểm tra xem một lược đồ qh có ở dạng chuẩn 1 không?Kiểm tra xem các thuộc tính của lược đồ qh có phải

là thuộc tính đơn ko?

• Đưa lược đồ qh về dạng chuẩn 1: Tách thuộc tính kép thành các thuộc tính đơn (tách

dọc) hoặc tách thành các dòng (tách ngang)

Page 238: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

238 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt)

• Ví dụ:– LĐQH VatTu(maVT, tenVT, dvTinh) được chuyển

thành: VatTu(maVT, tenVT, quyCach, dvTinh)

– quan hệ TChuyen_Mon ở trên không ở dạng chuẩn 1 vì thuộc tính Mon là thuộc tính kép tách thành các dòng để loại bỏ thuộc tính kép

maGV Mon

Gv01 Pasc

Gv01 CTDL

Gv01 TRR

GV02 CSDL

GV03 CSDL

GV03 CTDL

maVT tenVT quyCach dvTinh

Page 239: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

239 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt)

• Ví dụ: – Cho lđqh CungCap(maNCC, tenNCC, diaChi, sanPham) trong

đó thuộc tính sanPham bao gồm tên sản phẩm và giá. Giả sử ta có quan hệ rCungCap sau:

maNCC tenNCC diaChi sanPham

1 Hải Hà Hà Nội Kẹo mềm 100, Kẹo cứng 150, Bánh 200

2 Kinh Đô Hồ Chí Minh Kẹo 120, Bánh 150

maNCC tenNCC diaChi tenSP gia

Phi chuẩn

Page 240: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

240 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt)

• Ví dụ: – Cho lđqh CungCap(maNCC, tenNCC, diaChi, sanPham) trong

đó thuộc tính sanPham bao gồm tên sản phẩm và giá. Giả sử ta có quan hệ rCungCap sau:

maNCC tenNCC diaChi sanPham

1 Hải Hà Hà Nội Kẹo mềm 100, Kẹo cứng 150, Bánh 200

2 Kinh Đô Hồ Chí Minh Kẹo 120, Bánh 150

maNCC tenNCC diaChi tenSP gia

1 Hải Hà Hà Nội Kẹo mềm 100

1 Hải Hà Hà Nội Kẹo cứng 150

1 Hải Hà Hà Nội Bánh 200

2 Kinh Đô Hồ Chí Minh Kẹo 120

2 Kinh Đô Hồ Chí Minh Bánh 150

Phi chuẩn

chuẩn hóa

Thông tin

trùng lắp!!!

Page 241: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

241 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 2 (2NF)

• K.n pth đầy đủ và pth riêng phần– Phụ thuộc hàm đầy đủ (Full FD)

Pth đầy đủ là pth XY mà nếu loại bỏ bất kỳ thuộc tính A nào trong X thì (X – A) ↛Y

– Phụ thuộc hàm riêng phần (partial FD)

Pth riêng phần là pth mà không phải là pth đầy đủ.

Page 242: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

242 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt)

• K.n thuộc tính khóa, thuộc tính không khóa– Thuộc tính khóa (thuộc tính nguyên tố):

• là một thuộc tính của lược đồ quan hệ R mà là thành phần của ít nhất một khóa dự tuyển trong R.

– Thuộc tính không khóa (thuộc tính không nguyên tố):• là thuộc tính không phải là thuộc tính nguyên tố (không tham

gia vào bất kỳ một khóa nào của LĐQH)

- Vd: R(U,F), U = ABCDE, K1 = AB, K2 = CB- Tập thuộc tính khóa là: ABC- Tập thuộc tính không khóa là: DE

Page 243: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

243 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt)

• Định nghĩa dạng chuẩn 2 (2NF):– LĐQH R đgl ở dạng chuẩn 2 nếu:

• R đạt 1NF• Mọi thuộc tính không khóa A trong R phụ thuộc hàm đầy đủ

vào khóa của R

Page 244: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

244 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:– LĐQH Dat_hang(soDH, maHH, ngayDH, maKH, soluongdat) với

quan hệ như sau:

soDH maHH soluongdat ngayDH maKH

DH001 PCDX48 3 05/01/06 CTCN01

DH002 HDQT05 5 05/01/06 CTVN01

DH002 HDQT10 2 05/01/06 CTCN01

DH001 KBMS01 5 05/01/06 CTCN01

DH004 PCDX48 5 15/01/07 CTHV01

• FD: soDH ngayDH, maKH

soDH, maHH soluongdat, ngayDH, maKH- LĐQH trên không ở dạng chuẩn 2 vì thuộc tính không khóa

ngayDH, maKH không phụ thuộc đầy đủ vào khóa

K = {soDH, maHH} (chỉ phụ thuộc vào soDH)

Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt)

Page 245: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

245 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt)

• LĐQH Ctiet_HD(soHD, maHH, giaban, soluongban)

– FD: soHD, maHH giaban, soluongban

– Khóa: K = {SoHD, maHH}

– Hai thuộc tính không khóa giaban và soluongban đều phụ thuộc đầy đủ vào khóa nên LĐQH này đạt 2NF.

• Nhận xét:

– Nếu LĐQH R chỉ có một khóa K và card(K)=1 thì R ở dạng chuẩn 2

– Một LĐQH ở dạng chuẩn 2 vẫn có thể chứa đựng sự trùng lắp thông tin.

Page 246: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

246 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Định nghĩa dạng chuẩn 2 (2NF):– LĐQH R đgl ở dạng chuẩn 2 nếu:

• R đạt 1NF• Mọi thuộc tính không khóa A trong R phụ thuộc hàm đầy đủ

vào khóa của R

• Định nghĩa khác:– Lược đồ quan hệ đạt 2NF nếu với mọi FD XA đúng

trong R thì:• (1) A ∈X hoặc• (2) A là thuộc tính khóa trong R hoặc• (3) X không là tập con của một khóa nào, hoặc• (4) X là siêu khóa của R

Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt)

Page 247: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

247 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Cách kiểm tra lược đồ quan hệ ở dạng chuẩn 2:– Tìm tất cả các khóa của lược đồ quan hệ– Xác định tập thuộc tính khóa, tập thuộc tính không

khóa– Kiểm tra lần lượt từng pth: XA trong tập F

• Nếu có pth XA nào mà:– X là tập con của khóa và– A là thuộc tính không khóa

thì kết luận lược đồ này không ở dạng chuẩn 2• Ngược lại, nếu tất cả các pth XA trong F có:

– vế trái không phải là tập con của khóa hoặc– vế phải là thuộc tính khóa

thì kết luận lược đồ ở dạng chuẩn 2

Các dạng chuẩn – Dạng chuẩn 2 (2NF)- Kiểm tra lđqh đạt 2NF

Page 248: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

248 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:– Cho R(ABCD)– F = {ABC, AD, BDC} Hỏi: Lược đồ R có ở dạng chuẩn 2 không?

• Cách làm:– Khóa là: K = ABD– Tập thuộc tính khóa là {A, B, D}– Tập thuộc tính không khóa là {C}– Xét fd: ABC

• AB là tập con của khóa, C là thuộc tính không khóa

rõ ràng thuộc tính không khóa C phụ thuộc không đầy đủ vào khóa R không đạt dạng chuẩn 2 (không là 2NF)

Các dạng chuẩn – Dạng chuẩn 2 (2NF)- Kiểm tra lđqh đạt 2NF (tt)

Page 249: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

249 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:Cho R(CSZ) F = {CSZ, ZC}

Hỏi: Lược đồ R có ở dạng chuẩn 2 không?

• Cách làm:– Khóa là: K1 = CS, K2 = SZ– Tập thuộc tính khóa: CSZ– Không có thuộc tính không khóa

không thể nào có trường hợp thuộc tính không khóa phụ thuộc không đầy đủ vào khóa lược đồ R ở dạng chuẩn 2.

• Nhận xét:

– Nếu tất cả các thuộc tính của lược đồ quan hệ đều là thuộc tính khóa thì lược đồ là 2NF.

Các dạng chuẩn – Dạng chuẩn 2 (2NF)- Kiểm tra lđqh đạt 2NF (tt)

Page 250: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

250 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:– Cho R(ABCD)– F = {ABC, BD} Hỏi: Lược đồ R có ở dạng chuẩn 2 không?

• Cách làm:– Lược đồ quan hệ trên có một khóa duy nhất là: K = A Lược đồ R là 2NF vì không tồn tại tập con thực sự của

khóa nên không tồn tại phụ thuộc hàm không đầy đủ của thuộc tính không khóa vào khóa.

• Nhận xét:– Nếu tất cả các khóa của lược đồ quan hệ chỉ có một

thuộc tính thì lược đồ quan hệ là 2NF

Các dạng chuẩn – Dạng chuẩn 2 (2NF)- Kiểm tra lđqh đạt 2NF (tt)

Page 251: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

251 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ: cho lđqh sau:CungCap(maNCC, tenNCC, diaChi, sanPham, gia)F ={maNCCtenNCC,diaChi

maNCC, sanPham gia}– Khóa: K = {maNCC, sanPham}– Tập thuộc tính không khóa: {tenNCC, diaChi, gia}– Ta thấy với pth: maNCC tenNCC, diaChi

• tenNCC, diaChi là thuộc tính không khóa, phụ thuộc vào maNCC là tập con thực sự của khóa K = {maNCC, sanPham}

Lược đồ CungCap không ở dạng chuẩn 2

Đưa về dạng chuẩn 2

Các dạng chuẩn – Dạng chuẩn 2 (2NF)- Kiểm tra lđqh đạt 2NF (tt)

Page 252: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

252 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Cách làm:– Xác định phụ thuộc hàm vi phạm dạng chuẩn 2– Nhóm các thuộc tính có mặt trong phụ thuộc hàm đó,

bổ sung thêm các thuộc tính khóa (nếu cần) để có một lược đồ quan hệ.

– Các thuộc tính và các phụ thuộc hàm còn lại nhóm vào trong một quan hệ.

– Lặp lại quá trình với lược đồ chưa đạt 2NF cho đến khi tất cả các lược đồ quan hệ con (tách ra từ lược đồ quan hệ ban đầu) đều là 2NF.

Các dạng chuẩn – Dạng chuẩn 2 (2NF)- Chuẩn hóa lược đồ về 2NF

Page 253: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

253 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ: Cho lđqh sau:CungCap(maNCC, sanPham, tenNCC, diaChi, gia)

F = {maNCCtenNCC,diaChi

maNCC, sanPham gia}

• Phân rã lược đồ CungCap thành 2 lược đồ:– NhaCungCap(maNCC, tenNCC, diaChi)

• FD: {maNCC tenNCC, diaChi}• Khóa: maNCC

– CungCap(maNCC, sanPham, gia)• FD: {maNCC, sanPham gia}• Khóa: maNCC, sanPham

Phụ thuộc hàm vi phạm

Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Chuẩn hóa lược đồ về 2NF (tt)

Page 254: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

254 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 3 (3NF)

• Phụ thuộc hàm bắc cầu– Cho lược đồ quan hệ R(U,F) A là một thuộc tính của

U. A đgl phụ thuộc hàm bắc cầu vào X trên R nếu tồn tại một tập con Y của U sao cho:

– XY, YA nhưng Y X ↛ với A A ∉ X U Y

• Định nghĩa dạng chuẩn 3 (3NF):– LĐQH R đgl ở dạng chuẩn 3 nếu:

• R ở dạng chuẩn 2• Mọi thuộc tính không khóa của R đều không phụ thuộc bắc

cầu vào khóa chính

X

Y

A ∉ X U Y

Page 255: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

255 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:– R = (Cust_ID, Name, Salesperson, Region)

F = { Cust_ID → {Name, Salesperson, Region}, Salesperson → Region }

– Khóa K = Cust_ID

– Phụ thuộc hàm bắc cầu: Cust_ID → Salesperson → Region

Do đó lược đồ quan hệ không đạt dạng chuẩn 3.

Các dạng chuẩn – Dạng chuẩn 3 (3NF) (tt)

Page 256: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

256 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Định nghĩa dạng chuẩn 3 (3NF):– LĐQH R đgl ở dạng chuẩn 3 nếu:

• R ở dạng chuẩn 2• Mọi thuộc tính không khóa của R đều không phụ thuộc bắc

cầu vào khóa chính

• ĐN khác:– R là 3NF nếu với mọi pth X → A trong F, A∉X thì

• X là siêu khóa hoặc • A là thuộc tính khóa (nguyên tố).

Các dạng chuẩn – Dạng chuẩn 3 (3NF) (tt)

Page 257: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

257 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Cách làm:– Xác định khóa của lược đồ quan hệ– Kiểm tra lđqh đã là 2NF chưa, nếu đã là 2NF, duyệt

lần lượt từng phụ thuộc hàm trong F, nếu tồn tại một phụ thuộc hàm X A mà:• X không là khóa và• A là thuộc tính không khóa

kết luận vi phạm dạng chuẩn 3

– Nếu không có phụ thuộc hàm nào vi phạm dạng chuẩn 3 thì R là đạt dạng chuẩn 3.

Các dạng chuẩn – Dạng chuẩn 3 (3NF)- Kiểm tra lđqh đạt 3NF

Page 258: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

258 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ:– R = (C,S,Z), F = {CS → Z, Z → C}– Khóa dự tuyển: CS và SZ – Tất cả các thuộc tính đều là thuộc tính khóa

R là 3NF

• Ví dụ:– R = (A,S,I,P), F = {SI → P, S → A}, – Khóa: SI

– S → A nhưng S là tập con của khóa và A là thuộc tính không khóa R không là 2NF R không là 3NF

Các dạng chuẩn – Dạng chuẩn 3 (3NF)- Kiểm tra lđqh đạt 3NF (tt)

Page 259: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

259 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Nhận xét:– Từ định nghĩa ta có nhận xét rằng, nếu R là 3NF thì

nó là 2NF, trong dạng chuẩn 2NF ta chỉ cấm các thuộc tính không khóa phụ thuộc vào tập con thực sự của khóa (là tập có bao đóng khác U),

– trong 3NF, ta cấm các thuộc tính không khóa phụ thuộc vào mọi tập có bao đóng khác U (trong đó có tập con thực sự của khóa).

Các dạng chuẩn – Dạng chuẩn 3 (3NF) (tt)

Page 260: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

260 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Cách làm:– Xác định phụ thuộc hàm vi phạm dạng chuẩn 3 (3NF)– Tách các nhóm thuộc tính có phụ hàm bắc cầu vào

khóa thành một quan hệ. Khóa của quan hệ mới này chính là thuộc tính mà chúng có phụ thuộc hàm.

– Các thuộc tính và các phụ thuộc hàm còn lại nhóm vào trong một quan hệ.

– Lặp lại quá trình với lược đồ chưa đạt 3NF cho đến khi tất cả các lược đồ quan hệ con (tách ra từ lược đồ quan hệ ban đầu) đều là 3NF.

Các dạng chuẩn – Dạng chuẩn 3 (3NF)- Chuẩn hóa lược đồ về 3NF

Page 261: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

261 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

CustID Salesperson RegionPth băc câu không đat 3NF

CustID  NameCustID  SalespersonCustID  RegionSalespersonRegion

(a) Quan hệ SALES với các dữ liệu mẫu

(b) Quan hệ SALES với phụ thuộc hàm bắc cầu

Các dạng chuẩn – Dạng chuẩn 3 (3NF)- Chuẩn hóa lược đồ về 3NF (tt)

Page 262: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

262 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Cách chuẩn hóa lược đồ về 3NF (tt)

CustID Name

CustID Salesperson

(c) Phân rã quan hệ SALES

(d) Quan hệ ở dạng chuẩn 3

Không còn phụ thuộc hàm bắc cầu nữa …

Cả hai quan hệ bây giờ là ở dạng chuẩn 3

Page 263: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

263 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Ví dụ: Xét lại lược đồ csdl KeHoach– Thi(ngThi, gioThi, phThi, maMH, gvDay)

• FD: { maMH gvDay

ngThi, gioThi, phThi maMH }• Khóa: {ngThi, gioThi, phThi }

– CoiThi (giamThi, ngThi, gioThi, phThi)• FD: {giamThi ngThi, gioThi, phThi}• Khóa: giamThi

3NF

Vi phạm 3NF

Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Chuẩn hóa lược đồ về 3NF (tt)

Page 264: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

264 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Tóm lại

Dạng chuẩn Thuộc tính không khóa phụ thuộc

vào tập con của khóa

Thuộc tính không khóa phụ thuộc

vào tập khác tập con của

khóa

Thuộc tính khóa phụ thuộc tập

khác

Thuộc tính khóa và

thuộc tính không khóa phụ thuộc vào khóa

2NF X V V V

3NF X X V V

Page 265: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

265 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn Boyce codd (BCNF)

• ĐN:

– R là dạng chuẩn Boyce-Codd nếu với mọi X → A, A∉X thì X là siêu khóa.

• Kiểm tra lược đồ là BCNF – Duyệt qua lần lượt từng phụ thuộc hàm X A trong F

– Nếu tồn tại một phụ thuộc hàm mà X không phải là siêu khóa thì kết luận lược đồ không là BCNF

– Ngược lại, nếu mọi fd XA trong F đều có vế trái là siêu khóa thì kết luận lược đồ là BCNF

Page 266: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

266 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn Boyce codd – Kiểm tra lược đồ là BCNF

• Ví dụ:

– R = (C,S,Z), F = {CS → Z, Z → C}

Khóa dự tuyển: CS và SZ => Dạng chuẩn 3

Có Z → C, nhưng Z không là siêu khóa

=> Không phải BCNF

• Định lý: Nếu lược đồ quan hệ R với tập phụ thuộc hàm F đạt BCNF thì nó cũng đạt 3NF.

– Trong 3NF chỉ cấm các thuộc tính không khóa phụ thuộc vào tập có bao đóng khác U, còn trong BCNF, ta cấm tất cả các thuộc tính phụ thuộc vào tập có bao đóng khác U.

Page 267: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

267 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Dạng chuẩn Boyce codd (tt)

• Mệnh đề:– Mọi lược đồ quan hệ gồm hai thuộc tính thì ở dạng

BCNF– Lược đồ R(U,F) với tập F chỉ gồm một phụ thuộc hàm

thì ở dạng BCNF– Nếu R(U,F) không đạt BCNF thì tồn tại hai thuộc tính

A, B sao cho:

R \ (A ∪ B) A

Page 268: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

268 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các dạng chuẩn – Tóm lại

Dạng chuẩn Thuộc tính không khóa phụ thuộc

vào tập con của khóa

Thuộc tính không khóa phụ thuộc

vào tập khác tập con của

khóa

Thuộc tính khóa phụ thuộc tập

khác

Thuộc tính khóa và

thuộc tính không khóa phụ thuộc vào khóa

2NF X V V V

3NF X X V V

BCNF X X X V

The Key, The Whole Key, Nothing but the Key, so help me Codd!!!

Page 269: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

269 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các bước chuẩn hóa

LĐQH ban đầu

LĐQH đạt 1NF

LĐQH đạt 2NF

LĐQH đạt 3NF

Tách nhóm các

thuộc tính kép

Tách các PTH

riêng phần

Tách các PTH

bắc cầu

Tách các PTH vế trái

không là siêu khóa

LĐQH đạt BCNF

Page 270: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

270 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Phân rã (decomposition):– một lược đồ quan hệ R(U) là thay R bằng tập các

lược đồ con R1(U1), R2(U2), ..., Rk(Uk) của R sao cho U1∪ U2 ∪ ... ∪ Uk = U.

• Phân rã bảo toàn nội dung:– Phép kết tự nhiên các phân rã cho trở lại R

• Phân rã bảo toàn phụ thuộc hàm:– Gọi Fi = {X → Y đúng trong F, XY ⊆ Ui} là tập phụ

thuộc hàm của Ri

� ∪ Fi tương đương F

Phân rã các lược đồ quan hệ

Page 271: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

271 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• I: R(U,F), một phân rã của R, p = (R1, R2, …,Rn)• O: Cho câu trả lời phân rã có mất thông tin hay không?• Phương pháp:

– (1). Lập bảng ban đầu là ma trận m hàng (ứng với m lược đồ con Ri) và n cột (ứng với n thuộc tính). Phần tử (i,j) của ma trận được xác định theo công thức:(i,j) = aj nếu Aj ∈ Ri trong đó, aj , bij ∈ Dom(Aj)

– (2). Biến đổi bảng• Với mỗi FD nếu phát hiện trên bảng có hai hàng giống nhau trên X và

khác nhau trên Y làm cho hai hàng đó cũng giống nhau trên Y. (ưu tiên làm bằng ký hiệu là aj).

• Tiếp tục áp dụng các phụ thuộc hàm cho bảng (kể cả việc lập lại các phụ thuộc hàm đã áp dụng) cho đến khi không còn áp dụng được nữa.– Mục đích của việc biến đổi bảng là để thu được bảng cuối cùng,

xem như một quan hệ, thỏa tập F.

∈=

ijij

iji

RAifb

RAfiaji ),(

Phân rã các lược đồ quan hệ- Kiểm tra phân rã bảo toàn thông tin

Page 272: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

272 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

– (3) Xem bảng kết quả: • Nếu trong bảng cuối cùng có chứa hàng gồm toàn ký hiệu a

(tức là hàng (a1, a2 …, an)), ta kết luận p = (R1,R2…,Rm) là phân tách không mất thông tin (tức cho câu trả lời đúng)

• Trường hợp ngược lại, p là phân tách mất thông tin.

• Nhận xét: thuật toán dừng khi xuất hiện một hàng toàn aj

• Ví dụ:

Cho R(U,F)

R = BOISQD

F = {SD IB ISQ BO}

Phân rã p = (SD,IB,ISQ,BO) có kết nối mất thông tin không?

Phân rã các lược đồ quan hệ- Kiểm tra phân rã bảo toàn thông tin (tt)

Page 273: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

273 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

B O I S Q D

SD b11 b12 b13 a4 b15 a6

IB a1 b22 a3 b24 b25 b26

ISQ b31 b32 a3 a4 a5 b36

BO a1 a2 b43 b44 b45 b46

B O I S Q D

SD b11 b12 b13 a4 b15 a6

IB a1 b22 a3 b24 b25 b26

ISQ b31 b32 a3 a4 a5 a6

BO a1 a2 b43 b44 b45 b46

Bảng ban đầu

SD

IBB O I S Q D

SD b11 b12 b13 a4 b15 a6

IB a1 b22 a3 b24 b25 b26

ISQ a1 b32 a3 a4 a5 a6

BO a1 a2 b43 b44 b45 b46

B O I S Q D

SD b11 b12 b13 a4 b15 a6

IB a1 a2 a3 b24 b25 b26

ISQ a1 a2 a3 a4 a5 a6

BO a1 a2 b43 b44 b45 b46

BODòng toàn a ⇒ phép tách không mất thông tin

Page 274: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

274 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• Định lý: (Delobel)

– Cho R(U,F) là một lược đồ quan hệ, khi đó p = (R1, R2) là phân tách có kết nối không tổn thất khi và chỉ khi:

(R1 ∩ R2) (R1 – R2) hay (R1 ∩ R2) (R2 – R1)

• Nói cách khác:

– Với R(U,F) là một lược đồ quan hệ, giả sử XY ∈ F+ khi đó p = (XY, X(U\Y)) là phân tách có kết nối không tổn thất với F.

• Dạng phát biểu này của định lý sẽ là cơ sở cho việc kiểm tra phép tách BCNF nêu ra ở phần sau.

Phân rã các lược đồ quan hệ- Kiểm tra phân rã bảo toàn thông tin (tt)

Page 275: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

275 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

• I: một phân rã p = (R1,..,Rk) và tập F

• O: khẳng định xem p có bảo toàn F hay không?

• Phương pháp:

– Đặt G = .

– Mục đích của ta là: kiểm tra xem G có tương đương với F hay không.

– Để xem G có tương đương với F hay không, ta phải xét mỗi phụ thuộc XY trong F và xác định xem X+, được tính ứng với G, có chứa Y hay không. Thủ thuật để tính X+ mà không cần có G là xét lặp đi lặp lại kết quả tính bao đóng X+ ứng với các hình chiếu của F trên các Ri.

∏=

)(1

FRik

i

Phân rã các lược đồ quan hệ- Kiểm tra phân rã bảo toàn phụ thuộc hàm

Page 276: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

276 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ- Kiểm tra phân rã bảo toàn phụ thuộc hàm (tt)

• Ví dụ: Cho lđqh R(ABCDE) F = {E AC, AB, CDA, ABC, EB}Cho phân ra sau cua R, p = (ACE, ABCD)

Hoi phân ra p co bao toan phu thuôc ham không?

• Cach lam:– Đăt R1(ACE), khi đo F1 = {AAC}

R2(ABCD), khi đo F2 = {AB, CDA, ABC}

Đăt G = F1 U F2 = {E AC, AB, CDA, ABC}

Dê thây G ⊂ F do đo F phu G (1)

Ngoai ra, tât ca cac pth trong F đêu thuôc G trư pth EB. Ma ta co (EG)+ ⊃ B, do đo G E⊢ B, do đo G phu F (2)

(1) va (2) F va G tương đương

Phân ra bao toan phu thuôc ham.

Page 277: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

277 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ (tt)

• Chú ý: Hai tính chất kết nối không /tổn thất và bảo toàn tập F là độc lập với nhau. Có thể cho ví dụ về phân tách có kết nối không tổn thất nhưng không bảo toàn F và ngược lại.

– Ví dụ: R(CSZ), F = {CSZ, ZC}, khi đó phân tách p = (SZ,CZ) có kết nối không tổn thất vì (SZ ∩ CZ) (CZ-SZ) (nghĩa là ZC) Tuy nhiên, chiếu của F trên SZ chỉ cho những phụ thuộc tầm thường không bảo toàn tập F.

– Cũng vậy, có những phân rã bảo toàn F nhưng không có tính chất nối không mất thông tin. Ví dụ với F = {AB, CD}, U=ABCD và p = (AB,CD)

Page 278: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

278 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ- Phân rã thành 3NF

• Giải thuật:– Nhập: R và F là phủ tối thiểu

– 1. Tạo ra R1 với tập các thuộc tính không có trong vế trái hay vế phải của bất kỳ phụ thuộc hàm nào.

– 2. Nếu có phụ thuộc hàm nào trong F chứa toàn bộ các thuộc tính của R thì tạo ra R.

– 3. Ngược lại:• Tạo ra lược đồ XA cho mỗi X → A

• Đánh giá:– Phân rã này bảo toàn nội dung và phụ thuộc hàm

Page 279: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

279 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ- Phân rã thành 3NF – Ví dụ

• Lược đồ với F là phủ tối thiểu– R = CTHRSG, F = {C →T, HR →C, HT →R, CS →G,

HS →R}

• Kết xuất:– CT F1 = {CT}

– CHR F2 = {HRC}

– THR F3 = {HTR}

– CSG F4 = {CSG}

– HRS F5 = {HSR}

Page 280: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

280 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ- Phân rã thành BCNF

• Nhắc lại định lý Delobel:– Với R(U,F) là một lược đồ quan hệ, giả sử XY ∈ F+ khi đó p = (XY,

X(U\Y)) là phân tách có kết nối không tổn thất với F.

• Giải thuật:– 1. Z = R– 2. repeat until Z không thể phân rã được nữa

• //phân rã Z thành Z – A và XA với X → A• 2.1. if Z không chứa A và B sao cho (Z – AB) → A

– 2.1.1. Z không phân rã được nữa• 2.2. else

– 2.2.1. Y = Z– 2.2.2. while Y chứa A và B sao cho (Y-AB) → A

» 2.2.1. Y = Y - B• 2.3. Y có dạng XA là một phân rã• 2.4. Z = Z – A

– Z là một phân rã

Page 281: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

281 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ- Phân rã thành BCNF – Ví dụ

• Lược đồ:• R = CTHRSG, F = {C→T,HR→C,HT→R,CS→G,HS→R}

• Phân rã:

– Lần 1• 1. Xét cặp CT

– Z-CT = HRSG → C, Y=Z=CTHRSG– Y = Y – B =CHRSG

• 2. Xét cặp RC– Y-RC=HSG → R

– Y = Y-B = HRSG• 3. Xét cặp RG

– Y-RG=HS → R– Y = Y-B = HRS

• 4. Phân rã thành Z-A và XA với A=R: CTHSG và HSR

Page 282: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

282 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ- Phân rã thành BCNF – Ví dụ (tt)

– Lần 2:• Z=CTHSG• 1. Xét cặp TH

– Z-B = CTSG → T– Y = Y-B = CTSG

• 2. Xét cặp TS– Z-B = CTG → T– Y = Y-B = CTG

• 3. Xét cặp TG– Z-B = CT → T– Y = Y-B = CT

• 4. Phân rã thành Z-B và XA với A=T: CHSG và CT

Page 283: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

283 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân rã các lược đồ quan hệ- Phân rã thành BCNF – Ví dụ (tt)

– Lần 3:• Z=CHSG• 1. Xét cặp GH

– Z-B = CSG → G– Y = Y-B = CSG

• 2. Phân rã thành Z-B và XA với A=G: CHS và CSG

– Lần 4:• Z=CHS• CHS là một phân rã

– Kết quả: CHS, CSG, CT, HSR

• Ví dụ: bài tập 2d

Page 284: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

284 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân ra kết nối không tổn thất về BCNF

• Thuật toán:– Vào: Lược đồ quan hệ R và tập phụ thuộc hàm F trên R– Ra: Phép tách kết nối không tổn thất R với các lược đồ

thành phần thuộc dạng BCNF– Phương pháp: Xây dựng phép tách p qua các bước lặp

sao cho ở mỗi bước p luôn là tách kết nối không tổn thất.• Ban đầu: p chỉ gồm R, p = (R)• Việc lặp lại sẽ kết thúc khi p chỉ chứa các lược đồ ở dạng

chuẩn BCNF. Trong trường hợp ngược lại ta sẽ tìm được lược đồ S = (US, FS) trong p không ở dạng chuẩn BCNF với phụ thuộc hàm X A thỏa trên S với X không phải là siêu khóa của S và A ∉ X.

• Thay thế S bởi hai lược đồ với tập thuộc tính tương ứng là XA và US \ {A}. Quay trở lại bước trên để kiểm tra xem còn lược đồ nào không ở dạng chuẩn BCNF trong p hay không.

Page 285: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

285 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Phân ra kết nối không tổn thất về BCNF (tt)

• Ví dụ:

Xét lược đồ TKB (thời khóa biểu) gồm tập U các thuộc tính: C(lớp học), T(giảng viên), R (phòng học), S (sinh viên), H (giờ học), G (điểm học phần) cùng với tập F các PTH sau:

F = {C T

HR C

HT R

CS G

HS R}Khóa là K = HS

Tim môt phân ra không không tôn thât thông tin vê BCNF cua lđqh trên.

Page 286: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

286 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tổng kết về chuẩn hóa CSDL

• Mục tiêu của các dạng chuẩn trên quan hệ là hạn chế những dư thừa trong dữ liệu lưu trữ.

• Những dư thừa dữ liệu là do phát sinh từ mối liên quan giữa các mục dữ liệu thể hiện qua các PTH.

• Dư thừa dữ liệu dẫn đến những dị thường khi thêm, xóa, cập nhật dữ liệu.

• Trong 2NF và 3NF vẫn còn dư thừa dữ liệu– 2NF: loại được sự phụ thuộc riêng phần vào khóa đối với

thuộc tính không nguyên tố, vẫn còn tồn tại phụ thuộc bắc cầu vào khóa.

– 3NF: Loại được sự phụ thuộc bắc cầu vào khóa đối với thuộc tính không nguyên tố.

Page 287: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

287 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Tổng kết về chuẩn hóa CSDL (tt)

• BCNF: Loại bỏ mọi dư thừa dữ liệu mà PTH có thể tạo ra.

• Để đạt được dạng chuẩn cao, ít dư thừa dữ liệu một quan hệ thường được phân rã thành nhiều quan hệ con.

• Một quan hệ luôn có thể được phân rã thành các quan hệ con thỏa 3NF vừa bảo toàn nội dung vừa bảo toàn PTH.

• Một quan hệ luôn có thể được phân rã thành các quan hệ con đạt BCNF bảo toàn nội dung nhưng có thể không bảo toàn được tập PTH.

Page 288: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

288 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Bai tâp

• 1. Cho biêt dang chuân cua cac lđqh sau:a) Q(ABCDEG) F = {A BC, CDE, EG}b) Q(ABCDEGH) F = {CAB, DE, BG}c) Q(ABCDEGH) F = {ABC, DE, HG}d) Q(ABCDEG) F = {ABC, CB, ABDE, GA}e) Q(ABCDEGHI) F = {ACB, BIACD, ABCD

HI ACEBCG CGA}• 2. Cho lđqh Q(CDEGHK) va

F = {CKH, CD, EC, EG, CKE}a) Chưng minh EKDHb) Tim tât ca cac khoa cua Qc) Xac đinh dang chuân cao nhât cua Qd) Phân ra Q thanh môt lđqh đat BCNF hoăc 3NF, chi ra tâp pth va

khoa cho môi lươc đô con.

Page 289: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

Chương VII

TỐI ƯU HÓA CÂU HỎITỐI ƯU HÓA CÂU HỎI

Email: [email protected]

Page 290: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

290 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Nội dung chương VII

• Đăt vân đê• Cac chiên lươc tôi ưu tông quat• Biêu thưc tương đương

• Vi du minh hoa

• Bai tâp

Page 291: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

291 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đặt vấn đề

• Tối ưu hóa:– Về mặt không gian:

• tối ưu bộ nhớ sử dụng cho câu hỏi, • tối ưu việc sử dụng thiết bị ngoại vi phục vụ cho việc khai

thác dữ liệu…

– Tối ưu hóa thời gian: • giảm thời gian thực hiện câu hỏi, bao gồm giảm độ phức tạp

của câu hỏi, giảm số bộ, số quan hệ, số các nhân tử trong biểu thức điều kiện… nhằm giảm thao tác thực hiện.

Page 292: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

292 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đặt vấn đề (tt)

• Cho 2 lược đồ quan hệ R(AB) và R(CD). Giả sử ta có yêu cầu sau: – Đưa ra thuộc tính A của các bộ thỏa mãn điều kiện B = C

và D = 100. • Câu hỏi viết bằng ĐSQH như sau:

∏A(σ(B=C) and (D = 100)(AB x CD)

– Nếu đưa phép chọn D = 100 vào bên trong phép tích Đề các, sẽ được:

∏A(σB=C(AB x σD =100(CD))

– Và sau đó chuyển phép chọn σB=C của tích Đề các thành phép kết nối bằng sẽ được:

∏A(AB B=C σD=100(CD)

– Rõ ràng, phép tính cuối cùng sẽ thực hiện nhanh hơn rất nhiều.

Page 293: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

293 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Đặt vấn đề (tt)

∏A(AB B=C σD=100(CD)

• Trong phép toán trên,– chỉ chọn trên quan hệ S những bộ có giá trị D = 100 thì số bộ lấy

ra sẽ ít hơn toàn bộ số bộ của cả qh trên S. – Số ít bộ được chọn ra đó mới đem kết nối với quan hệ trên R.

Phép kết nối này chỉ chọn ra bộ nào thuộc R mà có giá trị tại B = với bộ có giá trị tại C mới được lấy ra.

nhanh hơn là lấy tích Đề - các của R x S rồi mới chọn trong kết quả những bộ có giá trị tại B = C.

• Vì vậy, việc tổ chức lại câu hỏi như trên là một minh họa rõ ràng cho thấy số lần cần truy nhập tới bộ nhớ thứ cấp sẽ giảm đi nhiều.

Trình tự thực hiện các phép tính sẽ đóng một vai trò quan trọng trong quá trình tổ chức câu hỏi.

Page 294: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

294 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Các chiến lược tối ưu tổng quát

• Thực hiện phép chọn sớm nhất có thể• Tổ hợp những phép chọn xác định với phép tích Đề

- các thành phép kết nối.

• Tổ hợp dãy các phép tính một ngôi như phép chọn hoặc phép chiếu.

• Tìm các biểu thức con chung trong một biểu thức • Xử lý các tệp trước.

• Đánh giá trước khi thực hiện tính toán

Page 295: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

295 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương

• Nếu quan niệm quan hệ là một tập các bộ (k_bộ) với k cố định và khi đó hai quan hệ là tương đương khi và chỉ khi chúng có cùng một tập các bộ.

• Nếu quan niệm quan hệ là tập các ánh xạ từ tập tên thuộc tính vào tập trị, khi đó hai quan hệ là bằng nhau nếu chúng có cùng tập ánh xạ.

• Một số phép chuyển dịch đại số thông thường:

Page 296: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

296 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

• Các quy tắc liên quan tới phép kết nối và phép tích Đề - các– L1: Quy tắc giao hoán giữa phép kết nối và phép tích

Đề các.Nếu E1 và E2 là hai biểu thức quan hệ, F là điều kiện trên các thuộc tính của E1 và E2 thì:E1 F E2 ≡ E2 F E1E1 * E2 ≡ E2 * E1E1 x E2 ≡ E2 x E1

Page 297: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

297 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

• Các quy tắc liên quan tới phép kết nối và phép tích Đề - các (tt)– L2: Quy tắc kết hợp của phép kết nối và phép tích Đề

cácNếu E1, E2, E3 là các biểu thức quan hệ, F1, F2 là các điều kiện thì:(E1 F1E2) F2 E3 ≡ E1 F1 (E2 F2 E3)(E1 * E2)*E3 ≡ E1 * (E2 * E3)(E1 x E2) x E3 ≡ E1 x (E2 x E3)

Page 298: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

298 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

• Các quy tắc liên quan tới phép chọn và phép chiếu– L3: Dãy các phép chiếu

∏A1A2A3…An(∏B1B2..Bm(E)) = ∏A1A2A3…An(E)

nếu A1A2...An ⊆ B1B2...Bm

– L4: Dãy các phép chọnσF1(σF2(E)) = σF1 ∧ F2 (E)

Bơi vi F1 ∧ F2 = F2 ∧ F1 nên phep chon co tinh giao hoan

σF1(σF2(E)) = σF2(σF1(E))

Page 299: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

299 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

• Các quy tắc liên quan tới phép chọn và phép chiếu (tt)– L5: Giao hoán phép chọn và phép chiếu

σF(∏A1A2...An(E) ≡ ∏A1A2...An (σF(E))

– L6: Giao hoán phép chọn và phép tích Đề các

Nếu tất cả các thuộc tính của F là thuộc tính của E1

σF (E1 x E2) ≡ σF(E1)xE2

• Hê qua:

– Nêu F co dang F1 ∧ F2, trong đo, F1 chi chưa cac thuôc tinh cua E1 va F2 chi chưa cac thuôc tinh cua E2, sư dung L1,L4,L6 va thu đươc:σF (E1 x E2) ≡ σF1(E1)xσF2 (E2)

– Nêu F1 chi chưa cac thuôc tinh cua E1, nhưng F2 co cac thuôc tinh cua E1 va E2, ta vân co: σF (E1 x E2) ≡ σF2(σF1(E1) x E2)

Page 300: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

300 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

• Các quy tắc liên quan tới phép chọn và phép chiếu (tt)– L7: Giao hoán phép chọn và một phép hợp

• Nếu có biểu thức E = E1 U E2 có thể giả thiết các thuộc tính của E1 và E2 có cùng tên như của E hoặc ít nhất mỗi thuộc tính của E là phù hợp với một thuộc tính duy nhất của E1 và một thuộc tính duy nhất của E2. Khi đó:

σF (E1 ∪ E2)≡ σF (E1) ∪ σF (E2)• Nếu tên các thuộc tính của E1 và/ hoặc E2 khác với tên

thuộc tính của E thì trong F ở vế phải của công thức trên cần thay đổi để sử dụng tên cho phù hợp.

Page 301: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

301 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

– L8: Giao hoán phép chọn và một phép hiệu tập hợp

σF (E1 – E2) ≡ σF(E1) – σF(E2)• Như trong luật L7, nếu tên các thuộc tính của E1 và E2 là

khác nhau thì cần thay thế các thuộc tính trong F ở về phải biểu thức tương đương tương ứng với E1.

• Chú ý rằng, phép chọn σF(E2) có thể là không cần thiết. Trong nhiều trường hợp, việc thực hiện phép chọn σF(E2) trước sẽ có hiệu quả hơn là tính toán trực tiếp với E2 vì kích cỡ quan hệ lúc đó sẽ bé đi rất nhiều.

Page 302: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

302 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

• Lưu ý:– Các quy tắc nêu trên nói chung là đẩy phép chọn

xuống trước phép kết nối (L4,L5,L6) vì phép kết nối thường thực hiện lâu như phép tích đề-các.

– Quy tắc đẩy phép chiếu xuống trước phép tích đề các hoặc phép hợp cũng tương tự như quy tắc L6, L7.

– Chú ý, ko có quy tắc tổng quát cho việc đẩy phép chiếu xuống trước phép hiệu các tập hợp.

Page 303: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

303 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

– L9: Hoan vi phep chon vơi nôi tư nhiên – trương hơp đăc biêt .

Nêu F la môt điêu kiên chi chưa cac thuôc tinh chung cua E1 va E2 thi

σF(E1 E2) ≡ σF(E1) σF(E2)

– L10: Hoan vi phep chiêu vơi tich Đê-cac

Goi E1,E2 la 2 biêu thưc quan hê. A1, …,An la danh sach thuôc tinh, trong đo B1,…,Bm la cac thuôc tinh cua E1 va cac thuôc tinh con lai C1, ..,Ck la cua E2, khi đo:

∏A1A2…An(E1 x E2) = ∏B1B2…Bn(E1) x ∏C1C2…Cn(E2)

Page 304: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

304 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Biểu thức tương đương (tt)

– L11: Giao hoán một phép chiếu với một phép hợp

∏A1...An(E1 ∪ E2) = ∏A1...An(E1) ∪ ∏A1...An(E2)• Như trong L7, nếu tên các thuộc tính của E1 và / hoặc E2 là

khác với các thuộc tính trong E1 ∪ E2 cần thay A1...An bên vế phải bởi các tên phù hợp.

Page 305: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

305 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ví dụ minh họa

• Xet môt csdl vê thư viên vơi cac quan hê sau:Sach(tensach, tacgia, tennxb, masach)

NXB(tennxb, diachi, thanhpho, manxb)

DocGia(tendg, diachi, madg)

Muon(madg, masach, ngay)– Cân thưc hiên câu truy vân sau: Liêt kê cac sach đa

đươc mươn trowcs mot ngay 12/01/2009– Câu truy vân se la:

∏tensach(σngay<12/01/2009(Sach * Muon * DocGia))

• Ta co cây phân tich cu phap cua câu truy vân trên như sau:

Page 306: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

306 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ví dụ minh họa (tt)

• Ơ đây ta co 2 phep chon:– Phep chon Sach.masach =

Muon.masach and Muon.madg = DocGia.madg

– Phep chon ngay<12/01/2009– Nguyên tăc tôi ưu hoa la cô găng tach

phep chon va di chuyên xuông cang sâu cang tôt.

Muon DocGia

Sachx

x

σSach.masach=Muon.masach and

Muon.madg= DocGia.madg

σngay<12/01/2009

∏tensach

∏tensach, tacgia, tennxb, masach, tendg,

diachi, Muon,masach, ngay

Page 307: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

307 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ví dụ minh họa (tt)

• Ơ đây ta co 2 phep chon:– Ta co thê đưa phep chon

σngay<12/01/2009 xuông dươi phep chiêu va hai phep chon con lai theo quy tăc L4,L5 vi thuôc tinh ngay chi thuôc quan hê Muon.

– Đưa phep chon Muon.madg = DocGia.madg xuông dươi trươc phep tich đê-cac cua Muon va DocGia. Ta co cây sau:

Muon

DocGia

x

σMuon.madg= DocGia.madg

σSach.masach = Muon.masach

∏tensach

σngay<12/01/2009

Sachx

Cây phep chon đa ha thâp va

phep chiêu đươc tô hơp lai

Page 308: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

308 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Ví dụ minh họa (tt)

• Giai đoan cuôi cung la biên đôi cac phep chiêu:– Ta dung phep chiêu đê

chi chon ra nhưng thuôc tinh cân thiêt cho phep tich đê-cac. Ta co cây cuôi cung cua qua trinh tôi ưu như sau:

Sach

MuonDocGia

x

σMuon.madg= DocGia.madg

σSach.masach = Muon.masach

∏tensach

σngay<12/01/2009

x

∏Muon.masach,

Muon.madg

∏DocGia.madg

∏Sach.masach

∏Muon.masach

Page 309: Co So Du Lieu Cntt-Luong Thi Ngoc Khanh

309 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT

Bai tâp

• Vơi csdl ThuVien trên, viêt biêu thưc đai sô quan hê thưc hiên cac truy vân sau va tôi ưu hoa cac biêu thưc đo (co giai thich).– Cho biêt danh sach nhưng quyên sach co thơi gian

mươn lơn hơn 1 năm va hiên chưa tra.

– Cho biêt ho tên cua nhưng đôc gia ơ TP HCM đa mươn sach co tên “Thê giơi phăng” cua nxb tre.