You are on page 1of 53

Thông tin chung

• Giảng viên
Cơ sở dữ liệu – Nguyễn Hồng Phương
– Bộ môn Hệ thống thông tin, khoa CNTT,
phòng 325 – C1
Nguyễ
Nguyễn Hồng Phương
phuongnh-
phuongnh-fit@mail.hut.edu.vn – Email: phuongnh-fit@mail.hut.edu.vn
• Giờ tiếp sinh viên tại Bộ môn:
Bộ môn Hệ thố
thống thông tin
– Chiều thứ hai hàng tuần.
Việ
Viện Công nghệ
nghệ thông tin và
và Truyề
Truyền thông
Đại học Bách Khoa Hà Nội
– Ngoài ra, xin liên hệ trước.

1 2

Tổng quan về môn học Đánh giá môn học


• Mục tiêu:Sau khi học xong môn học
này, sinh viên ngành công nghệ • Dự lớp đầy đủ, tích cực xây dựng bài
thông tin có thể: • Kiểm tra giữa kỳ
– Chỉ ra nguyên lý của hệ cơ sở dữ liệu • Kiểm tra cuối kỳ
(CSDL).
– Thiết kế và xây dựng một hệ CSDL.
• Khối lượng:4 tc, trong 15 tuần

3 4

Tài liệu học tập Nội dung môn học


• Bài giảng trên lớp
• Sách tham khảo: • Chương 1: Đại cương về các hệ CSDL.
– Nguyễn Kim Anh, Nguyên lý của các hệ cơ sở dữ liệu,
NXB Đại học Quốc gia, Hà Nội, 2004. • Chương 2: Các mô hình dữ liệu.
– Tô Văn Nam, Giáo trình Cơ sở dữ liệu, NXB Giáo dục,
2006.
• Chương 3: Ngôn ngữ định nghĩa và
– Nguyễn Thiên Bằng, Phương Lan, Giáo trình SQL Server thao tác dữ liệu đối với mô hình quan
2000, 2004. hệ.
– Nguyễn Ngọc Minh, Hoàng Đức Hải, Trần Tiến Dũng, Tự
học Microsoft SQL Server 2000 trong 21 ngày, NXB Lao • Chương 4: Lý thuyết thiết kế CSDL
động-Xã hội, 2002.
– J.D.Ullman, A First Course in Database Systems,
quan hệ.
Prentice-Hall,1997. • Chương 5: Tối ưu hóa câu truy vấn
– J.D.Ullman, Principles of Database and Knowledge-Base
Systems,vol.1, Computer Science Press,1988. • Chương 6: An toàn và toàn vẹn dữ
– Các tài liệu khác…
5 liệu. 6

1
Danh ngôn Hồ Chí Minh

“Trời có bốn mùa: Xuân, Hạ, Thu, Đông;


Đất có bốn phương: Đông, Tây, Nam, Bắc;
Người có bốn đức: Cần, Kiệm, Liêm, Chính;
Thiếu một mùa không thể thành Trời;
Thiếu một phương không thể thành Đất;
Thiếu một đức không thể thành Người.”

7 8

2
Nội dung chương này
Chương 1 • 1.1 Các hệ thống xử lý tệp
Đại cương về các hệ cơ sở dữ liệ
liệu ) truyền thống và những hạn
chế của nó.
Nguyễ • 1.2 Các hệ CSDL: khái niệm,
Nguyễn Hồng Phương
phuongnh-
phuongnh-fit@mail.hut.edu.vn khả năng, kiến trúc, người
dùng của một hệ quản trị
Bộ môn Hệ thố
thống thông tin CSDL.
Việ
Viện Công nghệ
nghệ thông tin và
và Truyề
Truyền thông
• 1.3 Sự phân loại các hệ
Đại học Bách Khoa Hà Nội
CSDL.
1 2

1.1 Các hệ thố


thống xử lý tệp
truyề
truyền thố
thống Các hệ thố
thống xử lý tệp truyề
truyền thố
thống

• Bước khởi đầu của quá trình • Mỗi chương trình ứng dụng
tin học hóa doanh nghiệp. định nghĩa và quản lý các tệp
• Tập trung vào nhu cầu xử lý dữ liệu dữ liệu của riêng nó.
của các phòng riêng lẻ trong tổ chức
mà không xem xét tổng thể tổ chức • Trước khi xuất hiện các phần
này. mềm hệ quản trị CSDL, trong
• Viết một chương trình mới quá khứ các hệ thống trên cơ
đối với mỗi ứng dụng đơn lẻ, sở tệp đã được tạo lập để xử
không có kế hoạch, không có
lý một số lượng lớn dữ liệu.
mô hình hướng đến sự
tăng trưởng.
3 4

Hạn chế của các hệ thống Nội dung chương này


xử lý tệp truyền thống
• Dư thừa và không nhất quán dữ liệu • 1.1 Các hệ thống xử lý tệp
• Khó khăn trong truy nhập dữ liệu truyền thống và những hạn
chế của nó.
• Cô lập và hạn chế chia sẻ dữ liệu
• 1.2 Các hệ CSDL: khái niệm,
• Các vấn đề về an toàn và toàn vẹn ) khả năng, kiến trúc, người
• Các vấn đề về độ tin cậy dùng của một hệ quản trị
• Sự phụ thuộc dữ liệu của các chương CSDL.
trình ứng dụng • 1.3 Sự phân loại các hệ
CSDL.
5 6

1
1.2 Các hệ cơ sở dữ liệu Ví dụ về quản lý đào tạo

• Thông tin cần quan tâm


• CSDL (database) là gì ? – Khóa học, lớp học, sinh viên, giáo viên,
• Tại sao phải sử dụng CSDL ? môn học,…
– Thông tin về sinh viên: thông tin cá
• Tại sao phải tìm hiểu về các hệ CSDL nhân, thông tin học tập,…
(database systems) ?
– Thông tin về môn học: khối lượng, giáo
viên, lịch học,…
• Cần lưu trữ những thông tin đa dạng

Cơ sở dữ liệu
7 8

Ví dụ: khai thá


thác thông tin “Hình dung”
dung” về xây dựng một CSDL
• Sinh viên
– Các môn học của Khoa Công nghệ thông • Yêu cầu
tin ? – Lưu trữ thông tin cần thiết một cách chính xác
– Điểm thi môn “Hệ cơ sở dữ liệu” ? – Truy xuất thông tin hiệu quả
• Giáo viên • Thực hiện
– Danh sách sinh viên lớp Tin2-K49 ? – Xác định yêu cầu nghiệp vụ
– Xác định thông tin cần lưu trữ
– Thời khóa biểu của lớp Tin2-K49 ?
– Xác định cách thức lưu trữ
• Giáo vụ
• Cần công cụ trợ giúp xây dựng một CSDL
– Danh sách sinh viên K47 tốt
nghiệp loại giỏi ?...
Phần mềm quản trị CSDL
Phần mềm ứng dụng 9 10

Các khái niệm cơ bản Cơ sở dữ liệu (database)

• Là một tập hợp các dữ liệu


ứng dụng – Biểu diễn một vài khía cạnh nào đó của thế
hệ CSDL
giới thực
– Có liên hệ logic thống nhất
– Được thiết kế và bao gồm những dữ liệu phục
CSDL
vụ một mục đích nào đó.
• Là một bộ sưu tập các dữ liệu tác nghiệp
được lưu trữ lại và được các hệ ứng dụng
của một xí nghiệp cụ thể nào đó sử dụng.
Hệ QTCSDL

11 12

2
Hệ quả
quản trị
trị cơ sở dữ liệ
liệu Hệ cơ sở dữ liệu
(Database Management System-
System-DBMS)

• Là một hệ thống phần mềm cho • Là một hệ thống gồm 4 thành phần
phép – Hệ quản trị CSDL
– Định nghĩa, tạo lập: xác định kiểu, cấu – Phần cứng
trúc, ràng buộc dữ liệu, lưu trữ dữ liệu
trên các thiết bị nhớ. – CSDL và phần mềm ứng dụng
– Thao tác: truy vấn, cập nhật, kết xuất,… – Những người sử dụng
các CSDL cho các ứng dụng khác nhau • Ví dụ: Hệ quản lý đào tạo, hệ quản lý
• Ví dụ: MS SQL Server, DB2, nhân sự, hệ quản lý kinh doanh,…
MS Access, Oracle, FoxPro,…

13 14

Hệ CSDL Các tính năng của hệ quả


quản trị
trị CSDL

• Quản lý dữ liệu tồn tại lâu dài


Hệ Ứng dụng – Định nghĩa dữ liệu
CSDL – Quản lý lưu trữ
• Truy xuất dữ liệu một cách hiệu quả
Hệ Quản Trị CSDL – Biểu diễn các thao tác dữ liệu
– Xử lý câu hỏi
– Quản trị giao dịch
CSDL CSDL

15 16

Các tính năng của hệ quả


quản trị
trị CSDL Các ngôn ngữ
• Ngôn ngữ định nghĩa dữ liệu (Data
• Hỗ trợ ít nhất một mô hình dữ liệu Definition Language - DDL)
• Đảm bảo tính độc lập dữ liệu – Cấu trúc dữ liệu
– Mối liên hệ giữa các dữ liệu và quy tắc, ràng
• Hỗ trợ các ngôn ngữ cấp cao nhất buộc áp đặt lên dữ liệu
định cho phép người sử dụng định • Ngôn ngữ thao tác dữ liệu (Data
Manipulation Language - DML)
nghĩa cấu trúc của dữ liệu, truy nhập – Tìm kiếm, thêm, xóa, sửa dữ liệu trong CSDL
và thao tác dữ liệu • Ngôn ngữ điều khiển dữ liệu (Data
• Điều khiển truy nhập Control Language - DCL)
– Thay đổi cấu trúc của các bảng dữ liệu
• Phục hồi dữ liệu – Khai báo bảo mật thông tin
– Quyền hạn của người dùng trong khai thác
CSDL
17 18

3
Sự trừu tượng hóa dữ liệu Tương ứng 3 mức với ngôn ngữ
ngữ Pascal
Type khach_hang = record

Khung nhìn 1 ... Khung nhìn n


ten:string;
ngay_sinh:string;
Mức khung nhìn
dia_chi:string;
(ngoài) mô tả cách mà người sử
dụng có thể nhìn thấy dữ end;
liệu
• Mức vật lý: một bản ghi khach_hang được mô tả
Sơ đồ khái niệm như một khối nhớ, chương trình dịch che dấu các
(logic) định nghĩa cấu trúc logic
của dữ liệu, dữ liệu nào chi tiết mức này đối với người lập trình.
Mức quan niệm được lưu trữ và mối quan • Mức logic: mỗi bản ghi được mô tả bởi một định
(logic) hệ giữa các dữ liệu nghĩa kiểu, người lập trình sử dụng ngôn ngữ lập
trình làm việc tại mức trừu tượng này.
định nghĩa cấu trúc các
tệp và chỉ dẫn được sử
• Mức khung nhìn: người sử dụng máy tính thấy
Sơ đồ trong
dụng trong cơ sở dữ liệu
một tập các chương trình ứng dụng, che dấu
(vật lý) (cách lưu trữ dữ liệu những chi tiết về các kiểu dữ liệu
Mức lưu trữ như thế nào)
(trong) 19 20

Kiế
Kiến trú
trúc của một hệ quả
quản trị
trị CSDL Quản lý lưu trữ
Các thay đổi sơ đồ Các truy vấn Các thay đổi dữ liệu
• Yêu cầu
Bộ quản lý lưu trữ
– lưu trữ và truy xuất
Bộ xử lý dữ liệu trên các thiết Quản lý buffer Quản

câu hỏi Bộ quản trị bị nhớ giao
giao dịch dịch
• Thực hiện Quản lý tệp

Bộ quản lý
– Tổ chức tối ưu dữ liệu
lưu trữ trên thiết bị nhớ
– Tương tác hiệu quả
Metadata &
với bộ quản lý tệp Data dictionary Data & index
(từ điển dữ liệu) (chỉ mục)
Siêu dữ liệu
Dữ liệu (data)
(metadata) 21 22

Xử lý câu hỏi Quản trị giao dịch


• Yêu cầu Bộ xử lý câu hỏi

– Tìm kiếm dữ liệu trả Bộ biên dịch • Yêu cầu


lời cho một yêu cầu – Định nghĩa giao dịch: một tập các thao
truy vấn. Bộ tối ưu
tác được xử lý như một đơn vị không
Bộ đánh giá
• Thực hiện chia căt được.
– Biến đổi truy vấn ở – Đảm bảo tính đúng đắn và tính nhất
mức cao thành các Bộ quản lý quán của dữ liệu.
yêu cầu có thể hiểu lưu trữ
được bởi hệ CSDL. • Thực hiện
– Lựa chọn một kế – Quản lý điều khiển tương tranh.
Metadata &
hoạch tốt nhất để trả Data dictionary
Data & index – Phát hiện lỗi và phục hồi CSDL
lời truy vấn này.
23 24

4
Người dùng Người dùng
• Người phân tích hệ thống và phát triển ứng
• Người thiết kế và cài đặt hệ QTCSDL: dụng: chịu trách nhiệm xác định yêu cầu của
chịu trách nhiệm thiết kế và cài đặt các người dùng cuối, xác định các giao dịch cần thiết
module của hệ QTCSDL và các giao diện để đáp ứng các yêu cầu người dùng. Người lập
trình ứng dụng cài đặt những yêu cầu này trong
dưới hình thức các gói phần mềm
chương trình, kiểm thử, gỡ rối, lập tài liệu cho
chương trình
• Người phát triển công cụ: chịu trách
nhiệm thiết kế và cài đặt các gói phần mềm • Người thiết kế CSDL: chịu trách nhiệm xác định
hỗ trợ cho việc thiét kê, sử dụng cũng như dữ liệu lưu trữ trong CSDL và cấu trúc biểu diễn
tăng cường hiệu năng của các hệ CSDL. và lưu trữ những dữ liệu này

25 26

Người dùng Nội dung chương này

• Người sử dụng cuối: là người khai thác các hệ • 1.1 Các hệ thống xử lý tệp
CSDL truyền thống và những hạn
• Người quản trị CSDL: chịu trách nhiệm cho
chế của nó.
phép truy nhập CSDL, điều phối và kiểm tra sử
dụng CSDL, quản lý tài nguyên phần cứng và
• 1.2 Các hệ CSDL: khái niệm,
phân mềm khi cần thiết khả năng, kiến trúc, người
• Người bảo trì hệ thống: là những người quản
dùng của một hệ quản trị
trị hệ thống chịu trách nhiệm việc hoạt động và CSDL.
bảo trì môi trường (phần cứng và phần mềm)
cho hệ CSDL
) • 1.3 Sự phân loại các hệ
CSDL.
27 28

1.3 Phân loại các hệ CSDL Các hệ CSDL tập trung

• Mô hình dữ liệu • Hệ CSDL cá nhân: một người sử dụng đơn


– Mạng vs. phân cấp vs. quan hệ vs. hướng đối lẻ vừa thiết kế, tạo lập CSDL, cập nhật,
tượng vs. ... bảo trì dữ liệu, lập và hiển thị báo cáo.
đảm nhiệm vai trò: người quản trị CSDL, người
• Số người sử dụng viết chương trình ứng dụng, end-user.
– Một người dùng vs. nhiều người dùng
• Hệ CSDL trung tâm: dữ liệu được lưu trữ
• Tính phân tán của CSDL trên một máy tính trung tâm.
– Tập trung vs. Phân tán • Hệ CSDL khách-chủ:
• Tính thống nhất của dữ liệu – Các máy tính trung tâm lớn đắt so với các
– Đồng nhất vs. Không đồng nhất máy nhỏ và máy trạm.
– Các ứng dụng máy khách truy nhập dữ liệu
• ... được quản lý bởi máy chủ.
29 30

