cơ sở dữ liệu đại học

220
CƠ SỞ DỮ LIỆU CƠ SỞ DỮ LIỆU GV: ThS.VŨ VĂN ĐỊNH GV: ThS.VŨ VĂN ĐỊNH TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN *************************

Upload: chu-thekop

Post on 26-May-2015

7.731 views

Category:

Education


5 download

DESCRIPTION

Good.

TRANSCRIPT

Page 1: Cơ sở dữ liệu đại học

CƠ SỞ DỮ LIỆUCƠ SỞ DỮ LIỆU

GV: ThS.VŨ VĂN ĐỊNHGV: ThS.VŨ VĂN ĐỊNH

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

*************************

Page 2: Cơ sở dữ liệu đại học

BBài ài 1. 1. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU

1. Tại sao cần phải có một CSDL?1. Tại sao cần phải có một CSDL?- Hệ thống các tập tin cổ điển :- Hệ thống các tập tin cổ điển :

• Được tổ chức riêng rẽ, phục vụ một mục đích hay một bộ Được tổ chức riêng rẽ, phục vụ một mục đích hay một bộ phận nào đó của doanh nghiệp.phận nào đó của doanh nghiệp.

• Nhược điểm:Nhược điểm: - Tính phụ thuộc giữa chương trình và dữ liệu .- Tính phụ thuộc giữa chương trình và dữ liệu .- Lưu trữ trùng lặp dữ liệu- Lưu trữ trùng lặp dữ liệu- Việc chia sẻ dữ liệu bị hạn chế- Việc chia sẻ dữ liệu bị hạn chế- Tốn thời gian xây dựng- Tốn thời gian xây dựng- Chi phí cho bảo trì chương trình lớn- Chi phí cho bảo trì chương trình lớn

Page 3: Cơ sở dữ liệu đại học

2. Ví dụ về CSDL.2. Ví dụ về CSDL.-Cơ sở dữ liệu cho một công ty -Cơ sở dữ liệu cho một công ty

chuyên kinh doanh : chuyên kinh doanh :

Gồm các bảng: KHACH HANG, SANPHAM, Gồm các bảng: KHACH HANG, SANPHAM, DON_DAT_HANG, NHA_CUNG_CAP,... và DON_DAT_HANG, NHA_CUNG_CAP,... và một số quy tắc nghiệp vụ áp đặt lên các một số quy tắc nghiệp vụ áp đặt lên các bảng.bảng.

Ví dụ về bảng KHACHHANG :Ví dụ về bảng KHACHHANG :STT MKH Tên KH Ma hang So luongSTT MKH Tên KH Ma hang So luong

1 CN22 Hoàng Hà MK02 81 CN22 Hoàng Hà MK02 8

2 CT20 Bến Nghé CT01 2002 CT20 Bến Nghé CT01 200

… … … … … … … …

Page 4: Cơ sở dữ liệu đại học

3. Cơ sở dữ liệu là gì?3. Cơ sở dữ liệu là gì?

ĐN:ĐN: CSDL là một tập hợp các dữ liệu có cấu trúc CSDL là một tập hợp các dữ liệu có cấu trúc về một tổ chức nào đó được lưu trữ trên các thiết về một tổ chức nào đó được lưu trữ trên các thiết bị lưu trữ thông tin thứ cấp như băng từ, đĩa từ,..bị lưu trữ thông tin thứ cấp như băng từ, đĩa từ,..

Mục đích:Mục đích: Nhằm thoả mãn nhu cầu khai thác Nhằm thoả mãn nhu cầu khai thác

thôngthông tin của một hay nhiều người sử dụng phục vụ tin của một hay nhiều người sử dụng phục vụ

cho nhiều mục đích khác nhau cho nhiều mục đích khác nhau

Điểm khác nhau nổi bật giữa CSDL và hệ Điểm khác nhau nổi bật giữa CSDL và hệ thống Filethống File là : là : Các dữ liệu trong CSDL được Các dữ liệu trong CSDL được lưu trữ tại một vị trí. Với cùng một CSDL có thể lưu trữ tại một vị trí. Với cùng một CSDL có thể được nhiều người sử dụng và phục vụ cho nhiều được nhiều người sử dụng và phục vụ cho nhiều mục đích khác nhau.mục đích khác nhau.

Page 5: Cơ sở dữ liệu đại học

Ưu điểm của CSDL:Ưu điểm của CSDL:

Tối thiểu hoá dư thừa thông tinTối thiểu hoá dư thừa thông tinTính độc lập chương trình- ứng dụngTính độc lập chương trình- ứng dụngNâng cao tính nhất quán dữ liệuNâng cao tính nhất quán dữ liệuNâng cao tính chia sẻ dữ liệuNâng cao tính chia sẻ dữ liệuNâng cao chất lượng dữ liệuNâng cao chất lượng dữ liệuNâng cao khả năng truy cập và trả lại dữ liệuNâng cao khả năng truy cập và trả lại dữ liệuGiảm chi phí bảo trì chương trình.Giảm chi phí bảo trì chương trình.

Page 6: Cơ sở dữ liệu đại học

Tính bảo mật Tính bảo mật Tính độc lậpTính độc lập Tránh sự dư thừa thông tinTránh sự dư thừa thông tin Có khả năng lưu trữ, phục hồi khi gặp sự cốCó khả năng lưu trữ, phục hồi khi gặp sự cố Hiệu suất sử dụng tốt, đảm bảo chế độ ưu tiên khi Hiệu suất sử dụng tốt, đảm bảo chế độ ưu tiên khi truy nhập dữ liệu.truy nhập dữ liệu.

Tiêu chuẩn của một CSDL:Tiêu chuẩn của một CSDL:

Page 7: Cơ sở dữ liệu đại học

4. Các đối tượng sử dụng CSDL4. Các đối tượng sử dụng CSDL

Những người sử dụng không chuyên Những người sử dụng không chuyên về lĩnh vực tin học về lĩnh vực tin học

Các chuyên viên tin học biết khai Các chuyên viên tin học biết khai thác CSDLthác CSDL

Những người quản trị CSDL: là người Những người quản trị CSDL: là người tổ chức CSDL, cấp quyền hạn khai tổ chức CSDL, cấp quyền hạn khai thác dữ liệu và giải quyết các tranh thác dữ liệu và giải quyết các tranh chấp khi gặp sự cốchấp khi gặp sự cố

Page 8: Cơ sở dữ liệu đại học

Gồm 3 mức :

Mức ngoài : là tập tất cả các dữ liệu mà người sử dụng cụ thể có thể nhìn thấy và được phép truy cập, là mức của người sử dụng và các chương trình ứng dụng.

Mức quan niệm : giải quyết vấn đề lưu trữ dữ liệu loại gì, lưu trữ bao nhiêu, mối quan hệ trong CSDL và mối quan hệ giữa các loại dữ liệu này như thế nào?

Mức trong( mức vật lý): Đây là mức lưu trữ dữ liệu. Mục đích của mức này giải quyết vấn đề dữ liệu là gì, dữ liệu được lưu trữ như thế nào và nhằm mục đích gì.

5. Các mức biểu diễn một CSDL.

Page 9: Cơ sở dữ liệu đại học

CSDL mức

khái niệm

View 1

View 2

View k

CSDL mức

vật lý

…… ………….

User 1

User 2

User k

Mức ngoài Mức trung gian Mức vật lý

View ( khung nhìn) của một user là một tập hợp tất cả các dữ liệu mà user đó nhìn thấy, được phép truy cập vào.

Hình biểu diễn Sự phân mức một CSDLHình biểu diễn Sự phân mức một CSDL

Page 10: Cơ sở dữ liệu đại học

6. Tính độc lập giữa dữ liệu và 6. Tính độc lập giữa dữ liệu và chương trìnhchương trình

Một CSDL là độc lập dữ liệu nếu nó có hoặc có thể có khả năng phát triển mà không ảnh hưởng tới các hệ ứng dụng.

Tính độc lập dữ liệu là " tính bất biến của các hệ ứng dụng đối với các thay đổi trong cấu trúc lưu trữ và chiến lược truy nhập"

Có hai mức độc lập dữ liệu:

Page 11: Cơ sở dữ liệu đại học

Độc lập dữ liệu mức vật lý : Có thể tổ chức lại CSDL vật lý (như thay đổi các tổ chức, cấu trúc dữ liệu) để làm thay đổi hiệu quả tính toán của các chương trình ứng dụng nhưng không đòi hỏi phải viết lại chương trình ứng dụng.

Độc lập dữ liệu mức logic: Có thể thay đổi lược đồ khái niệm như thêm, xoá , bớt thông tin của các thực thể đang tồn tại trong CSDL nhưng không làm ảnh hưởng tới các lược đồ con, do đó không cần phải viết lại các chương trình ứng dụng.

Page 12: Cơ sở dữ liệu đại học

II. Hệ quản trị CSDLII. Hệ quản trị CSDL1. Kh1. Khái niệm ái niệm

- - Là một phần mềm điều khiển mọi truy Là một phần mềm điều khiển mọi truy nhập đối với CSDL. Nó giúp người sử dụng có nhập đối với CSDL. Nó giúp người sử dụng có thể dùng được hệ thống mà không cần quan thể dùng được hệ thống mà không cần quan tâm tới thuật toán chi tiết hoặc biểu diễn dữ tâm tới thuật toán chi tiết hoặc biểu diễn dữ liệu trong máy.liệu trong máy.

- Mỗi hệ QT CSDL được cài đặt dựa trên mô - Mỗi hệ QT CSDL được cài đặt dựa trên mô hình dữ liệu cụ thể và hỗ trợ tối đa cho người hình dữ liệu cụ thể và hỗ trợ tối đa cho người dùng thực hiện các thao tác trên đó.dùng thực hiện các thao tác trên đó.

- VD : FOXPRO, ACCESS, ORACLE, v.v..- VD : FOXPRO, ACCESS, ORACLE, v.v..

Page 13: Cơ sở dữ liệu đại học

2.Tính năng của hệ QTCSDL:2.Tính năng của hệ QTCSDL:

Tạo cấu trúc lưu trữ dữ liệu trên Tạo cấu trúc lưu trữ dữ liệu trên máy. Cho phép đưa dữ liệu vào máy máy. Cho phép đưa dữ liệu vào máy tính theo cấu trúc đã tạo ra.tính theo cấu trúc đã tạo ra.

Cho phép khai thác CSDL đã lưu trữCho phép khai thác CSDL đã lưu trữ Tạo cơ chế đảm bảo an toàn, bí mật Tạo cơ chế đảm bảo an toàn, bí mật

cho dữ liệu trong quá trình thao táccho dữ liệu trong quá trình thao tác

Page 14: Cơ sở dữ liệu đại học

- -

3. Các thành phần trong hệ QT CSDL:3. Các thành phần trong hệ QT CSDL:

Ngôn ngữ giao tiếp với người sử dụng:Ngôn ngữ giao tiếp với người sử dụng: Gồm :ngôn ngữ mô tả , thao tác , truy vấn và quản lý Gồm :ngôn ngữ mô tả , thao tác , truy vấn và quản lý dữ liệu. dữ liệu.

- Từ điển dữ liệu - Từ điển dữ liệu : là một CSDL của hệ QT CSDL : là một CSDL của hệ QT CSDL sử dụng để lưu trữ cấu trúc CSDL, các thông tin bảo sử dụng để lưu trữ cấu trúc CSDL, các thông tin bảo mật, bảo đảm an toàn dữ liệu và các cấu trúc ngoài mật, bảo đảm an toàn dữ liệu và các cấu trúc ngoài

- Các biện pháp bảo mật- Các biện pháp bảo mật

- Cơ chế giải quyết tranh chấp dữ liệu. - Cơ chế giải quyết tranh chấp dữ liệu. Các biện Các biện pháp:pháp:

+ Cấp quyên ưu tiên cho NSD+ Cấp quyên ưu tiên cho NSD+ Đánh dấu yêu cầu truy xuất, phân chia thời + Đánh dấu yêu cầu truy xuất, phân chia thời

gian, người nào yêu cầu trước thì có quyền truy xuất gian, người nào yêu cầu trước thì có quyền truy xuất trước. trước.

Page 15: Cơ sở dữ liệu đại học

- Cơ chế phục hồi, sao lưu dữ liệu khi Cơ chế phục hồi, sao lưu dữ liệu khi có sự cố:có sự cố:

+ Định kỳ kiểm tra CSDL, sau một + Định kỳ kiểm tra CSDL, sau một thời gian nhất định tự động tạo bản sao.thời gian nhất định tự động tạo bản sao.

+ Tạo nhật kí thao tác, khi có sự cố + Tạo nhật kí thao tác, khi có sự cố thì tự động lật ngược lại để phụ hồi.thì tự động lật ngược lại để phụ hồi.

- Đảm bảo tính độc lập giữa dữ liệu Đảm bảo tính độc lập giữa dữ liệu và chương trình.và chương trình.- Cung cấp giao diện thân thiện với người dùng Cung cấp giao diện thân thiện với người dùng

không chuyênkhông chuyên

Page 16: Cơ sở dữ liệu đại học

Bài 2Bài 2 NHỮNG CÁCH TIẾP CẬN MỘT CSDL NHỮNG CÁCH TIẾP CẬN MỘT CSDL

MMô hình dữ liệu là sự trừu tượng ô hình dữ liệu là sự trừu tượng

hoá hoá môimôi trường thực, nó là biểu diễn dữ liệu trường thực, nó là biểu diễn dữ liệu ở mức quan niệm. ở mức quan niệm.

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

Một số loại mô hình dữ liệu phổ Một số loại mô hình dữ liệu phổ biến :biến :

Page 17: Cơ sở dữ liệu đại học

1. Mô hình dữ liệu quan hệ1. Mô hình dữ liệu quan hệ

Mô hình dữ liệu quan hệ do E.F. Mô hình dữ liệu quan hệ do E.F. Codd đề xuất.Codd đề xuất.

Nền tảng cơ bản của nó là khái Nền tảng cơ bản của nó là khái niệm lý thuyết tập hợp trên các quan niệm lý thuyết tập hợp trên các quan hệ, tức là tập các bộ giá trị. hệ, tức là tập các bộ giá trị.

Page 18: Cơ sở dữ liệu đại học

2. Cách tiếp cận theo mô hình dữ liệu 2. Cách tiếp cận theo mô hình dữ liệu mạngmạng

Mô hình dữ liệu mạng (lưới) là mô hình Mô hình dữ liệu mạng (lưới) là mô hình được biểu diễn bởi một đồ thị có hướng.được biểu diễn bởi một đồ thị có hướng.

Loại mẫu tin (Record Type): là mẫu đặc Loại mẫu tin (Record Type): là mẫu đặc trưng cho từng loại đối tượng riêng biệt, được trưng cho từng loại đối tượng riêng biệt, được biểu diễn bởi một hình chữ nhật.biểu diễn bởi một hình chữ nhật.

Loại liên hệ ( Set Type): là sự liên kết giữa Loại liên hệ ( Set Type): là sự liên kết giữa một loại mẫu tin chủ với một loại mẫu tin một loại mẫu tin chủ với một loại mẫu tin thành viên, được biểu diễn bởi một hình bầu thành viên, được biểu diễn bởi một hình bầu dục.dục.

Sự liên kết giữa 2 loại mẫu tin được thể Sự liên kết giữa 2 loại mẫu tin được thể hiện bởi các cung có hướng đi từ loại mẫu tin hiện bởi các cung có hướng đi từ loại mẫu tin chủ tới loại liên hệ và từ loại liên hệ tới loại chủ tới loại liên hệ và từ loại liên hệ tới loại mẫu tin thành viên.mẫu tin thành viên.

Page 19: Cơ sở dữ liệu đại học

Trong loại liên kết, cần chỉ ra số Trong loại liên kết, cần chỉ ra số lượng các mẫu tin tham gia trong lượng các mẫu tin tham gia trong mỗi kết hợp. Các loại liên hệ:mỗi kết hợp. Các loại liên hệ: 1-11-1 1-n 1-n n-1n-1 Đệ quyĐệ quy

Page 20: Cơ sở dữ liệu đại học

PHÒNGPHÒNG

CÔNG VIỆCCÔNG VIỆC

LÝ LỊCHLÝ LỊCH

NHÂN VIÊNNHÂN VIÊN

CóCóGồmGồm

Cùng làmCùng làm

quản lýquản lý

1-n1-nn-1n-1

1-n1-n1-11-1

Hình 3. Mô hình dữ liệu mạng ( Network Hình 3. Mô hình dữ liệu mạng ( Network Model)Model)

Page 21: Cơ sở dữ liệu đại học

3. Mô hình dữ liệu phân cấp3. Mô hình dữ liệu phân cấp Mô hình dữ liệu phân cấp là một cây ( Tree) Mô hình dữ liệu phân cấp là một cây ( Tree)

trong đó mỗi nút của cây biểu diễn một thực thể, giữa trong đó mỗi nút của cây biểu diễn một thực thể, giữa nút con và nút cha được liên hệ với nhau theo một mối nút con và nút cha được liên hệ với nhau theo một mối quan hệ xác định.quan hệ xác định.

Loại mẫu tinLoại mẫu tin : Giống trong mô hình mạng : Giống trong mô hình mạng Loại liên hệLoại liên hệ : Kiểu liên hệ là phân cấp, theo cách: : Kiểu liên hệ là phân cấp, theo cách:

- Mẫu tin thành viên chỉ đóng vai trò thành viên của Mẫu tin thành viên chỉ đóng vai trò thành viên của một mối liên hệ duy nhất, tức là thuộc một chủ duy một mối liên hệ duy nhất, tức là thuộc một chủ duy nhất. nhất.

- Như vậy, mối liên hệ từ mẫu tin chủ tới các mẫu tin Như vậy, mối liên hệ từ mẫu tin chủ tới các mẫu tin thành viên là 1-n, và từ mẫu tin thành viên tới mẫu thành viên là 1-n, và từ mẫu tin thành viên tới mẫu tin chủ là 1-1.tin chủ là 1-1.

- Giữa hai loại mẫu tin chỉ tồn tại một mối liên hệ duy Giữa hai loại mẫu tin chỉ tồn tại một mối liên hệ duy nhấtnhất

Page 22: Cơ sở dữ liệu đại học

Ví dụ :Ví dụ : TOÀN QUỐCTOÀN QUỐC

HÀ HÀ NỘINỘI

HẢI PHÒNGHẢI PHÒNG NAM NAM ĐỊNHĐỊNH

……

……

NAM HỒNGNAM HỒNGCỔ CỔ LOALOA

……BA BA ĐÌNHĐÌNH

ĐÔNG ANHĐÔNG ANH

NK 1NK 1

HỘ 2HỘ 2 ……

NK 1NK 1 ……

HỘ 1HỘ 1

Page 23: Cơ sở dữ liệu đại học

4. Mô hình dữ liệu hướng đối tượng4. Mô hình dữ liệu hướng đối tượng

- Cho phép biểu diễn các đối tượng khá - Cho phép biểu diễn các đối tượng khá tự nhiên và sát với thực tế.tự nhiên và sát với thực tế.

- Hỗ trợ các ngôn ngữ thao tác hướng - Hỗ trợ các ngôn ngữ thao tác hướng đối tượng mạnh, cho phép người sử đối tượng mạnh, cho phép người sử dụng dễ dàng biểu diễn cả các truy dụng dễ dàng biểu diễn cả các truy vấn phức tạpvấn phức tạp

Page 24: Cơ sở dữ liệu đại học

Bài 3. Mô hình quan hệ của E.F. Bài 3. Mô hình quan hệ của E.F. CoddCodd

I. Khái quát chung

Mô hình quan hệ :

• Biểu thị dữ liệu trong một CSDL như một tập các quan hệ.

• Một quan hệ là một bảng các giá trị gồm các dòng và các cột.

• Mỗi dòng trong bảng là một tập các giá trị có liên quan đến nhau, biểu thị một sự kiện tương ứng với một thực thể hay một mối quan hệ tương ứng với thế giới thực.

Page 25: Cơ sở dữ liệu đại học

VD: Quan hệVD: Quan hệ : :

SINH_VIENSINH_VIEN (Ma SV, Hoten, Nam sinh, DiaChi, (Ma SV, Hoten, Nam sinh, DiaChi, Diem) Diem)

Mã Mã SVSV

HotenHoten NamsiNamsinhnh

DiachiDiachi ĐieĐiemm

001001 Ngọc AnhNgọc Anh 19861986 Hoàn Hoàn KiếmKiếm

99 t1t1

002002 Minh TuấnMinh Tuấn 19801980 Ba ĐìnhBa Đình 1010 t2t2

003003 Hoàng HàHoàng Hà 19851985 Tây Hồ Tây Hồ 88 t3t3

Page 26: Cơ sở dữ liệu đại học

II. Các khái niệm của mô hình quan hệ

1. Thuộc tính :

• Mỗi đối tượng quản lý đều có các đặc tính riêng biệt, gọi là các thuộc tính. Kí hiệu các thuộc tính là A, B, C, A1, A2,...

• VD: Mã sinh viên, họ tên, quê quán, ngày sinh, ...

• Các thuộc tính được đặc trưng bởi một tên gọi, kiểu giá trị, miền giá trị của chúng.

2. Lược đồ quan hệ :

Một lược đồ quan hệ được đặc trưng bởi tên lược đồ và một tập hữu hạn các thuộc tính U={A1, A2, ..., An}. Lược đồ R với tập thuộc tính là U= { A1, A2,... An} được kí hiệu là R(U) hay R ( A1, A2, ... An).

Page 27: Cơ sở dữ liệu đại học

3. Miền giá trị :

- Là tập hợp các giá trị nguyên tử mà thuộc tính có thể nhận

- Để đặc tả một miền, người ta dùng:

tên miền, một kiểu dữ liệu và khuôn dạng dữ liệu.

VD: Miền VD: Miền Mã SVMã SV là tập hợp các dãy kí tự có độ dài từ 5 ki là tập hợp các dãy kí tự có độ dài từ 5 ki tựtự Miền Miền ĐiểmĐiểm là tập các giá trị số thuộc [0..10]là tập các giá trị số thuộc [0..10]

Page 28: Cơ sở dữ liệu đại học

4. Quan hệ :

Một quan hệ trên một tập thuộc tính là một tập con Một quan hệ trên một tập thuộc tính là một tập con của tích Desscartes cuả một hay nhiều miền.của tích Desscartes cuả một hay nhiều miền.

Cho một quan hệ r xác định trên tập thuộc tính Cho một quan hệ r xác định trên tập thuộc tính ={ A1, A2, ..,An}. ={ A1, A2, ..,An}.

Khi đó r Khi đó r Dom(A1) x Dom(A2) x ...x Dom(A1) x Dom(A2) x ...x Dom(An), trong đó Dom(Ai ) là miền của thuộc tính Dom(An), trong đó Dom(Ai ) là miền của thuộc tính AiAi

Như vậy, quan hệ r là một tập hợp các n_ bộ có dạng :Như vậy, quan hệ r là một tập hợp các n_ bộ có dạng :

r = {( a1, a2,.., an) | ai r = {( a1, a2,.., an) | ai Dom(Ai), i= 1, Dom(Ai), i= 1, 2,..,n }2,..,n }

Page 29: Cơ sở dữ liệu đại học

Có thể quan niệm quan hệ Có thể quan niệm quan hệ là một bảng hai là một bảng hai chiều, mỗi cột là một thuộc tính thường gọi là chiều, mỗi cột là một thuộc tính thường gọi là trường, mỗi dòng là một bộ n.trường, mỗi dòng là một bộ n.

VD: VD: Quan hệ R= {(di1,di2,...,din ) / i=1..m} Quan hệ R= {(di1,di2,...,din ) / i=1..m}

AA11 AA22 ...... AAnn

dd1111 dd1212 ...... dd1n1n

dd2121 dd2222 ...... dd2n2n

...... ...... ...... ......

ddm1m1 ddm2m2 ...... ddmnmn