5
Các hệ
hệ CSDL tậ
tập trung (tiế
(tiếp) Các hệ CSDL phân tán
• CSDL phân tán? Là một tập các CSDL có
Hệ CSDL trung quan hệ logic với nhau nhưng được trải ra
tâm trên nhiều trạm làm việc của một mạng
máy tính.
Hệ CSDL cá nhân • Có 2 tính chất: quan hệ logic và phân tán
• Hệ QTCSDL phân tán: Là một hệ thống
phần mềm cho phép tạo lập CSDLPT và
điều khiển các truy nhập đối với CSDLPT
này.
• Chia ra 2 loại: CSDLPT thuần nhất và
không thuần nhất
Hệ CSDL khách-
chủ
31 32

Các hệ CSDLPT (tiếp) Kết luận

• CSDL cho phép lưu trữ và khai thác dữ


liệu một cách thống nhất và hiệu quả (đặc
biệt trong trường hợp khối lượng dữ liệu
lớn).
• Sự trừu tượng về dữ liệu và tính độc lập
dữ liệu cho phép phát triển ứng dụng “dễ
dàng hơn”.
• Hệ quản trị CSDL cung cấp các công cụ
hữu hiệu trợ giúp việc tạo lập CSDL và
phát triển ứng dụng

33 34

Sử dụng kiến thức môn học Các điểm cần lưu ý trong
này trong tương lai chương này
‘‘More than 80 % of real world computer applications
are associated with databases’’* • Cách tiếp cận tệp vs. cách tiếp cận
*
Korth & Silberschatz. Database System Concepts. CSDL
• CSDL vs. hệ QTCSDL vs. hệ CSDL
• Kiến trúc 3 mức của hệ CSDL
• Các chức năng chính của một hệ
Nghiên cứu
QTCSDL
Phát triển nghiên cứu và
ứng dụng phát triển • Người sử dụng trong một hệ CSDL
• Phân loại các hệ CSDL
35 36

6
Lời hay ý đẹp

Điều chúng ta biết chỉ là một giọt nước,


điều không biết mênh mông như đại dương
Einstein

37 38

7
Nội dung

• Tổng quan về mô hình dữ liệu


Các mô hình dữ liệu • Mô hình phân cấp
• Mô hình mạng
Nguyễ
Nguyễn Hồng Phương • Mô hình quan hệ
phuongnh-
phuongnh-fit@mail.hut.edu.vn
• Mô hình thực thể liên kết
Bộ môn Hệ thố
thống thông tin • Mô hình hướng đối tượng
Việ
Viện Công nghệ
nghệ thông tin và
và Truyề
Truyền thông
• Đánh giá, bài tập
Đại học Bách Khoa Hà Nội

1 2

Tổng quan về mô hình dữ liệ


liệu Tổng quan...(tiếp)
• Mô hình dữ liệu [Codd, 1980] gồm:
– Một tập hợp các cấu trúc của dữ liệu • Nhiều mô hình còn bao gồm cả một tập
– Một tập hợp các phép toán để thao tác với các các phép toán để thao tác các dữ liệu
dữ liệu • Mô hình thuộc dạng ngữ nghĩa: tập trung
– Một tập hợp các ràng buộc về dữ liệu về ngữ nghĩa của dữ liệu như mô hình
• Mô hình dữ liệu là một tập hợp các khái thực thể liên kết, sử dụng để hỗ trợ người
niệm dùng để mô tả: dùng có cái nhìn khái quát về dữ liệu
– Dữ liệu • Mô hình thuộc dạng khái niệm: tập trung
– Ngữ nghĩa của dữ liệu vào cách thức tổ chức dữ liệu tại mức khái
– Các mối quan hệ trong dữ liệu niệm như mô hình mạng, mô hình liên kết,
– Các ràng buộc dữ liệu mô hình quan hệ, độc lập với DBMS và hệ
thống phần cứng để cài đặt cơ sở dữ liệu
3 4

Vài nét về lịch sử Một vài mô hình dữ liệ


liệu
Mô hình DB2,
DB2,
ORACLE-10i,
ORACLE-10i,
quan hệ
Mô hình Mô hình
quan hệ mở rộng
SQL
SQLServer
......
Server • Mô hình phân cấp
phân cấp
System
SystemR(81),
ORACLE,
R(81),DB2,
ORACLE,SQLSQL
DB2, XML • Mô hình mạng
IMS, Server,
Server,Sybase,
Sybase,...... dbXML,natix,
• Mô hình quan hệ
IMS,
System
System2k,
2k,
dbXML,natix,
...... Tamino,...
Tamino,...
1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 • Mô hình thực thể liên kết
Mô hình O2,
O2,ORION,
ORION, • Mô hình hướng đối tượng
IRIS,
IRIS,......
Thực thể-liên kết
• Mô hình bán cấu trúc
Mô hình IRDS(87),
IRDS(87),
mạng CDD+,
Mô ...
CDD+, hình
... • Mô hình dữ liệu của XML
DMS(65),
DMS(65),
hướng đối Mô hình bán Lore
Lore(97),
(97),
CODASYL
CODASYL(71),
(71), tượng cấu trúc ......
IDMS,
IDMS,IDS
IDS 5 6

1
Mô hình dữ liệ
liệu phân cấp
Đặt vấn đề (Hierarchical data model)
model)

• Đặc điểm của các mô hình dữ liệu? • Ra đời những năm 60-65
• Biểu diễn bằng cây
• Sự khác nhau giữa các mô hình dữ
– Quan hệ cha-con
liệu? – Mỗi nút có 1 cha duy nhất
• Các mô hình dữ liệu phổ biến ngày – 1 CSDL = 1 tập các cây = 1 rừng
nay • Các khái niệm cơ bản
– Bản ghi
– Móc nối
– Các phép toán: GET, GET UNIQUE, GET NEXT,
GET NEXT WITHIN PARENT,…

7 8

Mô hình dữ liệ
liệu phân cấp – Ví dụ Mô hình dữ liệu phân cấp
• Ưu điểm
giao_vien – Dễ xây dựng và thao tác
lop
– Tương thích với các lĩnh vực tổ chức phân cấp
– Ngôn ngữ thao tác đơn giản: duyệt cây.
• Nhược điểm:
– Sự lặp lại của các kiểu bản ghi Æ dữ liệu dư
sinh_vien mon_hoc mon_hoc
thừa và không nhất quán.
• Giải pháp: bản ghi ảo
– Hạn chế trong biểu diễn ngữ nghĩa của các
diem_thi móc nối giữa các bản ghi (chỉ cho phép quan
hệ 1-n)

9 10

Mô hình dữ liệ
liệu mạng
(Network data model)
model) Mô hình dữ liệ
liệu mạng – Ví dụ
• Sự ra đời
– Sử dụng phổ biến từ những năm 60, được định nghĩa lại vào giao_vien
năm 71
• Biểu diễn bằng đồ thị có hướng giang_day
• Các khái niệm cơ bản
– Tập bản ghi (record) hoc
lop mon_hoc
• Kiểu bản ghi (record type)
• Các trường (field)
– Móc nối gom
co_diem
• Tên của móc nối
• Chủ (owner) – thành viên (member): theo hướng của móc nối
• Kiểu móc nối: 1-1, 1-n, đệ quy co
sinh_vien diem_thi
– Các phép toán
• Duyệt: FIND, FIND member, FIND owner, FIND NEXT
• Thủ tục: GET
11 12

2
Mô hình dữ liệu mạng Mô hình dữ liệu quan hệ

• Ưu điểm • Sự ra đời: vào năm 1970[Codd, 1970]


– Đơn giản • Dữ liệu được biểu diễn dưới dạng bảng
– Có thể biểu diễn các ngữ nghĩa đa dạng • Là mô hình dữ liệu khái niệm phổ biến cho
với kiểu bản ghi và kiểu móc nối đến tận thời điểm hiện tại
– Truy vấn thông qua phép duyệt đồ thị • Dựa trên lý thuyết toán học, đồng thời
(navigation) cũng gần với cấu trúc tệp và cấu trúc dữ
• Nhược điểm: liệu nên có hai loại thuật ngữ liên quan:
– Số lượng các con trỏ lớn – Thuật ngữ toán học: quan hệ, bộ, thuộc tính
– Hạn chế trong biểu diễn ngữ nghĩa của – Thuật ngữ hướng dữ liệu: bảng, bản ghi, trường
các móc nối giữa các bản ghi
13 14

MON_HOC
Ví dụ maMH tenmon soHT
Mô hình dữ liệu quan hệ
mô hình CNTT01 Nhập môn CSDL 4

dữ liệ
liệu
Ví dTruyền
CNTT02 ụ DL và mạng 4
CNTT03 Phân tích và thiết kế hệ thống 4
quan hệ HTTT01 Quản lý dự án 3 • Các khái niệm cơ bản
LOP – Thuộc tính, miền thuộc tính
malop lop khoa GVCN loptruong
– Quan hệ
IT4 Tin 4 CNTT Ng. V. Anh Trần T. Bình
IT5 Tin 5 CNTT Lê A. Văn Ng. Đ. Trung – Khóa
IT6 Tin 6 CNTT Ng. T. Thảo Trần M. Quế
IT7 Tin 7 CNTT Ng. V. Quý Ng. T. Phương
SINH_VIEN
maSV tenSV ngaysinh gt diachi malop
SV0011 Trần T. Bình 1/4/1981 0 21 T. Q. B IT4
SV0025 Ng. Đ. Trung 3/2/1980 1 56 Đ. C. V IT5
SV0067 Trần M. Quế 26/3/1982 0 45 H. B. T IT6
15 16
SV0034 Ng. T. Phương 29/2/1980 0 86 L. T. N IT7

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


• Thuộc tính (~trường): là các đặc tính của • Quan hệ (~bảng):Cho n miền giá trị D1,
một đối tượng D2 , …, Dn không nhất thiết phân biệt, r là
một quan hệ trên n miền giá trị đó nếu r
• Mỗi thuộc tính được xác định trên một miền là một tập các n-bộ (d1 , d2 , …, dn ) sao
giá trị nhất định gọi là miền thuộc tính cho di Di
• Ví dụ: • Một quan hệ có thể được biểu diễn dưới
– Sinhviên (MãSV, TênSV, Nămsinh, GiớiTính, ĐịaChỉ) dạng 1 bảng trong đó 1 dòng trong bảng
– dom(MãSV) = {char(5)} tương đương với 1 bộ , một cột trong bảng
tương đương với 1 thuộc tính của quan hệ
– dom(TênSV) = {char(30)}
– dom(Nămsinh) = {date}
• Bậc của 1 quan hệ là số các thuộc tính
trong quan hệ
– dom(GiớiTính) = {0, 1}
• Lực lượng của 1 quan hệ là số các bộ
– dom(ĐịaChỉ) = {char(50)} trong quan hệ
17 18

3
Mô hình dữ liệu quan hệ Mô hình dữ liệu quan hệ

• Định nghĩa (tiếp): Cho U = {A1, A2 • Định nghĩa Khoá của quan hệ r trên
, …, An} là một tập hữu hạn các tập thuộc tính U = {A1 , A2 , …, An}
thuộc tính trong đó dom(Ai ) = Di, r là một tập K U sao cho với bất kỳ 2
là quan hệ trên tập thuộc tính U ký bộ t1 , t2 thuộc r đều tồn tại một
hiệu là r(U) nếu: thuộc tính A thuộc K mà t1[A] ≠ t2 [A]
r ⊆ D1 × D2 × ... × Dn • Một quan hệ có thể có nhiều khoá
• U được gọi là sơ đồ quan hệ (lược • Nếu K là khoá của r thì mọi K’ sao
đồ quan hệ) cho K K’ đều là khoá của r. K’ được
gọi là siêu khoá của r
19 20

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


liệu quan hệ
Ví dụ:
• Định nghĩa: K là khoá tối • Quan hệ: SinhViên(MãSV, TênSV, NămSinh,
thiểu của r nếu K là một khoá GiớiTính, Lớp)
của r và bất kỳ tập con thực sự SV001 Nguyễn Văn An 1982 1 Tin 7
nào của K đều không phải là SV002 Nguyễn Văn An 1985 1 HTTT
khoá của r SV003 Lê Văn Cường 1981 1 HTTT
SV004 Nguyễn Thùy Linh 1981 0 BK65
• Định nghĩa: Một tập con K U
• Siêu khoá: {MãSV, HọTên};
được gọi là khoá ngoài của
• Khoá tối thiểu: {MãSV}; {HọTên, NămSinh}
quan hệ r(U) tham chiếu đến
• Khoá ngoài: TênLớp nếu coi nó là khoá chính
một quan hệ r’ nếu K là khoá của quan hệ Lớp
chính của r’ 21 22

Mô hình dữ liệu quan hệ - Mô hình thự


thực thể
thể liên kết
nhận xét (Entity-
Entity-Relationship data model)
model)
• Cho phép mô tả các dữ liệu có liên quan
trong một xí nghiệp trong thế giới thực dưới
• Ưu điểm dạng các đối tượng và các mối quan hệ của
– Dựa trên lý thuyết tập hợp chúng.
– Khả năng tối ưu hoá các xử lý phong • Được sử dụng cho bước đầu thiết kế CSDL,
phú làm nền tảng để ánh xạ sang một mô hình
khái niệm nào đó mà Hệ quản trị CSDL sẽ sử
• Nhược điểm dụng
– Hạn chế trong biểu diễn ngữ nghĩa • Trong mô hình thực thể liên kết, CSDL được
– Cấu trúc dữ liệu không linh hoạt mô hình hóa như là:
– Một tập hợp các thực thể
23
– Liên hệ giữa các thực thể này 24

4
Mô hình thự
thực thể
thể liên kết Mô hình thự
thực thể
thể liên kết...
Các khá
khái niệ
niệm cơ bản
• Thực thể, tập • Thực thể: một đối tượng trong thế
thực thể giới thực, tồn tại độc lập và phân biệt
được với các đối tượng khác
• Thuộc tính
• Tập thực thể: một tập hợp các thực
• Khoá
thể có tính chất giống nhau
• Liên kết, tập
• Ví dụ:
liên kết
– Thực thể: một sinh viên, một lớp
– Tập thực thể: toàn thể sinh viên của 1
lớp, toàn thể các lớp của 1 khoa
25 26

Mô hình thự
thực thể
thể liên kết... Mô hình thự
thực thể
thể liên kết...
Kiểu thuộc tính
• Thuộc tính là đặc tính
của một tập thực thể sinh_viên • Thuộc tính đơn giản sinh_viên
– Tập thực thể SinhViên có (thuộc tính nguyên
các thuộc tính như: TênSV,
NămSinh,…
tố)
•sv1
• Mỗi thực thể trong tập •sv2 – có kiểu dữ liệu tenSV
gioitinh

thực thể có một giá trị •sv3 nguyên tố maSV


namsinh
đặc tính nằm trong miền • Thuộc tính phức diachi
giá trị của thuộc tính
– Sinh viên 1 có: Họtên là
maSV – có kiểu phức, định
diachi so_pho quan thanh_pho
Nguyễn Hải Anh, Năm sinh
tenSV
nghĩa bởi các thuộc
gioitinh
1980 tính khác
namsinh
27 28

Mô hình thực thể liên kết... Mô hình thực thể liên kết...
Kiểu thuộc tính Khóa
• Thuộc tính đa giá maMH • Một hay một tập thuộc tính mà giá trị của
trị chúng có thể xác định duy nhất một thực
– tương ứng với mỗi
tenmon
thể trong tập thực thể
mon_hoc
thực thể, có thể soHT – Tập thực thể SinhViên có thể dùng MãSV làm
nhận nhiều giá trị khoá
giao_vien • Khoá gồm nhiều thuộc tính thì gọi là khoá
• Thuộc tính suy phức
diễn sinh_viên
• Một tập thực thể có thể có nhiều khoá
– có thể tính toán nhưng chỉ một trong số các khoá được
được từ (các) thuộc chọn làm khoá chính
nam
tính khác tenSV • Trong sơ đồ ER, thuộc tính nào được chọn
tuoi maSV làm khoá chính sẽ được gạch chân
ngaysinh 29 30
diachi

5
Mô hình thực thể liên kết... Mô hình thực thể liên kết...
Liên kết - Tập liên kết Liên kết - Tập liên kết - Ví dụ:
• Một liên kết là một mối liên hệ có nghĩa
giữa nhiều thực thể maSV maMH
– Cho một thực thể SinhViên1 và LớpA, liên kết
ThànhViên chỉ ra rằng SinhViên1 là 1 thành tenSV
tenmon
viên của LớpA ngaysinh sinh_viên diem_thi mon_hoc
• Tập liên kết là một tập hợp các liên kết soHT
nam
cùng kiểu
– Giữa tập thực thể SinhViên và Lớp có 1 tập liên diachi
ket_qua
kết ThànhViên, chỉ ra rằng mỗi sinh viên đều là
thành viên của 1 lớp nào đó
• Một liên kết có thể có thuộc tính
31 32

Mô hình thực thể liên kết... Cách lậ


lập sơ đồ
đồ thự
thực thể
thể - liên kế
kết
Ràng buộc của kết nối
1
• 1-1: Liên kết 1 thực thể lop_hoc chu_nhiem
1
giao_vien • Bước 1: Xác định các thực thể
của một tập thực thể với
nhiều nhất 1 thực thể của • Bước 2: Xác định các liên kết giữa
tập thực thể khác
• 1-n: Liên kết 1 thực thể lop_hoc
1
thanh_vien
n
sinh_vien
các thực thể
của một tập thực thể với – Bậc của liên kết
nhiều thực thể của tập thực
thể khác – Ràng buộc (1-1, 1-n, n-n, đệ quy)
• n-n: Liên kết 1 thực thể n n
sinh_viên dang_ky mon_hoc
của một tập thực thể với
nhiều thực thể của tập thực
thể khác và ngược lại
• đệ quy: Liên kết giữa các mon_hoc
thực thể cùng kiểu dieu_kien

33 34

Bài tậ
tập: Vẽ
Vẽ sơ đồ
đồ ER Ho Dem Ten
Ten _phong Ma_phong Dia_diem

• Bài toán: phân tích và thiết kế 1 CSDL gồm các SoBH HoTen Dia_chi Luong
thông tin trong 1 công ty (nhân viên, phòng ban,
dự án) Ngay_sinh 1 PHONG_BAN
Gioi_tinh
– Công ty được tổ chức bởi các phòng ban. Mỗi phòng ban
có 1 tên duy nhất, 1 số duy nhất và 1 người quản lý 1
(thời điểm bắt đầu công tác quản lý của người này cũng 1 n La_NV 1
nguoiPT NHAN_VIEN
được lưu lại trong CSDL). Mỗi phòng ban có thể có nhiều
trụ sở làm việc khác nhau n 1
Phu_trach Quan_ly
– Mỗi phòng điều phối một số dự án. Mỗi dự án có 1 tên nguoibiPT 1
và 1 mã số duy nhất, thực hiện tại một địa điểm duy n
nhất Ngay_BD
So_gio
– Các thông tin về nhân viên cần được quan tâm gồm: Dieu_phoi
tên, số bảo hiểm, địa chỉ, lương, giới tính, ngày sinh. Mỗi
nhân viên làm việc tại một phòng ban nhưng có thể co
tham gia nhiều dự án khác nhau. Những dự án này có Lam_viec
n
thể được điều phối bởi các phòng ban khác nhau. Thông n m
tin về số giờ làm việc trong từng dự án (theo tuần) cũng DU_AN
như người quản lý trực tiếp của các nhân viên cũng được CON
lưu trữ
– Thông tin về con cái của từng nhân viên: tên, giới tính,
ngày sinh 35 Ten_DA Ma_DA 36
Dia_diem
HoTen Gioi_tinh Ngay_sinh

6
Biế
Biến đổ
đổi sơ đồ
đồ thự
thực thể
thể liên kế
kết Biến đổi các tập thực thể
sang sơ đồ
đ ồ quan hệ
h ệ
• Bước 1: 1 tập thực thể Æ 1 quan hệ
• Biến đổi tập các thực thể – thuộc tính thuộc tính (trường)
• Biến đổi các liên kết – 1 thực thể 1 bộ
• Các khoá của các sơ đồ quan hệ – khoá của tập thực thể khoá của
quanhệ sinh_viên
• Các sơ đồ quan hệ với khoá chung
maSV tenSV ngaysinh nam diachi malop

SINH_VIEN

•sv1 maSV •sv1


tenSV ngaysin gt diachi lop
h
•sv2 SV001 Trần T. Bình
•sv2
1/4/81 0 21 T. Q. B IT4
SV002 Ng. Trung 3/2/80 1 56 Đ. C. V IT5
•sv3 SV006 •sv3
Trần M. Quế 26/3/82 0 45 H. B. T IT6
37 38
•sv4 SV003 Ng. Hương 29/2/80 0 86 L. T. N IT7

Biến đổi các tập thực thể Biế


Biến đổ
đổi cá
các liên kế
kết
• Bước 3: Liên kết 1-1
• Bước 2: 1 tập thực thể xác định từ
¾ Thêm 1 quan hệ mới xác định bởi các
tập thực thể khác (E) qua 1 liên kết thuộc tính nằm trong khoá của các thực
Æ 1quan hệ chứa khoá cuả E: thể có liên quan
CHU_NHIEM_LOP(malop,maGV)
LOPTRUONG(maSV)
hoặc
¾ Dùng khoá ngoài
LOP_HOC(malop,lop,khoa,maGV)
sinh_viên la_mot lop_truong
maGV
malop 1
1 ngaysinh
lop lop_hoc chu_nhiem giao_vien
trinhdo
khoa
khoa
39 40

Biến đổi các liên kết (tiếp) Biến đổi các liên kết (tiếp)
• Bước 4: Liên kết 1-n • Bước 5: Liên kết n-n
¾ Thêm 1 quan hệ mới xác định bởi các thuộc tính nằm
trong khoá của các thực thể có liên quan ¾Thêm 1 quan hệ mới xác định bởi các
SINHVIEN_LOP(malop, maSV) thuộc tính nằm trong khoá của các
hoặc thực thể có liên quan và các thuộc
¾ Dùng khoá ngoài: thêm khoá chính của quan hệ bên
1 vào quan hệ bên n làm khoá ngoài tính của liên kết
SINH_VIEN(maSV, tenSV, ngaysinh, nam, diachi, malop) maSV
DANG_KY(maSV,maMH, diem)
tenSV
diem
maSV maMH
ngaysinh
malop 1 tenSV n m
n ten
lop lop_hoc gom sinh_vien nam ngaysinh sinh_viên dang_ky mon_hoc

khoa nam
diachi soHT
41 42
diachi