Page 30: Cơ sở dữ liệu đại học

Một số chú ý :

- Các tập D1= Dom ( A1),.., Dn=Dom ( An) là tập các miền trị của R

- n được gọi là bậc của quan hệ r- M được gọi là lực lượng của r- Quan hệ bậc 1 là quan hệ nhất nguyên,

quan hệ bậc hai là quan hệ nhị nguyên, quan hệ bậc n là qua hệ n nguyên.

Page 31: Cơ sở dữ liệu đại học

Các tính chất dặc trưng của một quan hệ.

• Một quan hệ có một tên phân biệt với các quan hệ khác

• Mỗi ô trong bảng quan hệ chứa một giá trị nguyên tố

• Mỗi thuộc tính trong một quan hệ có một tên phân biệt

• Các giá trị của một thuộc tính thuộc cùng một miền

• Thứ tự của các thuộc tính, các bộ là không quan trọng

• Các bộ trong quan hệ là phân biệt

Page 32: Cơ sở dữ liệu đại học

VD:VD: Quan hệQuan hệ TKB( Ngày, tiết thứ, môn, phòng, GV} TKB( Ngày, tiết thứ, môn, phòng, GV} là một quan hệ 5 ngôi. là một quan hệ 5 ngôi.

NgàNgàyy

Tiết Tiết thứthứ

MônMôn PhòngPhòng GVGV

24/324/3 11 CSB2CSB2 202202 Ngọc AnhNgọc Anh t1t1

25/325/3 22 NNNN 102102 Minh Minh TuấnTuấn

t2t2

26/326/3 33 CSDLCSDL 200200 Hoàng Hoàng HàHà

t3t3t1 (24/3, 1, CSB2, 202, Ngoc Anh)= t1(R)

Chú ý : Các khái niệm tương đương

Quan hệ Quan hệ BảngBảng TệpTệp

Thuộc tínhThuộc tính CộtCột TrườngTrường

BộBộ DòngDòng Bản ghiBản ghi

(NN ĐSQH)(NN ĐSQH) (SQL-Access)(SQL-Access) (Fox)(Fox)

Page 33: Cơ sở dữ liệu đại học

4. Khoá và siêu khoá4. Khoá và siêu khoá

a. Siêu khoá

• Siêu khoá của một 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 SK là siêu khoá của R=< ,F> thì SK và trong một quan hệ bất kỳ của lược đồ R không thể có hai bộ khác nhau nhưng có cùng một giá trị trên SK.

• Mỗi quan hệ có ít nhất một siêu khoá, đó là - tập tất cả các thuộc tính của quan hệ.

• Mọi tập con của chứa một siêu khoá cũng là siêu khoá.

Page 34: Cơ sở dữ liệu đại học

b.Khoá Khoá của một lược đồ quan hệ R là một siêu khoá

của lược đồ này sao cho mọi tập con thực sự của nó không là siêu khoá.

Như vậy, một khoá là một siêu khoá tối thiểu hiểu theo nghĩa, đó là một siêu khoá mà chúng ta không thể bỏ bớt thuộc tính nào ra khỏi nó mà vẫn giữ được tính chất xác định duy nhất cho mỗi bộ.

VD: Xét quan hệ SINH_VIEN

- Các siêu khoá : {Mã SV, Họ tên} hay {Mã SV, ngày sinh, điểm,},...

- Khoá : {Mã SV}

Page 35: Cơ sở dữ liệu đại học

•- Một lược đồ quan hệ có nhiều hơn một khoá, khi đó mỗi khoá được gọi là một khoá dự tuyển.

• Thông thường có một khoá dự tuyển được chọn làm khoá chính. Ta nên chọn khoá dự tuyển có một thuộc tính hoặc có ít thuộc tính nhất làm khoá chính.

• Khoá chính là khóa được dùng để nhận diện một bộ trong quan hệ do đó các giá trị của các bộ ở các thuộc tính trong khoá chính không được null.

• Thuộc tính khoá : là các thuộc tính có tham gia vào một khoá ( khoá dự tuyển hay khoá chính).

• Ngược lại, thuộc tính không tham gia vào một khoá nào gọi là thuộc tính không khoá.

Page 36: Cơ sở dữ liệu đại học

VD: VD: Quan hệ Quan hệ KHOAKHOA

- Quan hệ trên có 3 khoá dự tuyển là { Mã khoa}, { Tên khoa}, {Điện thoại }. Người ta thường chọn Mã khoa làm khoá chính. Như vậy, thuộc tính không khoá chỉ còn là : Địa chỉ và Chủ nhiệm khoa

Mã khoa

Tên khoa

Điện thoại

Địa chỉĐịa chỉ Chủ nhiệm Chủ nhiệm khoakhoa

SPTSPT ToánToán 04.768404.76845959

A3A3 Nguyễn AnhNguyễn Anh

SPVSPV VănVăn 04.768904.76894545

A4A4 Hoài NamHoài Nam

SPCNSPCN CNTTCNTT 04.768304.76834343

A3A3 Nguyễn AnhNguyễn Anh

Page 37: Cơ sở dữ liệu đại học

c. Khoá ngoài :

Một tập thuộc tính K là khoá ngoài của một quan hệ r nếu K không là khoá chính của quan hệ r nhưng lại là khoá chính của một quan hệ khác .

VD: Có hai quan hệ:

SINHVIEN (Mã SV, Tên SV,..., Mã lớp)

LOP( Mã lớp, Tên lớp,...)

Mã lớp là khoá ngoài của quan hệ SINHVIEN.Mã lớp là khoá ngoài của quan hệ SINHVIEN.

Page 38: Cơ sở dữ liệu đại học

Bài 4. Đại số quan hệBài 4. Đại số quan hệ

I. Đại số quan hệ

Đại số quan hệ là cơ sở của một ngôn ngữ bậc cao để thao tác trên các quan hệ. Đại số quan hệ gồm 8 phép toán cơ bản. Bằng các phép toán này, ta có thể trích dữ liệu từ một hay nhiều quan hệ để tạo ra các quan hệ mới.

Page 39: Cơ sở dữ liệu đại học

II. Các phép toán lý thuyết tập hợp

-Gọi r là quan hệ trên tập thuộc tính R={A1, ..,An}. Giả thiết rằng r là tập hữu hạn các bộ.

- Khái niệm khả hợp : Hai lược đồ quan hệ R1 và R2 được goị là khả hợp nếu có cùng bậc n và DOM(Ai) = DOM(Bi) (1in)

- Cho hai quan hệ R1=(A1,A2,..An) và R2=(B1,B2,..,Bn) là hai quan hệ khả hợp, ta có định nghĩa:

Page 40: Cơ sở dữ liệu đại học

1.Phép hợp1.Phép hợp

Hợp của hai quan hệ r và s khả hợp, kí hiệu là r s là tập các bộ thuộc r hoặc s hoặc thuộc cả hai quan hệ.

Biểu diễn hình thức:

r s = { t/ t r hoặc t s hoặc t r và s }

Ví dụ :

r ( A B C) s ( A B C) r s = ( A B C)

___________ __________ _________________

a1 b1 c1 a1 b1 c1 a1 b1 c1

a2 b1 c2 a2 b2 c2 a2 b1 c2

a2 b2 c1 a2 b2 c2

a2 b2 c1

Page 41: Cơ sở dữ liệu đại học

2. Phép giao2. Phép giaoGiao của hai quan hệ r và s khả hợp, kí hiệu là r

s là tập các bộ thuộc cả quan hệ r và s .

Biểu diễn hình thức :

r s = { t/ t r và t s }

Ví dụ : Với hai quan hệ ở ví dụ trên, giao của chúng là:

r s = ( A B C )

a1 b1 c1

Page 42: Cơ sở dữ liệu đại học

3. Phép trừ3. Phép trừ

Hiệu của hai quan hệ r và s khả hợp, kí hiệu là r - s là tập các bộ thuộc r nhưng không thuộc s .

Biểu diễn hình thức :

r - s = { t/ t r và t s }

Ví dụ : Cũng với ví dụ trên, hiệu của chúng là:

r - s = ( A B C )

a2 b1 c2

a2 b2 c1

Chú ý : phép giao của hai quan hệ có thể biểu diễn qua phép trừ:

r s = r- ( r - s )

Page 43: Cơ sở dữ liệu đại học

4. Tích Đề -Các4. Tích Đề -Các - Gọi r là quan hệ xác định trên tập thuộc tính { A1, A2,..,An} và s là quan hệ xác định trên tập thuộc tính { B1, B2,..,Bm} . Tích Đề - Các r x s của r và s là tập ( n + m ) - bộ với n thành phần đầu có dạng một bộ thuộc r và m thành phần sau có dạng của một bộ thuộc s.

- Biểu diễn hình thức :

r x s = { t/ t có dạng (a1, a2, .., an, b1, b2,..,bm) trong đó ( a1, ..,an ) r và (b1,.. ,bm) s }

- Ví dụ :

r ( A B C) s ( D E F) r x s = ( A B C D E F)

a1 b1 c1 d e f a1 b1 c1 d e f

a2 b2 c2 d1 e1 f 1 a1 b1 c1 d1 e1 f1

a2 b2 c2 d e f

a2 b2 c2 d1 e1 f1

Page 44: Cơ sở dữ liệu đại học

5. Phép chiếu5. Phép chiếuPhép chiếu trên một quan hệ thực chất là loại bỏ

đi một số thuộc tính và giữ lại những thuộc tính còn lại của quan hệ đó. Dạng tổng quát : < ds_thuộc tính> (< tên quan hệ >)

là kí hiệu phép chiếu.

< ds_thuộc tính> : danh sách các thuộc tính được lấy ra

Nếu < ds_thuộc tính > chỉ có những thuộc tính không khoá thì phép chiếu sẽ tự bỏ đi những bộ lặp.

Phép chiếu không có tính giao hoán.

Nếu <ds1 > < ds2> thì

<ds1>( <ds2>(R)) = <ds1>(R)

Page 45: Cơ sở dữ liệu đại học

Ví dụ :Ví dụ : Cho quan hệ Cho quan hệ SV SV ( Mã SV, Họ tên, Ngày sinh, điểm) như ( Mã SV, Họ tên, Ngày sinh, điểm) như sau :sau :

Mã Mã SVSV

ĐiểmĐiểm

001001 88

002002 99

003003 77

004004 1010

Thì phép chiếu Mã Sv, Điểm (SV) sẽ cho ta một quan hệ mới chỉ gồm hai thuộc tính là Mã SV và Điểm .

Mã Mã SVSV

Họ tênHọ tên Ngày sinhNgày sinh ĐiểmĐiểm

001001 Trần AnhTrần Anh 23/4/8623/4/86 88

002002 Ngọc BíchNgọc Bích 13/4/8513/4/85 99

003003 Xuân MaiXuân Mai 25/3/8725/3/87 77

004004 Hồng VânHồng Vân 21/6/8521/6/85 1010

DIEM( Mã SV, Điểm ) :

Page 46: Cơ sở dữ liệu đại học

6. Phép chọn6. Phép chọn

Phép chọn dùng để trích chọn một tập con trong một quan hệ, các bộ được trích chọn phải thoả mãn điều kiện chọn. ( Phép chọn trích ra các hàng trong quan hệ)

Dạng tổng quát : < điều kiện > (< Tên quan hệ >)

là kí hiệu phép chọn.

Kết quả thu được từ phép chọn là một quan hệ có danh sách thuộc tính được chỉ ra trong Tên quan hệ

Điều kiện : là các biểu thức điều kiện cần thoả mãn.. Các biểu thức này được nối với nhau bằng các phép: ( phủ định ), (giao), (hợp)

Phépchọn có tính giao hoán.

Page 47: Cơ sở dữ liệu đại học

7. Phép kết nối7. Phép kết nối Phép kết nối : Dùng để kết hợp hai bộ có liên quan từ hai quan hệ thành một bộ.

Trước hết ta làm quen với khái niệm xếp cạnh nhau:

Cho bộ d =( d1, d2,..,dm) và bộ e= (e1, e2,.., em). Phép xếp cạnh nhau được định nghĩa qua :

d e = ( d1, d2,.., dm,e1, e2,..,em).

Page 48: Cơ sở dữ liệu đại học

Gọi là một trong các phép so sánh . Phép kết nội được định nghĩa:

Phép kết nối của quan hệ r đối với thuộc tính A với quan hệ s đối với thuộc tính B được định nghĩa qua.

r s = { (t u ) | t r và u s và t[A] u[B] }A B

Page 49: Cơ sở dữ liệu đại học

Kết quả của phép kết nối là một quan hệ Q có ( n+m) thuộc tính, mỗi bộ trong Q thoả mãn điều kiện kết nối.

Các bộ có giá trị rỗng tại thuộc tính kết nối thì không xuất hiện trong kết quả của phép kết.

Bản chất của phép kết nối là phép lấy tích Đề - Các của hai quan hệ và chọn ra các bộ thoả mãn điều kiện kết.

Page 50: Cơ sở dữ liệu đại học

Ví dụ :

r ( A B C ) s( C D E ) r s = ( A B C C D E)

a1 1 1 1 d1 e1 a1 1 1 1 d1 e1

a2 2 1 2 d2 e2 a2 2 1 1 d1 e1

a1 2 2 3 d3 e3 a2 2 1 2 d2 e2 a1 2 2 1 d1 e1 a1 2 2 2 d2 e2

B≥ C

Page 51: Cơ sở dữ liệu đại học

Nếu điều kiện kết nối chứa phép so sánh (=) bằng thì phép kết nối được gọi là phép kết nối bằng.

Trường hợp kết nối bằng tại thuộc tính cùng tên của hai quan hệ và một trong hai thuộc tính đó bị loại bỏ, thì phép kết nối được gọi là kết nối tự nhiên . Kí hiệu là " * ".

Biểu diễn của phép kết nối tự nhiên :

r(ABC) * s(CDE) = { t[ABCDE]/ t[ABC] r và t[CDE ] s}

VD : với hai quan hệ r và s nêu trên thì :

r(ABC) * s(CDE) = ( A B C D E)

a1 1 1 d1 e1

a2 2 1 d1 e1

a1 2 2 d2 e2

Page 52: Cơ sở dữ liệu đại học

8. Phép chia8. Phép chiaGọi r là quan hệ n- ngôi và s là quan hệ m ngôi

( n > m, s ). Phép chia r s là tập tất cả các ( n-m )- bộ t sao cho với mọi bộ u s thì bộ t u r.

Ví dụ :

r ( A B C D ) s ( C D) r s = ( A B)

a b c d c d a b

a b e f e f e d

b c e f

e d c d

e d e f

c a d e

Page 53: Cơ sở dữ liệu đại học

Cơ sở dữ liệu minh hoạCơ sở dữ liệu minh hoạ Cho một cơ sở dữ liệu Thực tập gồm 3 quan hệ sau đây:

SV( SV#, HT, NS, QUE, HL)

DT(DT#, TDT, CN, KP)

SD(SV#, DT#, NTT, KM, KQ)

-Quan hệ SV chứa thông tin về các sinh viên trong một lớp của một trường đại học. Trong đó:

SV# : mã số sinh viên

HT : Họ và tên sinh viên

NS : Năm sinh của sinh viên

QUE: quê quán

HL : Học lực thể hiện qua điểm trung bình

Page 54: Cơ sở dữ liệu đại học

- Quan hệ - Quan hệ DTDT chứa thông tin về đề tài nhà trường quản lý . chứa thông tin về đề tài nhà trường quản lý .Trong đó :Trong đó :

DT# : mã số đề tài

TDT : tên đề tài

CN : họ và tên chủ nhiệm đề tài

KP : Kinh phí cấp cho đề tài ( triệu đồng)- Quan hệ SD SD chứa thông tin về tình hình thực tập của các sinh viên theo các đề tài. Trong đó :

NTT : nơi thực tập

KM : khoảng cách từ nơi thực tập đến trường

KQ : kết quả thực tập theo đề tài đã chọn .

* Giả thiết là mỗi sinh viên có thể tham gia nhiều đề tài, mỗi đề tài sinh viên đó thực tập tại một địa điểm.

Page 55: Cơ sở dữ liệu đại học

SV# HT NS Que HL1 Hồng Mai 22/4/1982 Hà Nội 6.82 Mạnh Khánh 27/6/1986 Nam Định 8.33 Xuân Quỳnh 17/5/1987 Hà Nội 9.54 Ngọc Bích 25/4/1979 Nam Định 8.65 Minh Tú 19/3/1986 Quảng Ninh 6.26 Hồng Vân 19/4/1980 Hải Phòng 9.87 Ngọc Anh 27/5/1982 Hà Nội 7.68 Mai Lan 16/8/1983 Hải Phòng 8.5

DT# TDT CN KP1 Phân tích thiết kế CSDL Trần Hùng 10000002 Mạng máy tính Nguyễn Anh 5000003 Kiến trúc máy tính Hồng Hạnh 14000004 Phần mềm A Mạnh Hùng 23000005 Giáo trình ABC Hoàng Hà 9000006 Mạng Internet Ngọc Lan 1800000

SVSV

DTDT

Page 56: Cơ sở dữ liệu đại học

SV# DT# NTT KM KQ1 4 Hà Tây 56 6.81 6 Hải Phòng 120 8.73 5 Quảng Ninh 300 93 4 Hà Đông 30 9.72 3 Hà Nội 40 9.81 5 Nam Định 80 9.47 3 Hà Nội 38 8.75 5 Hải Phòng 150 8.27 3 Thanh Hoá 240 7.9

SDSD

Page 57: Cơ sở dữ liệu đại học

Yêu cầu :Yêu cầu : - Hãy viết các biểu thức đại số quan hệ biểu diễn các yêu cầu sau :

1. Cho thông tin về những sinh viên sinh trước năm 1985 có quê ở Hà Nội.

2. Cho biết các địa điểm thực tập xa trường (KM >100) của đề tài số 5.

3. Cho thông tin về các đề tài có sinh viên thực tập.

4. Cho biết mã của các đề tài không có sinh viên nào tham gia.

5. Cho danh sách các tỉnh có sinh viên đến thực tập.

6. Cho thông tin về việc thực tập tại Hải Phòng của sinh viên.

7. Cho biết mã của những đề tài có kinh phí lớn hơn 1 triệu và nhỏ hơn 2 triệu

8. Cho biết mã của sinh viên dưới 20 tuổi, thực tập khá ( có điểm kết quả thực tập >=6.5)

Page 58: Cơ sở dữ liệu đại học

III. Các phép toán quan hệ bổ sungIII. Các phép toán quan hệ bổ sung

Các hàm kết tập:Các hàm kết tập: Có nhiều truy vấn mà đại số Có nhiều truy vấn mà đại số quan hệ không thể thực hiện được như: đưa ra quan hệ không thể thực hiện được như: đưa ra tổng lương, tìm lương lớn nhất ,v.v.. tổng lương, tìm lương lớn nhất ,v.v..

Ta có các hàm sau: Ta có các hàm sau:

Hàm tính trung bình cộng ( Hàm tính trung bình cộng ( AVERAGEAVERAGE))

Hàm tính tổng (Hàm tính tổng ( SUM SUM))

Hàm tìm giá trị lớn nhất (Hàm tìm giá trị lớn nhất ( MAX) MAX), nhỏ nhất , nhỏ nhất ((MINMIN))

Hàm đếm các bộ giá trị ( Hàm đếm các bộ giá trị ( COUNT)COUNT)

Page 59: Cơ sở dữ liệu đại học

Các phép gộp nhóm:Các phép gộp nhóm: Nhóm các bộ trong Nhóm các bộ trong một quan hệ theo một giá trị của một số các một quan hệ theo một giá trị của một số các thuộc tính và sau đó áp dụng các hàm kết tập thuộc tính và sau đó áp dụng các hàm kết tập trên từng nhóm một cách độc lập. trên từng nhóm một cách độc lập.

Phép gộp nhóm được định nghĩa như Phép gộp nhóm được định nghĩa như sau:sau:

< các tt cơ sở để gộp nhóm>< các tt cơ sở để gộp nhóm> < ds các hàm kết < ds các hàm kết

tập >tập > (r) (r)

Trong đó : - Trong đó : - là kí hiệu của phép gộp nhómlà kí hiệu của phép gộp nhóm

- <- <các tt cơ sở để gộp nhómcác tt cơ sở để gộp nhóm>: là danh sách >: là danh sách các thuộc tính của quan hệ.các thuộc tính của quan hệ.

- < - < ds hàm kết tậpds hàm kết tập >: là danh sách các cặp >: là danh sách các cặp ( ( <hàm>< thuộc tính><hàm>< thuộc tính>. .

Page 60: Cơ sở dữ liệu đại học

• Kết quả của phép gộp nhómKết quả của phép gộp nhóm là một là một quan hệ. Ngoài các thuộc tính cơ sở để quan hệ. Ngoài các thuộc tính cơ sở để gộp nhóm, quan hệ kết quả còn có các gộp nhóm, quan hệ kết quả còn có các thuộc tính tương ứng với các phần tử thuộc tính tương ứng với các phần tử trong danh sách hàm kết tập.trong danh sách hàm kết tập.

• Nếu ds các thuộc tính cơ sở để gộp Nếu ds các thuộc tính cơ sở để gộp nhóm là rỗng nhóm là rỗng thì các hàm kết tập thì các hàm kết tập được áp dụng cho các giá trị thuộc tất được áp dụng cho các giá trị thuộc tất cả các bộ trong quan hệ. Khi đó quan cả các bộ trong quan hệ. Khi đó quan hệ kết quả chỉ có một bộ.hệ kết quả chỉ có một bộ.

Page 61: Cơ sở dữ liệu đại học

Ví dụ : Giả sử có quan hệ NHAN_VIENVí dụ : Giả sử có quan hệ NHAN_VIEN

MA_NV HO_TEN NG_SINH MA_P LUONG

1 Hồng Mai 22/4/1982 P1 1000000

2 Mạnh Khánh 27/6/1978 P3 2500000

3 Xuân Quỳnh 17/5/1977 P2 1200000

4 Ngọc Bích 25/4/1979 P1 2000000

5 Minh Tú 19/3/1981 P3 1500000

6 Hồng Vân 19/4/1980 P1 1800000

7 Ngọc Anh 27/5/1982 P2 1800000

8 Mai Lan 16/8/1979 P1 1200000

Page 62: Cơ sở dữ liệu đại học

Nếu thực hiện phép gộp nhóm Nếu thực hiện phép gộp nhóm

MA_PHONG MA_PHONG COUNTCOUNT MA_NV, MA_NV, AVERAGE AVERAGE LUONG LUONG (NHAN_VIEN)(NHAN_VIEN)

Thì quan hệ kết quả sẽ là :Thì quan hệ kết quả sẽ là :

MA_P COUNT MA_NV AVERAGE LUONG

P1 4 1500000

P2 2 2000000

P3 2 1500000

Nếu thực hiện phép gộp nhóm :Nếu thực hiện phép gộp nhóm :

COUNTCOUNT MA_NV, MA_NV, AVERAGE AVERAGE LUONG LUONG (NHAN_VIEN)(NHAN_VIEN)

Thì quan hệ kết quả sẽ là :Thì quan hệ kết quả sẽ là :

COUNT MA_NV AVERAGE LUONG

8 1666666.7

Page 63: Cơ sở dữ liệu đại học

MA_NV HO_TEN NG_SINH GIOI_TINH MA_P LUONG1 Trần Anh 28/3/1978 Nam P2 20000002 Ngọc Hà 17/4/1979 Nữ P1 17000003 Hồng Mai 29/6/1980 Nữ P4 23000004 Hoàng Hà 24/5/1980 Nam P2 18000005 Ngọc Lan 7/11/1979 Nữ P1 2500000

Bài tập:Bài tập:Xét các CSDL gồm các lược đồ quan hệ được cho bởi các Xét các CSDL gồm các lược đồ quan hệ được cho bởi các

thể hiện của chúng như sau:thể hiện của chúng như sau:

NHAN_VIENNHAN_VIEN

MA_P TEN_P ĐIA_CHIP1 Hành chính quản trị P302 - Nhà AP2 Nghiên cứu và PT Tầng 3 - Nhà BP3 Giám đốc Tầng 2- Nhà AP4 Kỹ thuật P205 - Nhà C

PHONGPHONG

Page 64: Cơ sở dữ liệu đại học

DU_ANDU_AN

MA_DA TEN_DA ĐIA_ĐIEM_DA MA_PD1 Phần mềm A HÀ NỘI P4D5 Mạng B NAM ĐỊNH P2D20 Giáo trình điện tử HẢI PHÒNG P1

CHAM_CONGCHAM_CONG

MA_NV MA_DA SO_GIO1 D8 202 D4 153 D1 174 D8 245 D20 306 D1 27

Page 65: Cơ sở dữ liệu đại học

Yêu cầu :Yêu cầu :

1. Tìm tên dự án có mã là D201. Tìm tên dự án có mã là D20

2.Cho biết tên các thành phố có dự án thực hiện.2.Cho biết tên các thành phố có dự án thực hiện.

3. Cho biết tên phòng thực hiện dự án có mã là D203. Cho biết tên phòng thực hiện dự án có mã là D20

4. Cho biết tên và lương của những nhân viên thực hiện dự án D8 và 4. Cho biết tên và lương của những nhân viên thực hiện dự án D8 và làm việc trên 20 giờlàm việc trên 20 giờ

5. Cho biết họ tên và lương của những nhân viên thuộc phòng " Nghiên 5. Cho biết họ tên và lương của những nhân viên thuộc phòng " Nghiên cứu & PT"cứu & PT"

6. Đếm số nhân viên trong công ty và tính mức lương trung bình của 6. Đếm số nhân viên trong công ty và tính mức lương trung bình của các nhân viên.các nhân viên.

7. Đếm số dự án mà công ty đã thực hiện 7. Đếm số dự án mà công ty đã thực hiện

Page 66: Cơ sở dữ liệu đại học

Bài 5. Ngôn ngữ CSDL – SQLBài 5. Ngôn ngữ CSDL – SQL Để người sử dụng có thể giao tiếp được với Để người sử dụng có thể giao tiếp được với

CSDL phải có một hệ thống CSDL phải có một hệ thống ngôn ngữ giao ngôn ngữ giao tiếp tiếp bao gồm:bao gồm:• Ngôn ngữ định nghĩa dữ liệu .Ngôn ngữ định nghĩa dữ liệu .• NgNgôn ngữ thao tác dữ liệu ôn ngữ thao tác dữ liệu • Ngôn ngữ truy vấn dữ liệu Ngôn ngữ truy vấn dữ liệu • Ngôn ngữ quản lý dữ liệu Ngôn ngữ quản lý dữ liệu

MMỗi hệ quản trị CSDL đều có cách ỗi hệ quản trị CSDL đều có cách cài đặt các ngôn ngữ khác nhau nhưng đều cài đặt các ngôn ngữ khác nhau nhưng đều dựa trên chuẩn của dựa trên chuẩn của ngôn ngữ truy vấn có ngôn ngữ truy vấn có cấu trúc cấu trúc SQL ( Structured- Query SQL ( Structured- Query Language)Language)

Page 67: Cơ sở dữ liệu đại học

I. Ngôn ngữ định nghĩa dữ liệuI. Ngôn ngữ định nghĩa dữ liệu SQL SQL

Là ngôn ngữ Là ngôn ngữ mô tả dữ liệumô tả dữ liệu, cho phép , cho phép người dùng định nghĩa cấu trúc CSDL, sửa người dùng định nghĩa cấu trúc CSDL, sửa đổi cấu trúc, liên kết các thành phần trong đổi cấu trúc, liên kết các thành phần trong CSDLCSDL

Ngoài ra , Ngoài ra , nó còn cung cấp các khả nó còn cung cấp các khả năng khácnăng khác như : định nghĩa khung nhìn, như : định nghĩa khung nhìn, kiểm soát tính toàn vẹn dữ liệu, cấp phát kiểm soát tính toàn vẹn dữ liệu, cấp phát quyền truy cập, …quyền truy cập, …

Page 68: Cơ sở dữ liệu đại học

Quy ước :Quy ước :

– TTên tên bảng, thuộc tính đối tượng không chứa dấu cách, ên tên bảng, thuộc tính đối tượng không chứa dấu cách,

không trùng tên với nhau.không trùng tên với nhau.

– Các phạm trù cú pháp bắt buộc phải điền được đặt trong Các phạm trù cú pháp bắt buộc phải điền được đặt trong

cặp dấu cặp dấu < >< >

– Các thành phần tuỳ chọn được viết trong cặp dấuCác thành phần tuỳ chọn được viết trong cặp dấu [ ] [ ]

– Mỗi câu lệnh SQL có thể được viết trên nhiều dòng và Mỗi câu lệnh SQL có thể được viết trên nhiều dòng và

được kết thúc bằng dấuđược kết thúc bằng dấu ; ;

Page 69: Cơ sở dữ liệu đại học

Các kiểu dữ liệu đơn giản trong Các kiểu dữ liệu đơn giản trong SQLSQL

Kiểu dữ liệu số:Kiểu dữ liệu số: integer , float, integer , float, decimal(n,p)decimal(n,p)- số thực với độ dài tối đa là n chữ - số thực với độ dài tối đa là n chữ số với p chữ số thập phân , số với p chữ số thập phân , number(n)-number(n)- kiểu số kiểu số có độ dài tối đa là ncó độ dài tối đa là n

Kiểu dữ liệu chuỗiKiểu dữ liệu chuỗi : :

--varchar (n) varchar (n) - chuỗi có độ dài biến đổi từ 0 đến - chuỗi có độ dài biến đổi từ 0 đến n n

-- Char (n) Char (n): xâu kí tự có độ dài cố định n : xâu kí tự có độ dài cố định n ( n<=255)( n<=255)

Kiểu dữ liệu ngày tháng:Kiểu dữ liệu ngày tháng: date, time date, time Kiểu luận líKiểu luận lí : boolean : boolean

Page 70: Cơ sở dữ liệu đại học

II. Các câu lệnh tạo cấu trúc II. Các câu lệnh tạo cấu trúc bảngbảng

1. Lệnh tạo bảng tổng quát1. Lệnh tạo bảng tổng quát

CREATE TABLE CREATE TABLE <Tên_bảng> <Tên_bảng>

(( <tên_ cột_1> <loại dữ_liệu_1> < <tên_ cột_1> <loại dữ_liệu_1> < kích thước 1>,kích thước 1>,

……………………………………..

<tên_ cột_n> <loại dữ_liệu_n> < <tên_ cột_n> <loại dữ_liệu_n> < kích thước n>,kích thước n>,

););

Page 71: Cơ sở dữ liệu đại học

Ví dụ :Ví dụ :

Tạo bảng SINH_VIEN có các thuộc tính:Tạo bảng SINH_VIEN có các thuộc tính:

- - mã sinh viênmã sinh viên ( kiểu số có độ dài <5) ( kiểu số có độ dài <5)

- - họ tênhọ tên ( kiểu xâu kí tự có độ dài <25) ( kiểu xâu kí tự có độ dài <25)

- - ngày sinhngày sinh (kiểu date) (kiểu date)

- - giới tínhgiới tính ( kiểu xâu có độ dài <3) ( kiểu xâu có độ dài <3)

- - địa chỉ địa chỉ ( kiểu xâu có độ dài < 30 )( kiểu xâu có độ dài < 30 )

- - điểm TBđiểm TB ( kiểu số thực có độ dài <4, trong đó có ( kiểu số thực có độ dài <4, trong đó có

2 chữ số sau phần thập phân)2 chữ số sau phần thập phân)

Page 72: Cơ sở dữ liệu đại học

CREATE TABLE CREATE TABLE SINH_VIENSINH_VIEN

(( ma_sv ma_sv NUMBER(5) , NUMBER(5) ,

ho_ten ho_ten VARCHAR(25), VARCHAR(25),

ng_sinhng_sinh DATE, DATE,

gioi_tinhgioi_tinh VARCHAR (3), VARCHAR (3),

đia_chiđia_chi VARCHAR (30), VARCHAR (30),

diem_tb diem_tb DECIMAL (4,2), DECIMAL (4,2),

););

Page 73: Cơ sở dữ liệu đại học

2. Lệnh tạo bảng với một số điều kiện ràng 2. Lệnh tạo bảng với một số điều kiện ràng buộcbuộc

CREATE TABLECREATE TABLE <Tên_bảng> <Tên_bảng> ( <tên_ cột_1> <loại dữ_liệu_1> < kích thước 1>,( <tên_ cột_1> <loại dữ_liệu_1> < kích thước 1>,……………………………………..

<tên_ cột_n> <loại dữ_liệu_n> < kích thước n>,<tên_ cột_n> <loại dữ_liệu_n> < kích thước n>,

[ CONSTRAINT[ CONSTRAINT < tên ràng buộc toàn vẹn>]| < tên ràng buộc toàn vẹn>]| NULL| NULL| NOT NULLNOT NULL||

Primary KeyPrimary Key ( Khoá chính ) ( Khoá chính )[ [ UniqueUnique ( khoá )] ( khoá )][[Foreign Key Foreign Key (Khoá _ ngoài) (Khoá _ ngoài) References References Tên_bảng]Tên_bảng][ [ CheckCheck <Điều_ kiện_ràng_buộc>] <Điều_ kiện_ràng_buộc>]););

Page 74: Cơ sở dữ liệu đại học

Trong đó :Trong đó : NOT NULL :NOT NULL : chỉ rằng cột không nhận giá trị rỗng. chỉ rằng cột không nhận giá trị rỗng.

Ngầm định là Null. Thuộc tính khoá ngầm định là Not Ngầm định là Null. Thuộc tính khoá ngầm định là Not Null.Null.

COSNTRAINTCOSNTRAINT< tên các ràng buộc toàn vẹn>< tên các ràng buộc toàn vẹn> : : khai báo các ràng buộc toàn vẹn của CSDL.khai báo các ràng buộc toàn vẹn của CSDL.

Primary Key Primary Key ( Khoá chính( Khoá chính):): Khai báo khoá chính Khai báo khoá chính của mảngcủa mảng

Unique Unique ( Khoá )( Khoá ) : Khai báo các khoá khác nếu có : Khai báo các khoá khác nếu có Foreign Key Foreign Key Khoá_ ngoài Khoá_ ngoài References References Tên_ Tên_

bảng bảng : Khai báo các khoá ngoài của bảng: Khai báo các khoá ngoài của bảng Check Check Điều_kiện_ràng_buộc Điều_kiện_ràng_buộc : Khai báo các ràng : Khai báo các ràng

buộc dữ liệu .buộc dữ liệu .

Page 75: Cơ sở dữ liệu đại học

Ví dụ :Ví dụ :

Tạo bảng SINH_VIEN có:Tạo bảng SINH_VIEN có:

- khoá chính là thuộc tính - khoá chính là thuộc tính mã sinh viên mã sinh viên ( kiểu ( kiểu

số)số)

- - họ tên họ tên ( kiểu xâu kí tự có độ dài <=25) không ( kiểu xâu kí tự có độ dài <=25) không

được để trống,được để trống,

- - ngày sinhngày sinh (kiểu date) (kiểu date)

- - giới tính giới tính ( kiểu xâu có độ dài <=3, mặc định là ( kiểu xâu có độ dài <=3, mặc định là

'Nam')'Nam')

- - mã lớpmã lớp là một khoá ngoài, mã lớp thuộc bảng là một khoá ngoài, mã lớp thuộc bảng

LOP.LOP.

- - điểm TBđiểm TB ( kiểu số thực có độ dài <=4) ( kiểu số thực có độ dài <=4)

Page 76: Cơ sở dữ liệu đại học

Câu lệnh :Câu lệnh :CREATE TABLE CREATE TABLE SINH_VIENSINH_VIEN

(( ma_sv ma_sv NUMBER(5) PRIMARY KEY, NUMBER(5) PRIMARY KEY,

ho_ten ho_ten VARCHAR(25) NOT NULL, VARCHAR(25) NOT NULL,

ng_sinhng_sinh DATE, DATE,

gioi_tinhgioi_tinh VARCHAR (3) DEFAULT VARCHAR (3) DEFAULT ' Nam',' Nam',

ma_lopma_lop CHAR (3) , CHAR (3) ,

diem_tb diem_tb DECIMAL (4,2), DECIMAL (4,2),

FOREIGN KEY FOREIGN KEY ma_lopma_lop REFERENCES REFERENCES LOPLOP

););

Page 77: Cơ sở dữ liệu đại học

Hoặc :Hoặc :CREATE TABLE CREATE TABLE SINH_VIENSINH_VIEN

(( ma_sv ma_sv NUMBER(5) , NUMBER(5) ,

ho_ten ho_ten VARCHAR(25) NOT NULL, VARCHAR(25) NOT NULL,

ng_sinhng_sinh DATE, DATE,

gioi_tinhgioi_tinh VARCHAR (3) DEFAULT ' Nam', VARCHAR (3) DEFAULT ' Nam',

ma_lopma_lop CHAR (3) , CHAR (3) ,

diem_tb diem_tb DECIMAL (4,2), DECIMAL (4,2),

PRIMARY KEY ( PRIMARY KEY ( ma_svma_sv),),

FOREIGN KEY FOREIGN KEY ma_lopma_lop REFERENCES REFERENCES LOPLOP

););

Page 78: Cơ sở dữ liệu đại học

3. Bổ sung -xoá một cột trong bảng3. Bổ sung -xoá một cột trong bảng

a. Bổ sung một cột :a. Bổ sung một cột :

ALTER TABLE < ALTER TABLE < tên bảngtên bảng>>

ADD <ADD <tên cộttên cột> < > < kiểu dữ liệukiểu dữ liệu > < > < kích thướckích thước>;>;

VD VD : Thêm cột số điện thoại vào bảng : Thêm cột số điện thoại vào bảng SINH_VIEN ở trên.SINH_VIEN ở trên.

ALTER TABLE ALTER TABLE SINH_VIENSINH_VIEN

ADD ADD dien_thoai dien_thoai NUMBER(10); NUMBER(10);

Page 79: Cơ sở dữ liệu đại học

a.Xoá một cột :a.Xoá một cột :

ALTER TABLE < ALTER TABLE < tên bảngtên bảng> DROP <> DROP <tên cộttên cột> > ;;

VD VD : Xoá cột điểm TB trong bảng SINH_VIEN ở : Xoá cột điểm TB trong bảng SINH_VIEN ở trên.trên.

ALTER TABLE ALTER TABLE SINH_VIEN SINH_VIEN DROP DROP diem_tb;diem_tb;

Page 80: Cơ sở dữ liệu đại học

4. Xoá một bảng khỏi CSDL4. Xoá một bảng khỏi CSDL DROP TABLE < DROP TABLE < tên bảngtên bảng>;>;

VD VD : Xoá bảng SINH_VIEN trong CSDL: Xoá bảng SINH_VIEN trong CSDL DROP TABLE SINH_VIEN;DROP TABLE SINH_VIEN;

Khi đó toàn bộ thông tin về bảng SINH_VIEN( gồm Khi đó toàn bộ thông tin về bảng SINH_VIEN( gồm cả lược đồ và các bản ghi ) đều bị xoá, khác với lệnhcả lược đồ và các bản ghi ) đều bị xoá, khác với lệnh

DELETE FROM SINH_VIEN DELETE FROM SINH_VIEN ; ;

chỉ xoá các bản ghi trong bảng, vẫn giữ lại cấu chỉ xoá các bản ghi trong bảng, vẫn giữ lại cấu trúc (lược đồ ) của bảngtrúc (lược đồ ) của bảng

Page 81: Cơ sở dữ liệu đại học

III. Các câu lệnh truy vấnIII. Các câu lệnh truy vấn1. Truy vấn theo câu hỏi đơn giản 1. Truy vấn theo câu hỏi đơn giản

Cấu trúc cơ sở của một biểu thức hỏi ( còn gọi là Cấu trúc cơ sở của một biểu thức hỏi ( còn gọi là biểu thức truy vấn) SQL gồm :biểu thức truy vấn) SQL gồm :

SELECT [ DISTINCT | ALL] {SELECT [ DISTINCT | ALL] {* | <cột> * | <cột> AS AS [<tên [<tên mới>],..}mới>],..}

FROMFROM < tên bảng> [ < bí danh >],... < tên bảng> [ < bí danh >],...

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

[GROUP BY[GROUP BY < ds tên cột>] [ < ds tên cột>] [HAVING HAVING <điều kiện>]<điều kiện>]

[ORDER BY [ORDER BY < ds cột> ];< ds cột> ];

Page 82: Cơ sở dữ liệu đại học

Trong đó : Trong đó :

- Từ khoá - Từ khoá DISTINCT DISTINCT : để loại bỏ sự trùng lặp ( các bộ trùng : để loại bỏ sự trùng lặp ( các bộ trùng lặp chỉ giữ lại một bộ)lặp chỉ giữ lại một bộ)

- - < biểu thức cột>< biểu thức cột>: là tên của một cột hoặc của biểu thức: là tên của một cột hoặc của biểu thức

- < tên bảng >- < tên bảng >: là tên của một bảng trong CSDL hay một khung : là tên của một bảng trong CSDL hay một khung nhìn mà ta có thể truy cập vàonhìn mà ta có thể truy cập vào

- GROUP BY- GROUP BY : dùng để gộp nhóm các bộ cùng giá trị tương ứng : dùng để gộp nhóm các bộ cùng giá trị tương ứng ở các cột xuất hiện trong ds tên cột.ở các cột xuất hiện trong ds tên cột.

- HAVING:- HAVING: dùng để lọc các nhóm thoả điều kiện dùng để lọc các nhóm thoả điều kiện

- ORDER BY - ORDER BY : quy định thứ tự trong các cột trả ra gồm : : quy định thứ tự trong các cột trả ra gồm : ASCASC ( ( tăng dần) và tăng dần) và DESC DESC ( giảm dần). Mặc định là ( giảm dần). Mặc định là ASCASC

Page 83: Cơ sở dữ liệu đại học

Ví dụ 1:Ví dụ 1:

Tìm tên các dự án và mã các Tìm tên các dự án và mã các phòng quản lý dự án tương ứng phòng quản lý dự án tương ứng

SELECT SELECT ten_da, ma_p ten_da, ma_p

FROM FROM DU_AN; DU_AN;

Kết quả tra ra :Kết quả tra ra :

Ten_daTen_da Ma_pMa_p

Phần mềm APhần mềm A P2P2

Mạng BMạng B P3P3

Giáo trình điện Giáo trình điện tử tử

P1P1

Page 84: Cơ sở dữ liệu đại học

Chú ý :Chú ý :a . a . Muốn Muốn hiển thị tất cả các cột trong bảnghiển thị tất cả các cột trong bảng, ta có , ta có thể dùng dấu * để thay thếthể dùng dấu * để thay thế

Ví dụ Ví dụ 2. Cho biết thông tin về nhân viên trong 2. Cho biết thông tin về nhân viên trong công ty .công ty .

C1 :C1 : SELECT SELECT ma_nv, ho_ten, ng_sinh, gioi_tinh, ma_p, ma_nv, ho_ten, ng_sinh, gioi_tinh, ma_p, luongluong

FROM FROM NHAN_VIEN; NHAN_VIEN;

C2: C2: SELECT SELECT * *

FROMFROM NHAN_VIEN ; NHAN_VIEN ;

Page 85: Cơ sở dữ liệu đại học

b.b. Trong bảng kết quả, nếu muốn ta Trong bảng kết quả, nếu muốn ta có thể có thể đặt tên mới cho cột sau từ khoá đặt tên mới cho cột sau từ khoá AsAs

Ví dụ3 : Cho biết tên và lương mới của mỗi nhân viên Ví dụ3 : Cho biết tên và lương mới của mỗi nhân viên biết họ được tăng 10% .biết họ được tăng 10% .

Câu lệnh : Câu lệnh : C1: C1:

SELECTSELECT ho_ten, luong + luong*0.1 ho_ten, luong + luong*0.1FROMFROM NHAN_VIEN; NHAN_VIEN;

C2: C2: SELECT SELECT ho_ten, luong+luong*0.1 ho_ten, luong+luong*0.1 ASAS luong_moi luong_moiFROM FROM NHAN_VIEN; NHAN_VIEN;

Page 86: Cơ sở dữ liệu đại học

c. c. SQL dùng các phép so sánh :SQL dùng các phép so sánh :

<=<= ( nhỏ hơn hoặc bằng) , ( nhỏ hơn hoặc bằng) ,

>=>=( lớn hơn hoặc bằng) ,( lớn hơn hoặc bằng) ,

< >< > ( khác) ( khác)

- Có thể kết hợp nhiều biểu thức logic - Có thể kết hợp nhiều biểu thức logic bằng các phépbằng các phép AND, OR, NOT. AND, OR, NOT.

Page 87: Cơ sở dữ liệu đại học

Ví dụ 4:Ví dụ 4:Tìm các nhân viên thuộc phòng có mã Tìm các nhân viên thuộc phòng có mã phòng là P2 và có lương >=2tr.phòng là P2 và có lương >=2tr.

SELECTSELECT ma_nv, ho_ten, ma_p, luong ma_nv, ho_ten, ma_p, luong

FROMFROM NHAN_VIEN NHAN_VIEN

WHEREWHERE ma_p= 'P2' ma_p= 'P2' ANDAND luong>=2000000;luong>=2000000;

Page 88: Cơ sở dữ liệu đại học

Ví dụ 5:Ví dụ 5:Lập danh sách ( gồm mã sinh viên,họ Lập danh sách ( gồm mã sinh viên,họ

tên, ngày sinh, giới tính) của các sinh viên tên, ngày sinh, giới tính) của các sinh viên nữ có học lực từ khá trở lên và các sinh nữ có học lực từ khá trở lên và các sinh viên nam học lực giỏi.viên nam học lực giỏi.

SELECTSELECT SV#, HT, NS, GT SV#, HT, NS, GT

FROMFROM SV SV

WHEREWHERE (GT= 'Nữ' (GT= 'Nữ' ANDAND HL>=6.5) HL>=6.5)

OR OR ( GT= 'Nam' ( GT= 'Nam' ANDAND HL HL >=8.0 );>=8.0 );

Page 89: Cơ sở dữ liệu đại học

d. d. Tìm kiếm có xử lý xâu kí tự Tìm kiếm có xử lý xâu kí tự

SQL dùng toán tửSQL dùng toán tử LIKE LIKE để so sánh xâu.để so sánh xâu. SQL sử dụng kí tự SQL sử dụng kí tự ' %'' %' để thay thế cho một để thay thế cho một

xâu con, dấu phân cáchxâu con, dấu phân cách '_' '_' để thay thế cho một kí để thay thế cho một kí tự.tự.VD:VD:

- A%B- A%B : xâu kí tự bất kì bắt dầu bằng chữ A : xâu kí tự bất kì bắt dầu bằng chữ A và kết thúc bằng chữ Bvà kết thúc bằng chữ B

- - A_BA_B : xâu gồm 3 kí tự, có kí tự thứ hai bất kì : xâu gồm 3 kí tự, có kí tự thứ hai bất kì

Page 90: Cơ sở dữ liệu đại học

Ví dụ 6: Ví dụ 6: Cho biết mã và tên các dự án mà Cho biết mã và tên các dự án mà địa điểm có chứa từ UBND:địa điểm có chứa từ UBND:

SELECTSELECT ma_da, ten_da ma_da, ten_da

FROM FROM DU_ANDU_AN

WHERE WHERE dia_diem_da dia_diem_da LIKELIKE '%UBND '%UBND%';%';

Page 91: Cơ sở dữ liệu đại học

e. SQL cho phép sử dụng các giá trị e. SQL cho phép sử dụng các giá trị NULLNULL để để chỉ sự thiếu vắng thông tin về giá trị của một bộ chỉ sự thiếu vắng thông tin về giá trị của một bộ tại một thuộc tính. Với từ khoá tại một thuộc tính. Với từ khoá IS NULLIS NULL, SQL , SQL cho phép kiểm tra xem một giá trị có là NULL cho phép kiểm tra xem một giá trị có là NULL hay không ?hay không ?

Ví dụ 7: Ví dụ 7: Cho biết tên và mã số dự án mà Cho biết tên và mã số dự án mà cột địa điểm có giá trị là NULL.cột địa điểm có giá trị là NULL.

SELECTSELECT ma_da, ten_da ma_da, ten_da

FROMFROM DU_AN DU_AN

WHEREWHERE dia_diem_da dia_diem_da IS NULL;IS NULL;

Page 92: Cơ sở dữ liệu đại học

f. Truy vấn có sắp xếp thứ tựf. Truy vấn có sắp xếp thứ tự Kết quả của câu truy vấn SQL có thể được Kết quả của câu truy vấn SQL có thể được

sắp theo thứ tự tăng dần (sắp theo thứ tự tăng dần (ASC ASC ) hoặc giảm dần ) hoặc giảm dần ((DESCDESC) bởi khoá ) bởi khoá ORDER BY.ORDER BY. Mặc định là tăng Mặc định là tăng dần.dần.

Ví dụ 8 :Ví dụ 8 :

Liệt kê các nhân viên nữ theo thứ tự tăng Liệt kê các nhân viên nữ theo thứ tự tăng dần của lương:dần của lương:

SELECTSELECT * *

FROM FROM NHAN_VIEN NHAN_VIEN

WHERE WHERE GT = ' Nữ'GT = ' Nữ'

ORDER BYORDER BY luong; luong;

Page 93: Cơ sở dữ liệu đại học

Việc sắp thứ tự có thể được thực Việc sắp thứ tự có thể được thực hiện trên nhiều thuộc tínhhiện trên nhiều thuộc tính

Ví dụ 9Ví dụ 9: Hiển thị các thông tin chấm : Hiển thị các thông tin chấm công của các dự án có mã thuộc tập công của các dự án có mã thuộc tập D1, D2, D8 theo thứ tự tăng dần của D1, D2, D8 theo thứ tự tăng dần của số giờ và giảm dần của mã dự án:số giờ và giảm dần của mã dự án:

SELECTSELECT * *

FROM FROM CHAM_CONG CHAM_CONG

WHERE WHERE ma_da ma_da ININ ('D1', 'D2', 'D8') ('D1', 'D2', 'D8')

ORDER BYORDER BY so_gio ASC, ma_da so_gio ASC, ma_da DESC;DESC;

Page 94: Cơ sở dữ liệu đại học

g. Tìm kiếm nhờ sử dụng IN và g. Tìm kiếm nhờ sử dụng IN và BETWEENBETWEEN

Ví dụ 10: Ví dụ 10:

Tìm những nhân viên có lương từ Tìm những nhân viên có lương từ 2000000 đến 3000000 , sắp xếp tên theo thứ 2000000 đến 3000000 , sắp xếp tên theo thứ tự tăng dần.tự tăng dần.

SELECTSELECT * *

FROM FROM NHAN_VIEN NHAN_VIEN

WHERE WHERE luong luong BETWEEN BETWEEN 2000000 2000000 ANDAND 30000003000000

ORDER BYORDER BY ho_ten ho_ten ASC;ASC;

Page 95: Cơ sở dữ liệu đại học

2. Các hàm thư viện 2. Các hàm thư viện

SQL có 5 hàm kết tập được cài sẵn : SQL có 5 hàm kết tập được cài sẵn :

- - COUNTCOUNT :đếm số giá trị:đếm số giá trị

- SUM - SUM : tính tổng các giá trị trong một cột : tính tổng các giá trị trong một cột

- - MAXMAX : tính giá trị lớn nhất trong một cột : tính giá trị lớn nhất trong một cột

- MIN - MIN : tính giá trị nhỏ nhất trong một cột : tính giá trị nhỏ nhất trong một cột

- - AVG AVG : tính giá trị trung bình của một cột : tính giá trị trung bình của một cột

Chú ýChú ý : Các hàm sum và avg chỉ áp dụng cho : Các hàm sum và avg chỉ áp dụng cho các cột có kiểu sốcác cột có kiểu số

Page 96: Cơ sở dữ liệu đại học

Ví dụ 1: Ví dụ 1: Tìm lương cao nhất, lương thấp Tìm lương cao nhất, lương thấp nhất, và trung bình cộng lương toàn cơ nhất, và trung bình cộng lương toàn cơ

quanquan SELECTSELECT MAXMAX (luong) (luong) ASAS max, max, MIN MIN (luong) (luong) ASAS min, min, AVGAVG (luong) (luong) ASAS tb tb

FROM FROM NHAN_VIEN; NHAN_VIEN;

Kết quả câu truy vấn này trả ra như sau :Kết quả câu truy vấn này trả ra như sau :

maxmax minmin tbtb

30000003000000 12000001200000 23500002350000

Page 97: Cơ sở dữ liệu đại học

Ví dụ 2: Ví dụ 2: Cho biết số nhân viên thực hiện dự Cho biết số nhân viên thực hiện dự án có mã là D8án có mã là D8

SELECT COUNTSELECT COUNT (*) (*)

FROM FROM CHAM_CONG CHAM_CONG

WHEREWHERE ma_da = 'D8'; ma_da = 'D8';

Chú ý :Chú ý :

- Hàm Count khi có đối số (*) có - Hàm Count khi có đối số (*) có nghĩa là đếm số bản ghi thoả mãn yêu nghĩa là đếm số bản ghi thoả mãn yêu cầu mà không cần quan tâm đến bất cầu mà không cần quan tâm đến bất kì cột nào .kì cột nào .

Page 98: Cơ sở dữ liệu đại học

-- Dùng từ khoá Dùng từ khoá DISTINCT DISTINCT ngay ngay trước tên cột được áp dụng hàm, trước tên cột được áp dụng hàm, khi cần loại bỏ các bộ trùng nhau.khi cần loại bỏ các bộ trùng nhau.

Ví dụ 3:Ví dụ 3: Đếm số tỉnh có sinh viên Đếm số tỉnh có sinh viên theo họctheo học

SELECT COUNTSELECT COUNT ( (DISTINCTDISTINCT Que) Que)

FROM FROM SINHVIEN; SINHVIEN;

Page 99: Cơ sở dữ liệu đại học

3.Tìm kiếm nhờ mệnh đề GROUP BY 3.Tìm kiếm nhờ mệnh đề GROUP BY

Ví dụ 1:Ví dụ 1: In ra danh sách sinh viên theo In ra danh sách sinh viên theo từng quê của sinh viên? từng quê của sinh viên?

SELECT SELECT SV#, HT, NSSV#, HT, NS

FROM FROM SV SV

GROUP BY GROUP BY Que;Que;

Page 100: Cơ sở dữ liệu đại học

4. Tìm kiếm có sử dụng mệnh đề 4. Tìm kiếm có sử dụng mệnh đề HAVINGHAVING

Mệnh đề Mệnh đề HAVINGHAVING thường sử dụng cùng mệnh đề thường sử dụng cùng mệnh đề GROUP BYGROUP BY. Sau . Sau HAVING HAVING là biểu thức điều kiện. Biểu là biểu thức điều kiện. Biểu thức này không tác động vào toàn bảng mà chỉ tác động thức này không tác động vào toàn bảng mà chỉ tác động vào từng nhóm các bản ghi đã chỉ ra tại mệnh đề vào từng nhóm các bản ghi đã chỉ ra tại mệnh đề GROUP BY GROUP BY

VÍ DỤ : VÍ DỤ : Tìm mã số những sinh viên thực hiện ít nhất 2 Tìm mã số những sinh viên thực hiện ít nhất 2 đề tài:đề tài:

SELECT SELECT SV#SV#

FROM FROM SD SD

GROUP BY GROUP BY SV#SV#

HAVING COUNT (HAVING COUNT (DT# ) >=2;DT# ) >=2;

Page 101: Cơ sở dữ liệu đại học

5. Tìm kiếm với câu hỏi phức 5. Tìm kiếm với câu hỏi phức tạptạp

Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ lồng nhau hoặc qua phép kết nối.lồng nhau hoặc qua phép kết nối.

Phép kết nối :Phép kết nối :

ĐK:ĐK: Các miền tham gia kết nối phải có miền trị là Các miền tham gia kết nối phải có miền trị là sánh được với nhau. Tên của các cột khác nhau có thể sánh được với nhau. Tên của các cột khác nhau có thể được viết tường minh qua tên bảng theo cú pháp :được viết tường minh qua tên bảng theo cú pháp :

Tên_ bảng. Tên_ cộtTên_ bảng. Tên_ cột

Ví dụ :Ví dụ : Với mỗi đề tài có sinh viên tham gia thực tập. Hãy Với mỗi đề tài có sinh viên tham gia thực tập. Hãy cho biết tên đề tài, tên chủ nhiệm đề tài và kinh phí thực cho biết tên đề tài, tên chủ nhiệm đề tài và kinh phí thực hiện đề tài đó.hiện đề tài đó.

Page 102: Cơ sở dữ liệu đại học

Câu lệnh :Câu lệnh :

SELECT SELECT TDT, CN, KPTDT, CN, KPFROM FROM DT, SD DT, SDWHEREWHERE SD.DT# = DT.DT#; SD.DT# = DT.DT#;

Chú ý :Chú ý : Trong câu truy vấn có hơn một Trong câu truy vấn có hơn một bảng, nếu tên cột là không duy nhất thì bắt buộc bảng, nếu tên cột là không duy nhất thì bắt buộc phải viết tên cột dạng tường minh.phải viết tên cột dạng tường minh.

Page 103: Cơ sở dữ liệu đại học

Ánh xạ lồngÁnh xạ lồngVí dụ 1: Ví dụ 1:

Tìm tên những sinh viên thực tập tại Hà Nội .Tìm tên những sinh viên thực tập tại Hà Nội .

SELECT SELECT HTHT

FROM FROM SV SVWHERE WHERE SV# SV# ININ ( (SELECT SELECT SV# SV#

FROM FROM SD SD

WHEREWHERE NTT= ‘Hà Nội ‘); NTT= ‘Hà Nội ‘);

Page 104: Cơ sở dữ liệu đại học

Ví dụ 2: Ví dụ 2:

Tìm những sinh viên thực hiện ít nhất một đề tài nào Tìm những sinh viên thực hiện ít nhất một đề tài nào đó:đó:

SELECT SELECT * *

FROM FROM SV SVWHERE WHERE EXISTS ( EXISTS ( SELECT SELECT * * FROM FROM SD SD

WHEREWHERE SV.SV# = SD.SV#);SV.SV# = SD.SV#);

SQL còn có thể tìm kiếm trên nhiều bảng SQL còn có thể tìm kiếm trên nhiều bảng nhờ mênh đề nhờ mênh đề EXISTS EXISTS ( tồn tại ) ( tồn tại )

Page 105: Cơ sở dữ liệu đại học

Tìm kiếm có sử dụng lường từ ANY và Tìm kiếm có sử dụng lường từ ANY và ALLALL

Ví dụ 3 :Ví dụ 3 : Tìm tên những đề tài mà sinh viên có mã số 5 Tìm tên những đề tài mà sinh viên có mã số 5 đã thực hiện:đã thực hiện:

SELECT SELECT TDT TDT

FROM FROM DT DTWHERE WHERE DT# = ANY ( DT# = ANY ( SELECT SELECT DT# DT# FROM FROM SD SD WHEREWHERE SV# = 5); SV# = 5);

Page 106: Cơ sở dữ liệu đại học

Ví dụ 4 : Ví dụ 4 : Tìm tên sinh viên có điểm học lực Tìm tên sinh viên có điểm học lực

cao hơn tất cả các sinh viên cao hơn tất cả các sinh viên SELECT SELECT HT HT FROM FROM SV SVWHERE WHERE HL >= HL >= ALL ALL ( ( SELECT SELECT HL HL FROM FROM SV ); SV );

Mệnh đề trên tương đương với : Mệnh đề trên tương đương với : SELECT SELECT HT HT FROM FROM SV SVWHERE WHERE HL = ( HL = ( SELECT MAXSELECT MAX (HL) (HL) FROM FROM SV ); SV );

Page 107: Cơ sở dữ liệu đại học

IV. CÁC MỆNH ĐỀ CẬP NHẬT DỮ LIỆUIV. CÁC MỆNH ĐỀ CẬP NHẬT DỮ LIỆU 1. Thêm một bộ :1. Thêm một bộ :

Dạng tổng quát :Dạng tổng quát :

INSERT INTO INSERT INTO Tên _ bảng ( ds_tên _cột)Tên _ bảng ( ds_tên _cột)

VALUESVALUES (các_ giá_trị )(các_ giá_trị )

[ câu hỏi con][ câu hỏi con]

Có thể bổ sung vào một tập các bản ghi là kết quả xử lý Có thể bổ sung vào một tập các bản ghi là kết quả xử lý của một câu hỏi nào đó. của một câu hỏi nào đó.

VD: Chèn vào bảng SVG các sinh viên giỏi trong bảng VD: Chèn vào bảng SVG các sinh viên giỏi trong bảng SV.SV.

INSERT INTO INSERT INTO SVGSVG

SELECTSELECT * *

FROM FROM SVSV

WHERE WHERE HL >= 8.0;HL >= 8.0;

Page 108: Cơ sở dữ liệu đại học

2. Xoá bản ghi 2. Xoá bản ghi Có thể xoá một hay nhiều bản ghi thoả mãn một Có thể xoá một hay nhiều bản ghi thoả mãn một

điều kiện nào đó.điều kiện nào đó.

Dạng tổng quát:Dạng tổng quát:

DELETE DELETE [tên_bảng] [tên_bảng]

[[FROMFROM { Tên_bảng / Tên_ view}] { Tên_bảng / Tên_ view}]

[[WHERE WHERE Biểu_ thức _điều _kiện] Biểu_ thức _điều _kiện]

Ví dụ :Ví dụ : Xoá những sinh viên có điểm HL kém Xoá những sinh viên có điểm HL kém (HL<=3.5):(HL<=3.5):

DELETEDELETE

FROM FROM SVSV

WHERE WHERE HL<=3.5; HL<=3.5;

Page 109: Cơ sở dữ liệu đại học

3. Sửa đổi dữ liệu 3. Sửa đổi dữ liệu Sửa đổi các giá trị của các bản ghi theo một điều kiện nào đó: Sửa đổi các giá trị của các bản ghi theo một điều kiện nào đó: Dạng tổng quát :Dạng tổng quát :

UPDATE UPDATE [ tên_bảng] [ tên_bảng]

SET SET [ tên_cột = biểu_thức,...] [ tên_cột = biểu_thức,...]

FROM FROM tên _ bảng tên _ bảng

WHEREWHERE Biểu _ thức _điều _kiện Biểu _ thức _điều _kiện

Ví dụ : Ví dụ : Sửa điểm học lực của bạn Phan Ngọc Hà thành 8.5Sửa điểm học lực của bạn Phan Ngọc Hà thành 8.5

UPDATE UPDATE SV SV

SET SET HL = 8.5 HL = 8.5

WHEREWHERE HT=‘ Phan Ngọc Hà’; HT=‘ Phan Ngọc Hà’;

Page 110: Cơ sở dữ liệu đại học

4. Tạo chỉ mục.4. Tạo chỉ mục. Việc tạo chỉ mục là tạo ra một bảng lưu trữ vị trí các Việc tạo chỉ mục là tạo ra một bảng lưu trữ vị trí các bản ghi dựa trên giá trị tăng dần của một ( hay một số) bản ghi dựa trên giá trị tăng dần của một ( hay một số) cột nào đó. Việc này có tác dụng làm tăng tốc độ tìm cột nào đó. Việc này có tác dụng làm tăng tốc độ tìm kiếm thông tin trong CSDL.kiếm thông tin trong CSDL.

Dạng tổng quát :Dạng tổng quát :

CREATE INDEX CREATE INDEX tên_bảng_chỉ_mục tên_bảng_chỉ_mục

ONON Tên_bảng ( tên _cột [ Tên_bảng ( tên _cột [ASC | DESCASC | DESC]);]);

Bỏ chỉ mục thì sử dụng mệnh đề :Bỏ chỉ mục thì sử dụng mệnh đề :

DROP INDEX DROP INDEX tên_chỉ_mục; tên_chỉ_mục;

Page 111: Cơ sở dữ liệu đại học

Ví dụ : Ví dụ : Tạo chỉ mục CMHT trên cột Ho_ten của bảng Tạo chỉ mục CMHT trên cột Ho_ten của bảng

sinh viên:sinh viên:

CREATE INDEX CREATE INDEX CMHTCMHT

ONON SV ( HT SV ( HT ASCASC););

Ví dụ:Ví dụ: Xoá chỉ mục CMHT ra khỏi bảng SV Xoá chỉ mục CMHT ra khỏi bảng SV

DROP INDEX DROP INDEX CMHT;CMHT;

Page 112: Cơ sở dữ liệu đại học

5. Tạo View của người sử 5. Tạo View của người sử dụngdụng Tạo ra một khung nhìn của người sử dụng :Tạo ra một khung nhìn của người sử dụng :

Dạng tổng quát :Dạng tổng quát :

CREATE VIEW CREATE VIEW Tên_View (Danh_ sách_ tên _cột)Tên_View (Danh_ sách_ tên _cột)

AS AS mệnh_đề_Select ;mệnh_đề_Select ;

Ví dụ :Ví dụ : Tạo View DSSVG gồm những sinh viên giỏi bao Tạo View DSSVG gồm những sinh viên giỏi bao gồm thông tin về họ tên, ngày sinh, giới tính của các sinh gồm thông tin về họ tên, ngày sinh, giới tính của các sinh viên từ bảng SV.viên từ bảng SV.

CREATE VIEW CREATE VIEW DSSVG ( Hoten, NS, GT)DSSVG ( Hoten, NS, GT)

AS SELECT AS SELECT HT , NS, GTHT , NS, GT

FROM FROM SV SV

WHERE WHERE HL >= 8.0;HL >= 8.0;

Page 113: Cơ sở dữ liệu đại học

6. SQL nhúng 6. SQL nhúng Có thể truy cập vào CSDL từ một ngôn ngữ lập Có thể truy cập vào CSDL từ một ngôn ngữ lập

trình bậc cao nếu có SQL "nhúng" trong ngôn ngữ này. trình bậc cao nếu có SQL "nhúng" trong ngôn ngữ này. Một ngôn ngữ trong đó các câu hỏi được SQL được Một ngôn ngữ trong đó các câu hỏi được SQL được nhúng vào gọi là ngôn ngữ chủ, còn các cấu trúc của nhúng vào gọi là ngôn ngữ chủ, còn các cấu trúc của SQL được phép trong ngôn ngữ này làm thành SQL SQL được phép trong ngôn ngữ này làm thành SQL nhúng nhúng

- Sơ đồ xử lý các chương trình có nhúng câu lệnh SQL:- Sơ đồ xử lý các chương trình có nhúng câu lệnh SQL:

Page 114: Cơ sở dữ liệu đại học

Ngôn ngữ chủNgôn ngữ chủ++

SQL nhúngSQL nhúng

Tiền xử lýTiền xử lý

Ngôn ngữ chủNgôn ngữ chủ

Các lời gọi hàmCác lời gọi hàm

Biên dịch Biên dịch ngôn ngữ chủngôn ngữ chủ

Thư viện SQLThư viện SQL

Chương trình ngôn ngữ chủ Chương trình ngôn ngữ chủ

++

Page 115: Cơ sở dữ liệu đại học

Bài 6. RÀNG BUỘC TOÀN VẸNBài 6. RÀNG BUỘC TOÀN VẸN 1.1. Tổng quan Tổng quan • Ràng buộc toàn vẹn sử dụng các Ràng buộc toàn vẹn sử dụng các

luật để định nghĩa các điều kiện đảm luật để định nghĩa các điều kiện đảm bảo cho CSDL ở trạng thái an toàn. bảo cho CSDL ở trạng thái an toàn.

• Ràng buộc toàn vẹn được dùng Ràng buộc toàn vẹn được dùng để ngăn ngừa việc đưa dữ liệu không để ngăn ngừa việc đưa dữ liệu không hợp lệ vào CSDL.hợp lệ vào CSDL.

Định nghĩa :Định nghĩa : Ràng buộc toàn Ràng buộc toàn vẹn là các điều kiện bất biến không vẹn là các điều kiện bất biến không được vi phạm trong một CSDL. được vi phạm trong một CSDL.

Page 116: Cơ sở dữ liệu đại học

RBTV RBTV còn được gọi là các quy tắc còn được gọi là các quy tắc quản lý được áp đặt lên các đối quản lý được áp đặt lên các đối tượng của thế giới thực .tượng của thế giới thực .

VD :VD :

- Mỗi sinh viên có một mã sinh - Mỗi sinh viên có một mã sinh viên duy nhất để phân biệt với các viên duy nhất để phân biệt với các sinh viên khácsinh viên khác

- Điểm HL của mỗi sv không - Điểm HL của mỗi sv không được nhỏ hơn0 và lớn hơn 10.được nhỏ hơn0 và lớn hơn 10.

- Mỗi SV phải thuộc một lớp nào - Mỗi SV phải thuộc một lớp nào đó.đó.

Page 117: Cơ sở dữ liệu đại học

Các hệ quản trị CSDL thường có Các hệ quản trị CSDL thường có các cơ chế tự động kiểm tra RBTV các cơ chế tự động kiểm tra RBTV này.này.

Việc kiểm tra RBTV có thể được tiến Việc kiểm tra RBTV có thể được tiến hành vào một trong các thời điểm hành vào một trong các thời điểm sau :sau :

- Kiểm tra ngay khi thực hiện - Kiểm tra ngay khi thực hiện một thao tác cập nhật ( thêm, sửa , một thao tác cập nhật ( thêm, sửa , xoá ,…)xoá ,…)

- Kiểm tra định kỳ hay đột xuất- Kiểm tra định kỳ hay đột xuất

Page 118: Cơ sở dữ liệu đại học

2. Các yếu tố của RBTV2. Các yếu tố của RBTV

Khi xác định một RBTV cần chỉ rõ:Khi xác định một RBTV cần chỉ rõ: Điều kiệnĐiều kiện ( tức là nội dung) của RBTV, ( tức là nội dung) của RBTV,

từ đó, xác định cách biểu diễn.từ đó, xác định cách biểu diễn. Bối cảnh Bối cảnh xảy ra RBTV: trên một hay xảy ra RBTV: trên một hay

nhiều quan hệ và cụ thể là trên những nhiều quan hệ và cụ thể là trên những quan hệ nào.quan hệ nào.

Mức độ ảnh hưởng Mức độ ảnh hưởng của RBTV.của RBTV. Hành động Hành động cần phải có khi phát hiện ra cần phải có khi phát hiện ra

có RBTV bị vi phạm.có RBTV bị vi phạm.

Page 119: Cơ sở dữ liệu đại học

3. Điều kiện của RBTV3. Điều kiện của RBTV

Điều kiện của RBTV là sự mô tả và Điều kiện của RBTV là sự mô tả và biểu diễn hình thức và nội dung của biểu diễn hình thức và nội dung của nó.nó.

Được biểu diễn bằng ngôn ngữ tự Được biểu diễn bằng ngôn ngữ tự nhiên, thuật giải, ngôn ngữ quan hệ nhiên, thuật giải, ngôn ngữ quan hệ hoặc bằng các phụ thuộc hàm ,v.v..hoặc bằng các phụ thuộc hàm ,v.v..

VD: VD:

Page 120: Cơ sở dữ liệu đại học

R1:R1: Mỗi sinh viên có một mã sinh viên Mỗi sinh viên có một mã sinh viên duy nhất không trùng với các sinh duy nhất không trùng với các sinh viên khác:viên khác:

sv1, sv2 sv1, sv2 SV, sv1 ≠ sv2 SV, sv1 ≠ sv2 sv1. SV# ≠ sv2. SV#sv1. SV# ≠ sv2. SV# R2:R2: M Mọi sv được làm đề tài đều phải ọi sv được làm đề tài đều phải

đạt loại giỏi:đạt loại giỏi: sd sd SD, SD, sv sv SV : SV : ( sv. HL >=8.0) ( sv. HL >=8.0) (sd. SV# = (sd. SV# =

sv. SV# )sv. SV# )

Page 121: Cơ sở dữ liệu đại học

4. Bối cảnh của RBTV4. Bối cảnh của RBTV

Bối cảnhBối cảnh của một RBTV là tập của một RBTV là tập các quan hệ mà khi thao tác trên các các quan hệ mà khi thao tác trên các quan hệ đó có khả năng làm cho quan hệ đó có khả năng làm cho ràng buộc toàn vẹn bị vi phạm.ràng buộc toàn vẹn bị vi phạm.

Có thể chia RBTV thành hai loại Có thể chia RBTV thành hai loại chính theo bối cảnh RBTV : chính theo bối cảnh RBTV :

Page 122: Cơ sở dữ liệu đại học

RBTV có bối cảnh trên 1 quan hệRBTV có bối cảnh trên 1 quan hệ

RBTV có bối cảnh trên nhiều RBTV có bối cảnh trên nhiều quan hệquan hệ

Page 123: Cơ sở dữ liệu đại học

4.1. RBTV có bối cảnh 1 quan hệ4.1. RBTV có bối cảnh 1 quan hệ

RBTV miền giá trị.RBTV miền giá trị. RBTV liên bộRBTV liên bộ RBTV liên thuộc tínhRBTV liên thuộc tính

Page 124: Cơ sở dữ liệu đại học

RBTV miền giá trịRBTV miền giá trị qui định tập giá qui định tập giá trị mà một thuộc tính có thể nhận.trị mà một thuộc tính có thể nhận.

VD: VD: DOM(PHAI) = {‘Nam’, ‘Nữ’}DOM(PHAI) = {‘Nam’, ‘Nữ’}

a. RBTV miền giá trịa. RBTV miền giá trị

Page 125: Cơ sở dữ liệu đại học

Ví dụ 3: Ví dụ 3: Xét lược đồ quan hệXét lược đồ quan hệ• NHANVIENNHANVIEN ( (MANVMANV, HT, NS, GT, DC, , HT, NS, GT, DC,

LUONG) LUONG)

Xét RBTV R2:Xét RBTV R2:• Nội dungNội dung::

• GT của nhân viên chỉ có thể là ‘Nam’ GT của nhân viên chỉ có thể là ‘Nam’ hoặc ‘Nữ’hoặc ‘Nữ’

nn NHANVIEN: n.GT IN {‘Nam’,’Nữ’} NHANVIEN: n.GT IN {‘Nam’,’Nữ’}• Bối cảnhBối cảnh: quan hệ NHANVIEN : quan hệ NHANVIEN

Page 126: Cơ sở dữ liệu đại học

Bảng tầm ảnh hưởng (TAH) gồm 4 cột:Bảng tầm ảnh hưởng (TAH) gồm 4 cột:

Cột 1 chứa tên các quan hệ liên quan tới RBTV. Cột 1 chứa tên các quan hệ liên quan tới RBTV. 3 cột tiếp theo l3 cột tiếp theo là tà tên cên cácác thao tác : Thêm / Sửa / thao tác : Thêm / Sửa /

Xoá Xoá Nếu RBTV cần được kiểm tra nguy cơ dẫn tới vi Nếu RBTV cần được kiểm tra nguy cơ dẫn tới vi

phạm dấu gphạm dấu gạạch chéo (x) hoặc dấu cộng (+) ; ch chéo (x) hoặc dấu cộng (+) ; Có thể chỉ rõ các thuộc tính nào nếu được cập nhật mới Có thể chỉ rõ các thuộc tính nào nếu được cập nhật mới

dẫn đến vi phạm bằng cách liệt kê chúng dưới dấu (x) dẫn đến vi phạm bằng cách liệt kê chúng dưới dấu (x) hoặc dấu (+)hoặc dấu (+)

Nếu không có nguy cơ bị vi phạm thì đánh dấu trừ Nếu không có nguy cơ bị vi phạm thì đánh dấu trừ (-) (-)

Nếu không bị vi phạm vì không được phép sửa đổi thì kí Nếu không bị vi phạm vì không được phép sửa đổi thì kí hiệu là trhiệu là trừừ với dấu * : (- với dấu * : (- (*)(*)))

Page 127: Cơ sở dữ liệu đại học

• Bảng TAH của R2Bảng TAH của R2::

R2R2 ThêmThêm XóaXóa SửaSửa

NHANVIENHANVIENN

++ -- +(GT)+(GT)

Page 128: Cơ sở dữ liệu đại học

b. RBTV liên bộb. RBTV liên bộ RBTV liên bộ là điều kiện ràng buộc giữa các bộ RBTV liên bộ là điều kiện ràng buộc giữa các bộ

trên cùng một quan hệtrên cùng một quan hệ

Ví dụ 5: Ví dụ 5: Xét lược đồ quan hệ:Xét lược đồ quan hệ:• PHONGBAN(PHONGBAN(MAPMAP, TENP, TP,NGNC, TENP, TP,NGNC))

Xét RBTV R4: Xét RBTV R4: • Nội dungNội dung: :

• Hai phòng khác nhau sẽ có mã phòng khác Hai phòng khác nhau sẽ có mã phòng khác nhaunhau

p1, p2 p1, p2 PHONGBAN: p1 PHONGBAN: p1 p2 p2 p1.MAP p1.MAP p2.MAP p2.MAP

• Bối cảnhBối cảnh: quan hệ PHONGBAN: quan hệ PHONGBAN

Page 129: Cơ sở dữ liệu đại học

• Bảng tầm ảnh hưởngBảng tầm ảnh hưởng::

R4R4 ThêThêmm

XóaXóa SửaSửa

PHONGBANPHONGBAN ++ -- -(*)-(*)

Page 130: Cơ sở dữ liệu đại học

c. RBTV liên thuộc tính c. RBTV liên thuộc tính

RBTV liên thuộc tính là ràng buộc giữa các RBTV liên thuộc tính là ràng buộc giữa các thuộc tính trong cùng một quan hệthuộc tính trong cùng một quan hệ

Ví dụ 7:Ví dụ 7: Xét lược đồ quan hệXét lược đồ quan hệDEANDEAN ( (MADAMADA, TDA, DD, PHONG, NGBD_DK, , TDA, DD, PHONG, NGBD_DK,

NGKT_DK) NGKT_DK) • Xét RBTV R6: Xét RBTV R6: • Nội dungNội dung: :

• Với mọi đề án, ngày bắt đầu dự kiến Với mọi đề án, ngày bắt đầu dự kiến (NGBD_DK) phải trước ngày kết thúc dự (NGBD_DK) phải trước ngày kết thúc dự kiến (NGKT_DK)kiến (NGKT_DK)

dd DEAN, d[NGBD_DK] <= d[NGKT_DK] DEAN, d[NGBD_DK] <= d[NGKT_DK]

Page 131: Cơ sở dữ liệu đại học

• Bối cảnhBối cảnh: quan hệ DEAN : quan hệ DEAN • Bảng tầm ảnh hưởngBảng tầm ảnh hưởng::

R6R6 ThêmThêm XóaXóa SửaSửa

DEANDEAN + + -- ++(NGBD_DK(NGBD_DK

,,NGKT_DK)NGKT_DK)

Page 132: Cơ sở dữ liệu đại học

4.2. RBTV có bối cảnh trên nhiều 4.2. RBTV có bối cảnh trên nhiều quan hệquan hệ

RBTV tham chiếuRBTV tham chiếu

RBTV liên bộ, liên quan hệRBTV liên bộ, liên quan hệ

RBTV liên thuộc tính, liên quan hệRBTV liên thuộc tính, liên quan hệ

RBTV do thuộc tính tổng hợpRBTV do thuộc tính tổng hợp

RBTV do chu trình trong RBTV do chu trình trong lược đồ lược đồ biểu biểu

diễn diễn quan hệquan hệ

Page 133: Cơ sở dữ liệu đại học

a. RBTV tham chiếua. RBTV tham chiếu

RBTV tham chiếu là ràng buộc quy RBTV tham chiếu là ràng buộc quy định gđịnh giá trị của thuộc tính trong một iá trị của thuộc tính trong một bộ của quan hệ R phải thuộc tập giá bộ của quan hệ R phải thuộc tập giá trị của thuộc tính khóa trong quan hệ trị của thuộc tính khóa trong quan hệ S khác.S khác.

RBTV tham chiếu còn gọi là ràng RBTV tham chiếu còn gọi là ràng buộc phụ thuộc tồn tại hay ràng buộc buộc phụ thuộc tồn tại hay ràng buộc khóa ngoạikhóa ngoại

Page 134: Cơ sở dữ liệu đại học

Ví dụ 10 : Ví dụ 10 : Xét các lược đồ quan hệXét các lược đồ quan hệ PHONGBANPHONGBAN ( (MAPMAP, TENP, TRP, NGNC), TENP, TRP, NGNC) NHANVIENNHANVIEN ( (MANVMANV, HT, NS, GT, LUONG) , HT, NS, GT, LUONG)

• Xét RBTV R9: Xét RBTV R9: • Nội dungNội dung::

Mỗi trưởng phòng phải là một nhân viên Mỗi trưởng phòng phải là một nhân viên trong công ty. trong công ty. p p PHONGBAN, PHONGBAN, n n NHANVIEN: NHANVIEN:

n[MANV] = p[TRP]n[MANV] = p[TRP]

Hay: PHONGBAN[TRP] Hay: PHONGBAN[TRP] NHANVIEN[MANV])NHANVIEN[MANV])

Page 135: Cơ sở dữ liệu đại học

• Bối cảnhBối cảnh: NHANVIEN, PHONGBAN: NHANVIEN, PHONGBAN• Bảng tầm ảnh hưởngBảng tầm ảnh hưởng::

R9R9 ThêmThêm XóaXóa SửaSửa

PHONGBAPHONGBANN

++ -- +(TRP)+(TRP)

NHANVIENNHANVIEN -- ++ - (*)- (*)

Page 136: Cơ sở dữ liệu đại học

b. RBTV liên bộ, liên quan hệb. RBTV liên bộ, liên quan hệ

RBTV liên bộ, liên quan hệ là điều kiện giữa RBTV liên bộ, liên quan hệ là điều kiện giữa các bộ trên nhiều quan hệ khác nhau.các bộ trên nhiều quan hệ khác nhau.

Ví dụ 11 : Ví dụ 11 : Xét các lược đồ quan hệXét các lược đồ quan hệ PHONGBANPHONGBAN ( (MAPMAP, TENP, TRP, NGNC), TENP, TRP, NGNC) DIADIEMPHGDIADIEMPHG ( (MAP, DIADIEMMAP, DIADIEM))

Xét RBTV R10: Xét RBTV R10: Nội dungNội dung::

• Mỗi phòng ban phải có ít nhất một địa Mỗi phòng ban phải có ít nhất một địa điểm phòngđiểm phòngp p PHONGBAN, PHONGBAN, d d DIADIEMPHG: DIADIEMPHG: p.MAP = d.MAPp.MAP = d.MAP

Page 137: Cơ sở dữ liệu đại học

• Bối cảnhBối cảnh: PHONGBAN, DIADIEM_PHG: PHONGBAN, DIADIEM_PHG• Bảng tầm ảnh hưởngBảng tầm ảnh hưởng::

R10R10 ThêmThêm XóaXóa SửaSửa

PHONGBANPHONGBAN -- -- --

DIADIEM_PHDIADIEM_PHGG

-- ++ + (MAP)+ (MAP)

Page 138: Cơ sở dữ liệu đại học

c. RBTV liên thuộc tính, liên quan hệc. RBTV liên thuộc tính, liên quan hệ RBTV liên thuộc tính, liên quan hệ là điều kiện RBTV liên thuộc tính, liên quan hệ là điều kiện

giữa các thuộc tính trên nhiều quan hệ khác nhau.giữa các thuộc tính trên nhiều quan hệ khác nhau.Ví dụ 12 :Ví dụ 12 :Xét các lược đồ quan hệXét các lược đồ quan hệ

DATHANG(DATHANG(MADHMADH, MAKH, NGAYDH), MAKH, NGAYDH)

GIAOHANG(GIAOHANG(MAGHMAGH, MADH, NGAYGH), MADH, NGAYGH)

- Xét RBTV R11: - Xét RBTV R11:

• Nội dungNội dung::Ngày giao hàng không được Ngày giao hàng không được trước ngày đặt hàngtrước ngày đặt hàngggGIAO_HANG, GIAO_HANG, ddDAT_HANG:d[MADH]DAT_HANG:d[MADH]g[MADH] g[MADH] d[NGAYDH] d[NGAYDH] g[NGAYGH] g[NGAYGH]

Page 139: Cơ sở dữ liệu đại học

• Bối cảnhBối cảnh: DATHANG, GIAOHANG: DATHANG, GIAOHANG• Bảng tầm ảnh hưởngBảng tầm ảnh hưởng::

R11R11 ThêmThêm XóaXóa SửaSửa

DATHANGDATHANG -- -- + (MGAYDH)+ (MGAYDH)

GIAOHANGIAOHANGG

++ -- + (NGAYGH)+ (NGAYGH)

Page 140: Cơ sở dữ liệu đại học

d. RBTV do thuộc tính tổng hợpd. RBTV do thuộc tính tổng hợp

Thuộc tính tổng hợp là thuộc tính được Thuộc tính tổng hợp là thuộc tính được tính toán từ giá trị của các thuộc tính tính toán từ giá trị của các thuộc tính khác hoặc trạng thái của CSDL.khác hoặc trạng thái của CSDL.

Khi có thuộc tính tổng hợp, cần phải có Khi có thuộc tính tổng hợp, cần phải có RBTV để đảm bảo mối quan hệ giữa nó RBTV để đảm bảo mối quan hệ giữa nó và nguồn mà nó được tính toán từ đóvà nguồn mà nó được tính toán từ đó..

Ví dụ 13 :Ví dụ 13 :Xét các lược đồ quan hệXét các lược đồ quan hệ• PXUAT(SOPHIEU, NGAY, TT)PXUAT(SOPHIEU, NGAY, TT)• CTIET_PX(SOPHIEU, MAHANG, SL, DG)CTIET_PX(SOPHIEU, MAHANG, SL, DG)

Page 141: Cơ sở dữ liệu đại học

• Xét RBTV R12: Xét RBTV R12: • Nội dungNội dung::

• Tổng trị giá của 1 phiếu xuất phải bằng Tổng trị giá của 1 phiếu xuất phải bằng tổng trị giá các chi tiết xuất.tổng trị giá các chi tiết xuất.pxpxPXUAT,PXUAT,

px.TT = px.TT = (ct (ct CTIET_PX CTIET_PX ct.SOPHIEU = px.SOPHIEU) ct.SOPHIEU = px.SOPHIEU) ct.SL * ct.SL * ct.DGct.DG

• Bối cảnhBối cảnh: PXUAT,CTIET_PX : PXUAT,CTIET_PX

Page 142: Cơ sở dữ liệu đại học

• Bảng tầm ảnh hưởngBảng tầm ảnh hưởng::

• (*): Ở thời điểm thêm một bộ vào PXUAT, giá trị (*): Ở thời điểm thêm một bộ vào PXUAT, giá trị bộ đó tại TT là trống.bộ đó tại TT là trống.

R12R12 ThêThêmm

XóaXóa SửaSửa

PXUATPXUAT -(*)-(*) ++ + (TT)+ (TT)

CTIET_PXCTIET_PX ++ ++ + (SL,DG)+ (SL,DG)

Page 143: Cơ sở dữ liệu đại học

e. RBTV do có chu trìnhe. RBTV do có chu trình

Ví dụ 15 :Ví dụ 15 :Xét các lược đồ quan hệXét các lược đồ quan hệ• NHANVIENNHANVIEN ( (MANVMANV, HT,NS ,GT, PHONG, , HT,NS ,GT, PHONG,

LUONG)LUONG)• DEANDEAN ( (MADAMADA, TENDA, DD, PHONG), TENDA, DD, PHONG)• PHANCONGPHANCONG ( (NV#, SODANV#, SODA, THOIGIAN), THOIGIAN)• Xét RBTV R14: Xét RBTV R14: • Nội dungNội dung::

Nhân viên chỉ được phân công vào các đề Nhân viên chỉ được phân công vào các đề án do phòng mình phụ trách.án do phòng mình phụ trách.

Page 144: Cơ sở dữ liệu đại học

pc pc PHANCONG, PHANCONG, nvda nvda (NHANVIEN (NHANVIEN ⋈⋈ PHG=PHONGPHG=PHONG DEAN): (nvda.MANV = pc.NV# DEAN): (nvda.MANV = pc.NV# nvda.MADA = pc.SODA) nvda.MADA = pc.SODA)

Hay: PHANCONG[MA_NVIEN,SODA] Hay: PHANCONG[MA_NVIEN,SODA] (NHANVIEN (NHANVIEN DEAN) [MANV,MADA] DEAN) [MANV,MADA]

Bối cảnh: NHANVIEN, DEAN, PHANCONGBối cảnh: NHANVIEN, DEAN, PHANCONG

Page 145: Cơ sở dữ liệu đại học

Bảng tầm ảnh hưởngBảng tầm ảnh hưởng

R14R14 ThêmThêm XóaXóa SửaSửa

PHANCONG PHANCONG + + - - + (NV#, SODA) + (NV#, SODA)

NHANVIEN NHANVIEN - - + + -(*)-(*)

DEAN DEAN - - + + -(*)-(*)

Page 146: Cơ sở dữ liệu đại học

Bài 7. PHỤ THUỘC DỮ LIỆU Bài 7. PHỤ THUỘC DỮ LIỆU TRONG MÔ HÌNH QUAN HỆ TRONG MÔ HÌNH QUAN HỆ

I. Phụ thuộc hàm (Functional I. Phụ thuộc hàm (Functional Dependencies : FD)Dependencies : FD)

1. Định nghĩa :1. Định nghĩa :

Cho R(U) là một lược đồ quan hệ với U = Cho R(U) là một lược đồ quan hệ với U = { A1, .. ,An} là tập thuộc tính. X và Y là tập { A1, .. ,An} là tập thuộc tính. X và Y là tập con của U.con của U.

Nói rằng X Nói rằng X Y (đọc là X xác định hàm Y Y (đọc là X xác định hàm Y hoặc Y phụ thuộc hàm vào X) nếu r là một hoặc Y phụ thuộc hàm vào X) nếu r là một quan hệ xác định trên R (U) sao cho bất kỳ quan hệ xác định trên R (U) sao cho bất kỳ hai bộ t1, t2 hai bộ t1, t2 r mà r mà

t1[X]= t2[X] thì t1[Y] = t2[Y]t1[X]= t2[X] thì t1[Y] = t2[Y]

Page 147: Cơ sở dữ liệu đại học

Ví dụ :Ví dụ : Trong quan hệ SV, mỗi thuộc tính DIACHI, NS, KETQUA đều phụ thuộc hàm (pth ) vào thuộc tính SV#. Mỗi giá trị SV# xác định duy nhất một giá trị tương ứng đối với từng thuộc tính đó. Khi đó , có thể viết :

SV# DIACHI

SV# NS

SV# KETQUA

Nếu Y X thì hiển nhiên X Y

Page 148: Cơ sở dữ liệu đại học

2. Hệ tiên đề cho phụ thuộc 2. Hệ tiên đề cho phụ thuộc hàm hàm

2.1. K/n bao đóng của một tập phụ thuộc 2.1. K/n bao đóng của một tập phụ thuộc hàmhàm

• Gọi F là tập tất cả các pth đối với lược đồ quan Gọi F là tập tất cả các pth đối với lược đồ quan hệ R(U) và X hệ R(U) và X Y là một pth, X, Y Y là một pth, X, Y U. U.

• Nói rằng X Nói rằng X Y được suy diễn logic từ F nếu Y được suy diễn logic từ F nếu mỗi quan hệ r trên R( U) đều thoả các pth của F mỗi quan hệ r trên R( U) đều thoả các pth của F thì cũng thoả X thì cũng thoả X Y. Y.

• Chẳng hạnChẳng hạn F = { A F = { A B, B B, B C} thì A C} thì A C C• Tập tất cả các pth được suy diễn logic từ F Tập tất cả các pth được suy diễn logic từ F

được gọi là bao đóng của F. Kí hiệu là Fđược gọi là bao đóng của F. Kí hiệu là F++. . • Nếu FNếu F++ = F thì F là họ đầy đủ của các pth = F thì F là họ đầy đủ của các pth

Page 149: Cơ sở dữ liệu đại học

2.2. Hệ tiên đề Amstrong2.2. Hệ tiên đề Amstrong Năm 1974, Amstrong đưa ra hệ luật dẫn hay Năm 1974, Amstrong đưa ra hệ luật dẫn hay

các tính chất của phụ thuộc hàm, gọi là hệ các tính chất của phụ thuộc hàm, gọi là hệ tiên đề Amstrong:tiên đề Amstrong:

Cho X, Y, Z, W Cho X, Y, Z, W U . Ta có các luật sau : U . Ta có các luật sau :

A1. Luật phản xạ :A1. Luật phản xạ :

Nếu Y Nếu Y X thì X X thì X Y Y

A2. Luật bổ sung :A2. Luật bổ sung :

X X Y thì XZ Y thì XZ YZ YZ

A3. Luật bắc cầu :A3. Luật bắc cầu :

Nếu X Nếu X Y và Y Y và Y Z thì X Z thì X Z Z

Page 150: Cơ sở dữ liệu đại học

Hệ tiên đề Amstrong được chứng minh Hệ tiên đề Amstrong được chứng minh là đúng đắn và đầy đủ thông qua 3 bổ là đúng đắn và đầy đủ thông qua 3 bổ đề sau:đề sau:

Bổ đề 1 :Bổ đề 1 : Hệ tiên đề Astrong là đúng. Hệ tiên đề Astrong là đúng. Có nghĩa là, với F là một tập các pth Có nghĩa là, với F là một tập các pth đúng trên quan hệ r. Nếu X đúng trên quan hệ r. Nếu X Y là một Y là một pth được suy dẫn từ F nhờ hệ tiên đề pth được suy dẫn từ F nhờ hệ tiên đề Amstrong thì XAmstrong thì X Y là đúng trên quan Y là đúng trên quan hệ rhệ r

Page 151: Cơ sở dữ liệu đại học

Bổ đề 2: Bổ đề 2: Từ hệ tiên đề Amstrong ta suy Từ hệ tiên đề Amstrong ta suy ra một số luật sau đây:ra một số luật sau đây:

a. a. Luật hợp Luật hợp : Nếu X : Nếu X Y và X Y và X Z thì X Z thì X YZ YZ

b. b. Luật tách Luật tách : Nếu X : Nếu X Y và Z Y và Z Y thì X Y thì X Z Z

c. c. Luật tựa bắc cầu :Luật tựa bắc cầu :

Nếu X Nếu X Y và WY Y và WY Z thì XW Z thì XW Z Z

Page 152: Cơ sở dữ liệu đại học

Khái niệm bao đóng của tập các thuộc Khái niệm bao đóng của tập các thuộc tính đối với tập các phụ thuộc hàm.tính đối với tập các phụ thuộc hàm.

Gọi F là tập các pth trên tập thuộc Gọi F là tập các pth trên tập thuộc tính U, X tính U, X U . X U . X ++ là bao đóng của X là bao đóng của X (đối với F ) được định nghĩa như sau :(đối với F ) được định nghĩa như sau :

X X ++ = { A | X = { A | X A A F F++ } }

Nói cụ thể : X Nói cụ thể : X ++ là tập tất cả các là tập tất cả các thuộc tính A mà pth Xthuộc tính A mà pth XA có thể được A có thể được suy diễn logic từ F nhờ hệ tiên đề suy diễn logic từ F nhờ hệ tiên đề AmstrongAmstrong

Page 153: Cơ sở dữ liệu đại học

Bổ đề 3 Bổ đề 3 : : X X Y suy dẫn từ hệ tiên đề Y suy dẫn từ hệ tiên đề Amstrong khi và chỉ khi Y Amstrong khi và chỉ khi Y X X ++

Như vậy :

(1). X X+

(2). f: XY F+ <=> Y X+

Page 154: Cơ sở dữ liệu đại học

2.3 Thuật toán tìm bao đóng của tập thuộc 2.3 Thuật toán tìm bao đóng của tập thuộc tínhtính

Thuật toán CLOSURE.Thuật toán CLOSURE.Input : Tập thuộc tính X và tập phụ thuộc hàm FInput : Tập thuộc tính X và tập phụ thuộc hàm FOutput : Bao đóng X của F Output : Bao đóng X của F

CLOSURE (X,F)CLOSURE (X,F) Begin olddep:= Begin olddep:= ; newdep:=olddep; newdep:=olddep

While newdep <> olddep do While newdep <> olddep do BeginBegin

olddep:= newdepolddep:= newdep For each W For each W Z Z F do F do if W if W newdep then newdep:= newdep newdep then newdep:= newdep

ZZ End End Return ( newdep)Return ( newdep)End.End.

Page 155: Cơ sở dữ liệu đại học

VD: Cho U = ABCDEGVD: Cho U = ABCDEGF = {F = {

AB AB CC (f1)(f1)D D EG EG (f2)(f2)C C A A (f3)(f3)BE BE C C (f4)(f4)BC BC D D (f5)(f5)CG CG BD BD (f6) (f6)ADC ADC B B (f7) (f7)CE CE AG (f8) AG (f8)

}}Cho X= BD. Tính ( BD)Cho X= BD. Tính ( BD)++

FF

Page 156: Cơ sở dữ liệu đại học

Giải:Giải:XX(0)(0): = BD: = BD

XX(1)(1): = BD : = BD EG ( do (f2) ) EG ( do (f2) )

XX(2)(2): = BDEG : = BDEG C ( do (f4) ) C ( do (f4) )

XX(3)(3): = BDEGC : = BDEGC { A ( do (f2) ) { A ( do (f2) ) C ( do (f4) ) C ( do (f4) ) D ( do ( f5) ) D ( do ( f5) ) BD ( do (f6) ) BD ( do (f6) ) AG ( do (f8))AG ( do (f8))

}}

XX(4)(4): = BDEGCA = U => X: = BDEGCA = U => X++FF = X = X (4)(4)

Page 157: Cơ sở dữ liệu đại học

3. Tập phụ thuộc hàm tương đương3. Tập phụ thuộc hàm tương đương3.1 Định nghĩa3.1 Định nghĩa

Hai tập pth F và G được gọi là Hai tập pth F và G được gọi là tương đương nếu Ftương đương nếu F++ = G = G++. Khi đó ta nói . Khi đó ta nói F phủ G ( hay G phủ F). Kí hiệu : FF phủ G ( hay G phủ F). Kí hiệu : F G G

Bổ đề 1: Bổ đề 1: Mỗi tập các pth F đều được Mỗi tập các pth F đều được phủ bằng tập các pth G mà vế phải các phủ bằng tập các pth G mà vế phải các pth đó bao gồm không quá một thuộc pth đó bao gồm không quá một thuộc tính.tính.

Bổ đề 2:Bổ đề 2: F F G <=> F suy dẫn G <=> F suy dẫn được ra G và G suy dẫn được ra Fđược ra G và G suy dẫn được ra F

Page 158: Cơ sở dữ liệu đại học

Ví dụ : Cho quan hệ Q (ABCDE) với:Ví dụ : Cho quan hệ Q (ABCDE) với:F = {AF = {A BC , A BC , A D,CD D,CD E } E }G = {AG = {A BCE , A BCE , A ABD, CD ABD, CD E} E}

* F suy dẫn được ra G vì :* F suy dẫn được ra G vì :

A A C, A C, A D => A D => A CD CD

CD CD E E

=> A => A BCE. BCE.

Tương tự, dễ dàng chứng minh : A Tương tự, dễ dàng chứng minh : A ABD. ABD.

Vậy F suy dẫn được ra G.Vậy F suy dẫn được ra G.

* Ngược lại, ta nhận thấy F * Ngược lại, ta nhận thấy F G , do đó hiển G , do đó hiển nhiên G suy dẫn được ra F.nhiên G suy dẫn được ra F.

Kết luận : F Kết luận : F G G

A A E E

Page 159: Cơ sở dữ liệu đại học

3.2 Phủ tối thiểu 3.2 Phủ tối thiểu Định nghĩa :Định nghĩa : Một tập phụ thuộc hàm F được gọi là tối Một tập phụ thuộc hàm F được gọi là tối

thiểu nếu : thiểu nếu : Mỗi vế phải của một phụ thuộc hàm F chỉ có một Mỗi vế phải của một phụ thuộc hàm F chỉ có một

thuộc tính.thuộc tính. F gồm toàn những pth đầy đủ, nghĩa là không tồn tại F gồm toàn những pth đầy đủ, nghĩa là không tồn tại

một phụ thuộc hàm X một phụ thuộc hàm X A thuộc F và một tập con Z A thuộc F và một tập con Z của X mà :của X mà :

FF++ = ( F - { X = ( F - { X A } A } { Z { Z A}) A}) ++

Không tồn tại một phụ thuộc hàm X Không tồn tại một phụ thuộc hàm X A thuộc F mà : A thuộc F mà :

FF++ = ( F - { X = ( F - { X A }) A }) ++

Page 160: Cơ sở dữ liệu đại học

3.3 Thuật toán MINIMALCOVER 3.3 Thuật toán MINIMALCOVER tìm phủ tối thiểu của tập phụ tìm phủ tối thiểu của tập phụ

thuộc hàm Fthuộc hàm FInput:Input: Tập phụ thuộc hàm F Tập phụ thuộc hàm F

Output :Output : G- là phủ tối thiểu của F G- là phủ tối thiểu của F

MINIMALCOVER (G, F)MINIMALCOVER (G, F)

G:=FG:=F

Thay thế từng phụ thuộc hàm XThay thế từng phụ thuộc hàm X { A1, { A1, A2,..,An} trong G bằng các phụ thuộc hàm X A2,..,An} trong G bằng các phụ thuộc hàm X A1, X A1, X A2, .., X A2, .., X An An

For each X For each X A trong G A trong G

For each B For each B X X

If ( G - { X If ( G - { X A }) A }) ( X- {B}) ( X- {B}) A) A) tương đương với G Then tương đương với G Then

Thay X Thay X A bằng ( X- { B}) A bằng ( X- { B}) A trong G A trong G

Page 161: Cơ sở dữ liệu đại học

For each X For each X A trong G A trong G If ( G - { X If ( G - { X A }) tương đương A }) tương đương

với G Then với G Then

Loại X Loại X A ra khỏi G A ra khỏi G Return (G)Return (G)End.End.

Page 162: Cơ sở dữ liệu đại học

Ví dụ 1: Cho F = { AVí dụ 1: Cho F = { A B , B B , B A, B A, B C, C, A A C, C C, C A}. Tìm phủ tối thiểu G của A}. Tìm phủ tối thiểu G của

FFGiải : Giải : Tất cả các pth của F đều thoả mãn điều kiện Tất cả các pth của F đều thoả mãn điều kiện

1 vì vế trái chỉ có một thuộc tính.1 vì vế trái chỉ có một thuộc tính.

Vế phải của mỗi pth chỉ có một thuộc tính nên Vế phải của mỗi pth chỉ có một thuộc tính nên không cần xét đk2.không cần xét đk2.

Xét đk 3, ta thấy : Nếu koại bỏ pth B Xét đk 3, ta thấy : Nếu koại bỏ pth B A và A A và A C C ta được một tập pth Gta được một tập pth G

G={AG={A B , B B , B C, A C, A C } C } F F

Không thể loại bỏ thêm một pth nào nữa vì tập pth Không thể loại bỏ thêm một pth nào nữa vì tập pth còn lại sẽ không tương đương với F. Vậy G là tập còn lại sẽ không tương đương với F. Vậy G là tập pth tối thiểu của F.pth tối thiểu của F.

Page 163: Cơ sở dữ liệu đại học

Ví dụ 2: Cho F = { ABVí dụ 2: Cho F = { AB C, A C, A B, B B, B A}. A}. Tìm phủ tối thiểu G của F Tìm phủ tối thiểu G của F

Giải : Giải : Tất cả các pth của F đều thoả mãn điều kiện Tất cả các pth của F đều thoả mãn điều kiện 1 vì vế trái chỉ có một thuộc tính.1 vì vế trái chỉ có một thuộc tính.

Xét đk2: ta thấy pth là không đầy đủ vì : (F- Xét đk2: ta thấy pth là không đầy đủ vì : (F- {AB{AB C} C} {A{A C}) C}) F F

Vậy loại bỏ pth AB Vậy loại bỏ pth AB C và thay bằng pth A C và thay bằng pth A C C ta được tập pth G:ta được tập pth G:

G={AG={A C , A C , A B, B B, B A } A } F F

Nhận thấy, không thể loại bỏ thêm một pth nào Nhận thấy, không thể loại bỏ thêm một pth nào nữa vì tập pth còn lại sẽ không tương đương với F. nữa vì tập pth còn lại sẽ không tương đương với F. Vậy G là tập pth tối thiểu của F.Vậy G là tập pth tối thiểu của F.

Page 164: Cơ sở dữ liệu đại học

4. Bài toán tìm khoá của quan hệ4. Bài toán tìm khoá của quan hệ4.1 Thuật toán tìm khoá dựa trên đồ thị 4.1 Thuật toán tìm khoá dựa trên đồ thị

Định nghĩa khoá được viết lại bằng pth.Định nghĩa khoá được viết lại bằng pth.

Cho Q là lược đồ quan hệ định Cho Q là lược đồ quan hệ định nghĩa trên tập các thuộc tính U = { A1, nghĩa trên tập các thuộc tính U = { A1, A2, .. , An} với tập các pth F= { f1, f2, A2, .. , An} với tập các pth F= { f1, f2, .. ,fn} xác định trên Q. K .. ,fn} xác định trên Q. K U là khoá U là khoá của R nếu thoả mãn hai điều kiện sau :của R nếu thoả mãn hai điều kiện sau :

(1): K (1): K U U

(2): (2): K' K' K mà K' K mà K' U U

Page 165: Cơ sở dữ liệu đại học

Biểu diễn lược đồ quan hệ Q(U) Biểu diễn lược đồ quan hệ Q(U) bằng đồ thị có hướng như sau:bằng đồ thị có hướng như sau:

- Mỗi nút của đồ thị là tên của một thuộc tính thuộc - Mỗi nút của đồ thị là tên của một thuộc tính thuộc QQ

- Cung nối hai thuộc tính A và B thể hiện cho pth A - Cung nối hai thuộc tính A và B thể hiện cho pth A B B

- Thuộc tính chỉ có các mũi tên đi ra, tức là chỉ ở vế - Thuộc tính chỉ có các mũi tên đi ra, tức là chỉ ở vế trái của pth gọi là nút gốctrái của pth gọi là nút gốc

- Thuộc tính mà chỉ có mũi tên đi vào, tức là chỉ - Thuộc tính mà chỉ có mũi tên đi vào, tức là chỉ nằm ở vế phải của pth gọi là nút lá.nằm ở vế phải của pth gọi là nút lá.

- Khoá của lược đồ quan hệ phải bao phủ tập nút - Khoá của lược đồ quan hệ phải bao phủ tập nút gốc và không được chứa bất cứ nút lá nào của đồ gốc và không được chứa bất cứ nút lá nào của đồ thị thị

Page 166: Cơ sở dữ liệu đại học

Thuật toán tìm khoá:Thuật toán tìm khoá:-B1:-B1: Vẽ đồ thị của lược đồ quan hệ Vẽ đồ thị của lược đồ quan hệ

-B2:-B2: Xác định tập các nút gốc ( G) và tập các nút lá ( L) Xác định tập các nút gốc ( G) và tập các nút lá ( L)

-B3: -B3: Xuất phát từ tập các nút gốc(G), đặt K bằng G ( khởi Xuất phát từ tập các nút gốc(G), đặt K bằng G ( khởi đầu ta đặt khoá là tập các nút gốc)đầu ta đặt khoá là tập các nút gốc)

-B4:-B4: Dựa trên tập các pth F, tìm bao đóng của tập K ( tìm Dựa trên tập các pth F, tìm bao đóng của tập K ( tìm KK++

FF))

+ Nếu K+ Nếu K++FF = U thì K chính là khoá . Dừng lại. = U thì K chính là khoá . Dừng lại.

+ Ngược lại thì bổ sung một thuộc tính không thuộc tập + Ngược lại thì bổ sung một thuộc tính không thuộc tập nút lá (L) vào K. Khi đó K = K+1 nút không thuộc tập L.nút lá (L) vào K. Khi đó K = K+1 nút không thuộc tập L.

Trở lại B4.Trở lại B4.

Page 167: Cơ sở dữ liệu đại học

4.2 Thuật toán tìm khoá dựa trên bao 4.2 Thuật toán tìm khoá dựa trên bao đóng của tập thuộc tínhđóng của tập thuộc tính

* Ý tưởng :* Ý tưởng : Bắt đầu từ tập R vì R Bắt đầu từ tập R vì R++ = R. Ta bớt dần = R. Ta bớt dần các phần tử của R để nhận được tập bé nhất mà các phần tử của R để nhận được tập bé nhất mà bao đóng của nó vẫn bằng R.bao đóng của nó vẫn bằng R.

VàoVào : r(R), F : r(R), F

Ra :Ra : K ( Khoá ) K ( Khoá )

B1: gán K = R B1: gán K = R

B2: Lặp lại các bước sau :B2: Lặp lại các bước sau :

Loại khỏi K phần tử A mà ( K \A)Loại khỏi K phần tử A mà ( K \A)++ =R =R

Nhận xét:Nhận xét: Thuật toán trên chỉ tìm được một khoá Thuật toán trên chỉ tìm được một khoá trong sơ đồ quan hệ. Nếu cần tìm nhiều khoá, ta trong sơ đồ quan hệ. Nếu cần tìm nhiều khoá, ta thay đổi trật tự loại bỏ các phần tử của K.thay đổi trật tự loại bỏ các phần tử của K.

Page 168: Cơ sở dữ liệu đại học

Ví dụ : Cho R = { ABCDEGHI}Ví dụ : Cho R = { ABCDEGHI}F = { ACF = { AC B , BI B , BI ACD, ABC ACD, ABC D, H D, H I, I, ACE ACE BCG, CG BCG, CG AE}. AE}. Tìm khoá K ? Tìm khoá K ?

Giải : Giải :

B1:B1: Gán K= R = { ABCDEGHI} Gán K= R = { ABCDEGHI}

B2: B2: Lần lượt loại bỏ các phần tử khỏi K. Lần lượt loại bỏ các phần tử khỏi K.

-Loại phần tử A -Loại phần tử A : ta có : {BCDEGHI}: ta có : {BCDEGHI}++ = R vì pth CG = R vì pth CG AE nên A thuộc về {BCDEGHI}AE nên A thuộc về {BCDEGHI}++ nên K ={BCDEGHI} nên K ={BCDEGHI}

-Loại phần tử B :-Loại phần tử B : ta có : {CDEGHI} ta có : {CDEGHI}++ = R vì pth CG = R vì pth CG AE khiến A thuộc về {CDEGHI}AE khiến A thuộc về {CDEGHI}++ và pth AC và pth AC B khiến B khiến B thuộc về {CDEGHI}B thuộc về {CDEGHI}++ nên K ={CDEGHI} nên K ={CDEGHI}

Page 169: Cơ sở dữ liệu đại học

-Loại phần tử C :-Loại phần tử C : ta có : {DEGHI} ta có : {DEGHI}++ R nên K vẫn là R nên K vẫn là {CDEGHI}{CDEGHI}

-Loại phần tử D-Loại phần tử D : ta có : {CEGHI} : ta có : {CEGHI}++ = R = R

vì CG vì CG AE, AC AE, AC B, ABC B, ABC D nên D có trong {CEGHI} D nên D có trong {CEGHI}++ . Nên K ={CEGHI}. Nên K ={CEGHI}

-Loại phần tử E-Loại phần tử E : ta có : {CGHI} : ta có : {CGHI}++ = R = R

vì CG vì CG AE khiến E thuộc về {CGHI} AE khiến E thuộc về {CGHI}++ nên K ={CGHI} nên K ={CGHI}

-Loại phần tử H :-Loại phần tử H : ta có : {CGI} ta có : {CGI}++ R nên K vẫn là {CGHI} R nên K vẫn là {CGHI}

--Loại phần tử I Loại phần tử I : ta có : {CGH}: ta có : {CGH}++ = R = R

vì H vì H I, khiến I thuộc về {CGH} I, khiến I thuộc về {CGH}++ nên K ={CGH} nên K ={CGH}

Kết luận : Kết luận : K= { CGH } là một khoá của r (R) K= { CGH } là một khoá của r (R)

Page 170: Cơ sở dữ liệu đại học

Bài 8. THIẾT KẾ SCDL MỨC QUAN NIỆM

Trên thực tế, một ứng dụng có thể đựơc phân tích. thiết kế thành nhiều lược đồ CSDL khác nhau. Để đánh giá việc thiết kế một lược đồ CSDL, người ta dựa trên các tiêu chuẩn về sự trùng lặp thông tin, chi phí kiểm tra và các ràng buộc toàn vẹn...

Vậy để tránh sự dư thừa thông tin, ta cần chuẩn hoá tất cả các lược đồ trong quá trình thiết kế.

Page 171: Cơ sở dữ liệu đại học

1. Phép tách các lược đồ quan 1. Phép tách các lược đồ quan hệ hệ

- ĐN: - ĐN: Phép tách các lược đồ quan Phép tách các lược đồ quan hệ R = { A1, A2, .. An} là việc thay thế hệ R = { A1, A2, .. An} là việc thay thế lược đồ quan hệ R bằng tập các lược đồ { lược đồ quan hệ R bằng tập các lược đồ { R1, R2, .., Rk}, trong đó R1, R2, .., Rk}, trong đó Ri Ri R, i= 1,..,k R, i= 1,..,k

và R = R1và R = R1 R2 R2 ... ... Rk Rk

Không đòi hỏi các Ri phải là phân biệt Không đòi hỏi các Ri phải là phân biệt

- Mục đích : Loại bỏ các dị thường dữ liệu - Mục đích : Loại bỏ các dị thường dữ liệu

Page 172: Cơ sở dữ liệu đại học

Ví dụ :Ví dụ : Cho lược đồ quan hệ người cung cấp :Cho lược đồ quan hệ người cung cấp :

S(MCTY, ĐC, MH, GIA)S(MCTY, ĐC, MH, GIA)

với tập pth : MCTY với tập pth : MCTY ĐC ĐC

MCTY, MH MCTY, MH GIA GIA

Có thể được tách thành 2 lược đồ khác là Có thể được tách thành 2 lược đồ khác là ::

S1(MCTY, ĐC) và S2 ( MCTY, MH, GIA)S1(MCTY, ĐC) và S2 ( MCTY, MH, GIA)

như vậy sẽ không mất công lưu địa chỉ như vậy sẽ không mất công lưu địa chỉ của một công ty nhiều lầncủa một công ty nhiều lần

Page 173: Cơ sở dữ liệu đại học

Kết nối không mất mát thông tin Kết nối không mất mát thông tin - Nếu R là một lược đồ quan hệ - Nếu R là một lược đồ quan hệ

được tách thành các lược đồ con R1, R2, được tách thành các lược đồ con R1, R2, .., Rk và D là một tập các phụ thuộc dữ .., Rk và D là một tập các phụ thuộc dữ liệu. Nói rằng phép tách là tách - kết nối liệu. Nói rằng phép tách là tách - kết nối không mất mát thông tin đối với D nếu không mất mát thông tin đối với D nếu với mỗi quan hệ r trên R thoả D:với mỗi quan hệ r trên R thoả D:

r = r = R1(r)R1(r) * * R2 (r)R2 (r) * ... * * ... * Rk(r)Rk(r)

tức là r được tạo nên từ phép kết nối tự tức là r được tạo nên từ phép kết nối tự nhiên của các hình chiếu của nó trên nhiên của các hình chiếu của nó trên các Ri, i= 1..,kcác Ri, i= 1..,k

Page 174: Cơ sở dữ liệu đại học

Kiểm tra phép kết nối không Kiểm tra phép kết nối không mất mát thông tin mất mát thông tin

Input: Input: R ={ A1, A2, .., An} tập các phụ R ={ A1, A2, .., An} tập các phụ thuộc hàm và phép tách p =(R1, R2, .., thuộc hàm và phép tách p =(R1, R2, .., Rk)Rk)

Output: Output: Phép tách có phải là không mất Phép tách có phải là không mất mát thông tin hay không ?mát thông tin hay không ?

Phương pháp Phương pháp : Thiết lập một bảng với n : Thiết lập một bảng với n cột k hàng.; cột thứ j tương ứng với thuộc cột k hàng.; cột thứ j tương ứng với thuộc tính Aj; hàng thứ i tương ứng với lược đồ tính Aj; hàng thứ i tương ứng với lược đồ Ri. Tại ô (i,j) điền kí hiệu aj nếu Aj Ri. Tại ô (i,j) điền kí hiệu aj nếu Aj Ri, Ri, nếu không điền kí hiệu bijnếu không điền kí hiệu bij

Page 175: Cơ sở dữ liệu đại học

- Xét các pth:- Xét các pth:

+Xét ( +Xét ( XX Y Y ) ) F , xét các hàng và F , xét các hàng và nếu có giá trị bằng nhau trên thuộc tính X nếu có giá trị bằng nhau trên thuộc tính X thì làm bằng các giá trị của chúng trên Y. thì làm bằng các giá trị của chúng trên Y. Khi làm bằng trên Y, nếu một trong hai giá Khi làm bằng trên Y, nếu một trong hai giá trị là trị là ajaj thì ưu tiên làm bằng thì ưu tiên làm bằng ajaj, nếu không , nếu không làm bằng một trong các kí hiệu làm bằng một trong các kí hiệu bijbij..

+Tiếp tục với các pth khác ( kể cả +Tiếp tục với các pth khác ( kể cả việc lặp lại các pth đã được áp dụng) cho việc lặp lại các pth đã được áp dụng) cho đến khi không còn áp dụng được nữa.đến khi không còn áp dụng được nữa.

- Xem xét kq: - Xem xét kq: Nếu xuất hiện một hàng gồm Nếu xuất hiện một hàng gồm toàn kí hiệu toàn kí hiệu a1, a2, .. , ana1, a2, .. , an thì phép kết thì phép kết nối là không mất mát thông tin, ngược lại nối là không mất mát thông tin, ngược lại là kết nối mất mát thông tin.là kết nối mất mát thông tin.

Page 176: Cơ sở dữ liệu đại học

VD1: Quan hÖ ng êi cung cÊp:

R(MCTY, ĐC, MH, GIA) ® îc t¸ch thµnh 2 quan hÖ:

R1(MCTY, ĐC) vµ R2(MCTY, MH,GIA)

víi c¸c phô thuéc hµm: MCTY ĐC

MCTY,MH GIA

Kiểm tra xem phép tách trên có mất mát thông tin hay không ?

Page 177: Cơ sở dữ liệu đại học

B¶ng ban ®Çu ® îc thiÕt lËp nh sau:

MCTYMCTY §C§C MHMH GIAGIA

R1R1 a1a1 a2a2 b13b13 b14b14

R2R2 a1a1 b22b22 a3a3 a3a3

11 22 3 3 4 4

11

22

Page 178: Cơ sở dữ liệu đại học

¸p dông phô thuéc hµm MCTY ĐC cho 2 hµng cña b¶ng. Ta nhËn thÊy 2 hµng b»ng nhau trªn cét tªntªn (®Òu lµ a1) nªn ë cét §C chóng ® îc lµm b»ng vµ b»ng a2. Khi ®ã ta thÊy b¶ng kÕt qu¶ lµ:

Cã hµng thø 2 cã c¸c gi¸ trÞ toµn lµ a, do ®ã phÐp t¸ch lµ T¸ch - KÕt nèi kh«ng mÊt m¸t th«ng tin.

TªnTªn §Þa §Þa chØchØ

S¶n S¶n phÈmphÈm

Gi¸Gi¸

R1R1 a1a1 a2a2 b13b13 b14b14

R2R2 a1a1 a2a2 a3a3 a3a3

Page 179: Cơ sở dữ liệu đại học

Bµi tËp:B1. Cho l îc ®å quan hÖ R={A, B, C, D} vµ tËp

phô thuéc hµm F={AB, AC D}PhÐp t¸ch quan hÖ R thµnh 2 quan hÖ R1={AB} vµ R2={ACD} cã tæn thÊt th«ng tin kh«ng? V× sao?

B2. Cho lược đồ quan hệ với các thuộc tính A, B, C, D, E, F và tập phụ thuộc hàm

F= { AB C, C D, ABD E, F A} Kiểm tra tính mất mát thông tin của phép tách R thành :

(R) = ( BC, AC, ABDE, ABDF) B3. Dùng kĩ thuật bảng kiểm tra tính tổn thất của các phép Dùng kĩ thuật bảng kiểm tra tính tổn thất của các phép

tách sau :tách sau : R= < U, F>, U = ABCDE ; R= < U, F>, U = ABCDE ; F = { A F = { A C, B C, B C , CC , CD , DE D , DE C , CEC , CEA}A}

p = ( AD, AB, BE , CDE)p = ( AD, AB, BE , CDE)

Page 180: Cơ sở dữ liệu đại học

2. Một số khái niệm2. Một số khái niệm

** Thuộc tính khoá và không khoá Thuộc tính khoá và không khoá - Cho một lược đồ quan hệ R trên tập - Cho một lược đồ quan hệ R trên tập

thuộc tính U ={ A1, .., An}. Thuộc tính Athuộc tính U ={ A1, .., An}. Thuộc tính A U U được gọi là thuộc tính khoá ( nguyên thuỷ được gọi là thuộc tính khoá ( nguyên thuỷ hay cơ bản) nếu A là một thành phần thuộc hay cơ bản) nếu A là một thành phần thuộc một khoá nào đó của R, ngược lại A được gọi một khoá nào đó của R, ngược lại A được gọi là thuộc tính không khoá (phi nguyên thuỷ là thuộc tính không khoá (phi nguyên thuỷ hoặc thứ cấp).hoặc thứ cấp).

-VD : Cho lược đồ R trên tập thuộc tính -VD : Cho lược đồ R trên tập thuộc tính u= { A, B, C, D } với các pth ABu= { A, B, C, D } với các pth AB C , B C , B D , D , BCBC A . Ta thấy AB và BC là khoá. Vậy A, B, A . Ta thấy AB và BC là khoá. Vậy A, B, C là thuộc tính khoá ( hay cơ bản) , còn D là C là thuộc tính khoá ( hay cơ bản) , còn D là thuộc tính không khoá hay thứ cấp.thuộc tính không khoá hay thứ cấp.

Page 181: Cơ sở dữ liệu đại học

* Phụ thuộc hàm đầy đủ* Phụ thuộc hàm đầy đủ

Cho lược đồ quan hệ R(U) trên Cho lược đồ quan hệ R(U) trên tập thuộc tính U = { A1, ... ,Ak}. X và tập thuộc tính U = { A1, ... ,Ak}. X và Y là hai tập thuộc tính khác nhau X Y là hai tập thuộc tính khác nhau X U và Y U và Y U. U.

Y là phụ thuộc hàm đầy đủ vào X Y là phụ thuộc hàm đầy đủ vào X nếu Y là pth vào X nhưng không pth nếu Y là pth vào X nhưng không pth vào bất kì tập con thực sự nào của Xvào bất kì tập con thực sự nào của X

Page 182: Cơ sở dữ liệu đại học

Phụ thuộc bắc cầuPhụ thuộc bắc cầuCho một lược đồ quan hệ R(U); X là một Cho một lược đồ quan hệ R(U); X là một

tập con các thuộc tính Xtập con các thuộc tính X U, A là một thuộc U, A là một thuộc tính thuộc U. A được gọi là phụ thuộc bắc cầu tính thuộc U. A được gọi là phụ thuộc bắc cầu vào X trên R nếu tồn tại một tập con Y của R sao vào X trên R nếu tồn tại một tập con Y của R sao cho X cho X Y, Y Y, Y A nhưng Y A nhưng Y X với A X với A XY. XY.

Page 183: Cơ sở dữ liệu đại học

3. Các dạng chuẩn của lược đồ quan 3. Các dạng chuẩn của lược đồ quan hệ hệ

- Quan hệ được chuẩn hoá là quan hệ trong đó mỗi miền của một thuộc tính chỉ chứa các - Quan hệ được chuẩn hoá là quan hệ trong đó mỗi miền của một thuộc tính chỉ chứa các giá trị nguyên tố ( tức là không phân nhỏ được nữa)giá trị nguyên tố ( tức là không phân nhỏ được nữa)

- Quan hệ có chứa các miền giá trị là không nguyên tố gọi là quan hệ không chuẩn hoá.- Quan hệ có chứa các miền giá trị là không nguyên tố gọi là quan hệ không chuẩn hoá.

- Mét quan hÖ ® îc chuÈn ho¸ cã thÓ thµnh mét hoÆc nhiÒu quan hÖ chuÈn ho¸ kh¸c vµ kh«ng lµm mÊt m¸t th«ng tin.

) )

Page 184: Cơ sở dữ liệu đại học

C¸c d¹ng chuÈn:

- D¹ng kh«ng chuÈn

- D¹ng chuÈn thø nhÊt (1NF: First Normal Form)

- D¹ng chuÈn thø hai (2NF)

- D¹ng chuÈn thø ba (3NF)

- D¹ng chuÈn Boye – Codd (BCNF)

Page 185: Cơ sở dữ liệu đại học

3.1. D¹ng chuÈn thø nhÊt:

Mét l îc ®å quan hÖ R ® îc gäi lµ ë d¹ng chuÈn mét (1NF) nÕu vµ chØ nÕu toµn bé c¸c miÒn cã mÆt trong R ®Òu chØ chøa c¸c gi¸ trÞ nguyªn tè.

VD: Cho bảng quan hệ GD ( Ten_GV, MON_GD)Ten_GVTen_GV Mon_GDMon_GD

LanLan PASCAL, NM CSDNPASCAL, NM CSDN

HàHà C, VISUAL BASIC, TK WEPC, VISUAL BASIC, TK WEP

Các giá trị ở thuộc tính Mon_GD chưa là giá trị Các giá trị ở thuộc tính Mon_GD chưa là giá trị nguyên tố nên bảng trên chưa ở dạng chuẩn 1. Để nguyên tố nên bảng trên chưa ở dạng chuẩn 1. Để đưa lược đồ trên về dạng chuẩn 1 ta tách thuộc đưa lược đồ trên về dạng chuẩn 1 ta tách thuộc tính kép thành các thuộc tính đơn như sau : tính kép thành các thuộc tính đơn như sau :

Page 186: Cơ sở dữ liệu đại học

Ten_GVTen_GV Mon_GDMon_GD

LanLan PASCALPASCAL

LanLan NM CSDNNM CSDN

HàHà CC

HàHà VISUAL BASICVISUAL BASIC

HàHà TK WEPTK WEP

Bảng GD ở dạng chuẩn 1:Bảng GD ở dạng chuẩn 1:

Page 187: Cơ sở dữ liệu đại học

3.2. D¹ng chuÈn thø 2: L îc ®å quan hÖ R ë d¹ng chuÈn 2 (2NF) nÕu: R ë d¹ng chuÈn mét Mọi thuéc tÝnh kh«ng kho¸ cña R lµ phô

thuéc hµm ®Çy ®ñ vµo kho¸ chÝnh.VD:Cho quan hÖ:

SVTHI ( MONTHI, MSSV, TEN, TUOI, DIACHI, DIEM )

M«n thiM«n thi MSSVMSSV TªnTªn TuæiTuæi §Þa §Þa chØchØ

§iÓm§iÓm

33 1111 LanLan 2020 HNHN 88

33 1212 HaHa 2121 HPHP 66

44 1111 LanLan 2020 HNHN 77

44 1212 HaHa 2121 HPHP 66

55 1111 LanLan 2020 HNHN 77

55 1313 TuTu 2222 HTHT 22

Page 188: Cơ sở dữ liệu đại học

Khoá chính của quan hệ trên là (Monthi , MSSV).Ta thấy các thuộc tính không

khoá: ten, tuoi , diachi không phụ thuộc đầy đủ vào khoá chính (chỉ phụ thuộc vào MSSV). Do đó, vi phạm 2NF. Để lược đồ ở dạng chuẩn 2, ta tách thành 2 quan hệ :

SINHVIEN (MSSV, TEN, TUOI, DIACHI) vµ

THIXONG (MONTHI, MSSV, DIEM)

Hai quan hệ trên đã ở 2NF vì mọi thuộc tính không khoá đều đã phụ thuộc hàm đầy đủ vào khoá chính

Page 189: Cơ sở dữ liệu đại học

3.3 Dạng chuẩn thứ 3 ( 3NF)3.3 Dạng chuẩn thứ 3 ( 3NF)Lược đồ quan hệ R ở dạng chuẩn thứ 3 ( 3NF) nếu :Lược đồ quan hệ R ở dạng chuẩn thứ 3 ( 3NF) nếu :

R ở dạng chuẩn 2R ở dạng chuẩn 2

Mỗi thuộc tính không khoá là không phụ thuộc hàm bắc cầu Mỗi thuộc tính không khoá là không phụ thuộc hàm bắc cầu vào khoá chính.vào khoá chính.

- VD1 :- VD1 : Cho lược đồ quan hệ R ( SAIP) với các phụ thuộc Cho lược đồ quan hệ R ( SAIP) với các phụ thuộc hàm : SIhàm : SI P và S P và S A. A.

R không ở 3NF. Vì có A là một thuộc tính không khoá, phụ R không ở 3NF. Vì có A là một thuộc tính không khoá, phụ thuộc bắc cầu vào khoá chính: SIthuộc bắc cầu vào khoá chính: SI S , S S , S A và S A và S SI.SI.

- VD2:- VD2: Lược đồ quan hệ R ( CSZ) với các phụ thuộc hàm: Lược đồ quan hệ R ( CSZ) với các phụ thuộc hàm: CS CS Z, Z Z, Z C. Trong lược đồ này, mọi thuộc tính đều là C. Trong lược đồ này, mọi thuộc tính đều là thuộc tính khoá. Do vậy R ở 3 NFthuộc tính khoá. Do vậy R ở 3 NF

Page 190: Cơ sở dữ liệu đại học

3.4 Dạng chuẩn Boye-Codd 3.4 Dạng chuẩn Boye-Codd ( BCNF)( BCNF)

Lược đồ quan hệ R ở dạng chuẩn Boye-Codd ( BCNF) Lược đồ quan hệ R ở dạng chuẩn Boye-Codd ( BCNF) nếu với mọi : X nếu với mọi : X A thoả trên R , A A thoả trên R , A X thì X là một khoá X thì X là một khoá của R.của R.

- VD- VD : :Trong ví dụ R(CSZ) nêu trên, rõ ràng R không ở Trong ví dụ R(CSZ) nêu trên, rõ ràng R không ở BCNF mà là ở 3NF vì rằng Z BCNF mà là ở 3NF vì rằng Z C nhưng Z không phải là C nhưng Z không phải là một khoá của R.một khoá của R.

- Định lý : - Định lý : Nếu một lược đồ quan hệ R với tập phụ thuộc Nếu một lược đồ quan hệ R với tập phụ thuộc hàm F là ở BCNF thì nó là ở 3NF.hàm F là ở BCNF thì nó là ở 3NF.

- Nhận xét : - Nhận xét : Trong CSDL, các lược đồ quan hệ ở dạng Trong CSDL, các lược đồ quan hệ ở dạng chuẩn 1, 2, 3 vẫn tồn tại sự dư thừa thông tin. Để tối thiểu sự chuẩn 1, 2, 3 vẫn tồn tại sự dư thừa thông tin. Để tối thiểu sự dư thừa thông tin thì các bảng phải ở dạng chuẩn BCNFdư thừa thông tin thì các bảng phải ở dạng chuẩn BCNF

Page 191: Cơ sở dữ liệu đại học

4. Chuẩn hoá bảng4. Chuẩn hoá bảng Chuẩn hoá bảng là cách đưa một bảng chưa chuẩn hoá Chuẩn hoá bảng là cách đưa một bảng chưa chuẩn hoá về dạng chuẩn 3NF hoặc BCNF mà không làm mất mát về dạng chuẩn 3NF hoặc BCNF mà không làm mất mát thông tin.thông tin.

Có hai phương pháp để chuẩn hoá lược đồ quan hệ :Có hai phương pháp để chuẩn hoá lược đồ quan hệ :

Phương pháp phân rã Phương pháp phân rã : Tách một lược đồ quan hệ thành : Tách một lược đồ quan hệ thành nhiều quan hệ khác thỏa mãn các dạng chuẩn.nhiều quan hệ khác thỏa mãn các dạng chuẩn.

Phương pháp tổng hợp Phương pháp tổng hợp : Gom các thuộc tính thành từng : Gom các thuộc tính thành từng nhóm tạo thành quan hệ thoả mãn các dạng chuẩn.nhóm tạo thành quan hệ thoả mãn các dạng chuẩn.

Page 192: Cơ sở dữ liệu đại học

4.1. Đưa một bảng chưa chuẩn hoá về dạng 4.1. Đưa một bảng chưa chuẩn hoá về dạng chuẩn hoáchuẩn hoá

Tách các nhóm thuộc tính lặp thành một bảng, khoá của Tách các nhóm thuộc tính lặp thành một bảng, khoá của bảng là khoá của bảng ban đầu và thuộc tính định danh của bảng là khoá của bảng ban đầu và thuộc tính định danh của nhóm lặp.nhóm lặp.

Những thuộc tính còn lại lập thành một bảng với khoá của Những thuộc tính còn lại lập thành một bảng với khoá của bảng là khoá của bảng ban đầu.bảng là khoá của bảng ban đầu.

Quá trình tách chỉ dừng lại khi ta đã nhận được các bảng Quá trình tách chỉ dừng lại khi ta đã nhận được các bảng đã chuẩn hoá ( không còn thuộc tính lặp)đã chuẩn hoá ( không còn thuộc tính lặp)

VD : Quan hệ đơn hàng:VD : Quan hệ đơn hàng:

DONHANG ( SoĐ,DONHANG ( SoĐ,MaHMaH , , TenHTenH, , SLSL, MAK, TenK,Tel), MAK, TenK,Tel)

DONHANG1 (SoĐ, MaH, TenH, SL)DONHANG1 (SoĐ, MaH, TenH, SL)

DONHANG2 (SoĐ, MaK, TenK, Tel)DONHANG2 (SoĐ, MaK, TenK, Tel)

Page 193: Cơ sở dữ liệu đại học

4.2. Đưa bảng ở 1NF về 2NF4.2. Đưa bảng ở 1NF về 2NF Tách các thuộc tính phụ thuộc vào một phần của khoá Tách các thuộc tính phụ thuộc vào một phần của khoá thành một bảng, bảng này có khoá là thuộc tính gây ra sự thành một bảng, bảng này có khoá là thuộc tính gây ra sự phụ thuộc.phụ thuộc.

Các thuộc tính còn lại là một bảng với khoá của bảng Các thuộc tính còn lại là một bảng với khoá của bảng là khoá của bảng ban đầu.là khoá của bảng ban đầu.

VD : Quan hệ ;VD : Quan hệ ;

SVTHI ( MONTHI, MSSV, TEN, TUOI, DIACHI, DIEM )

ở 1NF nhưng chưa ở 2NF. Để quan hệ ở 2NF, ta tách thành 2 quan hệ :

SINHVIEN (MSSV, TEN, TUOI, DIACHI) vµ

THIXONG (MONTHI, MSSV, DIEM)

Page 194: Cơ sở dữ liệu đại học

4.3. Phép tách một lược đồ quan hệ thành 4.3. Phép tách một lược đồ quan hệ thành 3NF3NF

Phép tách một lược đồ quan hệ R với tập pth F tối Phép tách một lược đồ quan hệ R với tập pth F tối thiểu , không làm mất mát thông tin trên R, bảo toàn các pth thiểu , không làm mất mát thông tin trên R, bảo toàn các pth sao cho mỗi lược đồ con đều ở 3NF:sao cho mỗi lược đồ con đều ở 3NF:

- B1 :- B1 : Gom tất cả các thuộc tính của R không liên quan đên Gom tất cả các thuộc tính của R không liên quan đên một pth nào của F, hoặc vế trái, hoặc vế phải , cho vào một một pth nào của F, hoặc vế trái, hoặc vế phải , cho vào một lược đồ.lược đồ.

- B2 :- B2 : Nếu có một phụ thuộc hàm nào của F mà liên quan tới Nếu có một phụ thuộc hàm nào của F mà liên quan tới tất cả các thuộc tính của R thì kết quả ra chính là R.tất cả các thuộc tính của R thì kết quả ra chính là R.

- B3 :- B3 : Ngoài ra, phép tách đưa ra các lược đồ gồm các thuộc Ngoài ra, phép tách đưa ra các lược đồ gồm các thuộc tính tính XAXA cho pth cho pth X X A A; nếu ; nếu X X A1, X A1, X A2, ... , XA2, ... , X An An thì thì thay thế tập thuộc tính thay thế tập thuộc tính XA1A2...AnXA1A2...An cho XAi ( 1<= i<= n). cho XAi ( 1<= i<= n). Quá trình tiếp tục đến khi tất cả các lược đồ đều đã ở 3NFQuá trình tiếp tục đến khi tất cả các lược đồ đều đã ở 3NF

Page 195: Cơ sở dữ liệu đại học

Ví dụ : Ví dụ : Cho lược đồ quan hệ R ( CTHRSG) với tập pth tối Cho lược đồ quan hệ R ( CTHRSG) với tập pth tối thiểu : C thiểu : C T , HR T , HR C , HT C , HT R , CS R , CS G và HS G và HS R. R.

Thuật toán trên cho ta kết quả của phép tách là tập Thuật toán trên cho ta kết quả của phép tách là tập lược đồ gồm 5 lược đồ con ở 3NF là : lược đồ gồm 5 lược đồ con ở 3NF là :

R1 (CT) (ứng với pth C R1 (CT) (ứng với pth C T) T)

R2 (HRC) (ứng với pth HR R2 (HRC) (ứng với pth HR C) C)

R3 ( HTR) (ứng với pth HT R3 ( HTR) (ứng với pth HT R) R)

R4 ( CSG) (ứng với pth CS R4 ( CSG) (ứng với pth CS G) G)

R5 (HSR) (ứng với pth HS R5 (HSR) (ứng với pth HS R) R)

Page 196: Cơ sở dữ liệu đại học

4.3. Phép tách một lược đồ quan hệ thành 4.3. Phép tách một lược đồ quan hệ thành BCNFBCNF

Phép tách một lược đồ quan hệ R với tập pth F, không Phép tách một lược đồ quan hệ R với tập pth F, không làm mất mát thông tin sao cho mỗi lược đồ con đều ở BCNF.làm mất mát thông tin sao cho mỗi lược đồ con đều ở BCNF.

Phương pháp : Lặp liên tiếp. Tại mỗi bước phép tách p là bảo Phương pháp : Lặp liên tiếp. Tại mỗi bước phép tách p là bảo đảm không mất mát thông tin đối với F.đảm không mất mát thông tin đối với F.

-Bước đầu :-Bước đầu : p chỉ bao gồm R p chỉ bao gồm R

--Các bước tiếp :Các bước tiếp : Nếu S là một lược đồ thuộc p, S chưa ở Nếu S là một lược đồ thuộc p, S chưa ở BCNF, chọn BCNF, chọn X X A A là pth thoả trên S, trong đó X không chứa là pth thoả trên S, trong đó X không chứa khoá của S, Akhoá của S, A X. Thay thế S trong p bởi S1 và S2 với : X. Thay thế S trong p bởi S1 và S2 với :

S1 = XA, S2 = S - AS1 = XA, S2 = S - A

Quá trình tiếp tục cho tới khi tất cả các lược đồ đều ở Quá trình tiếp tục cho tới khi tất cả các lược đồ đều ở dạng chuẩn BCNF.dạng chuẩn BCNF.

Page 197: Cơ sở dữ liệu đại học

VD:VD: Cho lược đồ R(CTHRSG) với tập pth : Cho lược đồ R(CTHRSG) với tập pth :

C C T, HR T, HR C, HT C, HT R, CS R, CS G, HS G, HS R R

Khoá của R là HS. Khoá của R là HS.

Ta lần lượt xét các pth vi phạm điều kiện BCNF.Ta lần lượt xét các pth vi phạm điều kiện BCNF.

- Xét - Xét C C T T : vi phạm BCNF vì C không chứa khoá, dùng : vi phạm BCNF vì C không chứa khoá, dùng thuật toán trên để tách thành : R1 ( CT ) và R2( CHRSG). thuật toán trên để tách thành : R1 ( CT ) và R2( CHRSG). Sau đó cần tính F+ và chiếu xuống R1 và R2, kiểm tra ta Sau đó cần tính F+ và chiếu xuống R1 và R2, kiểm tra ta thấy R1 đã ở BCNF, R2 thì chưa. Ta tách tiếp R2. thấy R1 đã ở BCNF, R2 thì chưa. Ta tách tiếp R2.

Phép tách cuối cùng được :Phép tách cuối cùng được :

R1(CT), R2 ( CSG), R3 ( CHR), R4 ( HSR)R1(CT), R2 ( CSG), R3 ( CHR), R4 ( HSR)

Quá trình tách có thể được biểu diến qua sơ đồ : Quá trình tách có thể được biểu diến qua sơ đồ :

Page 198: Cơ sở dữ liệu đại học

R(CTHRSG)R(CTHRSG)Khoá =HSKhoá =HS

R1(CT)R1(CT)Khoá =CKhoá =C

R2(CHRSG)R2(CHRSG)Khoá =HSKhoá =HS

R21(CSG)R21(CSG)Khoá =CSKhoá =CS

R22(CHRS)R22(CHRS)Khoá =HSKhoá =HS

R221(HRC)R221(HRC)Khoá =HR,HCKhoá =HR,HC

R222(HSR)R222(HSR)Khoá =HSKhoá =HS

C C T, HR T, HR C, HT C, HT R, R, CS CS G, HS G, HS R R

HRHRC, HT C, HT R, R, CS CS G, HS G, HS RR

HRHRC, C, HC HC R, R, HS HS RR

HRHRC, HC C, HC RR HS HS RR

CS CS GG

C C T T

Page 199: Cơ sở dữ liệu đại học

BTVN:BTVN:

B1B1.. Cho lược đồ quan hệ R= <U , F> với tập thuộc tính U Cho lược đồ quan hệ R= <U , F> với tập thuộc tính U = ABCDEHG và tập phụ thuộc hàm F={DE= ABCDEHG và tập phụ thuộc hàm F={DE G, E G, E A, A, HH C, CG C, CG H, DG H, DG EA, D EA, D B} B}

a. Xác định khoá của lược đồ quan hệ trên. a. Xác định khoá của lược đồ quan hệ trên.

b. Xác định dạng chuẩn cao nhất của lược đồ quan hệ b. Xác định dạng chuẩn cao nhất của lược đồ quan hệ trên.trên.

B2B2.. Xác định dạng chuẩn cao nhất của lược đồ quan hệ Xác định dạng chuẩn cao nhất của lược đồ quan hệ với các thuộc tính ABCDEF và tập phụ thuộc hàm với các thuộc tính ABCDEF và tập phụ thuộc hàm {AB{ABC,CC,CB,ABDB,ABDE,FE,FA} A}

B3.B3. Cho W= < R,F> R = { A, B, C, D} Cho W= < R,F> R = { A, B, C, D}

F= { B F= { B D, A D, A C, C C, C ABD}. Hỏi W có là 2NF, 3NF ABD}. Hỏi W có là 2NF, 3NF không ?không ?

Page 200: Cơ sở dữ liệu đại học

B4. B4. Xác định dạng chuẩn cao nhất của lược đồ quan hệ Xác định dạng chuẩn cao nhất của lược đồ quan hệ sau: H=(U,F); U=ABCD; sau: H=(U,F); U=ABCD; F={CDF={CDB,AB,AC,BC,BACD}ACD}

B5.B5. Cho lược đồ R=(BOISQD) và Cho lược đồ R=(BOISQD) và

F={SF={SD,ID,IB, ISB, ISQ,BQ,BO}O}

a. Chứng tỏ rằng phép tách:a. Chứng tỏ rằng phép tách:

R=(SD,IB, ISQ,BO) Là phép tách không mất mát R=(SD,IB, ISQ,BO) Là phép tách không mất mát thông tin.thông tin.

b. Chứng tỏ phép tách trên là ở dạng 3NF.b. Chứng tỏ phép tách trên là ở dạng 3NF.

Page 201: Cơ sở dữ liệu đại học

BÀI 9. NGÔN NGỮ TÂN TỪBÀI 9. NGÔN NGỮ TÂN TỪ I. I. Logic toán và ứng dụng của nó vào CSDL.Logic toán và ứng dụng của nó vào CSDL.

ĐN1 : Biểu thức logic là một phát biểu mà giá ĐN1 : Biểu thức logic là một phát biểu mà giá trị của nó có thể đúng hoặc sai. Biểu thức logic trị của nó có thể đúng hoặc sai. Biểu thức logic có giá trị luôn luôn đúng ( hoặc sai ) được gọi là có giá trị luôn luôn đúng ( hoặc sai ) được gọi là hằng đúng hoặc hàng sai. hằng đúng hoặc hàng sai.

1. Một số khái niệm :1. Một số khái niệm :- Hàm: là một ánh xạ từ một miền giá trị vào tập Hàm: là một ánh xạ từ một miền giá trị vào tập

hợp gồm hai giá trị hoặc đúng hoặc sai, thường hợp gồm hai giá trị hoặc đúng hoặc sai, thường kí hiệu là f,g,h…kí hiệu là f,g,h…

- Tân từ : Là một biểu thức được xây dựng dựa Tân từ : Là một biểu thức được xây dựng dựa trên các biểu thức logic, thường kí hiệu P,Q,R…trên các biểu thức logic, thường kí hiệu P,Q,R…

- Các phép toán logic : phủ định (Các phép toán logic : phủ định (¬¬ ), kéo theo ), kéo theo (=>), nối liền ((=>), nối liền (), nối rời ( v )), nối rời ( v )

- Các lượng từ : với mọi (Các lượng từ : với mọi () và tồn tại () và tồn tại ())

Page 202: Cơ sở dữ liệu đại học

- ĐN2- ĐN2 : Tân từ một ngôi được định nghĩa : Tân từ một ngôi được định nghĩa trên 1 tập X và một biến x có giá trị chạy trên 1 tập X và một biến x có giá trị chạy trên các phần tử của X. trên các phần tử của X.

Với mỗi giá trị của x, tân từ P(x) là một Với mỗi giá trị của x, tân từ P(x) là một mệnh đề logic, tức là nó có giá trị hoặc là mệnh đề logic, tức là nó có giá trị hoặc là đúng hoặc là sai.đúng hoặc là sai.

VD: X là một tập hợp những người có tên VD: X là một tập hợp những người có tên như sau : như sau :

X={ Hoa , Lan, Tuấn, Dũng, T.Anh,…}X={ Hoa , Lan, Tuấn, Dũng, T.Anh,…}

Với tân từ NỮ (x) được xác dịnh như : “ x là Với tân từ NỮ (x) được xác dịnh như : “ x là người nữ”. Khi đó mệnh đề : người nữ”. Khi đó mệnh đề :

NỮ ( Hoa) : cho kết quả là đúng.NỮ ( Hoa) : cho kết quả là đúng.

NỮ ( Tuấn ) : Cho kết quả là sai .NỮ ( Tuấn ) : Cho kết quả là sai .

Page 203: Cơ sở dữ liệu đại học

ĐN3:ĐN3: Tân từ n ngôi được định nghĩa Tân từ n ngôi được định nghĩa trên các tập X1, X2,…Xn và n biến trên các tập X1, X2,…Xn và n biến x1, x2, …, xn lấy giá trị trên các tập x1, x2, …, xn lấy giá trị trên các tập Xi tương ứng. Với mỗi aiXi tương ứng. Với mỗi ai Xi, xi = ai , Xi, xi = ai , tân từ n ngôi là một mệnh đề.tân từ n ngôi là một mệnh đề.

Kí hiệu : P ( x1, x2, …, xn)Kí hiệu : P ( x1, x2, …, xn)

VD:VD: CHA ( x1, x2 ) : “ x1 là cha của CHA ( x1, x2 ) : “ x1 là cha của x2”x2”

Page 204: Cơ sở dữ liệu đại học

- ĐN4: Từ đựợc định nghĩa một cách truy hồi - ĐN4: Từ đựợc định nghĩa một cách truy hồi như sau :như sau :

i. Từ là một hằng hay một biếni. Từ là một hằng hay một biến

ii. f (t1,t2,…,tn) là một hàm n ngôi thì f là một từ.ii. f (t1,t2,…,tn) là một hàm n ngôi thì f là một từ.

- ĐN5: Công thức : - ĐN5: Công thức :

i. Công thức nguyên tố là một tân từ n ngôi i. Công thức nguyên tố là một tân từ n ngôi P(t1,t2,.., tn) , trong đó t1, t2,.., tn là các từ.P(t1,t2,.., tn) , trong đó t1, t2,.., tn là các từ.

ii. Nếu F1, F2, .. ,Fn là các công thức thì các biểu ii. Nếu F1, F2, .. ,Fn là các công thức thì các biểu thức sau: F1 v F2 , F1 thức sau: F1 v F2 , F1 F2 , F1 => f2, F2 , F1 => f2, ¬ ¬ F1 F1 cũng là các công thức.cũng là các công thức.

iii. Nếu F1 là công thức thì iii. Nếu F1 là công thức thì x: F1, x: F1, x: F1 cũng là x: F1 cũng là các công thức.các công thức.

iv. Nếu F1 là công thức thì ( F1) cũng là công iv. Nếu F1 là công thức thì ( F1) cũng là công thức.thức.

Page 205: Cơ sở dữ liệu đại học

- ĐN6:ĐN6:

- Một công thức được gọi là “đóng” - Một công thức được gọi là “đóng” nếu mọi biến của nó đều có kèm với nếu mọi biến của nó đều có kèm với lượng từ.lượng từ.

- Một công thức được gọi là “mở” nếu - Một công thức được gọi là “mở” nếu tồn tại một biến không có kèm với tồn tại một biến không có kèm với lượng từ. Biến này gọi là biến tự do. lượng từ. Biến này gọi là biến tự do.

Page 206: Cơ sở dữ liệu đại học

2. Diễn giải và mô hình.2. Diễn giải và mô hình.a. Diễn giải của một công thức:a. Diễn giải của một công thức:- Một diễn giải của một CT gồm 4 phần : Một diễn giải của một CT gồm 4 phần :

* Miền giá trị của các biến công thức, * Miền giá trị của các biến công thức, KH là tập M.KH là tập M.

* Việc sử dụng công thức: hằng , hàm , * Việc sử dụng công thức: hằng , hàm , tân từ. tân từ.

* Ý nghĩa của công thức * Ý nghĩa của công thức

* Xác định một quan hệ n ngôi trên tập * Xác định một quan hệ n ngôi trên tập MMnn

Page 207: Cơ sở dữ liệu đại học

VD: Cho M = {Tùng, Minh , Hưng, Long, Đoàn, Tuấn} VD: Cho M = {Tùng, Minh , Hưng, Long, Đoàn, Tuấn} và một CT C có dạng như sau : và một CT C có dạng như sau :

x x y ( y (z (P(x,y) v P(y,z) => Q (x,z) )z (P(x,y) v P(y,z) => Q (x,z) )Tập diễn giải của công thức có thể là :Tập diễn giải của công thức có thể là :

- M : miền giá trị của các biến x, y, z- M : miền giá trị của các biến x, y, z- Các tân từ : P: CHA ; Q: ONG- Các tân từ : P: CHA ; Q: ONG- Ý nghĩa : - Ý nghĩa :

* CHA (x, y): x có cha là y* CHA (x, y): x có cha là y* ONG (x, y): x có ông là y.* ONG (x, y): x có ông là y.

- Các quan hệ 2 ngôi trên M- Các quan hệ 2 ngôi trên M22 : :CHA = {(Tùng, Minh), (Long, Đoàn), (Đoàn, Tuấn),CHA = {(Tùng, Minh), (Long, Đoàn), (Đoàn, Tuấn),(Minh, Long)}(Minh, Long)}ONG = {(Tùng, Long ), (Minh, Đoàn), (Long, Tuấn) }ONG = {(Tùng, Long ), (Minh, Đoàn), (Long, Tuấn) }

Page 208: Cơ sở dữ liệu đại học

II. Ứng dụng logic toán trong CSDLII. Ứng dụng logic toán trong CSDL1.1. Dẫn nhậpDẫn nhập

CSDL : mô hình hoá thông tin gồm các sự kiện đựơc CSDL : mô hình hoá thông tin gồm các sự kiện đựơc liên kết hay biểu diễn một tình trạng của thế giới liên kết hay biểu diễn một tình trạng của thế giới thực.thực.

Chú ý : Chú ý :

i. Câu hỏi đóng tương ứng với CT đóng. Câu trả lời i. Câu hỏi đóng tương ứng với CT đóng. Câu trả lời là có hiệu lực đúng hoặc sai.là có hiệu lực đúng hoặc sai.

VD: Tùng có cha là Minh? CHA ( Tùng, VD: Tùng có cha là Minh? CHA ( Tùng, Minh)?Minh)?

Con của Long là ai? Con của Long là ai? x CON (Minh, x CON (Minh, x) ?x) ?

ii. Câu hỏi mở tương ứng với một CT mở.ii. Câu hỏi mở tương ứng với một CT mở.

VD: Cha của Long là ai ? CHA(Long, x ) ?VD: Cha của Long là ai ? CHA(Long, x ) ?

Page 209: Cơ sở dữ liệu đại học

2. Ngôn ngữ tân từ có biến là bộ -n2. Ngôn ngữ tân từ có biến là bộ -nMột câu hỏi trong ngôn ngữ tân từ có biến là bộ -n Một câu hỏi trong ngôn ngữ tân từ có biến là bộ -n

thoả các quy tắc sau :thoả các quy tắc sau :a.a. Biến: là một bộ của quan hệBiến: là một bộ của quan hệb.b. Từ : là hằng, biến, hay biểu thức có dạng s[c] Từ : là hằng, biến, hay biểu thức có dạng s[c]

trong đó : s là biến, c là tập các thuộc tính ( gọi trong đó : s là biến, c là tập các thuộc tính ( gọi là từ chiếu)là từ chiếu)

c.c. Các biểu thức: Các biểu thức: - R s : với R là một quan hệ; s là biến bộ-n - R s : với R là một quan hệ; s là biến bộ-n

được gọi là từđược gọi là từ - t1 - t1 a, t1 a, t1 t2: ở đây, t1, t2 là các từ chiếu, t2: ở đây, t1, t2 là các từ chiếu, là toán tử so sánh, a là một hằng.là toán tử so sánh, a là một hằng.

ĐN7:ĐN7: Một câu hỏi trong ngôn ngữ tân từ có biến là Một câu hỏi trong ngôn ngữ tân từ có biến là bộ -n đựbộ -n đựơơc biểu diễn như sau :c biểu diễn như sau :

{ s | F }{ s | F }Trong đó s là biến bộ-n, F là một công thức chỉ có Trong đó s là biến bộ-n, F là một công thức chỉ có một biến tự do là s.một biến tự do là s.

Page 210: Cơ sở dữ liệu đại học

2. Ngôn ngữ tân từ có biến là miền giá trị2. Ngôn ngữ tân từ có biến là miền giá trị Một câu hỏi trong ngôn ngữ tân từ có biến là bộ -n Một câu hỏi trong ngôn ngữ tân từ có biến là bộ -n

thoả các quy tắc sau :thoả các quy tắc sau :a. Từ : là hằng hoặc biến.a. Từ : là hằng hoặc biến.b. Công thức nguyên tố:b. Công thức nguyên tố:

i. Q (t1, t2,..,tn) : với Q là một quan hệ; i. Q (t1, t2,..,tn) : với Q là một quan hệ; ttii là các từ là các từ

ii. t1 ii. t1 a1, t2 a1, t2 a2: ở đây, t a2: ở đây, tii là các từ , là các từ , là là phép toánphép toán

c. Trong 1 CSDL, câu hỏi bằng ngôn ngữ tân từ có c. Trong 1 CSDL, câu hỏi bằng ngôn ngữ tân từ có dạng :dạng :{ ( x1, x2,…, xk) | F ( x1, x2, …, xk) }{ ( x1, x2,…, xk) | F ( x1, x2, …, xk) }

Ở đây xi (i= 1,2,..,k) là các biến tự do của Ở đây xi (i= 1,2,..,k) là các biến tự do của F và F không có biến tự do nào khác.F và F không có biến tự do nào khác.

Câu trả lời là tập các bộ giá trị (x1, x2, .., Câu trả lời là tập các bộ giá trị (x1, x2, .., xk ) mà khi thay vào F thì F là đúng.xk ) mà khi thay vào F thì F là đúng.

Page 211: Cơ sở dữ liệu đại học

VD: Xét cơ sở dữ liệu Thực tập gồm 3 quan hệ sau đây:

SV( SV#, HT, NS, QUE, HL)DT(DT#, TDT, CN, KP)SD(SV#, DT#, NTT, KM, KQ)

Q1: Cho danh sách các sinh viên có quê Hà Nội và có điểm học lực >=8.0?

- Diễn tả bằng ngôn ngữ tân từ có biến là bộ như sau:

{ r[HT] | SV r r[QUE=‘Hà Nội’] r[HL]>=8.0}

Và bằng ngôn ngữ tân từ có biến là miền giá trị như Và bằng ngôn ngữ tân từ có biến là miền giá trị như sau: sau:

{n | {n | x x y y z ( SV (n, x, y, ‘Hà Nội’, z) z ( SV (n, x, y, ‘Hà Nội’, z) z z >=8.0)}>=8.0)}

Page 212: Cơ sở dữ liệu đại học

Q2: Cho biết tên các sinh viên nam Q2: Cho biết tên các sinh viên nam quê Hải Phòng có điểm học lực >8?quê Hải Phòng có điểm học lực >8?

- Diễn tả bằng ngôn ngữ tân từ có biến là bộ như sau:

{ r[HT] | SV r r[GT]=‘Nam’ r[QUE] = ‘Hải Phòng’ r[HL]>=8}

- Và bằng ngôn ngữ tân từ có biến là - Và bằng ngôn ngữ tân từ có biến là miền giá trị như sau: miền giá trị như sau:

{n | {n | x x t t z ( SV (n, x, y, z ( SV (n, x, y, ‘Nam’,’Hải Phòng’, z) ‘Nam’,’Hải Phòng’, z) z > 8} z > 8}

Page 213: Cơ sở dữ liệu đại học

Q3: Cho danh sách các sinh viên có Q3: Cho danh sách các sinh viên có điểm thực tập =10?điểm thực tập =10?

- Diễn tả bằng ngôn ngữ tân từ có biến là bộ như sau:

{ r[HT] | p ( SV q SD p q[SV#]=pSV[#] p[KQ]=9.0}

- Và bằng ngôn ngữ tân từ có biến là - Và bằng ngôn ngữ tân từ có biến là miền giá trị như sau: miền giá trị như sau:

{y | {y | z z t t w w a a b b c ( SV (x, y, c ( SV (x, y, z, t, w) z, t, w) SD(x, a, b, c, 10)} SD(x, a, b, c, 10)}

Page 214: Cơ sở dữ liệu đại học

BTVN:BTVN: Cho quan hệ Thực tập như trên, hãy viết Cho quan hệ Thực tập như trên, hãy viết các câu truy vấn sau bằng ngôn ngữ tân từ các câu truy vấn sau bằng ngôn ngữ tân từ có biến là bộ -n và có biến là miền giá trị ? có biến là bộ -n và có biến là miền giá trị ? 1. Cho thông tin về những sinh viên sinh trước năm 1985 có quê ở Hà Nội?2. Cho biết các địa điểm thực tập xa trường (KM >100) của đề tài số 5?3. Cho biết mã của những đề tài có kinh phí lớn hơn 1 triệu và nhỏ hơn 2 triệu?4. Cho biết mã của sinh viên dưới 20 tuổi, thực tập khá ( có điểm kết quả thực tập >=6.5)

Page 215: Cơ sở dữ liệu đại học

Bài 9. Tối ưu hoá câu hỏiBài 9. Tối ưu hoá câu hỏiNói chung, các ngôn ngữ bậc cao ( ngôn ngữ Nói chung, các ngôn ngữ bậc cao ( ngôn ngữ

con dữ liệu ) đòi hỏi thực hiện trong máy đều rất tốn con dữ liệu ) đòi hỏi thực hiện trong máy đều rất tốn kém thời gian. Do vậy, trước khi thực hiện các câu hỏi kém thời gian. Do vậy, trước khi thực hiện các câu hỏi thuộc các ngôn ngữ đó cần thiết phải biến đổi hợp lý thuộc các ngôn ngữ đó cần thiết phải biến đổi hợp lý để giảm thời gian tính toán. Việc làm đó gọi là "tối ưu để giảm thời gian tính toán. Việc làm đó gọi là "tối ưu hoá ".hoá ".

Ví dụ : Thực hiện câu truy vấn : Cho biết các Ví dụ : Thực hiện câu truy vấn : Cho biết các thông tin cá nhân và việc thực tập của những sinh viên thông tin cá nhân và việc thực tập của những sinh viên có điểm thực tập >=8. Ta nên chọn ra những sv có có điểm thực tập >=8. Ta nên chọn ra những sv có điểm thực tập >=8 trong quan hệ SD rồi mới đem kết điểm thực tập >=8 trong quan hệ SD rồi mới đem kết nối với quan hệ SV để lấy ra nhứng thông tin các nhân nối với quan hệ SV để lấy ra nhứng thông tin các nhân của họ .của họ .

Page 216: Cơ sở dữ liệu đại học

I. Các chiến lược tối ưu tổng quátI. Các chiến lược tối ưu tổng quát

1. 1. Thực hiện phép chọn sớm như có thểThực hiện phép chọn sớm như có thể

Biến đổi câu hỏi để đưa phép chọn vào thực hiện Biến đổi câu hỏi để đưa phép chọn vào thực hiện trước nhằm làm giảm bớt kích cỡ của kết quả trung gian trước nhằm làm giảm bớt kích cỡ của kết quả trung gian và do vậy chi phí phải trả giá cho việc truy nhập bộ nhớ và do vậy chi phí phải trả giá cho việc truy nhập bộ nhớ thứ cấp cũng như lưu trữ của bộ nhớ chính sẽ nhỏ đi.thứ cấp cũng như lưu trữ của bộ nhớ chính sẽ nhỏ đi.

2. Tổ hợp những phép chọn xác định với phép tích 2. 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.Đề - Các thành phép kết nối.

Nếu kết quả của tích Đề - Các R x S là đối số của phép chọn và phép chọn liên quan tới các phép so sánh giữa các thuộc tính của R và S thì thay phép tích Đề - Các bằng phép kết nối.

Page 217: Cơ sở dữ liệu đại học

3. Tổ hợp dãy các phép tính một ngôi như các phép chọn và phép chiếu.

Một dãy các phép một ngôi ( như phép chọn hoặc phép chiếu) mà kết quả của chúng phụ thuộc vào các bộ của một quan hệ độc lập thì có thể nhóm các phép đó lại.

4. Tìm các biểu thức con chung trong một biểu thức

Nếu kết quả của một biểu thức con chung ( biểu thức xuất hiện hơn một lần) là một quan hệ không lớn và nó có thể được đọc từ bộ nhớ thứ cấp với ít thời gian hơn thì nên tính toán trước biểu thức đó chỉ một lần.

Page 218: Cơ sở dữ liệu đại học

5. Xử lý các tệp trước

Đối với các tệp số, có hai vấn đề quan trọng cần được xử lý trước là sắp xếp trước các tệp và thiết lập các tệp chỉ số.

6. Đánh giá trước khi thực hiện tính toán .

Cần tính toán chi phí thực hiện các phép tính để có được trình tự thực hiện các phép tính một cách tốt nhất.

Page 219: Cơ sở dữ liệu đại học

II. Biểu thức tương đương II. Biểu thức tương đương

Hai biểu thức E1 và E2 gọi là tương đương ( viết tắt Hai biểu thức E1 và E2 gọi là tương đương ( viết tắt là ( E1 là ( E1 E 2 ) nếu chúng biểu diễn cùng một ánh xạ, nghĩa E 2 ) nếu chúng biểu diễn cùng một ánh xạ, nghĩa là nếu thay thế cùng các quan hệ cho tên các lược đồ tương là nếu thay thế cùng các quan hệ cho tên các lược đồ tương ứng ở hai biểu thức cho ra cùng một kết quả.ứng ở hai biểu thức cho ra cùng một kết quả.

III. Các quy tắc liên quan tới phép kết nối và III. Các quy tắc liên quan tới phép kết nối và phép tích Đề- Cácphép tích Đề- Các

L1. Quy tắc giao hoán của phép kết nối và phép tích L1. Quy tắc giao hoán của phép kết nối và phép tích Đề-CácĐề-Các

Nếu E1 và E2 là hai biểu thức quan hệ, F là điều 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ì : kiện trên các thuộc tính của E1 và E2 thì :

E1 E1 E2 E2 E2 E2 E1 E1

E1 * E2 E1 * E2 E2 * E1 E2 * E1

E1 x E2 E1 x E2 E2 x E1 E2 x E1

FF FF

Page 220: Cơ sở dữ liệu đại học

L2. Quy tắc kết hợp của phép kết nối và L2. Quy tắc kết hợp của phép kết nối và phép tích Đề- Cácphép tích Đề- Các

Nếu E1, E2 và E3 là các biểu thức quan hệ, F1, F2 Nếu E1, E2 và E3 là các biểu thức quan hệ, F1, F2 là điều kiện thì : là điều kiện thì :

(E1 (E1 E2 ) E2 ) E3 E3 E1 E1 (E2 (E2 E3 ) E3 )

(E1 * E2) * E3 (E1 * E2) * E3 E1 *( E2 * E3 ) E1 *( E2 * E3 )

(E1 x E2) x E3 (E1 x E2) x E3 E1 x ( E2 x E3 ) E1 x ( E2 x E3 )

F1F1 F2F2 F1F1 F2F2