7
Thuộc tính đa trị Mô hì
hình dữ
dữ liệ
liệu hướ
hướng đố
đối tượ
tượng
(Object-
(Object-oriented data model)
• Bước 6: Với mỗi thuộc tính đa trị
• Sự ra đời
¾Thêm 1 quan hệ mới xác định bởi – Khoảng đầu những năm 90
thuộc tính đa trị và khoá của tập • Biễu diễn: sơ đồ lớp
• Các khái niệm cơ bản
thực thể tương ứng – Đối tượng: một đối tượng trong thế giới thực, được xác
MH_GV(maMH,giao_vien) định bởi một định danh duy nhất
– Thuộc tính: biểu diễn một đặc tính của đối tượng,
maMH – Phương thức : thao tác được thực hiện trên đối tượng.
• Tất cả các truy nhập vào thuộc tính của đối tượng đều phải được
tenmon thực hiện thông qua các phương thức này.
mon_hoc – Lớp: một cách thức để khai báo một tập các đối tượng có
soHT chung một tập thuộc tính và phương thức

giao_vien
43 44

Mô hì
hình dữ
dữ liệ
liệu hướ
hướng đố
đối tượ
tượng Mô hì
hình dữ
dữ liệ
liệu hướ
hướng đố
đối tượ
tượng
Ví dụ: Nhậ
Nhận xé
xét:
class sinh_vien {
string maSV;
• Ưu điểm
string tenSV; – Cho phép định nghĩa kiểu đối tượng phức tạp
date ngaysinh; – Tính chất: bao đóng (encapsulation), kế thừa
boolean nam;
(heritage), đa hình (polymorphism)
string diachi;
string lop; • Nhược điểm
– Cấu trúc lưu trữ phức tạp và có thể sử dụng
string ten();
nhiều con trỏ
string ngay_sinh();
string dia_chi(); – Khả năng tối ưu hoá các xử lý bị hạn chế trong
string lop(); nhiều trường hợp
void gan_DC(string DC_moi);
void gan_lop(string lop);
} 45 46

So sá
sánh và
và đá
đánh giá
giá Phân loạ
loại cá
các mô hì
hình
Nhắc lại: Mô hình dữ liệu là một tập hợp các khái niệm dùng
để mô tả cấu trúc của một CSDL Phân cấp
Thế hệ 1
Mô hình Mô hình Mô hình Mô hình Mô hình
mạng phân cấp quan hệ TT-LK Mạng Các mô hình
HĐT
dựa trên
biểu diễn hạn chế hạn chế tương đối đa dạng đa dạng
đa dạng bản ghi
ngữ nghĩa Quan hệ
DL
s/d nhiều dữ liệu dễ dàng và khó lưu cấu trúc Thế hệ 2
lưu trữ DL
con trỏ lặp lại
hiệu quả
trữ phức tạp Thực thể-liên kết Các mô hình
khả năng đơn giản đơn giản đa dạng đa dạng
dựa trên
truy vấn ngữ nghĩa đối tượng
hiệu quả ít khả ít khả tối ưu không được không Thế hệ 3
xem xét h/q khi
của truy năng tối năng tối hoá tốt
ưu ưu
(không hiệu s/d nhiều Đối tượng - Quan hệ Hướng đối tượng
vấn quả) con trỏ

47 48

8
Các bướ
bước xây dự
dựng mộ
một hệ
hệ CSDL Bài tậ
tập
• Cho sơ đồ thực thể liên kết bên dưới, hãy biến đổi
1: PHÂN TÍCH sang mô hình quan hệ:

StudentName StudentID LecturerID


LecturerName

StudentBirth
Students Lecturers
Mô tả ứng dụng Mô hình hoá DL (vd: Sơ đồ thực thể-liên kết) LecturerPhone

StudentAddress
2: THIẾT KẾ
Belong to

3: CÀI ĐẶT ClassID


Classes Learn Time

ClassName
ClassMonitor Subjects

SubjectID
Cài đặt với 1 hệ quản trị CSDL Mô tả DL logic với 1 mô hình DL cụ thể SubjectName
(vd: ORACLE) (vd: Sơ đồ quan hệ)
49 50

Lời giả
giải Lời giả
giải (tiế
(tiếp)
• Biến đổi các tập thực thể và các quan hệ • Cải tiến thiết kế: Bảng Students và
thành các bảng: bảng Belongto có cùng khóa
Lecturers(LecturerID, LecturerName, (StudentID), ta nên kết hợp chúng
LecturerPhone)
Students(StudentID, StudentName, StudentBirth,
lại:
StudentAddress) Students’(StudentID, StudentName,
Classes(ClassID, ClassName, ClassMonitor) StudentBirth, StudentAddress, ClassID)
Subjects(SubjectID, SubjectName)
Belongto(StudentID, ClassID)
Learn(LecturerID,ClassID, SubjectID, Time)

51 52

Lời hay ý đẹp

Trong 10 lần thành công thì có tới 9 lần


thành công nhờ sự hăng hái và niềm tin
trong công việc
Teewilson

53

9
Nội dung
Ngôn ngữ định nghĩa
• Các cách tiếp cận đối với thiết kế
và thao tác dữ liệu đối ngôn ngữ của CSDL quan hệ
với mô hình quan hệ – Giới thiệu một số ngôn ngữ và phân loại
¾So sánh và đánh giá
Nguyễ
Nguyễn Hồng Phương
• Một số ngôn ngữ dữ liệu mức cao
phuongnh-
phuongnh-fit@mail.hut.edu.vn – QBE (Query By Example)
– SQL (Structured Query Language)
Bộ môn Hệ thố
thống thông tin
Việ
Viện Công nghệ
nghệ thông tin và
và Truyề
Truyền thông
• Kết luận
Đại học Bách Khoa Hà Nội 1 2

CSDL ví dụ 1 CSDL ví dụ 2
Supplier
SID SNAME SIZE CITY

Student Takes Enrol S1 Dustin 100 London SupplyProduct


Id Name Suburb SID SNO SID Course S2 Rusty 70 Paris
SID PID QUANTITY
1108 Robert Kew 1108 21 3936 101 S3 Lubber 120 London
S1 P1 500
3936 Glen Bundoora 1108 23 1108 113 S4 M&M 60 NewYork
S1 P2 400
S5 MBI 1000 NewOrlean
8507 Norman Bundoora 8507 23 8507 101 S1 P4 100
S6 Panda 150 London
8452 Mary Balwyn 8507 29 S2 P3 250
S2 P4 50
Course Subject Product S3 P1 300
PID PNAME COLOR S3 P2 350
No Name Dept No Name Dept
P1 Screw red S3 P6 200
113 BCS CSCE 21 Systems CSCE
P2 Screw green S4 P1 10
101 MCS CSCE 23 Database CSCE
P3 Nut red S5 P2 200
29 VB CSCE P4 Bolt blue
18 Algebra Maths P5 Plier green
3 4
P6 Scissors blue

Đặt vấn đề: các câu hỏi Câu hỏi (tiếp)


Student
Id Name Suburb
• Tìm tên của các sinh Student • Tìm các sinh viên 1108 Robert Kew
viên nào sống ở đăng ký khoá học 3936 Glen Bundoora
Id Name Suburb
Bundoora 1108 Robert Kew
có mã số 113 8507 Norman Bundoora
8452 Mary Balwyn
– Tìm các bộ của bảng 3936 Glen Bundoora – Tìm các giá trị SID Enrol
Student có Suburb = 8507 Norman Bundoora trong bảng Enrol có SID Course
Bundoora 8452 Mary Balwyn Course tương ứng 3936 101

– Đưa ra các giá trị của là 113 1108 113

– Đưa các bộ của 8507 101


thuộc tính Name của
các bộ này bảng Student có Course
SID trong các giá No Name Dept
trị tìm thấy ở trên 113 BCS CSCE
5 101 MCS CSCE 6

1
Phân loạ
loại cá
các ngôn ngữ
ngữ truy vấ
vấn

• Ngôn ngữ đại số


– 1 câu hỏi = 1 tập các phép toán trên các quan
hệ
– Được biểu diễn bởi một biểu thức đại số (quan
hệ) Ngôn ngữ đại số quan hệ
• Ngôn ngữ tính toán vị từ
– 1 câu hỏi = 1 mô tả của các bộ mong muốn
– Được đặc tả bởi một vị từ mà các bộ phải thoả
mãn
– Phân biệt 2 lớp:
• ngôn ngữ tính toán vị từ biến bộ
• ngôn ngữ tính toán vị từ biến miền

7 8

Phân loạ
loại cá
các phé
phép toá
toán đạ
đại số
số quan hệ
hệ
Tổng quan
• Gồm các phép toán tương ứng với các • Phép toán quan hệ
thao tác trên các quan hệ – Phép chiếu (projection)
• Mỗi phép toán – Phép chọn (selection)
– Đầu vào: một hay nhiều quan hệ – Phép kết nối (join)
– Đầu ra: một quan hệ – Phép chia (division)
• Biểu thức đại số quan hệ = chuỗi các phép • Phép toán tập hợp
toán – Phép hợp (union)
• Kết quả thực hiện một biểu thức đại số là – Phép giao (intersection)
một quan hệ – Phép trừ (difference)
• Được cài đặt trong phần lớn các hệ CSDL – Phép tích đề-các (cartesian product)
hiện nay
9 10

Phép toán tập hợp Phép hợp


• Đ/n: gồm các bộ thuộc ít nhất 1 trong 2
• Định nghĩa: Quan hệ khả hợp quan hệ đầu vào
– 2 quan hệ r và s được gọi là khả hợp • 2 quan hệ đầu vào phải là khả hợp
nếu chúng được xác định trên cùng 1 • Cú pháp: R = R1 R2
miền giá trị R1
R1 R2 R2
– r xác định trên D1x D2 x…x Dn
Subject1 Kết quả
Subject2
– s xác định trên D’1x D’2 x…x D’m Name Course
Name Course Systems BCS
– Æ Di = D’i và n=m Systems BCS Name Course Database BCS
Database BCS DataMining MCS Database MCS
Database MCS Writing BCS Algebra MCS
Algebra MCS DataMining MCS
11 Writing 12
BCS

2
Phé
Phép giao Phé
Phép trừ
trừ
• Đ/n: gồm các bộ thuộc cả hai quan • Đ/n: gồm các bộ thuộc quan hệ thứ nhất nhưng
hệ đầu vào không thuộc quan hệ thứ hai
– 2 quan hệ phải là khả hợp
• Cú pháp: R1 R2 • Cú pháp: R1 \ R2 hoặc R1 - R2
R1 R2 R1 R1 \ R2 R1
R2 R2

Subject1 Subject2 Subject1 Subject2


Name Course Name Course
Kết quả Kết quả
Name Course Name Course
Systems BCS DataMining MCS Name Course Name Course
Systems BCS DataMining MCS
Systems BCS
Database BCS Database MCS
Database MCS
Database BCS \ Database MCS Database BCS
Database MCS Systems BCS Database MCS Systems BCS Algebra MCS
Algebra MCS Writing BCS Algebra MCS Writing BCS
13 14

Phé
Phép tí
tích Đề
Đề-các Ví dụ phé
phép tí
tích Đề
Đề-các
Student Sport
• Đ/n: là kết nối giữa từng bộ của quan Id Name Suburb SportID Sport
hệ thứ nhất với mỗi bộ của quan hệ 1108 Robert Kew
X 05 Swimming

thứ hai 3936 Glen Bundoora 09 Dancing


8507 Norman Bundoora
• Cú pháp: R = R1 x R2 8452 Mary Balwyn
Student_Sport
Id Name Suburb SportID Sport
aa xx 1108 Robert Kew 05 Swimming
aa
aa yy
3936 Glen Bundoora 05 Swimming
xx bb xx
bb
cc X yy bb
cc
yy
xx
8507 Norman Bundoora 05 Swimming
dd 8452 Mary Balwyn 05 Swimming
cc yy
dd xx 1108 Robert Kew 09 Dancing
dd yy
3936 Glen Bundoora 09 Dancing
8507 Norman Bundoora 09 Dancing
15 8452 Mary Balwyn 09 Dancing 16

Phé
Phép chiế
chiếu Phé
Phép chọ
chọn
• Đ/n: Lựa chọn các bộ trong một quan hệ
thoả mãn điều kiện cho trước.
• Đ/n: Lựa chọn một số thuộc tính từ một quan hệ.
• Cú pháp: ∏ A1, A2,... ( R ) • Cú pháp: σ <condition> (R )
R1
R1
R2
R2 R2
R2
C1
C1 C2
C2 C3
C3 C4
C4 C5
C5 C2
C2 C5
C5 R3
R3 R3
R3
R4
R4
™ Ví dụ: đưa ra danh sách tên của tất cả các sinh • Ví dụ: đưa ra danh sách những sinh viên
viên sống ở Bundoora
Student σ suburb="Bundoora ( Student )
Student ∏ name (Student )
Id Name Suburb
Id Name Suburb Name Id Name Suburb
1108 Robert Kew Robert 1108 Robert Kew
3936 Glen Bundoora
3936 Glen Bundoora Glen 3936 Glen Bundoora
8507 Norman Bundoora
8507 Norman Bundoora Norman 8507 Norman Bundoora

8452 Mary Balwyn Mary 8452 Mary Balwyn


17 18

3
Phé
Phép chọ
chọn - Điề
Điều kiệ
kiện ? Ví dụ: chọ
chọn và
và chiế
chiếu
• Điều kiện chọn còn gọi là biểu thức • Đưa ra tên của các sinh viên sống ở
chọn. Bundoora
• Biểu thức chọn F: một tổ hợp logic
của các toán hạng. Mỗi toán hạng là ∏ name (σ suburb ="Bundoora Student )
một phép so sánh đơn giản giữa 2
Student
biến là hai thuộc tính hoặc giữa 1 Id Name Suburb
biến là 1 thuộc tính và 1 giá trị hằng. 1108 Robert Kew Name
3936 Glen Bundoora Glen
– Các phép so sánh trong F: , , , , , 8507 Norman Bundoora Norman
– Các phép toán logic trong F: , , 8452 Mary Balwyn

19 20

Phé
Phép kế
kết nố
nối (join) 2 quan hệ
hệ r và
và s Phép kết nối - Ví dụ:
• Khái niệm ghép bộ: u = (a1,..,an);v=(b1,..,bm) • Đưa ra danh sách các sinh viên và
(u,v) = (a1,..,an,b1,..,bm) khoá học
• Phép kết nối 2 quan hệ thực chất là phép ghép các Student >< Id = SID Enrol
cặp bộ của 2 quan hệ thỏa mãn 1 điều kiện nào đó Student Enrol
trên chúng. Id Name Suburb SID Course
• Biểu thức kết nối là phép hội của các toán hạng, 1108 Robert Kew 3936 101
Id=SID
mỗi toán hạng là 1 phép so sánh đơn giản giữa 1 3936 Glen Bundoora 1108 113
thuộc tính của quan hệ r và 1 thuộc tính của quan 8507 Norman Bundoora 8507 101
hệ s. 8452 Mary Balwyn

• Cú pháp: R1 >< < join _ condition > R 2


Kết quả SID Id Name Suburb Course

1108 1108 Robert Kew 113


a r r x a r x 3936 3936 Glen Bundoora 101
b r s y b r x 8507 8507 Norman Bundoora 101
21 22
c v t z

Phé
Phép kế
kết nố
nối bằ
bằng-
ng-kết nố
nối tự
tự nhiên
Phé
Phép kế
kết nố
nối tự
tự nhiên - Ví dụ:
• Định nghĩa: Nếu phép so sánh trong
điều kiện kết nối là phép so sánh
bằng thì kết nối gọi là kết nối bằng
• Định nghĩa: Phép kết nối bằng trên Takes Enrol
các thuộc tính cùng tên của 2 quan SID SNO SID Course SID SNO Course

hệ và sau khi kết nối 1 thuộc tính 1108 21 113


*
1108 21 3936 101

trong 1 cặp thuộc tính trùng tên đó 1108 23 1108 113 1108
8507
23
23
113
101
8507 23 8507 101
sẽ bị loại khỏi quan hệ kết quả thì 8507 29 8507 29 101
phép kết nối gọi là kết nối tự nhiên
• Cú pháp phép kết nối tự nhiên: R1 * R2
23 24

4
Ví dụ: chọn, chiếu, kết nối Phé
Phép kế
kết nố
nối ngoà
ngoài
• Đưa ra tên của các sinh viên sống ở
Bundoora và mã khoá học mà sinh viên đó • Phép kết nối ngoài trái
đăng ký:
a r r x
∏ name ,Course (σ suburb ="Bundoo ( Student >< Id = SID Enrol ))
b r s y
a r x
b r x
c v t z c v null
null
Student Id Name Suburb
1108 Robert Kew
3936 Glen Bundoora
Kết quả • Phép kết nối ngoài phải
8507 Norman Bundoora Name Course
8452 Mary Balwyn Glen 101
a r r x a r x
Enrol SID Course Norman 101
b r s y b r x
3936 101 c v t z null
null s y
1108 113 null t z
null

8507 101 25 26

Phép kết nối ngoài - Ví dụ: Phép chia


• Đưa ra danh sách các sinh viên và mã • Định nghĩa: Phép chia giữa 1 quan hệ
khoá học mà sinh viên đó đăng ký nếu có r bậc n và quan hệ s bậc m (m<n)
Student với sơ đồ quan hệ của s là tập con
Enrol
ID Name Suburb
SID Course của sơ đồ quan hệ của r là một tập
1108 Robert Kew
3936 Glen Bundoora
3936 101 các (n-m)-bộ sao cho khi ghép mọi
1108 113
8507 Norman Bundoora
8507 101
bộ thuộc s với t thì ta đều có một bộ
8452 Mary Balwyn
thuộc r
Kết quả ID Name Suburb Course • Cú pháp: R = R1 : R2
1108 Robert Kew 113
3936 Glen Bundoora 101
8507 Norman Bundoora 101
8452 Mary Balwyn null 27 28

Phé
Phép chia (tiế
(tiếp) Luyện tập
aa
aa
xx
yy
• Phép hợp (Union)
aa
bb
zz
xx
: xx
zz
aa

cc yy

• Ví dụ: Đưa ra môn học được dạy ở Ví dụ:


tất cả các khoá học
Subject Course
Kết quả
Name Course Course
Name
Systems BCS : BCS
Database
Database BCS MCS
Database MCS
Algebra MCS

29 30

5
Luyện tập Luyện tập
• Phép giao (intersection) • Phép trừ (minus)

Ví dụ: Ví dụ:

31 32

Luyệ
Luyện tậ
tập Luyện tập
• Phép tích Đề - Các (Cartesian Product)
• Phép chiếu (Projection)

Ví dụ:
Ví dụ:

33 34

Luyện tập Luyệ


Luyện tậ
tập
• Phép chọn (Selection) • Phép kết nối (join)

Ví dụ:
Ví dụ:

35 36

6
Luyện tập Luyệ
Luyện tậ
tập
• Phép chia (Division)
• Kết nối tự nhiên (natural join)

Ví dụ:

37 38

Bài tập Yêu cầu của bài tập


• Cho CSDL gồm 3 quan hệ sau: S(Các hãng cung
ứng), P (các mặt hàng), SP(các sự cung ứng).
• Biểu diễn các truy vấn sau bằng đại số
quan hệ:
– Đưa ra danh sách các mặt hàng màu đỏ
– Cho biết S# của các hãng cung ứng mặt hàng
'P1' hoặc 'P2'
– Liệt kê S# của các hãng cung ứng cả hai mặt
hàng 'P1' và 'P2'
– Đưa ra S# của các hãng cung ứng ít nhất một
mặt hàng màu đỏ
– Đưa ra S# của các hãng cung ứng tất cả các
mặt hàng.

39 40

Lời giải của bài tập Bài tập về nhà


• Cho các quan hệ sau:
Supplier SupplyProduct
sid sname size city sid pid quantity
S1 Dustin 100 London S1 P1 500
S2 Rusty 70 Paris S1 P2 400
S3 Lubber 120 London S1 P3 100
S2 P2 200
Product S3 P4 100
pid pname colour S2 P3 155
P1 Screw red
P2 Screw green
P3 Nut red
P4 Bolt blue
41 42

7
Bài tập về nhà Bài tập về nhà
• Biểu diễn các truy vấn sau bằng biểu
thức đại số quan hệ: – Đưa ra {sid} của các hãng cung ứng tất
cả các mặt hàng màu đỏ
– Đưa ra {sid,sname,size,city} của các
Supplier có trụ sở tại London – Đưa ra {sname} của các hãng cung ứng
ít nhất một mặt hàng màu đỏ hoặc màu
– Đưa ra {pname} của tất cả các mặt
xanh
hàng
– Đưa ra {sname} của các hãng cung ứng
– Đưa ra {sid} của các Supplier cung cấp
ít nhất 1 mặt hàng màu đỏ và một mặt
mặt hàng P1 hoặc P2
hàng màu xanh
– Đưa ra {sname} của các Supplier cung
– Đưa ra {sid} của các hãng không cung
cấp mặt hàng P3
ứng mặt hàng nào
– Đưa ra {sname} của các hãng cung ứng
ít nhất một mặt hàng màu đỏ 43 44

Ngôn ngữ QBE

45 46

QBE (Query
(Query--By-
By-Example)
Example) Truy vấn trên một quan hệ
• Là một ngôn ngữ truy vấn dữ liệu • P.~ Print
Student ID Name Suburb
• Các câu truy vấn được thiết lập bởi một
giao diện đồ hoạ P._x Bundoora

• Phù hợp với các câu truy vấn đơn giản,


tham chiếu đến ít bảng • Biểu thức đại số quan hệ tương đương

• Một số sản phẩm: IBM (IBM Query


Management Facility), Paradox, MS.
σ suburb="Bundoora ( Student )
Access, ...
47 48

8
Truy vấ
vấn trên mộ
một quan hệ
hệ (tiế
(tiếp) Truy vấn trên nhiều quan hệ
• Lựa chọn tất cả các cột • Đưa ra tên của các sinh viên có đăng
Student ID Name Suburb
ký ít nhất một khoá học
P. Bundoora Student ID Name Suburb Enrol SID Course

_id P._name _id


• Sắp xếp • Đưa ra tên các sinh viên không đăng
Student ID Name Suburb ký một khoá học nào
P.AO(1) P.AO(2)
Student ID Name Suburb Enrol SID Course

_id P._name _id


• AO: sắp xếp tăng dần
• DO: sắp xếp giảm dần
49 50

Các tính toán tập hợp Hộp điều kiện


• Các phép toán: AVG, COUNT, MAX, MIN,
• Được sử dụng để biểu diễn
SUM – Điều kiện trên nhiều hơn 1 thuộc tính
– Điều kiện trên các trường tính toán tập
hợp
• Ví dụ: đưa ra tên các thành phố và số
lượng sinh viên đến từ thành phố đó • Ví dụ: đưa ra danh sách các thành
phố có nhiều hơn 5 sinh viên
Student ID Name Suburb
_id G.P. P.COUNT._id Student ID ¬ Name Suburb Condition
_id G.P. COUNT._id > 5

• G. ~ Grouping

51 52

Các thao tác thay đổi dữ liệu


Tính đầy đủ của QBE
• Xóa
Student ID Name Suburb • Có thể biểu diễn cả 5 phép toán đại
D. 1108 số cơ sở ( , , ,\,x)
• Thêm
Student ID Name Suburb
I. 1179 David Evry

• Sửa
Student ID Name Suburb
1179 U.Paris
53 54

9
Định nghĩ
nghĩa dữ
dữ liệ
liệu trong QBE
Định nghĩ
nghĩa dữ
dữ liệ
liệu trong QBE (tiế
(tiếp)
• sử dụng cùng qui cách và giao diện • Các khung nhìn
đồ họa như đối với truy vấn.
I.View V I. ID Name Course

I. _id _name _course


I.Student I. ID Name Suburb
KEY I. Y N N
TYPE I. CHAR(5) CHAR(30) CHAR(30) Student ID Name Suburb Enrol SID Course

DOMAIN I. Sid SName Surb _id _name _id _course

INVERSION I. Y N N

55 56

SQL (Structured Query Language)


• 1975: SEQUEL
– System-R
• 1976: SEQUEL2

Ngôn ngữ SQL • 1978/79: SQL


– System-R
• 1986: chuẩn SQL-86
• 1989: chuẩn SQL-89
• 1992: chuẩn SQL-92
• 1996: chuẩn SQL-96

57 58

Các thà
thành phầ
phần củ
của SQL Ngôn ngữ
ngữ đị
định nghĩ
nghĩa dữ
dữ liệ
liệu
• Ngôn ngữ định nghĩa dữ liệu (Data Definition Language) • Các thông tin được định nghĩa bao gồm
– Cấu trúc các bảng CSDL – Sơ đồ quan hệ
– Các mối liên hệ của dữ liệu – Kiểu dữ liệu hay miền giá trị của mỗi thuộc tính
– Quy tắc, ràng buộc áp đặt lên dữ liệu – Các ràng buộc toàn vẹn
• Ngôn ngữ thao tác dữ liệu (Data Manipulation Language)
– Các chỉ số đối với mỗi bảng
– Thêm, xoá, sửa dữ liệu trong CSDL
– Thông tin an toàn và ủy quyền đối với mỗi
– Truy vấn dữ liệu
bảng
• Ngôn ngữ điều khiển dữ liệu (Data Control Language)
– Cấu trúc lưu trữ vật lý của mỗi bảng trên đĩa
– Khai báo bảo mật thông tin
– Quyền hạn của người dùng trong khai thác CSDL ¾ Được biểu diễn bởi các lệnh định nghĩa dữ
liệu
59 60

10
Quy ước đặt tên và
và kiể
kiểu dữ liệ
liệu Cú phá
pháp
• Quy ước đặt tên
• Tạo bảng
– 32 ký tự: chữ cái, số, dấu _ CREATE TABLE tab(
• Kiểu dữ liệu (SQL-92) col1 type1(size1)[NOT NULL], ...,
– CHAR(n) col2 type2(size2)[NOT NULL], ...,
– VARCHAR(n) .....
– Int
[CONSTRAINT <constraint name> <constraint
– Smallint type> clause]
– Numeric(p,d)
...
– Real, double
);
– float(n)
– Date • Xoá bảng
– time
DROP TABLE tab
61 62

Tạo bảng - Ví dụ: Tạo bảng - Ví dụ (tiếp)


CREATE TABLE SupplyProduct(
CREATE TABLE Supplier(
sid varchar(4) NOT NULL,
sid varchar(4) NOT NULL, pid varchar(4) NOT NULL,
sname varchar(30) NOT NULL, quantity smallint,
size smallint, primary key(sid,pid),
city varchar(20), foreign key(sid) references Supplier(sid),
CONSTRAINT KhoachinhS primary key(sid) foreign key(pid) references Product(pid),
check(quantity >0)
);
);

63 64

Kiểu ràng buộc Thê


Thêm/xoá
m/xoá/sử
/sửa cộ
cột của các bảng

• Ràng buộc toàn vẹn (RBTV) về giá • Thêm


trị miền ALTER TABLE <tên bảng>
ADD COLUMN <tên cột> <kiểu dữ liệu> [NOT NULL];
CONSTRAINT <name> • Xoá
CHECK <condition> ALTER TABLE <tên bảng>
DROP COLUMN <tên cột>;
• RBTV về khoá ngoại hay phụ thuộc
• Sửa
tồn tại ALTER TABLE <tên bảng>
CONSTRAINT <name> FOREIGN KEY (fk1,fk2,…) CHANGE COLUMN <tên cột> <kiểu dữ liệu mới>;
REFERENCES tab(k1,k2);

65 66

11
Ví dụ:
Thêm/xóa các ràng buộc
• ALTER TABLE SupplyProduct ADD • Thêm
COLUMN price real NOT NULL; ALTER TABLE <tên bảng>
• ALTER TABLE SupplyProduct DROP ADD CONSTRAINT <tên ràng buộc>
COLUMN price; <kiểu ràng buộc>
• ALTER TABLE Supplier CHANGE
COLUMN sname TO varchar(20); • Xóa
ALTER TABLE <tên bảng>
DROP CONSTRAINT <tên ràng buộc>
67 68

Truy vấn không điều kiện


Ngôn ngữ truy vấn dữ liệu
trên một bảng
• Cú pháp câu lệnh SQL: • Tìm thông tin từ các cột của bảng
¾ SELECT ColumnName, ColumnName, ...
FROM TableName;
SELECT [DISTINCT] <DS>|*|<Biểu thức>|<Hàm TV>
¾ SELECT *
FROM <DS bảng> FROM TableName;
[WHERE <Điều kiện tìm kiếm>] • Ví dụ
[GROUP BY <DS cột> [HAVING <Điều kiện>]] SELECT Name
[ORDER BY <Danh sách cột> [ASC|DESC]] FROM Student;
Student
[UNION |INTERSECT| MINUS <Câu truy vấn
khác>]
Id Name Suburb
∏ name (Student ) Name
1108 Robert Kew Robert
3936 Glen Bundoora Glen
8507 Norman Bundoora Norman
69 70
8452 Mary Balwyn Mary

Truy vấ
vấn không điề
điều kiệ
kiện trên mộ
một bả
bảng Truy vấ
vấn có
có điề
điều kiệ
kiện trên 1 bả
bảng
Một số
số ví dụ khá
khác:
• Chọn các bản ghi (dòng)
SELECT ColumnName,ColumnName, ...
• Đưa ra tên của các mặt hàng
SELECT pname FROM Product; FROM TableName
WHERE condition_expression;
• Đưa ra tên khác nhau của các mặt hàng
SELECT DISTINCT pname
FROM Product;
• Ví dụ
SELECT *
• Đưa ra toàn bộ thông tin về các hãng cung ứng
FROM Student
SELECT * FROM Supplier;
WHERE suburb=‘‘Bundoora’’ ;
• Đưa ra mã số hãng cung ứng, mã mặt hàng được Student
cung ứng và 10 lần số lượng mặt hàng đã được σ suburb="Bundoora ( Student )
Id Name Suburb
cung ứng
1108 Robert Kew Id Name Suburb
SELECT sid, pid, quantity*10
3936 Glen Bundoora 3936 Glen Bundoora
FROM SupplyProduct;
8507 Norman Bundoora 8507 Norman Bundoora
71 8452 Mary Balwyn 72

12
Truy vấ
vấn có
có điề
điều kiệ
kiện trên 1 bả
bảng Biể
Một số
số ví dụ khá
khác:
Biểu diễ
diễn điề
điều kiệ
kiện lự
lựa chọ
chọn

• Đưa ra tên của các hãng cung ứng có • Các phép toán quan hệ: =, !=, <, >, <=, >=
trụ sở tại London • Các phép toán logic: NOT, AND, OR
SELECT sname FROM Supplier • Phép toán phạm vi: BETWEEN, IN, LIKE
WHERE city = ‘London’; – Kiểu dữ liệu số
• Đưa ra mã số và tên của các hãng • attr BETWEEN val1 AND val2 ( (attr>=val1) and
(attr<=val2) )
cung ứng nằm ở London và có số • attr IN (val1, val2, ...) ( (attr=val1) or (attr=val2) or ... )
nhân viên lớn hơn 75 – Kiểu dữ liệu xâu
SELECT sid, sname FROM Supplier • LIKE: sử dụng đối sánh mẫu xâu với các ký tự % hoặc
WHERE city = ‘London’ AND size > 75; _,? (thay thế cho 1 ký tự bất kỳ), * hay % (thay thế
cho 1 xâu ký tự bất kỳ)

73 74

Biể
Biểu diễ
diễn điề
điều kiệ
kiện lự
lựa chọ
chọn - Biể
Biểu diễ
diễn điề
điều kiệ
kiện lự
lựa chọ
chọn -
Ví dụ: Ví dụ (tiế
(tiế p)
• Đưa ra thông tin của các hãng cung ứng có số • Đưa ra thông tin của hãng sản xuất
nhân viên trong khoảng từ 100 đến 150
SELECT * FROM Supplier có trụ sở đặt tại thành phố bắt đầu
WHERE size BETWEEN 100 AND 150; bằng chữ New
• Đưa ra mã số của hãng cung ứng mặt hàng P1
hoặc P2 SELECT * FROM SUPPLIER
– Cách 1: WHERE city LIKE ‘New%’;
SELECT sid FROM SupplierProduct
WHERE pid = ‘P1’ OR pid = ‘P2’;
– Cách 2:
SELECT sid FROM SupplierProduct
WHERE pid IN (‘P1’, ‘P2’);

75 76

Truy vấ
vấn có
có sử dụng phé
phép toá
toán đổ
đổi tên
Truy vấ
vấn phứ
phức tạ
tạp trên nhiề
nhiều bả
bảng
• SQL cho phép đổi tên các bảng và các cột
trong một câu truy vấn (sau mệnh đề
• Điều kiện kết nối
SELECT và FROM) sử dụng cấu trúc: SELECT T1.C1,T1.C2,T2.C1,T2.C4, ...
• <tên cũ> AS <tên mới> FROM T1, T2
– Đưa ra tên và số nhân viên của các hãng WHERE condition_expression
cung ứng ở Paris • Ví dụ: đưa ra danh sách mã sinh vien (Id),
SELECT sname AS HangOParis, size AS SoNhanVien tên sinh viên (Name), thành phố (Suburb),
FROM Supplier mã khoá học (Course) mà các sinh viên đã
WHERE city = ‘Paris’; đăng ký
SELECT SID , Stud.Name as SName, SELECT Id, Name, Suburb,Course
Sub.Name as Subject FROM Student,Enrol
FROM Student as Stud,Takes, WHERE Id=SID
Subject as Sub
WHERE (Id=SID) and (SNO = No)
77 78

13
Truy vấ
vấn phứ
phức tạ
tạp trên nhiề
nhiều bả
bảng Loạ
Loại trừ
trừ các bả
bản ghi trù
trùng nhau
Một số
số ví dụ khá
khác:
• Đưa ra tên của hãng có cung ứng mặt • Từ khoá DISTINCT
hàng P1 SELECT DISTINCT <bt1>, <bt2>, …
SELECT sname
FROM <bang1>,<bang2>, …
FROM Supplier S, SupplyProduct SP
WHERE S.sid = SP.sid AND SP.pid = ‘P1’; • Ví dụ: đưa ra danh sách tên các khoa
• Đưa ra tên và mã số của hãng cung ứng ít (dept) tương ứng với các khoá học
nhất một mặt hàng màu đỏ (Course). Mỗi giá trị chỉ hiện thị một
SELECT sname, sid lần
FROM Supplier S, SupplyProduct SP, Product P
SELECT DISTINCT Dept
WHERE S.sid = SP.sid AND P.pid = SP.pid AND
P.colour = ‘red’; FROM Course
79 80

Tìm kiếm có sắp xếp Phâ


Phân nhó
nhóm các bản ghi kế
kết quả
quả
• Phân nhóm các bản ghi kết quả theo giá trị của 1
• Sắp xếp các bản ghi kết quả theo một thứ hoặc nhiều thuộc tính
SELECT <bt1>, <bt2>, …
tự cho trước FROM <bang1>,<bang2>, …
SELECT <bt1>, <bt2>, … [WHERE <dieu kien chon>]
FROM <bang1>,<bang2>, … [GROUP BY <tt1>, <tt2>, …]
[WHERE <dieu kien chon>] • Cột được chỉ ra trong mệnh đề GroupBy được sử
ORDER BY <tt1>|<bieu thuc so 1> [ASC|DESC] dụng làm cơ sở để chia nhóm. Cột này cũng bắt
• Ví dụ: đưa ra danh sách tên các sinh viên buộc phải được chỉ ra trong mệnh đề Select
• Ví dụ đưa ra tên các sinh viên nhóm theo thành
theo thứ tự tăng dần phố của sinh viên đó
SELECT Name
SELECT SELECT Suburb,
FROM Student Count(Id)
Suburb, Name
ORDER BY Name ASC FROM FROM
Student Student
81 GROUP BY GROUP BY 82

Suburb Suburb

Điều kiệ
kiện hiể
hiển thị
thị các bản ghi kế
kết quả
quả Các phé
phép toá
toán tập hợ
hợp:
UNION, MINUS, INTERSECT

• Lựa chọn các bản ghi kết quả để hiển thị • Ví dụ: đưa ra danh sách tên các môn học không
có sinh viên nào tham dự
SELECT <bt1>, <bt2>, … SELECT DISTINCT Subject.Name
FROM <bang1>,<bang2>, … FROM Subject
MINUS
[WHERE <dieu kien chon>] SELECT DISTINCT Subject.Name
HAVING <dieu kien in ket qua> FROM Student, Takes, Subject
WHERE Student.Id = Takes.SID and Takes.SNO = Subject.No
• Ví dụ: đưa ra tên các thành phố có nhiều • Tìm sid của hãng cung ứng đồng thời 2 mặt hàng
hơn 3 sinh viên P1 và P2
SELECT Suburb, COUNT(ID) SELECT sid FROM SupplyProduct WHERE pid = ‘P1’
INTERSECT
FROM Student SELECT sid FROM SupplyProduct WHERE pid = ‘P2’
GROUP BY Suburb • Tìm mã số của hãng không cung ứng mặt hàng
HAVING COUNT(ID) > 3 nào
SELECT sid FROM Supplier
MINUS
83
SELECT sid FROM SupplyProduct 84

14
Các câu truy vấ
vấn lồng nhau Các câu truy vấ
vấn lồng nhau (tiế
(tiếp)
• Kiểm tra thành viên tập hợp với IN
• Là trường hợp các câu truy vấn (con) được viết và NOT IN:
lồng nhau
• Thường được sử dụng để – Đưa ra mã số của các hãng cung ứng
– Kiểm tra thành viên tập hợp (IN, NOT IN) đồng thời 2 mặt hàng P1 và P2:
– So sánh tập hợp (>ALL, >=ALL, <ALL,<=ALL,=ALL, NOT SELECT DISTINCT sid FROM SupplyProduct
IN,SOME, )
• vd:SELECT *
WHERE pid = ‘P1’ AND sid IN (SELECT sid FROM
FROM Supplier SupplyProduct SP2 WHERE SP2.pid = ‘P2’);
WHERE SIZE>=ALL(SELECT SIZE FROM Supplier);
– Đưa ra sid của các hãng không cung
– Kiểm tra các bảng rỗng (EXISTS hoặc NOT EXISTS) ứng mặt hàng P3:
• Các truy vấn con lồng nhau thông qua mệnh đề SELECT sid FROM SupplyProduct
WHERE WHERE sid NOT IN (SELECT sid From
SupplyProduct SP2 WHERE SP2.pid = ‘P3’);
85 86

Các câu truy vấ


vấn lồng nhau (tiế
(tiếp) Các câu truy vấ
vấn lồng nhau (tiế
(tiếp)
• So sánh tập hợp: Sử dụng các phép toán
<,>, ≥,≤,=,≠ kèm với các mệnh đề ANY và • Kiểm tra tập hợp rỗng với EXISTS và
ALL
– Đưa ra tên của các hãng có số nhân viên NOT EXISTS
đông nhất: – EXISTS(câu truy vấn con): nhận giá trị
SELECT sname FROM Supplier đúng khi câu truy vấn con cho ra kết
WHERE size ≥ ALL(SELECT size FROM Supplier) quả là một quan hệ khác rỗng
– Đưa ra sid của hãng cung ứng một mặt hàng
với số lượng bằng ít nhất 1 trong số lượng – NOT EXISTS(câu truy vấn con): nhận
các mặt hàng được cung ứng bởi S2 giá trị đúng khi câu truy vấn con cho ra
SELECT sid FROM SupplyProduct kết quả là một quan hệ rỗng
WHERE sid ≠ ‘S2’ AND quantity = ANY(SELECT
quantity FROM SupplyProduct SP2 WHERE
SP2.sid = ‘S2’);
87 88

Các câu truy vấ


vấn lồng nhau (tiế
(tiếp) Các hàm thư viện
• Hàm tính toán trên nhóm các bản ghi
• Đưa ra thông tin của các nhà cung cấp đã – MAX/MIN
cung ứng ít nhất một mặt hàng – SUM
SELECT * FROM Supplier S – AVG
WHERE EXISTS (SELECT sid FROM – COUNT
SupplyProduct SP WHERE S.sid = SP.sid); • Hàm tính toán trên bản ghi
• Đưa ra thông tin của các nhà cung cấp – Hàm toán học: ABS, SQRT, LOG, EXP, SIGN,
ROUND
không cung ứng mặt hàng nào
– Hàm xử lý xâu ký tự: LEN, LEFT, RIGHT, MID
SELECT * FROM Supplier S – Hàm xử lý thời gian: DATE, DAY, MONTH,
WHERE NOT EXISTS (SELECT * FROM YEAR, HOUR, MINUTE, SECOND
SupplyProduct SP WHERE S.sid = SP.sid); – Hàm chuyển đổi kiểu giá trị: FORMAT
89 90

15
Một số
số ví dụ với cá
các hà
hàm thư việ
viện Một số
số truy vấ
vấn phứ
phức tạ
tạp
• Đưa ra tên của hãng S1 và tổng số mặt hàng mà hãng đó cung ứng
SELECT sname, SUM(quantity)
• Có bao nhiêu mặt hàng khác nhau được cung ứng
FROM Supplier S, SupplyProduct SP
SELECT COUNT(DISTINCT pid)
FROM SupplyProduct; WHERE S.sid = SP.sid AND S.sid = ‘S1’

• Có tổng cộng bao nhiêu nhân viên làm cho các GROUP BY sname;
hãng ở Paris • Đưa ra mã số các hãng cung ứng và số lượng trung bình các mặt
SELECT SUM(size) FROM Supplier hàng được cung ứng bởi từng hãng
WHERE city = ‘Paris’;
SELECT sid, AVG(quantity) FROM SupplyProduct
• Đưa ra số lượng mặt hàng trung bình mà hãng S1
cung ứng GROUP BY sid;
SELECT AVG(quantity) • Đưa ra mã số các hãng cung ứng mà số lượng mặt hàng trung
FROM SupplyProduct
bình được cung cấp bởi hãng đó là trong khoảng từ 75 đến 100
WHERE sid = ‘S1’;
SELECT sid, AVG(quantity) FROM SupplyProduct

91 GROUP BY sid HAVING AVG(quantity) BETWEEN 75 AND 100 92

Các câu lệ
lệnh cậ
cập nhậ
nhật dữ
dữ liệ
liệu Các câu lệ
lệnh cậ
cập nhậ
nhật dữ
dữ liệ
liệu
• Thêm • Xóa dữ liệu:
¾INSERT INTO table[(col1,col2,…)]
DELETE FROM <Tên bảng>
VALUES (exp1,exp2,…)
¾INSERT INTO table[(col1,col2,…)] WHERE <Điều kiện xóa>;
SELECT col1,col2, … • Ví dụ:
FROM tab1, tab2, … DELETE FROM SupplyProduct
WHERE <dieu_kien> WHERE sid = ‘S4’;
• Ví dụ DELETE FROM Student
¾INSERT INTO Student(Id, Name, Suburb) WHERE Suburb = ‘‘Bundoora’’;

VALUES (‘‘1179’’,‘‘David’’,‘‘Evr’’)

93 94

Các câu lệ
lệnh cậ
cập nhậ
nhật dữ
dữ liệ
liệu
• Sửa đổi dữ liệu:
– UPDATE <tên bảng> SET (<Tên cột> = Giá trị mới , …)
[WHERE <Điều kiện sửa đổi>];
• Ví dụ:
– Hãng S1 chuyển tới Milan
UPDATE Supplier SET city = ‘Milan’
WHERE sid = ‘S1’;
– Tất cả các mặt hàng được cung cấp với số lượng nhỏ hơn
100 đều tăng số lượng lên 1.5 lần
UPDATE SupplyProduct SET quantity = quantity * 1.5
WHERE quantity < 100;

95 96

16
Lời hay ý đẹp

"Người kém thông minh nhưng say


sưa với công việc, tiến mạnh và xa
hơn người cực thông minh mà lãnh
đạm với công việc".
J. Deval

97

17
Nội dung

Lý thuyết thiết kế • Tổng quan về thiết kế CSDLQH


cơ sở dữ liệu quan hệ • Phụ thuộc hàm
• Phép tách các sơ đồ quan hệ (SĐQH)
• Các dạng chuẩn đối với các SĐQH
Nguyễ
Nguyễn Hồng Phương
phuongnh-
phuongnh-fit@mail.hut.edu.vn

Bộ môn Hệ thố
thống thông tin
Việ
Viện Công nghệ
nghệ thông tin và
và Truyề
Truyền thông
Đại học Bách Khoa Hà Nội
1 2

Tổng quan về
về thiế
thiết kế
kế CSDLQH Các vấ
vấn đề
đề đố
đối vớ
với CSDL VD
• Vấn đề của một sơ đồ quan hệ được thiết kế • Dư thừa dữ liệu: Hãng nào cung ứng nhiều hơn 1
mặt hàng thì thông tin của hãng đó sẽ bị lặp lại
chưa tốt: trong bảng (VD S1), mặt hàng được cung ứng bởi
Giả sử ta cần một cơ sở dữ liệu lưu trữ thông tin nhiều hãng cũng bị lặp lại (VD Screw)
về các hãng cung ứng. Sơ đồ quan hệ được thiết • Dị thường dữ liệu khi thêm: Nếu có một hãng
kế trong đó tất cả các thuộc tính cần thiết được chưa cung cấp mặt hàng nào, vậy giá trị cho thuộc
lưu trong đúng 1 quan hệ: tính product và quantity trong bộ dữ liệu mới được
Suppliers(sid, sname, city, numofemps, product, quantity) thêm vào sẽ không được xác định
• Dị thường dữ liệu khi xóa: Nếu một hãng chỉ
cung cấp 1 mặt hàng, nếu ta muốn xóa thông tin
sid sname city NOE product quantity về sự cung cấp này thì ta sẽ mất thông tin về hãng
S1 Smith London 100 Screw 50 cung cấp
• Dị thường dữ liệu khi sửa đổi: Do thông tin bị
S1 Smith London 100 Nut 100 lặp lại nên việc sửa đổi 1 bộ dữ liệu có thể dẫn đến
S2 J&J Paris 124 Screw 78 việc không nhất quán trong dữ liệu về một hãng
nếu sơ sót không sửa đổi trên toàn bộ các bộ giá trị
S3 Blake Tokyo 75 Bolt 100 3 liên quan đến hãng đó 4

Đề xuấ
xuất giả
giải phá
pháp Mục đích của chuẩ
chuẩn hoá
hoá
• Nếu sơ đồ trên được thay thế bằng • Xác định được 1 tập các lược đồ quan
2 sơ đồ quan hệ hệ cho phép tìm kiếm thông tin một
–Supp(sid, sname, city, numofemps) cách dễ dàng, đồng thời tránh được
dư thừa dữ liệu
–Supply(sid, product,quantity)
• Hướng tiếp cận: Một trong những kỹ
Thì tất cả các vấn đề nêu ở trên sẽ thuật được sử dụng là Tách các lược
được loại bỏ. Tuy nhiên khi tìm kiếm đồ quan hệ có vấn đề thành những
dữ liệu thì chúng ta phải thực hiện lược đồ quan hệ chuẩn hơn. Phụ thuộc
kết nối 2 bảng chứ không chỉ là hàm có thể được sử dụng để nhân biết
chọn và chiếu trên 1 bảng như ở các lược đồ chưa chuẩn và đề xuất
cách thiết kết trước hướng cải tiến
5 6

1
Phụ
Phụ thuộ
thuộc hà
hàm Ví dụ
• Định nghĩa: Cho R(U) là một sơ đồ • Ví dụ 1: A B C

quan hệ với U là tập thuộc tính a1


a2
b1
b2
c1
c2
{A1, A2,…,An}. X, Y là tập con của a3 b1 c1
U. Nói rằng X xác định Y hay Y là a4 b3 c2
phụ thuộc hàm vào X ( X Æ Y)
nếu với 1 quan hệ r xác định trên • A Æ B, A Æ C, B Æ C
R(U) và 2 bộ bất kỳ t1, t2 thuộc r • Ví dụ 2: trong cơ sở dữ liệu mẫu dùng trong
mà t1[X] = t2[X] thì ta có t1[Y] = chương 3, ta có bảng S, với mỗi giá trị của sid
đều tồn tại một giá trị tương ứng cho sname,
t2[Y] city và status. Do đó ta có sid Æ sname, sid Æ
city, sid Æ status
7 8

Hệ tiên đề
đề Amstrong đố
đối vớ
với phụ
phụ thuộ
thuộc hà
hàm Hệ quả
quả của hệ
hệ tiên đề
đề Amstrong
Cho • Luật hợp (union)
– R(U) là 1 sơ đồ quan hệ, U là tập các thuộc tính.
– X,Y,Z,W U
Nếu X Y, X Z thì X YZ.
(Ký hiệu: XY = X Y) • Luật tựa bắc cầu (pseudotransitivity)
• Phản xạ (reflexivity) Nếu X Y, WY Z thì XW Z.
Nếu Y X thì X Y • Luật tách (decomposition)
• Tăng trưởng (augmentation) Nếu X Y, Z Y thì X Z
Nếu X Y thì XZ YZ
• Bắc cầu (transitivity)
Nếu X Y, Y Z thì X Z
9 10

Ví dụ Bao đó
đóng củ
của mộ
một tậ
tập phụ
phụ thuộ
thuộc hà
hàm
• Ví dụ 1: • Định nghĩa: Cho F là một tập phụ thuộc
Cho tập phụ thuộc hàm {ABÆC, CÆA} hàm. Bao đóng của F ký hiệu là F+ là tập
Chứng minh: BC Æ ABC lớn nhất chứa các phụ thuộc hàm có thể
CÆA BC Æ AB được suy ra từ các phụ thuộc hàm trong F
AB Æ C AB Æ ABC • Bao đóng của một tập phụ thuộc hàm có thể
BC Æ AB, AB Æ ABC BC Æ ABC rất lớn, sẽ chi phí rất tốn kém cho việc tìm
• Ví dụ 2: kiếm bao đóng của 1 tập phụ thuộc hàm. Do
Cho lược đồ quan hệ R(ABEIJGH) và tập đó để thuận tiện cho việc kiểm tra xem một
phụ thuộc hàm F = {ABÆE, AGÆJ, BEÆI, phụ thuộc hàm có được suy diễn từ một tập
EÆG, GIÆH} phụ thuộc hàm có sẵn không, người ta có
Chứng minh: AB Æ GH thể sử dụng Bao đóng của 1 tập thuộc tính
11 12

2
Bao đó
đóng củ
của mộ
một tậ
tập cá
các thuộ
thuộc tí
tính Thuậ
Thuật toá
toán 1: Tì
Tìm bao đóđóng củ
của mộ
một tậ
tập thuộ
thuộc tí
tính
đối vớ
với tậ
tập cá
các phụ
phụ thuộ
thuộc hà
hàm đối vớ
với tậ
tập phụ
phụ thuộ
thuộc hà
hàm

• Định nghĩa: Cho một lược đồ quan hệ • Vào: Tập hữu hạn các thuộc tính U, tập các phụ
R(U), F là một tập phụ thuộc hàm trên U. thuộc hàm F trên U
X là tập con của U. Bao đóng của tập X U
thuộc tính X ký hiệu là X+ là tập tất cả • Ra: X+
các thuộc tính được xác định hàm bởi X • Thuật toán
thông qua tập F B0 X0 = X
Bi Tính Xi từ Xi-1
X+ = {A U| X A F+} Nếu Y Z F và Y Xi-1 và A Z và A Xi-1
• Ta có thể thấy là định nghĩa về bao đóng thì Xi = Xi-1 A
của một tập thuộc tính dựa trên bao ngược lại, Xi = Xi-1
đóng của tập phụ thuộc hàm. Trên thực Nếu Xi Xi-1
tế, người ta đưa ra một thuật toán để thì lặp Bi
giúp xác định bao đóng của một tập ngược lai, chuyển Bn
thuộc tính dễ dàng hơn Bn X+ = Xi
13 14

Ví dụ Bổ đề
đề
• Cho R(U) , U = {A, B, C, D, E, F} • X Y được suy diễn từ hệ tiên đề
Amstrong khi và chỉ khi Y X+
F = {ABÆC, BCÆAD, DÆE, CFÆB}
• Chứng minh:
Tính (AB)+
– Giả sử Y=A1...An, với A1,...,An là các
• Thực hiện: thuộc tính và Y X+
– Bước 0: X0 = AB – Từ định nghĩa X+ ta có X Ai. Áp dụng
– Bước 1: X1 = ABC ( do ABÆ C) tiên đề Amstrong cho mọi i, suy ra X Y
nhờ luật hợp.
– Bước 2: X2 = ABCD (do BCÆAD)
– Ngược lại, giả sử có X Y, áp dụng hệ tiên
– Bước 3: X3 = ABCDE (do DÆE) đề Amstrong cho mỗi i, ta có X Ai, Ai Y
– Bước 4: X4 = ABCDE nhờ luật tách. Từ đó suy ra Y X+
15 16

Khoá
Khoá Thuậ
Thuật toá
toán 2: Tì
Tìm khoá
khoá tối thiể
thiểu
• Định nghĩa: Cho lược đồ quan hệ R(U), F là • Vào: U = {A1, A2, …, An} , F
một tập các phụ thuộc hàm xác định trên U. K • Ra: khoá tối thiểu K xác định được
là một tập con của U, K được gọi là khoá tối trên U và F
thiểu của R nếu như
– KÆU là một phụ thuộc hàm trong F+ • Thuật toán
– Với mọi tập con thực sự K’ của K thì K’ÆU không B0 K0= U
thuộc F+ Bi Nếu (Ki-1\{Ai})ÆU
• Với những gì ta đã đề cập trong phần bao thì Ki= Ki-1\ {Ai}
đóng ở trên, ta có thể nói, để thỏa mãn là
một khoá tối thiểu thì K+ = U và K là tập ngược lại, Ki= Ki-1
thuộc tính nhỏ nhất có tính chất như vậy B n+1 K=K n

17 18

3
Ví dụ Nhậ
Nhận xé
xét về
về phụ
phụ thuộ
thuộc hàm
• Cho U = {A, B, C, D, E}
• F = {ABÆC, ACÆB, BCÆDE}. TÌm một khoá tối thiểu của một • Từ một tập các phụ thuộc hàm có thể
quan hệ r xác định trên U và F
• Thực hiện
suy diễn ra các phụ thuộc hàm khác
• B0: K0= U = ABCDE
• B1: Kiểm tra xem có tồn tại phụ thuộc hàm (K0\{A})ÆU
• Trong một tập phụ thuộc hàm cho sẵn
(BCDEÆU) hay không. Ta cần phải sử dụng thuật toán 1 để
kiểm tra điều kiện tương đương là (BCDE)+ có bằng U không.
có thể có các phụ thuộc hàm bị coi là
(BCDE)+= BCDE , khác U. Vậy K1 = K0 = ABCDE dư thừa
• B2: Tương tự, thử loại bỏ B ra khỏi K1 ta có (ACDE)+ =
ABCDE = U. Vậy K2 = K1 \ {B} = ACDE • Æ Làm thế nào để có được một tập
• B3: K3 = ACDE
• B4: K4 = ACE phụ thuộc hàm tốt?
• B5: K5 = AC
• Vậy AC là một khoá tối thiểu mà ta cần tìm

19 20

Tập phụ
phụ thuộ
thuộc hàm tương
ương đương
đương Ví dụ
• Định nghĩa: Tập phụ thuộc hàm F là phủ của • Cho lược đồ quan hệ R(U) với U = {A, B, C, D, E,
tập phụ thuộc hàm G hay G là phủ của F F}
hay F và G tương đương nếu F+ = G+. F = {ABÆC, DÆEF, CÆBD}
– Ký hiệu là F G G = {ACÆB, DÆEF, BÆCD}
Hỏi F và G có phải là 2 tập pth tương đương hay
• Kiểm tra tính tương đương của 2 tập phụ không?
thuộc hàm
• Thực hiện:
B.1. Với mỗi phụ thuộc hàm YZ F, Z Y+ (trên
G) thì Y Z G+ Đối với các phụ thuộc hàm trong F
– f1= ABÆC. AB+ (đối với G) = ABCDEF = U. Vậy f1 thuộc
Nếu với phụ thuộc hàm f F, f G+ thì F+ G+
G+ – f2= DÆEF thuộc G nên chắc chắn thuộc G+
B.2. Tương tự, nếu phụ thuộc hàm g G, g F+ – f3= CÆBD. C+ (đối với G) = C không chứa BD. Vậy f3
thì G+ F+ không thuộc G+
B.3. Nếu F+ G+ và G+ F+ thì F G – Kết luận F không tương đương với G
21 22

Tập phụ
phụ thuộ
thuộc hàm khô
không dư
dư thừ
thừa Phủ
Phủ tối thiể
thiểu của 1 tậ
tập phụ
phụ thuộ
thuộc hàm
• Đ/N: Tập phụ thuộc hàm F là không dư • Đ/N: Fc được gọi là phủ tối thiểu của 1
thừa nếu không XÆY F sao cho F \
{XÆY} F. tập phụ thuộc hàm F nếu thỏa mãn 3
• Thuật toán 3: Tìm phủ không dư thừa của 1 điều kiện sau:
tập phụ thuộc hàm Đk1: Với f Fc, f có dạng X Æ A,
– Vào: Tập thuộc tính U, F = {Li ÆRi: i = 1..n}
– Ra : Phủ không dư thừa F’ của F trong đó A là 1 thuộc tính
– Thuật toán Đk2: Với f = XÆY Fc, ! A X (A là 1
B0 F0= F thuộc tính):
Bi Nếu Fi-1\ {LiÆRi} Fi-1
thì Fi = Fi-1 \ {LiÆRi} (Fc \ f) U {(X \ A)ÆY} Fc
ngược lại, Fi = Fi-1 Đk3: ! XÆA Fc : Fc \ {XÆA} Fc
Bn+1 F’ = Fn
23 24

4
Thuậ
Thuật toá Tìm phủ
toán 4: Tì phủ tối thiể
thiểu
của mộ
một tậ
tập phụ
phụ thuộ
thuộc hà
hàm Ví dụ 1
• Vào: Tập thuộc tính U, F = {LiÆRi: i = 1..n} • U = {A,B,C}
• Ra: phủ tối thiểu Fc của tập phụ thuộc hàm F
• Thuật toán F = {AÆBC, BÆC, AÆB, ABÆC}. Tìm phủ
B.1. Biến đổi F về dạng F1={Li Æ Aj}
trong đó Aj là 1 thuộc tính bất kỳ thuộc U (thoả mãn đk1) tối thiểu của F?
B.2. Loại bỏ thuộc tính thừa trong vế trái của các phụ thuộc – F1 = {AÆB, AÆC, BÆC, ABÆC}
hàm
Lần lượt giản ước từng thuộc tính trong vế trái của từng – Xét các pth trong F1 mà vế trái có nhiều hơn 1
phụ thuộc hàm trong F1 thu được F1’. Nếu F1’ F1 thì
loại bỏ thuộc tính đang xét thuộc tính ABÆC. Giản ước A thì ta còn BÆC có
Khi không có sự giản ước nào xảy ra nữa ta thu được trong F1, vậy A là thuộc tính thừa. Tương tự ta
F2 thỏa mãn đk2 cũng tìm được B là thừa, vậy loại bỏ luôn ABÆC
B.3. Loại bỏ phụ thuộc hàm dư thừa
Lần lượt kiểm tra từng phụ thuộc hàm f. Nếu F2 \ f F2 khỏi F1.F2 = {AÆB, AÆC, BÆC}
thì loại bỏ f – Bỏ pth thừa: AÆC là thừa. Vậy Fc = {AÆB,
Khi không cò phụ thuộc hàm nào có thể loại bỏ thi thu đươc
F3 thoả mãn đk3 BÆC}
B.4. Fc = F3
25 26

Ví dụ 2 Ví dụ 2 (tiế
(tiếp)
• Tìm phủ tối thiểu của tập phụ thuộc hàm – Loại bỏ pth thừa trong F2: Lần lượt thử loại bỏ
1 pth ra khỏi F2, nếu tập pth thu đựoc sau khi
F = {AÆB, ABCDÆE, EFÆG, ACDFÆEG} loại bỏ vẫn tương đương với F2 thì pth vừa loại
– F1 = {AÆB, ABCDÆE, EFÆG, ACDFÆE, là thừa
ACDFÆG} AÆ B không thừa vì nếu loại pth này khỏi F2 thì
– Loại bỏ thuộc tính thừa trong 3 phụ thuộc hàm từ tập phụ thuộc hàm còn lại A+ không chứa B
ABCDÆE, ACDFÆE và ACDFÆG Tương tự , ACDÆE, EFÆ G không thừa
Xét ABCDÆE: Giả sử giản ước A , ta còn ACDFÆ E là phụ thuộc hàm thừa vì nếu loại bỏ
BCDÆE, kiểm tra BCDÆE có được suy ra từ F1 pth này, trong tập pth vẫn còn lại ACDÆE, theo
không, ta tính (BCD)+ (đối với F1). (BCD)+ = tiên đề tăng trưởng ta sẽ suy ra được ACDFÆE
BCD, không chứa E, vậy thì BCDÆE không được
suy diễn ra từ F, vậy A không phải là thuộc tính ACDFÆG là thừa vì nếu loại bỏ pth này, trong
thừa trong pth đang xét. B là thừa vì từ F1 ta có tập pth còn lại vẫn có ACDÆE và EFÆG, do đó ta
AÆB dẫn đến (ACD)+ = ABCDE có chứa E vẫn có (ACDF)+ = ACDEFG có chứa G
Làm tương tự ta thấy không có thuộc tính nào là – Vậy Fc = { AÆB, ACDÆE, EFÆG}
thừa nữa. F2 = {AÆB, ACDÆE, EFÆG, ACDFÆE,
ACDFÆG} 27 28

Phé
Phép tá
tách cá
các Sơ đồ
đồ quan hệ
hệ Phé
Phép tá
tách không mấ
mất má
mát thông tin

• Mục đích • Đ/N: Cho lược đồ quan hệ R(U) phép tách R


thành các sơ đồ con {R1, R2, …, Rk} được gọi là
– Thay thế một sơ đồ quan hệ R(A1, A2, …, phép tách không mất mát thông tin đ/v một tập
phụ thuộc hàm F nếu với mọi quan hệ r xác định
An) bằng một tập các sơ đồ con {R1, R2, trên R thỏa mãn F thì:
…, Rk} trong đó Ri R và R = R1 U R2 U … r = R1(r) >< R2(r) >< … >< Rk (r)
U Rk
• Ví dụ: Phép tách mất mát thông tin
• Yêu cầu của phép tách Supplier(sid, sname,city,NOE, pid, pname,colour,quantity)
ÆS1(sid,sname,city,NOE) và
– Bảo toàn thuộc tính, ràng buộc SP1(pid,pname,colour,quantity)

– Bảo toàn dữ liệu • Ví dụ: Phép tách không mất mát thông tin
ÆS1(sid,sname,city,NOE) và
SP2(sid,pid,pname,colour,quantity)
29 30

5
Thuậ
Thuật toá
toán 5: Kiể
Kiểm tra tí
tính không mấ
mất
Định lý tá
tách đôi mát thông tin củ
của 1 phé
phép tá
tách
• Cho lược đồ quan hệ R(U), tập pth F , phép tách R • Vào: R(A1, A2, …, An), F, phép tách {R1, R2, …, Rk}
thành R1(U1), R2(U2) là một phép tách không mất • Ra: phép tách là mất mát thông tin hay không
mát thông tin nếu 1 trong 2 phụ thuộc hàm sau là • Thuật toán
B.1. Thiết lập một bảng k hàng, n cột
thỏa mãn trên F+:
Nếu Aj là thuộc tính của Ri thì điền aj vào ô (i,j).
U1 ∩ U2Æ U1 - U2 Nếu không thì điền bij.
U1 ∩ U2Æ U2 - U1 B.i. Xét f = XÆY F
Nếu 2 hàng t1, t2 thuộc bảng : t1[X] = t2[X] thì đồng
• Hệ quả: Cho lược đồ quan hệ R(U) và phụ thuộc nhất
hàm XÆY thỏa mãn trên R(U). Phép tách R thành t1[Y] = t2[Y], ưu tiên về giá trị a
2 lược đồ con R1(U1), R2(U2) là một phép tách Lặp cho tới khi không thể thay đổi được giá trị nào trong
không mất mát thông tin với: bảng
U1 = XY B.n. Nếu bảng có 1 hàng gồm các kí hiệu a1, a2, … , an
thì phép tách là không mất mát thông tin
U2 = XZ ngược lại, phép tách không bảo toàn thông tin
Z = U \ XY
31 32

Ví dụ Ví dụ (tiế
(tiếp)
• R = ABCD được tách thành R1=AB, R2 • B.2 & 3: A B C D
=BD, R3=ABC, R4=BCD. F = {AÆC, • Từ A Æ C, ta có R1 a1 a2 a3 b41
BÆC, CDÆB, CÆD} R2 b12 a2 b32 a4

• B.1: Tạo bảng gồm 4 hàng, 4 cột R3 a1 a2 a3 b43


R4 b14 a2 a3 a4

A B C D A B C D
R1 a1 a2 b31 b41 • Từ B Æ C, ta có R1 a1 a2 a3 b41
R2 b12 a2 b32 a4 R2 b12 a2 a3 a4
R3 a1 a2 a3 b43 R3 a1 a2 a3 b43
R4 b14 a2 a3 a4 R4 b14 a2 a3 a4
33 34

Ví dụ (tiế
(tiếp) Phé
Phép tá
tách bả
bảo toà
toàn tậ
tập phụ
phụ thuộ
thuộc hà
hàm

• Từ C Æ D, ta có • Hình chiếu của tập phụ thuộc hàm


A B C D
Cho sơ đồ quan hệ R, tập phụ thuộc hàm F, phép
R1 a1 a2 a3 a4 tách {R1, R2, … , Rk} của R trên F.
R2 b12 a2 a3 a4 Hình chiếu Fi của F trên Ri là tập tất cả XÆY
F+:
R3 a1 a2 a3 a4 XY Ri
R4 b14 a2 a3 a4 • Phép tách sơ đồ quan hệ R thành {R1, R2, …
, Rk} là một phép tách bảo toàn tập phụ
• Vậy ta có 2 hàng có toàn các giá trị a. thuộc hàm F nếu
Chứng tỏ phép tách đã cho là không (F1 F2 … Fk)+ = F+
hay hợp của tất cả các phụ thuộc hàm trong các
mất mát thông tin hình chiếu của F lên các sơ đồ con sẽ suy diễn ra
các phụ thuộc hàm trong F.

35 36

6
Ví dụ Các dạ
dạng chuẩ
chuẩn đố
đối vớ
với SĐQH
• Ví dụ 1: R = {A, B, C} F = { AÆB, BÆC, CÆA} • Quay lại vấn đề thiết kế cơ sở dữ liệu quan hệ,
được tách thành R1 = AB, R2 = BC. Phép tách câu hỏi mà chúng ta đặt ra trong quá trình này là
này có phải là bảo toàn tập phụ thuộc hàm Có cần thiết phải tinh chỉnh thiết kế nữa hay
không? không, thực sự thiết kế mà chúng ta có được đã
• Ví dụ 2: R = {A, B, C} , F = {ABÆC, CÆB} là tốt hay chưa. Để giúp trả lời câu hỏi này,
người ta đưa ra các định nghĩa về các dạng
được tách thành R1 = AB, R2 = BC. Phép tách chuẩn. Có một vài dạng chuẩn đã được xem xét,
này có bảo toàn tập pth không, có mất mát khi một quan hệ thuộc vào một dạng chuẩn nào
thông tin không? đó thì ta có thể coi như là một số các vấn đề về
• Ví dụ 3: R = { A, B, C, D} , F = {AÆB, CÆD} dư thừa dữ liệu hay dị thường dữ liệu đã được
được tách thành R1 = AB, R2 = CD. Phép tách ngăn ngừa hay tối thiểu hóa
này có bảo toàn tập pth không, có mất mát • Các dạng chuẩn mà chúng ta quan tâm
thông tin không?
– Dạng chuẩn 1 (1NF)
• Vậy một phép tách có bảo toàn tập phụ thuộc – Dạng chuẩn 2 (2NF)
hàm thì không đảm bảo là nó sẽ không mất mát
thông tin và ngược lại – Dạng chuẩn 3 (3NF)
37 – Dạng chuẩn Boye-Code (BCNF) 38

Dạng chuẩ
chuẩn 1 (1NF) Dạng chuẩ
chuẩn 2 (2NF)
• Định nghĩa: Một sơ đồ quan hệ R được gọi là ở • Định nghĩa: Một sơ đồ quan hệ R được
dạng chuẩn 1 nếu tất cả các miền giá trị của các
thuộc tính trong R đều chỉ chứa giá trị nguyên tố coi là ở dạng chuẩn 2 nếu
– Giá trị nguyên tố là giá trị mà không thể chia – Sơ đồ quan hệ này ở 1NF
nhỏ ra được nữa
• Một quan hệ r xác định trên sơ đồ quan hệ ở dạng – Tất cả các thuộc tính không khoá đều phụ
chuẩn 1 thì quan hệ đấy là ở dạng chuẩn 1 thuộc hàm đầy đủ vào khoá chính
• Ví dụ: Quan hệ không ở dạng chuẩn 1 và quan hệ (Lưu ý, A là một thuộc tính khoá nếu A
sau khi chuẩn hóa về dạng chuẩn 1
thuộc một khoá tối thiểu nào đó của R.
sname city product sname city item price Ngược lại A là thuộc tính không khoá)
name price Blake London Nut 100
Blake London Nut 100
Blake London Bolt 120
Bolt 120
Smith Paris Screw 75
Smith Paris Screw 75
39 40

Phụ
Phụ thuộ
thuộc hà
hàm đầ
đầy đủ
đủ Ví dụ
• Định nghĩa: Cho lược đồ quan hệ • Sales(sid, sname, city, item, price)
R(U), F là tập phụ thuộc hàm trên R. • F = {sidÆ(sname,city),
X, Y U. Y được gọi là phụ thuộc đầy (sid,item)Æprice}
đủ vào X nếu: • Khoá chính (sid,item), ta có sname,
- XÆY thuộc F+ city không phụ thuộc hàm đầy đủ vào
- ! X’ X : X’ÆY F+ khoá chính => Quan hệ Sales không
thuộc 2NF
• Các phụ thuộc hàm không đầy đủ còn • S(sid, sname, city) và Sales (sid,
gọi là phụ thuộc bộ phận item, price) là quan hệ thuộc 2NF
41 42

7
Dạng chuẩ
chuẩn 3 (tiế
(tiếp) Phụ
Phụ thuộ
thuộc bắ
bắc cầ
cầu
• Định nghĩa: Một sơ đồ quan hệ R được • Định nghĩa: Cho lược đồ quan hệ
coi là ở dạng chuẩn 3 nếu R(U). F là tập phụ thuộc hàm trên
– Sơ đồ quan hệ này ở 2NF R(U). X,Y,Z U. Ta nói Z là phụ
– Mọi thuộc tính không khoá đều không phụ thuộc bắc cầu vào X nếu ta có XÆY
thuộc bắc cầu vào khoá chính , YÆ Z thuộc F+. Ngược lại, ta nói Z
không phụ thuộc bắc cầu vào X

43 44

Ví dụ Dạng chuẩ
chuẩn Boye-
Boye-Codd
• Ví dụ 1: Trong ví dụ tách về dạng chuẩn 2 ta • Định nghĩa: Một sơ đồ quan hệ R(U) với một
có: S (sid, sname, city) và Sales(sid, item, tập phụ thuộc hàm F được gọi là ở dạng
price). chuẩn Boye-Codd (BCNF) nếu với XÆA
Xét quan hệ S, pth sid Æ sname, city tồn tại F+ thì
trên S, sid là khoá chính, các thuộc tính – A là thuộc tính xuất hiện trong X hoặc
không khoá sname, city đều phụ thuộc trực – X chứa một khoá của quan hệ R.
tiếp vào sid. S thuộc 3NF. Tương tự ta có • Ví dụ
Sales cũng thuộc 3NF – R = {A,B,C} ; F = {ABÆC , CÆB}.
• Ví dụ 2: – R không phải ở BCNF vì CÆB, C không phải là
– ItemInfo(item, price, discount). F = {itemÆprice, khoá
priceÆdiscount}. Khoá chính là item, thuộc tính • Chú ý:
không khoá discount phụ thuộc bắc cầu vào khoá – Một quan hệ thuộc 3NF thì chưa chắc đã thuộc
chính item. Vậy quan hệ này không ở 3NF. BCNF. Nhưng một quan hệ thuộc BCNF thì thuộc
– ItemInfo(item, price) và Discount(price, 3NF
discount) thuộc 3NF. 45 46

Tách bả
bảo toà
toàn tậ
tập phụ
phụ thuộ
thuộc hà
hàm về
về
3NF Ví dụ
• Vào: R(U), F (giả thiết F là phủ tối thiểu) Cho R = {A,B,C,D,E,F,G}
• Ra: Phép tách bảo toàn tập phụ thuộc hàm về 3NF F = {AÆB, ACDÆE, EFÆG} (đã tối thiểu)
• Thuật toán
• Xác định phép tách bảo toàn tập phụ thuộc
B1. Với các Ai U, Ai F thì loại Ai khỏi R và lập 1
quan hệ mới cho các Ai
hàm về 3NF
B2. Nếu f F, f chứa tất cả các thuộc tính của R B1. Không lập được quan hệ nào mới.
(đã bỏ các Ai ở bước trên) thì kết quả là R B2. ! f F: f chứa tất cả các thuộc tính của R
B3. Ngược lại, với mỗi XÆ A F, xác định một B3. AÆB Ö R1(AB)
quan hệ Ri(XA). ACDÆE Ö R2(ACDE)
Nếu XÆAi, XÆAj thì tạo một quan hệ chung
R’(XAiAj)
EFÆG Ö R3(EFG)

47 48

8
Tách không mấ
mất má
mát thông tin và
và bảo
toà
toàn tậ
tập phụ
phụ thuộ
thuộc hà
hàm về
về 3NF Ví dụ
• Cho R(U) trong đó U = {A,B,C,D,E,F,G}. F =
• Yêu cầu: {AÆB, ACDÆE, EFÆG}
– Bảo toàn tập phụ thuộc hàm (như thuật toán • Tìm một khoá tối thiểu của R:
trên) K0 = ABCDEFG
– Đảm bảo là có một lược đồ con chứa khoá của K1 = K0 do nếu loại A thì BCDEFG Æ U không thuộc
lược đồ được tách F+
• Các bước tiến hành K2 = K1 \{B} = ACDEFG do ACDEFG Æ U thuộc F+
B1. Tìm một khoá tối thiểu của lược đồ quan hệ R đã cho K3 = K2 do nếu loại C thì ADEFG Æ U không thuộc
B2. Tách lược đồ quan hệ R theo phép tách bảo toàn tập phụ F+
thuộc hàm. K4 = K3 do nếu loại D thì ACEFG Æ U không thuộc
B3. Nếu 1 trong các sơ đồ con có chứa khoá tối thiểu thì kết F+
quả của B2 là kết quả cuối cùng K5 = K4 \{E} = ACDFG do ACDFG Æ U thuộc F+
Ngược lại, thêm vào kết quả đó một sơ đồ quan hệ được K6 = K5 do nếu loại F thì ACDG Æ U không thuộc
tạo bởi khoá tối thiểu tìm được ở 1 F+
K7 = K6 \{G} = ACDF do ACDF Æ U thuộc F+
49 50
• Vậy khoá tối thiểu cần tìm là ACDF

Tách không mấ
mất má
mát thông tin về
về
Ví dụ (tiế
(tiếp) BCNF

• Dùng kết quả của ví dụ ở phần tách bảo • Vào: Sơ đồ quan hệ R, tập phụ thuộc hàm F.
toàn tập phụ thuộc hàm ta có một phép • Ra: phép tách không mất mát thông tin bao gồm
một tập các sơ đồ con ở BCNF với các phụ thuộc
tách R thành 3 sơ đồ con R1 = AB, R2= hàm là hình chiếu của F lên sơ đồ đó.
ACDE, R3 = EFG • Cách tiến hành
• Do khoá ACDF không nằm trong bất kỳ một B1. KQ = {R},
sơ đồ con nào trong 3 sơ đồ con trên, ta lập B2.Với mỗi S KQ, S không ở BCNF, xét X A S,
với điều kiện X không chứa khoá của S và A
một sơ đồ con mới R4 = ACDF X. Thay thế S bởi S1, S2 với S1=A X , S2 = S
• Kết quả cuối cùng ta có phép tách R thành \ A.
4 sơ đồ con {R1, R2, R3, R4} là một phép B3. Lặp (B2) cho đến khi S KQ đều ở BCNF
tách không mất mát thông tin và bảo toàn KQ gồm các sơ đồ con của phép tách yêu cầu
tập phụ thuộc hàm
51 52

Kết luậ
luận
• Tầm quan trọng của thiết kế CSDL
– ảnh hưởng đến chất lượng dữ liệu lưu trữ
– Hiệu quả của việc khai thác dữ liệu
• Mục đích của thiết kế CSDL:
– Tránh dư thừa dữ liệu
– Tránh dị thường dữ liệu khi thêm/xoá/sửa đổi
– Hiệu quả trong tìm kiếm
¾ Đưa về các dạng chuẩn
– 2NF: giản ước sự dư thừa để tránh các dị thuờng
khi cập nhật
– 3NF: tránh các dị thường khi thêm/xoá
53 54

9
Lời hay ý đẹ
đẹp

"Nếu anh thấy một gia đình hạnh phúc,


anh nên tin rằng ở trong gia đình có
một người đàn bà biết quên mình."

(René Bazin)

55

10
Nội dung

• Tổng quan về xử lý truy vấn


Tối ưu hóa câu truy vấn • Tối ưu hóa các biểu thức đại số quan hệ

Nguyễ
Nguyễn Hồng Phương
phuongnh-
phuongnh-fit@mail.hut.edu.vn

Bộ môn Hệ thố
thống thông tin
Việ
Viện Công nghệ
nghệ thông tin và
và Truyề
Truyền thông
Đại học Bách Khoa Hà Nội
1 2
NHP

Tổng quan về xử lý truy vấn Tổng quan về


về xử lý truy vấ
vấn (tiếp)
• Xử lý một truy vấn bao gồm 3 – Tối ưu hóa câu truy vấn: Mục tiêu của bước
tối ưu hóa là chọn ra một kế hoạch thực hiện
bước chính: câu truy vấn có chi phí thấp nhất.
–Phân tích và Biên dịch câu truy vấn: • Để thực hiện được điều này, trước tiên ta cần biến đổi
1 biểu thức ĐSQH đầu vào thành một biểu thức ĐSQH
Trong bước này, hệ thống phải dịch câu tương đương nhưng có thể xử lý được 1 cách hiệu quả
truy vấn từ dạng ngôn ngữ bậc cao và ít tốn kém hơn. Bước con đầu tiên này được gọi là
thành một ngôn ngữ biểu diễn dữ llệu tối ưu hóa đại số.
• Tiếp theo đó, ta cần phải đặc tả các thuật toán đặc
bên trong để máy tính có thể thao tác biệt tiến hành thực thi các phép toán , chọn 1 chỉ dẫn
trên đó. Một biểu diễn bên trong thích cụ thể nào đó để sử dụng.
hợp và hỗ trợ cho bước tối ưu hóa tiếp • Các dữ liệu thống kê về CSDL sẽ giúp ta trong quá
trình xem xét và lựa chọn. Ví dụ như:
theo là biểu diễn bằng ngôn ngữ đại số
quan hệ 3 4
NHP NHP

Tổng quan về
về xử lý truy vấ
vấn (tiếp) Tổng quan về
về xử lý truy vấ
vấn (tiếp)
– Số bộ trong quan hệ – Thực hiện đánh giá truy vấn: Từ một kế
– Kích thước của một bộ hoạch thực hiện có được do Trình tối ưu hóa
– Số khối (block) chứa các bộ của quan hệ cung cấp, hệ thống sẽ tiến hành thực hiện các
– Số bộ của quan hệ mà một khối có thể chứa
thao tác trên dữ liệu trong CSDL và đưa ra câu
– Các thông tin về cơ chế truy nhập, chỉ dẫn trên
quan hệ trả lời cho truy vấn đó.
• Chi phí cho việc thực hiện một truy vấn được Truy vaá n ñaàu vaø o
Bieân dòch
truy vaán
Bieå u thöù c ÑSQH

đo bởi chi phí sử dụng tài nguyên như việc


truy cập đĩa, thời gian CPU dùng để thực Toá i öu hoù a

hiện một truy vấn. truy vaá n Thoán g keâ veà dl

• Trong chương này, chúng ta sẽ tập trung vào


việc đánh giá các biểu thức đại số quan hệ
Thöïc hieä n
Caâ u traû lô øi truy vaá n Keá hoaï ch thöï c hieä n
tìm kieá m dl

chứ không đi vào chi tiết việc tính toán chi


phí cho việc thực hiện đánh giá một truy vấn.
5 CSDL 6
NHP NHP

1
Đánh giá
giá biể
biểu thứ
thức ĐSQH Đánh giá
giá biể
biểu thứ
thức ĐSQH (tiế
(tiếp)
• Sau bước phân tích và biên dịch, ta có • Vật chất hóa: Trong cách tiếp cận này thì
ta lần lượt đánh giá các phép toán theo
một truy vấn được biểu diễn bằng một một thứ tự thích hợp. Kết quả của việc
biểu thức đại số quan hệ bao gồm đánh giá mỗi phép toán sẽ được lưu trong
nhiều phép toán và tác động lên nhiều một quan hệ trung gian tạm thời để sử
dụng làm đầu vào cho các phép toán tiếp
quan hệ khác nhau. Ta sẽ phải tiến theo.
hành đánh giá biểu thức này. Có 2 • Điểm bất lợi của cách tiếp cận này là việc
hướng tiếp cận để thực thi quá trình cần thiết phải xây dựng các quan hệ trung
gian tạm thời nhất là khi các quan hệ này
đánh giá biểu thức ĐSQH: thường phải được ghi ra đĩa (trừ khi chúng
– Vật chất hóa (Materialize) có kích thước rất nhỏ). Mà việc đọc và ghi
ra đĩa có chi phí khá lớn.
– Đường ống (Pipeline)
7 8
NHP NHP

Đánh giá
giá biể
biểu thứ
thức ĐSQH (tiế
(tiếp) Đánh giá
giá biể
biểu thứ
thức ĐSQH (tiế
(tiếp)
• Đường ống: Chúng ta có thể cải thiện hiệu quả • Ví dụ: Chúng ta có một biểu thức đại số quan hệ
đánh giá truy vấn bằng cách làm giảm bớt số gồm 2 phép toán: kết nối và chiếu.
lượng các quan hệ trung gian tạm thời được tạo • Trong cách tiếp cận vật chất hóa, xuất phát từ
ra. Điều này có thể đạt được nhờ việc kết hợp một phép toán ở mức thấp nhất là phép kết nối tự
vài phép toán quan hệ vào một đường ống của các nhiên, kết quả của phép kết nối này sẽ được lưu
phép toán. Trong đường ống thì kết quả của một trong một quan hệ trung gian. Sau đó , đọc từ
phép toán được chuyển trực tiếp cho phép toán quan hệ trung gian này để tiến hành chiếu lấy kết
tiếp theo mà không cần phải lưu lại trong quan hệ quả mong muốn.
trung gian. • Trong cách tiếp cận đường ống, khi một bộ được
• Rõ ràng, cách tiếp cận thứ hai sẽ hạn chế được sinh ra trong phép kết nối 2 quan hệ, bộ này sẽ
nhược điểm của cách tiếp cận đầu tiên, nhưng có được chuyển trực tiếp đến phép chiếu để xử lý và
những trường hợp, ta bắt buộc phải vật chất hóa kết quả được ghi vào quan hệ đầu ra. Quan hệ kết
chứ không dùng đường ống được. quả sẽ được tạo lập một cách trực tiếp.

9 10
NHP NHP

Tối ưu hó
hóa cá
các biể
biểu thứ
thức ĐSQH Các chiế
chiến lượ
lược tố
tối ưu tổ
tổng quá
quát
• Mục tiêu là tổ chức lại trình tự thực hiện các 1. Đẩy phép chọn và phép chiếu xuống thực hiện
phép toán trong biểu thức để giảm chi phí sớm nhất có thể: vì hai phép toán này giúp làm
thực hiện đánh giá biểu thức đó. giảm kích thước của quan hệ trước khi thực hiện
• Trong quá trình tối ưu hóa, ta biểu diễn một các phép toán 2 ngôi
biểu thức ĐSQH dưới dạng một cây toán tử. 2. Nhóm dãy các phép chọn và chiếu: Sử dụng chiến
Trong cây thì các nút lá là các quan hệ có lược này nếu như có một dãy các phép chọn hoặc
mặt trong biểu thức, các nút trong là các dãy các phép chiến trên cùng một quan hệ
phép toán trong biểu thức 3. Kết hợp phép chọn và tích Đề các thành phép kết
• Ví dụ : Đưa ra tên hãng cung ứng mặt hàng nối: Nếu kết quả của một phép tích Đề các là đối
có mã là 'P1': số của 1 phép chọn có điều kiện chọn là phép so
sánh giữa các thuộc tính trên 2 quan hệ tham gia
Select sname From S, SP Where S.sid = tích Đề các thì ta nên kết hợp 2 phép toán thành
SP.sid And pid = 'P1' phép kết nối.
• Biểu thức ĐSQH tương ứng là? 4. Tìm các biểu thức con chung trong biểu thức đại
• Cây toán tử tương ứng là? số quan hệ để đánh giá chỉ một lần
11 12
NHP NHP

2
Các phé
phép biế
biến đổ
đổi tương đương
Các chiế
chiến lượ
lược tố
tối ưu tổ
tổng quá
quát (tiế
(tiếp) biể
biểu thứ
thức ĐSQH
5. Xác định các phép toán có thể được đưa
vào đường ống và thực hiện đánh giá • Hai biểu thức ĐSQH E1 và E2 là tương đương
chúng theo đường ống nếu chúng cho cùng một kết quả khi áp dụng
6. Xử lý các tệp dữ liệu trước khi tiến hành trên cùng một tập các quan hệ
tính toán: Tạo lập chỉ dẫn hay sắp xếp tệp
dữ liệu có thể góp phần làm giảm chi phí • Trong phần này, ta có các ký hiệu dạng sau:
của các phép tính trung gian – E1, E2, E3, … là các biểu thức đại số quan hệ
7. Ước lượng chi phí và lựa chọn thứ tự thực – F1, F2, F3, … là các điều kiện chọn hoặc là các điều
hiện: Do với mỗi câu truy vấn có thể có kiện kết nối
nhiều cách khác nhau để thực hiện, với
– X1, X2, … Y, Z, U1, U2, … là các tập thuộc tính
việc ướng lượng chi phí (số phép tính, tài
nguyên sử dụng, dung tích bộ nhớ, thời
gian thực hiện ..) ta có thể chọn cách đánh
giá biểu thức ĐSQH có chi phí nhỏ nhất.
13 14
NHP NHP

Các phé
phép biế
biến đổ
đổi tương đương Các phé
phép biế
biến đổ
đổi tương đương
biể thức ĐSQH (tiếp)
biểu thứ biể thức ĐSQH (tiếp)
biểu thứ
1. Quy tắc kết hợp của phép tích Đề các và kết nối • VD: S* SP * P có thể được thực hiện theo
( E1 × E 2 ) × E3 ≡ E1 × ( E 2 × E3 ) 3 thứ tự như sau
1)(S*SP)*P
( E1 * E 2 ) * E3 ≡ E1 * ( E 2 * E3 ) 2)(S*P)*SP
( E1 >< E 2 ) >< E3 ≡ E1 ><( E 2 >< E3 ) 3)S*(SP*P)
F1 F2 F1 F2
Xét theo ngữ nghĩa S, P không kết nối
• Qui tắc này sử dụng cho chiến lược số 7. Thứ tự được nên (1) và (3) là tốt hơn (2). Xét
thực hiện các phép kết nối hay tích Đề các là rất về kích thước thì (3) tốt hơn (1) vì S có
quan trọng vì kích thước của quan hệ trung gian
có thể rất lớn nếu không cân nhắc kỹ. Lựa chọn
4 thuộc tính còn P có 3 thuộc tính, tuy
thứ tự thực hiện các phép toán này thì tùy thuộc nhiên, cũng còn tùy thuộc vào lực
vào kích thước của các quan hệ tham gia phép lượng của 2 quan hệ S và P nữa
toán và cả ngữ nghĩa của quan hệ (mối liên hệ)
15 16
NHP NHP

Các phé
phép biế
biến đổ
đổi tương đương Các phé
phép biế
biến đổ
đổi tương đương
biể thức ĐSQH (tiếp)
biểu thứ biể thức ĐSQH (tiếp)
biểu thứ
2. Quy tắc giao hoán trong phép tích Đề 5. Quy tắc giao hoán phép chọn
các và kết nối E1 × E 2 ≡ E 2 × E 1
và phép chiếu
E1 * E 2 ≡ E 2 * E1
E 1 >< E 2 ≡ E 2 >< E 1 ∏ X (σ F ( E )) ≡ σ F ( ∏ X ( E ))
F F

3. Quy tắc đối với dãy các phép chiếu Quy tắc này áp dụng khi F là điều
kiện xác định được trên tập thuộc
∏ X 1 ( ∏ X 2 ... ∏ X n ( E )...) ≡ ∏ X 1 ( E )
tính X. Tổng quát hơn ta có:
X 1 ⊆ X 2 ⊆ ... ⊆ X n
∏ X (σ F ( E )) ≡ ∏ X (σ F ( ∏ XY ( E )))
4. Quy tắc đối với dãy các phép chọn
σ F 1 (σ F 2 ....σ Fn ( E )...) ≡ σ F 1∧ F 2∧...∧ Fn ( E ) 17 18
NHP NHP

3
Các phé
phép biế
biến đổ
đổi tương đương Các phé
phép biế
biến đổ
đổi tương đương
biể thức ĐSQH (tiếp)
biểu thứ biể thức ĐSQH (tiếp)
biểu thứ
6. Quy tắc đối với phép chọn và phép 7. Quy tắc đối với phép chọn và
tích Đề các
• Ta ký hiệu: phép hợp:
– E1(U1) có nghĩa là biểu thức E1 xác định trên tập thuộc
tính U1 σ F ( E1 ∪ E 2 ) ≡ σ F ( E1 ) ∪ σ F ( E 2 )
– F1(U1) có nghĩa là điều kiện chọn F1 xác định trên tập
thuộc tính U1 8. Quy tắc đối với phép chọn và
– Quy tắc biến đổi liên quan đến phép chọn và tích Đề
các được phát biểu như sau: phép trừ:
• σ F ( E 1 (U 1 ) × E 2 (U 2 )) tương đương với:
σ F ( E1 − E 2 ) ≡ σ F ( E1 ) − σ F ( E 2 )
– σ F 1 ( E1 ) × E 2 trong trường hợp F = F1(U1)
– σ F 1 ( E1 ) × σ F 2 ( E 2 ) trong trường hợp F = F1(U1)
F2(U2)
– σ F 2 (σ F 1 ( E1 ) × E 2 ) trong trường hợp F = F1(U1)
F2(U1U2)
19 20
NHP NHP

Các phé
phép biế
biến đổ
đổi tương đương
biể thức ĐSQH (tiếp)
biểu thứ Ví dụ
9. Quy tắc đối với phép chiếu và tích Đề • Tìm tên hãng cung ứng ít nhất 1 mặt
các: hàng màu đỏ hoặc màu xanh
∏ X ( E 1 (U 1 ) × E 2 (U 2 )) ≡ ∏ Y ( E 1 ) × ∏ Z ( E 2 ) SELECT sname FROM S, P, SP
WHERE S.sid = SP.sid AND P.pid = SP.pid
X = YZ , Y ⊂ U 1 , Z ⊂ U 2
AND (colour = ‘Red’ OR colour = ‘Green’);
10.Quy tắc đối với phép chiếu và phép
• Biểu thức đại số quan hệ tương đương với
hợp: câu truy vấn trên là:
∏ X ( E1 U E 2 ) ≡ ∏ X ( E1 ) U ∏ X ( E 2 )
∏ sname (σ S .sid = SP.sid ∧ P. pid = SP. pid ∧( colour = 'Re d '∨ colour = 'Green ') ( S × SP × P))

21 22
NHP NHP

Lời hay ý đẹ
đẹp

"Phẩm cách chân chính của con người là ở


trong cách họ sống chứ không phải ở cái họ
có"
Blackie

23 24
NHP NHP

4
Nội dung
• An toàn dữ liệu
– Xác minh người sử dụng
An toà
toàn và
và toà
toàn vẹ
vẹn dữ
dữ liệ
liệu – Kiểm tra quyền truy nhập của người sử
dụng
Nguyễ
Nguyễn Hồng Phương – Các câu lệnh an toàn dữ liệu trong SQL
phuongnh-
phuongnh-fit@mail.hut.edu.vn • Toàn vẹn dữ liệu
– Các ràng buộc toàn vẹn trong SQL
Bộ môn Hệ thố
thống thông tin – Điều khiển tương tranh
Việ
Viện Công nghệ
nghệ thông tin và
và Truyề
Truyền thông
Đại học Bách Khoa Hà Nội
1 2

An toà
toàn dữ
dữ liệ
liệu Các quyề
quyền truy nhậ
nhập củ
của ngườ
người sử
sử dụng

• Định nghĩa: Tính an toàn dữ liệu là sự bảo • Quyền đọc dữ liệu: được phép đọc một phần hay
toàn bộ dữ liệu trong CSDL
vệ dữ liệu trong cơ sở dữ liệu chống lại những
truy nhập, sửa đổi hay phá hủy bất hợp • Quyền cập nhật dữ liệu: được phép sửa đổi một số
giá trị nhưng không được xóa dữ liệu trong CSDL
pháp. • Quyền xóa dữ liệu: được phép xóa dữ liệu trong
• Người sử dụng hợp pháp là những người sử CSDL
dụng được cấp phép, được ủy quyền. Ngược • Quyền bổ sung dữ liệu: được phép thêm dữ liệu mới
lại là những người sử dụng bất hợp pháp. vào trong CSDL nhưng không được phép thay đổi dữ
• Để đảm bảo tính an toàn cho cơ sở dữ liệu, liệu
chúng ta cần có một cơ chế để quản lý người • Quyền tạo chỉ dẫn trên các quan hệ trong CSDL
dùng cho hợp lý. • Quyền thay đổi sơ đồ cơ sở dữ liệu: thêm hay xóa
các thuộc tính của các quan hệ trong CSDL
• Những nhóm người dùng khác nhau trong hệ • Quyền loại bỏ quan hệ trong CSDL
CSDL có quyền sử dụng khác nhau đối với
• Quyền quản lý tài nguyên: được phép thêm các
các dữ liệu trong CSDL. quan hệ mới vào CSDL
3 4

Trá
Trách nhiệ
nhiệm củ
của ngườ
người quả
quản trị
trị hệ thố
thống Xác minh ngườ
người sử
sử dụng
• Để có thể phân biệt được người sử dụng • Để xác minh được người sử dụng, người ta
trong hệ CSDL, người quản trị hệ thống phải có thể dùng các kỹ thuật sau:
– Kỹ thuật dùng tài khoản và mật khẩu, mật khẩu
có trách nhiệm: cũng được bảo vệ bởi hệ thống một cách kỹ càng.
– Xác định các quyền cụ thể mà mỗi người sử dụng – Kỹ thuật sử dụng các hàm kiểm tra cho người sử
hay một nhóm người sử dụng được phép thực dụng: Hệ thống đưa cho người sử dụng một số
hiện, xác định vai trò và trách nhiệm của mỗi ngẫu nhiên x, người sử dụng dùng một hàm F tính
nhẩm kết quả và đưa kết quả y = F(x) vào hệ
người sử dụng. Điều này được gọi chung là Phân thống. Trong lúc đó, hệ thống cũng tính toán và
quyền người sử dụng so sánh kết quả với y. Người sử dụng hợp pháp là
– Cung cấp một phương tiện cho người sử dụng để người biết hàm biến đổi F và đưa vào giá trị y
đúng.
hệ thống có thể nhận biết được người sử dụng đó – Kỹ thuật dùng thẻ điện tử, thẻ thông minh.
hay còn gọi là Xác minh người sử dụng – Kỹ thuật sử dụng nhận dạng tiếng nói, vân tay
v..v.
5 6

1
Kiể
Kiểm tra quyề
quyền truy nhậ
nhập củ
của ngườ
người sử
sử dụng Các câu lệ
lệnh an toà
toàn dữ
dữ liệ
liệu trong SQL

• Mỗi người sử dụng sẽ có một bộ hồ sơ do • Câu lệnh tạo khung nhìn


người quản trị thiết lập và được hệ thống
quản lý, trong hồ sơ đó sẽ có chi tiết về các • Câu lệnh phân quyền cho người sử
thao tác người sử dụng được phép thực hiện: dụng
– Phân quyền người sử dụng: Người quản trị hệ
thống phải có trách nhiệm xác định khung nhìn để • Câu lệnh thu hồi quyền của người sử
kiểm soát xem mỗi người sử dụng chỉ được truy dụng
nhập phần dữ liệu nào trong CSDL và có được các
quyền nào trong số các quyền đọc, thêm, xóa ,
sửa đổi.
– Xác định và kiểm soát sự lưu chuyển dữ liệu: Hệ
thống phải bảo trì danh sách các quyền một cách
chặt chẽ vì người sử dụng có thể được quyền lan
truyền các quyền cho người sử dụng khác.
7 8

Câu lệ
lệnh tạ
tạo khung nhì
nhìn Ví dụ câu lệ
lệnh tạ
tạo khung nhì
nhìn
• Cho cơ sở dữ liệu gồm 2 quan hệ:
• CREATE VIEW <Tên khung nhìn> Nhânviên(Id,Họtên,ĐC,Lương,NămBD,Đánhgiá,PhòngCT)
[(d/s cột)] AS <Câu truy vấn> Phòng(PId, Tên, ĐC, Điệnthoại, Trưởngphòng)
• Danh sách các cột trong khung nhìn • Câu lệnh tạo khung nhìn cho một nhân viên của phòng
là phần không bắt buộc. Trong Khoa Học có thể được định nghĩa như sau:
trường hợp người sử dụng muốn đặt CREATE VIEW NVKH(HọtênNhânviên, Địachỉliênlạc) AS
tên khác cho các cột xuất hiện trong SELECT Họtên,Địachỉ FROM Nhânviên
khung nhìn thì người sử dụng có thể WHERE PhòngCT IN
(SELECT PId FROM Phòng WHERE Tên =‘Khoa Học’)
chỉ ra tên các cột, dữ liệu trên cột thì
tương ứng với các cột trong mệnh đề
Select của câu truy vấn.
9 10

Câu lệ
lệnh phân quyề
quyền cho NSD Câu lệ
lệnh phân quyề
quyền cho NSD (tiế
(tiếp)

• GRANT <D/s thao tác> ON <Đối tượng> TO • <Đối tượng>: bảng hoặc khung nhìn
<D/s người dùng> [WITH GRANT OPTION]
• <D/s người dùng>: Một người hay một
• <D/s thao tác>: có thể bao gồm 1 hay nhiều nhóm hay một danh sách người sử dụng.
thao tác được liệt kê dưới đây:
– Insert: chèn dữ liệu vào trong CSDL có sẵn nhưng không
Từ khóa public được dùng thay thế cho mọi
được thay đổi bất kỳ mục dữ liệu nào trong CSDL người sử dụng
– Update: sửa đổi dữ liệu nhưng không được xóa dữ liệu
– Delete: xóa dữ liệu trong CSDL • [With Grant Option] Nếu dùng từ khóa này
– Select : tìm kiếm trong câu lệnh phân quyền thì người dùng
– Create: tạo lập các quan hệ mới xuất hiện trong <D/s người dùng> có
– Alter: Thay đổi cấu trúc của quan hệ
– Drop: Loại bỏ quan hệ quyền được lan truyền các quyền vừa được
– Read/Write: Đọc và Ghi tuyên bố cho những người dùng khác
11 12

2
Ví dụ câu lệ
lệnh phân quyề
quyền cho NSD Câu lệ
lệnh thu hồ
hồi quyề
quyền củ
của NSD

• Trao quyền đọc, ghi, tìm kiếm, sửa đổi dữ • REVOKE <D/s thao tác> ON <Đối
liệu cho nhân viên tên Hoa của phòng Khoa tượng> FROM <D/s người dùng>
học trên khung nhìn vừa tạo lập trong phần [RESTRICT/CASCADE]
trước
• <D/s thao tác>, <Đối tượng>,
GRANT read, write, select, update ON
<D/s người dùng> giống như đối
NVKH TO Hoa;
với câu lệnh GRANT.
• Trao quyền cho trưởng phòng Khoa học –
ông HungNC • Phần [RESTRICT/CASCADE] là chỉ
GRANT read, write, select, update, delete
ra cơ chế thu hồi với các quyền đã
ON NVKH TO HungNC WITH GRANT được người dùng trong <D/s người
OPTION; dùng> lan truyền
13 14

Câu lệ
lệnh thu hồ
hồi quyề
quyền củ
của NSD (tiế
(tiếp) Toà
Toàn vẹ
vẹn dữ
dữ liệ
liệu
• Định nghĩa: Tính toàn vẹn dữ liệu là sự bảo vệ
• Nếu Restrict thì có nghĩa là chỉ hủy bỏ dữ liệu trong CSDL chống lại những sự sửa đổi,
quyền của những người có trong danh phá hủy vô căn cứ để đảm bảo tính đúng đắn và
chính xác của dữ liệu.
sách, quyền đã được lan truyền cho người
• Các thao tác có thể ảnh hưởng đến tính đúng
khác không bị thu hồi. đắn của CSDL là thêm, xóa , sửa đổi.
• Nếu dùng Cascade thì hủy bỏ quyền của • Để đảm bảo tính toàn vẹn dữ liệu, cần phải chỉ ra
người trong <D/s người dùng>, đồng thời và duy trì những ràng buộc toàn vẹn liên kết với
kéo theo hủy bỏ quyền mà người dùng đó mỗi quan hệ. Các ràng buộc toàn vẹn cung cấp 1
phương tiện để đảm bảo rằng các thao tác được
đã luân chuyển cho những người khác. thực hiện bởi những người sử dụng hợp pháp
• Ví dụ: không làm mất đi tính đúng đắn của CSDL.
• Trong hệ thống đa người dùng, để đảm bảo được
REVOKE update,delete ON NVKH FROM toàn vẹn dữ liệu, hệ thống còn phải có được một
HungNC CASCADE trình điều khiển tương tranh để tránh đụng độ
giữa các thao tác được đưa ra bởi những người
15
sử dụng khác nhau tại cùng một thời điểm 16

Các rà
ràng buộ
buộc toà
toàn vẹ
vẹn trong SQL Ví dụ về khẳ
khẳng đị
định
• Các ràng buộc về khóa chính, khóa • Số lượng mặt hàng được cung cấp bởi
ngoài, kiểm tra trên miền sử dụng các hãng có số nhân viên < 50 phải
Check chúng ta đã đề cập đến khi nói nhỏ hơn 100:
về câu lệnh tạo bảng trong CSDL.
• Các khẳng định: Là một vị từ biểu thị CREATE ASSERTION KĐSốlượng CHECK
một điều kiện mà CSDL phải luôn luôn NOT EXISTS
thỏa mãn. Các khẳng định được tạo ra (SELECT * FROM S WHERE numofemps
bằng câu lệnh: < 50 AND sid IN
CREATE ASSERTION <Tên khẳng định> (SELECT sid FROM SP WHERE quantity
CHECK <Vị từ> >= 100))
17 18

3
Các rà
ràng buộ
buộc toà
toàn vẹ
vẹn trong SQL (tiếp) Ví dụ về kích hoạ
hoạt
• Các kích hoạt: Là một thao tác được thực • Nhânviên(ID,Họtên,Lương,Địachỉ,Ngườ
hiện một cách tự động khi có một thay đổi iquảnlý)
đối với CSDL. Kích hoạt là các cơ chế có ích • Một nhân viên bao giờ cũng có lương
để báo động hoặc thực hiện những nhiệm ít hơn lương người trưởng phòng, điều
vụ được định sẵn khi các điều kiện nhất kiện này phải được kiểm tra khi thêm
định được thỏa mãn. bộ dữ liệu.
• Kích hoạt có thể được định nghĩa để hủy bỏ,
DEFINE TRIGGER ThemNV ON INSERT Nhânviên
hoặc kiểm tra và thực hiện một số các sự IF Nhânviên.Lương > (SELECT E.Lương FROM
kiện do đó nó có thể được coi là một biện Nhânviên AS E WHERE E.ID =
pháp để đảm bảo toàn vẹn dữ liệu. Nhânviên.Ngườiquảnlý)
THEN ABORT;
19 20

Điề
Điều khiể
khiển tương tranh Các kỹ
kỹ thuậ
thuật điề
điều khiể
khiển tương tranh

• Kỹ thuật dùng khóa: Khi một giao dịch cần dữ liệu


• Trong hệ CSDL đa người dùng, hệ nào thì xin hệ điều hành một khóa trên phần dữ liệu
thống cần đưa ra giải pháp chống đó, các giao dịch khác phải đợi đến khi giải phóng
khóa mới được sử dụng phần dữ liệu đó. Có thể
đụng độ giữa các giao dịch (một dãy người ta sử dụng các loại khóa khác nhau ví dụ như
các thao tác) được đưa ra bởi những khóa đọc – cho phép nhiều giao dịch đọc cùng 1 lúc,
khóa ghi – chỉ 1 giao dịch có được tại một thời điểm.
người dùng khác nhau để tránh việc • Kỹ thuật gán nhãn thời gian: Mỗi giao dịch được
một đối tượng dữ liệu nào đó bị làm gán một nhãn T theo thời gian, giao dịch nào cần
được ưu tiên thì được gán nhãn thời gian nhỏ hơn và
mất tính đúng đắn trong quá trình được thực hiện trước. Kỹ thuật này giúp đưa yêu cầu
cập nhật. đồng thời về thực hiện tuần tự.

21 22

Lời hay ý đẹ
đẹp

"Khi nói sự thật bạn sẽ không phải nhớ


mình vừa nói gì, mà bạn cũng không
bao giờ quên những gì mình vừa nói"
S.Raybum

23 24

You might also like