Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Tài liệu tham khảo
– [1]. Bài giảng lý thuyết cơ sở dữ liệu – Khoa Tin học – ĐHSP
Huế
– [2]. Hồ Thuần, Hồ Cẩm Hà, Cá...
Phần I

MÔ HÌNH DỮ LIỆU QUAN HỆ
Email: ltnkhanh@itam.tdt.edu.vn

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

2
Nội dung phần I
• Các định nghĩa:
–
–
–
–
–

Mở đầu
Các khái niệm: thuộc tính, miền giá trị
Mô hình quan hệ
Lược đồ qu...
Các định nghĩa - Mở đầu
maSoSV

ngaySinh

diemTB

mucHBg

Ti05020

Lê Ngọc Phúc

06-12-1988

9.0

240.000

Ti05023

Nguyễn...
Các định nghĩa - Mở đầu (tt)
• Cho tập hữu hạn các phần tử U = {A1, A2, … An}.
tập U được gọi là tập các thuộc tính. Mỗi p...
Các định nghĩa
– Thuộc tính

Thuộc tính (attribute, arity)
– Là các đặc trưng của đối tượng
• Vd: BTQL điểm thi của sinh v...
Các định nghĩa
– Thuộc tính

Thuộc tính (attribute, arity) (tt)
– Lưu ý:
• trong cùng một đối tượng không được có hai thuộ...
Các định nghĩa
– Lược đồ quan hệ, Lược đồ cơ sở dữ liệu

• Lược đồ quan hệ (Relation)
– là tập tất cả các thuộc tính cần q...
Các định nghĩa
– Lược đồ quan hệ, Lược đồ cơ sở dữ liệu

• Lược đồ quan hệ (Relation) (tt)
- Một LĐQH có một ý nghĩa gọi l...
Các định nghĩa
– Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt)
• Nhiều lược đồ quan hệ cùng nằm trong một hệ thống
quản lý đ...
Các định nghĩa
– Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt)

• Nhận xét:
– khi nói cho tập thuộc tính U = {A1, A2…, An} t...
Các định nghĩa
– Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt)

• Định nghĩa quan hệ (relation):
– Là sự thể hiện của LĐQH ở...
Các định nghĩa
– Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt)
• Nhận xét:
– Quan hệ r là một bảng hai chiều:
• trên cột thứ...
Các định nghĩa
– Lược đồ QH, Lược đồ CSDL (tt)
ma

hoten

nsinh

donvi

luong

phucap

thuong

01

Minh

1965

K.CNTT

800...
Các định nghĩa (tt)
• Lưu ý:
– Về sau không cần quan tâm đến bản chất nội tại của
mô hình quan hệ, đôi khi để cho tiện ta ...
Các định nghĩa
- Lược đồ và thể hiện của CSDL
• Toàn bộ mô tả CSDL được gọi là lược đồ CSDL
(database schema). Tương ứng v...
Các định nghĩa
- Lược đồ và thể hiện của CSDL (tt)

• Toàn bộ dữ liệu lưu trữ trong CSDL tại một thời
điểm nhất định được ...
Các định nghĩa
- Lược đồ và thể hiện của CSDL (tt)
Khung nhìn 2

Khung nhìn 1
MaNV

Hodem Ten

Tuoi

Luong

MaNV

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

• Đại số quan hệ
– là phương pháp để mô hình hóa các phép toán để
thao tác trên CSDL quan hệ....
Đại số quan hệ
- Giới thiệu (tt)

• Để định nghĩa các phép toán đại số quan hệ, trước
hết chúng ta có một số khái niệm sau...
Đại số quan hệ
- Các phép toán – Phép chọn

• Phép chọn (Selection): ký hiệu σ
– Phép chọn được dùng để xây dựng một tập c...
Đại số quan hệ
- Các phép toán – Phép chọn (tt)
– Biểu thức lôgic C được tạo thành từ các biểu thức có
dạng:
〈tên thuộc tí...
Đại số quan hệ
- Các phép toán – Phép chọn (tt)
• Ví dụ: Trên quan hệ HOCBONG,
– phép chọn σ (DiemTB≥9.0)(HOCBONG)
sau:

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

• Cho các lược đồ quan hệ sau:
– SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocl...
Đại số quan hệ
- Các phép toán – Phép chọn (tt)

Ví dụ:

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

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

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

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

Vd: Tìm những SV sinh trước 1984 và quê ở Đồng Tháp:

σ

(Namsinh<1984 ^ ...
Đại số quan hệ
- Các phép toán – Phép chiếu
• Phép chiếu (Projection): Ký hiệu π
– Cho r là một quan hệ trên lược đồ quan ...
Đại số quan hệ
- Các phép toán – Phép chiếu

• Nhận xét:
– Để thực hiện phép chiếu 1QH trên một tập thuộc tính
thực hiện 2...
Đại số quan hệ
- Các phép toán – Phép chiếu

• Ví dụ: Xem lại CSDL
– Tìm họ tên, năm sinh của những sinh viên có quê
quán ...
Đại số quan hệ
- Các phép toán – Phép chiếu

• Ví dụ: Xem lại CSDL
– Tìm mã số, tên của những đề tài do thầy Lê Đức
Phúc c...
Đại số quan hệ
- Các phép toán

• Phép tích Descartes
– Tích Descartes của hai quan hệ chỉ xét trên hai LĐQH
rời nhau.
– C...
Đại số quan hệ
- Các phép toán

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

33
Đại số quan hệ
- Các phép toán – Phép kết nối
• Phép kết nối
– Cho θ là một trong các phép so sánh sau: =, >,<, ≠, ≥,
≤.
–...
Đại số quan hệ
- Các phép toán – Phép kết nối (tt)
– Nếu θ là “=” thì phép kết nối được gọi là kết nối bằng.
– Nếu kết nối...
Đại số quan hệ
- Các phép toán – Phép kết nối (tt)

• Ví dụ:
r

A

B

C

a1

b1
b2
b

2

2

f1

3

f2

3

a3

F

1

a2

s ...
Đại số quan hệ
- Các phép toán – Phép hợp
• Phép hợp
– Hợp của hai quan hệ tương thích r1, r2 ký hiệu r1 ∪
r2 là một quan ...
Đại số quan hệ
- Các phép toán – Phép giao
• Phép giao

– Giao của hai quan hệ tương thích r1, r2 ký hiệu r1 ∩
r2 là một q...
Đại số quan hệ
- Các phép toán – Phép hiệu

• Phép hiệu
– Hiệu của hai quan hệ tương thích r và s ký hiệu là r - s,
là một...
Đại số quan hệ
- Các phép toán

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

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

• Phép chia
– Cho lược đồ quan hệ R(A1, A2, …, An), S là lược đồ
con của R. Giả sử r và s ...
Bài tập phần I
• Cho các lược đồ quan hệ sau:
• Hanghoa(MaHG, TenHG, DVT, Dongia, Cohang)
– Mỗi mặt hàng có một mã số duy ...
Bài tập phần I (tt)
• Viết các biểu thức đại số quan hệ cho các câu
hỏi sau:
–
–
–
–

Cho biết Mã số và tên của các mặt hà...
Bài tập phần I (tt)
– In ra mã số, tên của các mặt hàng thuộc các hóa đơn có trị giá
lớn hơn 1000
– Cho biết tên của những...
Phần II

NGÔN NGỮ SQL
Email: ltnkhanh@itam.tdt.edu.vn

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

45
Nội dung chương III
•
•
•

Giới thiệu sơ lược HQT CSDL SQL server 2000
Các kiểu dữ liệu trong SQL
Câu lệnh định nghĩa dữ l...
Sơ lược về hệ QTCSDL SQL Server 2000
• SQL server 2000:
– Là một hệ quản trị cơ sở dữ liệu quan hệ phổ biến
hiện nay.
– Có...
Các kiểu dữ liệu trong SQL
• Kiểu dữ liệu là một thuộc tính, nó chỉ định kiểu của
dữ liệu và dung lượng có thể lưu trữ của...
Các kiểu dữ liệu trong SQL (tt)
int

- sử dụng 4 byte trong bộ nhớ máy tính.
- thường được dùng để lưu trữ giá trị số nguy...
Các kiểu dữ liệu trong SQL (tt)
float(n)

- sử dụng 8 byte trong bộ nhớ máy tính.
- Biểu diễn các số dấu chấm động từ
-1.7...
Các kiểu dữ liệu trong SQL (tt)
char

- Lưu trữ dữ liệu ký tự, độ dài có thể thay đổi và
không hỗ trợ Unicode
- Lưu trữ dữ...
Nội dung chương III
•
•
•

Giới thiệu sơ lược HQT CSDL SQL Server
Các kiểu dữ liệu trong SQL
Câu lệnh định nghĩa dữ liệu
–...
Tạo cơ sở dữ liệu
• Sử dụng cú pháp sau để tạo một cơ sở dữ liệu
trong SQL:
– CREATE DATABASE <tên csdl>

• Ví dụ: Tạo cơ ...
Tạo bảng - Khái niệm bảng
• Bảng dùng để lưu trữ các thông tin của một đối
tượng trong thực tế
– Gồm có dòng và cột
– Bảng...
Tạo bảng - các thuộc tính của bảng
• Tên bảng
• Tên cột
• Kiểu dữ liệu
– Độ dài dữ liệu
– Số ký số lưu trữ
– Số số lẻ lưu ...
Tạo bảng
Cú pháp:
CREATE TABLE <tên bảng>(
<tên cột 1><kiểu dữ liệu>[CONSTRAINT<tên 1>],
( <tên cột 2><kiểu dữ liệu>[CONST...
Tạo bảng (tt)
• Trong đó, cú pháp khai báo của các ràng buộc toàn
vẹn như sau:
– [CONSTRAINT <tên RBTV>] NULL|NOT NULL|
UN...
Tạo bảng (tt)
• Ví dụ: Tạo bảng với lược đồ quan hệ sau:
HANGHOA (MaHG, TenHG, DVT)
• Mã hàng hóa là khóa chính, tên hàng ...
Tạo bảng – Cột được phép null
• Đặc trưng về khả năng null của một cột quyết định
các hàng trong bảng có thể chứa giá trị ...
Tạo bảng – Cột được phép null
• Ví dụ:
CREATE TABLE Nhanvien(
manv char(5) NOT NULL,
tennv nvarchar(30),
manqly char(5) NU...
Tạo bảng – Định nghĩa DEFAULT
• Ràng buộc default có thể được tạo ra tại thời điểm
tạo bảng hoặc thêm sau khi bảng được tạ...
Tạo bảng - Định nghĩa DEFAULT (tt)
• Định nghĩa default trong khi tạo bảng:
CREATE TABLE <tên bảng> <tên cột> <KDL>
[NULL|...
Tạo bảng - Định nghĩa DEFAULT (tt)
• Định nghĩa default đối với một bảng đã tồn tại:
ALTER TABLE <tên bảng>
ADD [CONSTRAIN...
Tạo bảng - Thuộc tính IDENTITY
• Thuộc tính IDENTITY của SQL Server được sử
dụng để tạo ra các cột nhận dạng, chúng chứa c...
Tạo bảng - Thuộc tính IDENTITY (tt)
• Cú pháp:
• CREATE TABLE <table_name> (column_name
data_type
[
IDENTITY
[(seed_value,...
Tạo bảng – Ràng buộc
• Ràng buộc là thuộc tính được chỉ định cho một cột
hoặc một tập hợp các cột trong bảng để ngăn ngừa
...
Tạo bảng – Ràng buộc
- Primary Key (Khoá chính)

• Ràng buộc PRIMARY KEY được sử dụng để tạo
một khóa chính và đảm bảo toà...
Tạo bảng – Ràng buộc
- Primary Key (Khoá chính) (tt)

• Ví dụ: Tạo bảng PhongBan với khóa chính là
maphong
CREATE TABLE Ph...
Tạo bảng – Ràng buộc
- UNIQUE - Khóa duy nhất

• Ràng buộc khóa duy nhất:
– được sử dụng để bảo đảm rằng chỉ các giá trị d...
Tạo bảng – Ràng buộc
- UNIQUE - Khóa duy nhất (tt)

• Cú pháp:
– CREATE TABLE <tên bảng> ([ds cột, ]
<tên
cột>
<kdl>
[CONS...
Tạo bảng – Ràng buộc
- Khóa ngoại (foreign key)

• Một khóa ngoại trong một bảng là một cột, nó chỉ
đến một khóa chính tro...
Tạo bảng – Ràng buộc
- Khóa ngoại (foreign key)

• Ví dụ:
CREATE TABLE Nhanvien(
manv char(5) NOT NULL,
tennv nvarchar(30)...
Tạo bảng – Ràng buộc
- Khóa ngoại (foreign key)

• Ví dụ: (tt)
• Hoặc có thể viết như sau:
CREATE TABLE Nhanvien(
manv
cha...
Tạo bảng – Ràng buộc
- Ràng buộc kiểm tra (Check)

• Ràng buộc check
– Được sử dụng để chỉ định điều kiện hợp lệ đối với d...
Nội dung phần II
•
•
•

Giới thiệu sơ lược HQT CSDL SQL server 2000
Các kiểu dữ liệu trong SQL
Câu lệnh định nghĩa dữ liệu...
Câu lệnh cập nhật dữ liệu (SV)
• Là câu lệnh dùng để cập nhật dữ liệu.
• Bao gồm các câu lệnh: INSERT, UPDATE,
DELETE.
– L...
Câu lệnh cập nhật dữ liệu (tt) (SV)
– Lệnh thêm dữ liệu vào bảng: (tt)
– Vd: MON (MaMH, TenMH, DVHT)
Thêm vào bảng MON với...
Câu lệnh cập nhật dữ liệu (tt) (SV)
• Một số lưu ý:
– Thêm ký tự N trước chuỗi Unicode
•

Ví dụ:

insert
into
values(‘NV01...
Câu lệnh cập nhật dữ liệu (tt) (SV)
• Một số lưu ý (tt)
– Nhập dữ liệu khi đã có ràng buộc khóa ngoại

• Trường hợp 1:
– C...
Câu lệnh cập nhật dữ liệu (tt) (SV)
• Một số lưu ý (tt)
– Nhập dữ liệu khi đã có ràng buộc khóa ngoại

• Trường hợp 2:
– C...
Câu lệnh cập nhật dữ liệu (tt) (SV)
• Một số lưu ý (tt)
– Nhập dữ liệu khi đã có ràng buộc khóa ngoại

• Trường hợp 3:
– C...
Câu lệnh cập nhật dữ liệu (tt) (SV)
- Lệnh Update, Delete

• Lệnh cập nhật dữ liệu trong bảng:
UPDATE <Tên bảng> SET <Tên ...
Câu lệnh cập nhật dữ liệu (tt) (SV)
- Lệnh Update, Delete

• Lệnh xóa dữ liệu khỏi bảng:
DELETE
FROM
kiện chọn>]

<Tên

bả...
Các lệnh về thay đổi cấu trúc bảng
- Thêm, xóa, sửa một cột (thuộc tính) (SV)
• Thêm một cột vào bảng có sẵn
– Cú pháp
ALT...
Các lệnh về thay đổi cấu trúc bảng
- Thêm, xóa, sửa một cột (thuộc tính) (tt) (SV)

• Chỉnh sửa cột trong bảng
– Cú pháp
A...
Các lệnh về thay đổi cấu trúc bảng
- Thêm, xóa, sửa một cột (thuộc tính) (tt) (SV)

• Xóa cột trong bảng
– Cú pháp
ALTER T...
Thêm ràng buộc khóa chính
• Thêm RB khóa chính
– Cú pháp
ALTER TABLE <tên bảng> ADD CONSTRAINT
<tên RB> PRIMARY KEY (<DS c...
Thêm ràng buộc khóa ngoại
• Thêm RB khóa ngoại
– Cú pháp
ALTER TABLE <tên bảng> ADD CONSTRAINT
<tên RB> FOREIGN KEY (<DS c...
Thêm ràng buộc kiểm tra (check)
• Thêm RB kiểm tra
– Cú pháp
ALTER TABLE <tên bảng> ADD CONSTRAINT
<tên RB> CHECK(<điều ki...
Xóa ràng buộc khóa chính, khóa ngoại, check
• Cú pháp
ALTER TABLE <tên bảng> DROP CONSTRAINT
<tên RB>

- Ví dụ:
- Xóa RB k...
Ví dụ tổng hợp

• Tạo csdl QLDT gồm các lược đồ sau:
– SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc)
– DETAI (MaDT, TenDT, C...
Ví dụ tổng hợp
Create table DeTai(
madt
int
primary
key,
tendt
nvarchar(30),
chunhiem nvarchar(30), kinhphi int)
Create ta...
Bài tập
• Cho lược đồ csdl quản lý hàng hóa như sau:
–
–
–
–

HangHoa(MaHG, TenHG, DVT, Dongia, Cohang)
Khach(MaKH, Hoten,...
Cơ sở dữ liệu ví dụ
• Trong suốt phần sau của chương này, ta sử dụng
csdl sau làm ví dụ minh họa:
– NhanVien(manv, honv, t...
Truy vấn dữ liệu
• Là ngôn ngữ rút trích dữ liệu
– Thường đi kèm với một số điều kiện nào đó

• Dựa trên
Phép toán ĐSQH

+...
Truy vấn cơ bản
• Gồm 3 mệnh đề
SELECT [DISTINCT] <danh sách các cột>
FROM <danh sách các bảng>
[WHERE] <điều kiện>

Từ kh...
Truy vấn cơ bản (tt)
• SQL và ĐSQH

π
×

SELECT <danh sách các
cột>
FROM <danh sách các bảng>

σ

WHERE <điều kiện>

SELEC...
Truy vấn cơ bản (tt)
• Ví dụ: Cho biết ds sinh viên lớp có mã lớp là ‘Ti01’
SELECT *
Dấu * để chỉ tất cả các cột
FROM Sinh...
Truy vấn cơ bản (tt)
• Ví dụ: Cho biết ds sinh viên nam của lớp có mã
‘Ti01’
SELECT masv, hoten, ngaysinh, phai, malop
FRO...
Truy vấn cơ bản (tt)
• Tên bí danh:
– Có thể đặt lại tên cho ds các thuộc tính trong bảng kết
quả (gọi là tên bí danh) bằn...
Truy vấn cơ bản (tt)
• Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp
của danh sách sinh viên lớp ‘công nghệ thông tin
...
Truy vấn cơ bản (tt)
• Tên bí danh cho bảng
– Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của
danh sách sinh viên lớ...
Truy vấn cơ bản (tt)
- Toán tử between, not between, like, not like

• BETWEEN
– Sử dụng để kiểm tra giá trị dữ liệu nằm t...
Truy vấn cơ bản (tt)
- Toán tử between, not between, like, not like

• LIKE
– Từ khóa LIKE (NOT LIKE) được sử dụng trong c...
Truy vấn cơ bản (tt)
- Toán tử between, not between, like, not like
• LIKE (tt)
– Ví dụ:

SELECT masv, hoten, ngaysinh
FRO...
Truy vấn cơ bản (tt)
- Ví dụ

• Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã
phòng ban chủ trì đề án, họ tên trưởng p...
Truy vấn cơ bản (tt)
- Ví dụ

• Cho biết họ tên của nhân viên phòng số 5 có tham
gia vào đề án “Sản phẩm X” với số giờ làm...
Truy vấn cơ bản
- Mệnh đề ORDER BY

• Dùng để hiển thị kết quả câu truy vấn theo một thứ
tự nào đó
• Cú pháp:
SELECT <ds c...
Truy vấn cơ bản
- Mệnh đề ORDER BY (tt)

• Ví dụ:
SELECT MANVIEN, SODA
FROM PHANCONG
ORDER BY MANVIEN DESC, SODA
MANVIEN
9...
Nội dung phần II
•
•
•

Giới thiệu sơ lược HQT CSDL SQL server 2000
Các kiểu dữ liệu trong SQL
Câu lệnh định nghĩa dữ liệu...
Truy vấn lồng
• Các câu lệnh SELECT có thể lồng nhau ở nhiều
mức
• Các câu truy vấn con trong cùng một mệnh đề
WHERE được ...
Truy vấn lồng (tt)
• Mệnh đề WHERE của câu truy vấn cha
– <biểu thức> <so sánh tập hợp> <truy vấn con>
– So sánh tập hợp t...
Truy vấn lồng (tt)
• Có 2 loại truy vấn lồng
– Lồng phân cấp
•

•

Mệnh đề WHERE của truy vấn con không tham chiếu đến
thu...
Truy vấn lồng (tt)
- Ví dụ lồng phân cấp

• Ví dụ:
SELECT MANV, TENNV
FROM NHANVIEN, DDPhong
WHERE DIADIEM = ‘TP HCM’ AND ...
Truy vấn lồng (tt)
- Ví dụ lồng phân cấp

• Ví dụ: Tìm những nhân viên không có thân nhân
nào

Ths. Lương Thị Ngọc Khánh –...
Truy vấn lồng (tt)
- Ví dụ lồng tương quan

• Ví dụ:
SELECT MANV, TENNV
FROM NHANVIEN
WHERE EXISTS (
SELECT *
FROM PHONGBA...
Truy vấn lồng (tt)
- Ví dụ

• Tìm nhân viên có người thân cùng tên và cùng giới
tính với nhân viên đó

Ths.Ths. Lương Thị ...
Truy vấn lồng (tt)
- Ví dụ

• Tìm những nhân viên có lương lớn hơn lương của ít
nhất một nhân viên phòng 4

• Tìm những nh...
Truy vấn lồng (tt)
- Nhận xét

• IN
– <tên cột> IN <câu truy vấn con>
– Thuộc tính ở mệnh đề SELECT của truy vấn con phải
...
Nội dung phần II
•
•
•

Giới thiệu sơ lược HQT CSDL SQL server 2000
Các kiểu dữ liệu trong SQL
Câu lệnh định nghĩa dữ liệu...
Hàm kết hợp và gom nhóm
• Hàm kết hợp:
– Được sử dụng trong mệnh đề SELECT
– Có các hàm kết hợp sau:
• COUNT
– COUNT(*) đế...
Hàm kết hợp và gom nhóm (tt)
• Ví dụ:
– Tìm tổng lương, lương cao nhất, lương thấp nhất và
lương trung bình của các nhân v...
Hàm kết hợp và gom nhóm (tt)
• Gom nhóm:
– Nhóm các bộ có cùng giá trị ở một tập các thuộc tính
lại với nhau
– Cú pháp:
SE...
Hàm kết hợp và gom nhóm (tt)
• Ví dụ:
– Cho biết số lượng nhân viên của từng phòng ban

– Cho biết thông tin của những phò...
Hàm kết hợp và gom nhóm (tt)
• Ví dụ:
– Với mỗi nhân viên cho biết mã số, họ tên, số lượng đề
án và tổng thời gian mà họ t...
Hàm kết hợp và gom nhóm (tt)
• Cú pháp:
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
GROUP BY <d...
Hàm kết hợp và gom nhóm (tt)
• Ví dụ:
– Cho biết những phòng ban (TENPHONG) có lương
trung bình của các nhân viên lớn lơn ...
Hàm kết hợp và gom nhóm (tt)
- Nhận xét

• Mệnh đề GROUP BY
– Các thuộc tính trong mệnh đề SELECT (trừ những
thuộc tính tr...
Hàm kết hợp và gom nhóm (tt)
- Nhận xét

• Thứ tự thực hiện câu truy vấn có mệnh đề GROUP
BY và HAVING
– (1) Chọn ra những...
Hàm kết hợp và gom nhóm (tt)
• Ví dụ:
– Tìm phòng ban có lương trung bình cao nhất

– Tìm 3 nhân viên có lương cao nhất

–...
Nội dung phần II
•
•
•

Giới thiệu sơ lược HQT CSDL SQL server 2000
Các kiểu dữ liệu trong SQL
Câu lệnh định nghĩa dữ liệu...
Điều kiện kết ở mệnh đề FROM
• Thông thường điều kiện của phép kết nối được chỉ
định trong mệnh đề where của câu truy vấn....
Điều kiện kết ở mệnh đề FROM (tt)
• Kết nối bằng (kết nối trong)
– Cú pháp:
SELECT
FROM
<biểu
WHERE

<danh sách các cột>
R...
Điều kiện kết ở mệnh đề FROM (tt)
• Kết nối bằng (kết nối trong)
- Ví dụ: Hiển thị họ tên và ngày sinh, tên lớp của ds
sin...
Điều kiện kết ở mệnh đề FROM (tt)
• Kết nối ngoài
– Cú pháp:
SELECT <danh sách các cột>
FROM R1 LEFT|RIGHT|FULL [OUTER] JO...
Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối ngoài
– Ví dụ: ta có 2 bảng NhanVien và DonVi như sau:

• Khi đó, phép kết nố...
Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối ngoài
– Ví dụ: ta có 2 bảng NhanVien và DonVi như sau:

• Phép kết nối ngoài ...
Điều kiện kết ở mệnh đề FROM (tt)

• Kết nối ngoài
– Ví dụ: ta có 2 bảng NhanVien và DonVi như sau:

• Phép kết nối ngoài ...
Điều kiện kết ở mệnh đề FROM (tt)

• Ví dụ:
– Tìm mã và tên các nhân viên làm việc tại phòng
‘Nghien cuu’

– Cho biết họ t...
Điều kiện kết ở mệnh đề FROM (tt)

• Ví dụ:
– Tìm họ tên các nhân viên và tên các đề án nhân viên
tham gia nếu có

Ths. Lư...
Một số dạng câu truy vấn khác
• SV tự tìm hiểu

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

141
BÀI TẬP PHẦN II
• Cho lược đồ csdl QLBanHang được mô tả như sau:

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

14...
BÀI TẬP PHẦN II (tt)
•

Thực hiện các yêu cầu sau bằng SQL
–
–
–
–
–
–

–
–

Tạo csdl và tạo các bảng, nhập dữ liệu cho cá...
Phần III

RÀNG BUỘC TOÀN VẸN
Email: ltnkhanh@itam.tdt.edu.vn

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

144
CSDL mẫu
• A) CSDL HSSINHVIEN
– SINH_VIEN(maSV,
maKhoa)

hotenSV,

nam,

ngSinh,

• maSV: mã số sinh viên
• Nam = true nếu...
CSDL mẫu (tt)
• B) CSDL QLHANGHOA QL. đơn hàng và hóa đơn
giao hàng của một cty thương mại.
– KHACH(maKH,
congNo)

tenKh,
...
CSDL mẫu (tt)
– HOA_DON(soHD,
ngayXuat)

ngayHD,

soDH,

trigiaHD,

• soHD: mã số của hóa đơn bán hàng cho khách. Một hóa
...
CSDL mẫu (tt)
– CTIET_HD(soHD, maHH, giaBan, soLuongBan)
(chi tiết những mặt hàng bán được cho khách hàng)
• soHD: mã số c...
CSDL mẫu (tt)
• C) CSDL QLDEAN (đã xét ở chương 2)

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

149
Ràng buộc toàn vẹn
- Khái niệm

• Trong một CSDL,
– luôn tồn tại rất nhiều mối liên hệ,
– rất nhiều sự ràng buộc qua lại g...
Ràng buộc toàn vẹn
- Khái niệm (tt)

• Ví dụ:
Trong CSDL HSSINHVIEN ta có một số RBTV như sau:
• C1: Mỗi sinh viên có một ...
Ràng buộc toàn vẹn
- Các yếu tố của ràng buộc toàn vẹn

• Một RBTV có ba yếu tố: điều kiện (nội dung), bối
cảnh và tầm ảnh...
Ràng buộc toàn vẹn
- Các yếu tố của ràng buộc toàn vẹn (tt)

• Ví dụ: Ràng buộc R1:
– Ngôn ngữ tự nhiên
• Mức lương của mộ...
Ràng buộc toàn vẹn
- Các yếu tố của ràng buộc toàn vẹn (tt)

• Ví dụ: ràng buộc R2:
– Ngôn ngữ tự nhiên
• Người quản lý tr...
Ràng buộc toàn vẹn
- Các yếu tố của ràng buộc toàn vẹn

• Bối cảnh của một RBTV C:
– là những quan hệ có khả năng bị vi ph...
Ràng buộc toàn vẹn
- Các yếu tố của ràng buộc toàn vẹn (tt)

• Tầm ảnh hưởng của một RBTV
– Nhằm xác định thời điểm cần ki...
Ràng buộc toàn vẹn
- Các yếu tố của ràng buộc toàn vẹn (tt)

• Bảng tầm ảnh hưởng của một RBTV (C)
Thêm

Sửa

Xóa

Quan hệ...
Ràng buộc toàn vẹn
- Các yếu tố của ràng buộc toàn vẹn (tt)
• Bảng tầm ảnh hưởng tổng hợp
Ràng buộc 1

…

Ràng buộc m

Thê...
Ràng buộc toàn vẹn
- Phân loại

• Các RBTV có thể được chia làm hai loại chính:
– RBTV có bối cảnh là một quan hệ
– RBTV c...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh là một QH

• RBTV về miền giá trị
– liên quan đến miền giá trị của các thuộc tín...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh là một QH

• RBTV về miền giá trị
– Ví dụ: ràng buộc Thời gian tham gia đề án củ...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh là một QH (tt)

• RBTV liên thuộc tính
– thể hiện mối liên hệ giữa các thuộc tín...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh là một QH (tt)

• RBTV liên thuộc tính
– Vd: Trong LĐQH HoaDon, ta có một RBTV l...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh là một QH (tt)

• RBTV liên bộ
– Là sự ràng buộc giữa các bộ bên trong một quan ...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh là một QH (tt)

• RBTV liên bộ
– Ví dụ: với ràng buộc Tên phòng là duy nhất
– Bố...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH

• RBTV về phụ thuộc tồn tại
– Còn được gọi là RB về khóa ngoại (foreig...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH (tt)

• Giả sử có hai lược đồ quan hệ R1, R2. Hai tập hợp K1
và K2 lần ...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH (tt)

• RBTV về liên bộ, liên quan hệ
– có tác dụng đối với từng nhóm c...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH (tt)

• RBTV liên thuộc tính, liên quan hệ
– Là mối liên hệ giữa các th...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH (tt)

• RBTV về thuộc tính tổng hợp
– được xác định trong trường hợp mộ...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH (tt)

• RBTV do có chu trình trong đồ thị biểu diễn của
lược đồ CSDL
– ...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH (tt)

• Ví dụ:
– Xem xét một phần của đồ thị biểu diễn lược đồ CSDL
QLH...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH

ngayDH

soDH
ngayHD

DAT_HANG

HOA_DON

maHH

soHD
CTIET_HD

giaBan

T...
Ràng buộc toàn vẹn
- Phân loại – Bối cảnh nhiều QH (tt)

• Trong trường hợp này lược đồ CSDL QLHANGHOA
sẽ phải có một RBTV...
BÀI TẬP PHẦN III
• Cho các lược đồ quan hệ sau:
– SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc)
• Mỗi sinh viên có Mã số duy...
Phần IV

PHỤ THUỘC HÀM VÀ KHÓA
Email: ltnkhanh@itam.tdt.edu.vn

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

176
Nội dung Phần IV
• Lý thuyết thiết kế CSDL
• Phụ thuộc hàm
–
–
–
–

Định nghĩa
Pth được suy dẫn lôgic từ F
Hệ tiên đề cho ...
Lý thuyết thiết kế CSDL
• Làm thế nào để thiết kế CSDL cho tốt?
– Xét ví dụ sau:

S(S#, Sname, add, pro, price)
S#
TL01

S...
Lý thuyết thiết kế CSDL (tt)
• Các vấn đề nảy sinh:
– Dư thừa dữ liệu (redundancy):
• Địa chỉ và tên NCC được lặp lại nhiề...
Lý thuyết thiết kế CSDL (tt)
• Các vấn đề nảy sinh: (tt)
– Dị thường khi thêm bộ (Insertion anomalies):
• Nếu một NCC chưa...
Nội dung phần IV
• Lý thuyết thiết kế CSDL
• Phụ thuộc hàm
–
–
–
–

Định nghĩa
Pth được suy dẫn lôgic từ F
Hệ tiên đề cho ...
Phụ thuộc hàm
• Định nghĩa:
– X xác định hàm Y hay Y phụ thuộc hàm vào X, ký
hiệu XY nếu:
Với ∀r quan hệ xây dựng trên R(...
Phụ thuộc hàm
- Ví dụ
e#

ename

dept_name

dept_addr

class

10

Peter

Math

G16

2nd

20

Joan

CS

G15

1st

30

Mike
...
Phụ thuộc hàm
- Hệ tiên đề cho phụ thuộc hàm

• Hệ tiên đề Armstrong
– R(U,F), U = (A1,…, An), X, Y, Z ⊆ U.

Hệ tiên đề Ar...
Phụ thuộc hàm
- Hệ tiên đề cho phụ thuộc hàm (tt)

• Bổ đề 2 (quy tắc suy diễn bổ sung)
– (1) (Q.T. hợp) : nếu X  Y, X  ...
Phụ thuộc hàm
- Bao đóng của tập thuộc tính

• Định nghĩa:
F là tập phụ thuộc hàm trên tập thuộc tính U, X ⊆ U.
Bao đóng c...
Phụ thuộc hàm
- Bao đóng của tập thuộc tính (tt)

• Nhận xét:
– X ⊆ X+
∀A ∈ X thì A ∈ X+
– Nếu Y = Ai1Ai2…Aik và X→Y, từ t...
Phụ thuộc hàm
- Bao đóng của tập thuộc tính (tt)

• Thuật toán tìm bao đóng của một tập thuộc tính:
Vào: R(U,F), X ⊆ U, Ra...
Phụ thuộc hàm
- Bao đóng của tập thuộc tính (tt)
• Ví dụ:
R = ABCDEG và tập phụ thuộc hàm F như sau:
F = {AB→C
C →A
BC →D
...
Nội dung phần IV
• Lý thuyết thiết kế CSDL
• Phụ thuộc hàm
–
–
–
–

Định nghĩa
Pth được suy dẫn lôgic từ F
Hệ tiên đề cho ...
Khóa
- Định nghĩa khóa

• Siêu khóa (super key)
– Siêu khóa là một tập con X khác rỗng các thuộc tính
của lược đồ quan hệ ...
Khóa
- Định nghĩa khóa (tt)

• Định nghĩa khóa của LĐQH dựa trên tập PTH.
– Cho R(U,F),
– K ⊂ U đgl khóa của lược đồ quan ...
Khóa
- Định nghĩa khóa (tt)

• Khóa chính (primary key)
– Khóa chính là một khóa tối tiểu được người phân tích
chọn để cài...
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
Upcoming SlideShare
Loading in …5
×

13929219602082.ppt

659 views

Published on

  • Be the first to comment

13929219602082.ppt

  1. 1. Tài liệu tham khảo – [1]. Bài giảng lý thuyết cơ sở dữ liệu – Khoa Tin học – ĐHSP Huế – [2]. Hồ Thuần, Hồ Cẩm Hà, Các hệ cơ sở dữ liệu – lý thuyết và thực hành tập 1, 2, NXBGD 2004-2005 – [3]. Trường ĐH Tôn Đức Thắng, Tóm tắt bài giảng môn Cơ sở dữ liệu. – [4]. Pham Hữu Khang, Lập trình ứng dụng chuyên nghiệp SQL server 2000. – [5]. Date C.J., An introduction to database systems, seventh edition Addison. Wesley, 2000. – [6]. Jeffrey A.Hoffer , Modern Database Management, 2000 – [7]. Jeffrey D. Ullman, Nguyên lý các hệ cơ sở dữ liệu và cơ sở tri thức, Biên dịch: Trần Đức Quang tập 1,2, NXB Thống kê, 1999. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 1
  2. 2. Phần I MÔ HÌNH DỮ LIỆU QUAN HỆ Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 2
  3. 3. Nội dung phần I • Các định nghĩa: – – – – – Mở đầu Các khái niệm: thuộc tính, miền giá trị Mô hình quan hệ Lược đồ quan hệ, lược đồ CSDL Khóa của lược đồ quan hệ • Đại số quan hệ • Bài tập phần I Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 3
  4. 4. Các định nghĩa - Mở đầu maSoSV ngaySinh diemTB mucHBg Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000 Ti05023 Nguyễn Mỹ Truyền 20-02-1987 8.2 180.000 Ti05027 Phạm Thu Hoa 23-05-1987 8.5 180.000 Ti05006 • hoTenSV Phạm Thu Hường 23-06-1987 7.8 120.000 Bảng lưu thông tin về xếp loại học bổng của SV. Ở bảng này, ta có: – maSoSV, hoTenSV, ngaySinh, mucHBg được gọi là các thuộc tính, – {9.0, 8.2, 8.5, 7.8…} chính là miền giá trị của thuộc tính diemTB. – Một dòng trong bảng: Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000 đgl một bộ. Bảng có tên là HOCBONG đgl một quan hệ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 4
  5. 5. Các định nghĩa - Mở đầu (tt) • Cho tập hữu hạn các phần tử U = {A1, A2, … An}. tập U được gọi là tập các thuộc tính. Mỗi phần tử Ai- của tập U có một miền giá trị tương ứng, ta ký hiệu là D(Ai). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 5
  6. 6. Các định nghĩa – Thuộc tính Thuộc tính (attribute, arity) – Là các đặc trưng của đối tượng • Vd: BTQL điểm thi của sinh viên, với đối tượng sinh viên ta cần phải chú ý đến các đặc trưng riêng như: họ tên, ngày sinh, học bổng, tỉnh, lớp mà sinh viên theo học… các thuộc tính. – được phân biệt bằng tên gọi – phải thuộc vào một kiểu dữ liệu nhất định (số, chuỗi, ngày tháng, lôgic, hình ảnh…). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 6
  7. 7. Các định nghĩa – Thuộc tính Thuộc tính (attribute, arity) (tt) – Lưu ý: • trong cùng một đối tượng không được có hai thuộc tính cùng tên. – Thông thường mỗi thuộc tính chỉ chọn lấy giá trị trong một tập con của kiểu dữ liệu  miền giá trị của thuộc tính đó. • Ví dụ điểm thi của sinh viên chỉ là các số nguyên từ 0 đến 10. – Thường dùng các chữ cái hoa A, B, C để biểu diễn các thuộc tính, hoặc A1, …, An để biểu diễn một số lượng lớn các thuộc tính. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 7
  8. 8. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu • Lược đồ quan hệ (Relation) – là tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với những mối liên hệ giữa chúng. – Sau này ta thường nói là cho lược đồ quan hệ R trên tập thuộc tính U, ký hiệu R(U), hoặc R(A1,…,An). – Vd: ta có LĐQH sinh viên (đặt tên là SV) với các thuộc tính như sau: SV(maSoSV, hoTenSV, ngaySinh, diemTB, mucHbg) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 8
  9. 9. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu • Lược đồ quan hệ (Relation) (tt) - Một LĐQH có một ý nghĩa gọi là tân từ của LĐQH - Ví dụ: với lược đồ quan hệ SV trên ta có tân từ như sau: - Mỗi sinh viên có một mã số duy nhất, mỗi mã số xác định tất cả các thuộc tính của sinh viên đó như họ tên, ngày sinh, mức học bổng… Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 9
  10. 10. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Nhiều lược đồ quan hệ cùng nằm trong một hệ thống quản lý được gọi là một lược đồ CSDL. • Ví dụ lược đồ CSDL để quản lý điểm của sinh viên có thể gồm những lược đồ quan hệ sau: SV(maSV, hotenSV, ngaySinh, maLop, tinh, hocBong) Lop(maLop, tenLop, siSo, maKhoa) Khoa(maKhoa, tenKhoa, soCB) MonHoc(maMH, tenMH, soTiet) KetQua(maSV, maMH, diemThi) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 10
  11. 11. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Nhận xét: – khi nói cho tập thuộc tính U = {A1, A2…, An} ta coi như cho trước lược đồ quan hệ (LĐQH) và cùng với nó ta có quan hệ rỗng r = ∅. – Khi lược đồ được nạp thêm ít nhất một dòng thì ta có một quan hệ khác rỗng. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 11
  12. 12. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Định nghĩa quan hệ (relation): – Là sự thể hiện của LĐQH ở một thời điểm. – Cụ thể, một quan hệ r trên LĐQH R là một tập con của tích Descartes (Đề các) của các miền giá trị D(Ai) với i = 1…n. – Một cách hình thức, r là một QH trên tập thuộc tính U nếu: r ⊂ D(A1) x D(A2) x … x D(An) với D(Ai) là miền giá trị của thuộc tính Ai. – Ví dụ: • Bảng 2.1 lưu trữ hồ sơ sinh viên là một quan hệ, với U = {maSoSV, hoTenSV, ngaySinh, diemTB, mucHbg}. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 12
  13. 13. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Nhận xét: – Quan hệ r là một bảng hai chiều: • trên cột thứ i là các giá trị của D(Ai), • trên mỗi dòng của bảng là bộ n giá trị của các miền giá trị của các thuộc tính Ai. Một dòng chứa thông tin về một đối tượng và gọi là một bộ (phần tử) của quan hệ. – Trên một LĐQH có thể xây dựng được nhiều QH khác nhau, cứ thay đổi một dòng hoặc một cột ta được một QH mới. – Lưu ý: • Với cách nhìn của tập hợp việc thêm vào một dòng (cột) giống với dòng (cột) đã có thì QH không thay đổi. Đồng thời thứ tự của các dòng (cột) không quan trọng. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 13
  14. 14. Các định nghĩa – Lược đồ QH, Lược đồ CSDL (tt) ma hoten nsinh donvi luong phucap thuong 01 Minh 1965 K.CNTT 800 50 100 02 Đông 1946 K. toán 700 122 48 03 Long 1954 K. lý 1.500 100 90 04 Kiên 1956 K. hóa 1.900 150 75 05 Đại 1958 K. văn 3.000 60 80 • Ví dụ: Cho U = {ma, hoten, donvi, nsinh, luong, phucap, thuong} và quan hệ r trên lược đồ R(U) như trên: – Quan hệ r ở trên có năm phần tử. Mỗi phần tử là một bộ 7 giá trị (còn gọi là 7-bộ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 14
  15. 15. Các định nghĩa (tt) • Lưu ý: – Về sau không cần quan tâm đến bản chất nội tại của mô hình quan hệ, đôi khi để cho tiện ta ký hiệu các thuộc tính bằng các chữ cái in hoa A, B, C và tập các thuộc tính bằng X, Y, Z, còn các giá trị cụ thể của miền giá trị của chúng bằng các chữ cái thường a, b, c… Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 15
  16. 16. Các định nghĩa - Lược đồ và thể hiện của CSDL • Toàn bộ mô tả CSDL được gọi là lược đồ CSDL (database schema). Tương ứng với ba mức trừu xuất dữ liệu nói trên có ba loại lược đồ: – Ở mức cao nhất ta có nhiều lược đồ ngoài (còn gọi là lược đồ con) cho những cách nhìn dữ liệu khác nhau của những người sử dụng khác nhau. – Ở mức logic ta có lược đồ logic. – Ở mức thấp nhất ta có lược đồ vật lý. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 16
  17. 17. Các định nghĩa - Lược đồ và thể hiện của CSDL (tt) • Toàn bộ dữ liệu lưu trữ trong CSDL tại một thời điểm nhất định được gọi là một thể hiện của CSDL (database instance).  Nhiều thể hiện của CSDL có thể tương ứng với cùng một lược đồ CSDL. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 17
  18. 18. Các định nghĩa - Lược đồ và thể hiện của CSDL (tt) Khung nhìn 2 Khung nhìn 1 MaNV Hodem Ten Tuoi Luong MaNV Ngay_sinh Tuoi Ten Ma_chi_nhanh Mức logic MaNV Hodem Ten Luong Ma_chi_nhanh Struct NHANVIEN{ int MaNV; int Ma_chi_nhanh; char Hodem[15]; char Ten[15]; Mức vật lý struct date Ngay_sinh; float Luong; struct NHANVIEN next; /* con trỏ đến bản ghi tiếp của tệp NHANVIEN*/ }; Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 18
  19. 19. Đại số quan hệ - Giới thiệu • Đại số quan hệ – là phương pháp để mô hình hóa các phép toán để thao tác trên CSDL quan hệ. – là ưu điểm của mô hình dữ liệu quan hệ (tiếp cận các kết quả của công cụ toán học trong việc xây dựng ngôn ngữ khai thác, xử lý dữ liệu). – các phép toán của đại số quan hệ khá đơn giản, những nó khá mạnh và là một đại số có tính đầy đủ, phi thủ tục. – là một cơ sở cho việc thiết lập các ngôn ngữ con dữ liệu bậc cao hơn. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 19
  20. 20. Đại số quan hệ - Giới thiệu (tt) • Để định nghĩa các phép toán đại số quan hệ, trước hết chúng ta có một số khái niệm sau: – hai quan hệ r1, r2 là tương thích với nhau nếu chúng có cùng tập thuộc tính U. Và r1, r2 được gọi là hai quan hệ rời nhau nếu chúng không có thuộc tính chung. – Khái niệm xếp cạnh nhau: Giả sử cho bộ t = (a1, a2,…, an), u = (b1, b2, …, bm) ta có: 〈t,u〉 = (a1, a2,…, an, b1, b2, …, bm) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 20
  21. 21. Đại số quan hệ - Các phép toán – Phép chọn • Phép chọn (Selection): ký hiệu σ – Phép chọn được dùng để xây dựng một tập con các bộ của quan hệ đã cho thỏa mãn một điều kiện cho trước. Điều kiện C được biểu diễn bởi một biểu thức lôgic trả về giá trị True/False. – Kết quả của phép chọn trên quan hệ r với điều kiện C được ký hiệu là σC(r). σ C(r) = {t / t ∈ r, C(t) = True} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 21
  22. 22. Đại số quan hệ - Các phép toán – Phép chọn (tt) – Biểu thức lôgic C được tạo thành từ các biểu thức có dạng: 〈tên thuộc tính〉 〈toán tử so sánh〉 〈giá trị hằng〉 hoặc 〈tên thuộc tính〉 〈toán tử so sánh〉 〈tên thuộc tính〉, – trong đó ∀ 〈tên thuộc tính〉 là tên của một thuộc tính thuộc R ∀ 〈toán tử so sánh〉 là các toán tử thông thường {=, <, ≤, >, ≥, ≠} ∀ 〈giá trị hằng〉 là một giá trị trong miền thuộc tính. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 22
  23. 23. Đại số quan hệ - Các phép toán – Phép chọn (tt) • Ví dụ: Trên quan hệ HOCBONG, – phép chọn σ (DiemTB≥9.0)(HOCBONG) sau: ta có kết quả như maSoSV hoTenSV Ngaysinh ĐiemTB MucHBg Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000 • Lưu ý: – Toán tử so sánh trong tập {=, <, ≤, >, ≥, ≠} chỉ áp dụng được cho những thuộc tính có MGT có thứ tự. Nếu miền thuộc tính ko có thứ tự, khi đó toán tử so sánh có thể áp dụng chỉ là tập {=, ≠}. – Các toán tử chọn có tính giao hoán, cụ thể: σ <C1>(σ <C2>(R)) = σ <C2>(σ <C1>(R)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 23
  24. 24. Đại số quan hệ - Các phép toán – Phép chọn (tt) • Cho các lược đồ quan hệ sau: – SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc) • Mỗi sinh viên có Mã số duy nhất, họ tên, quê quán và học lực – DETAI (MaDT, TenDT, Chunhiem, Kinhphi) • Mỗi đề tài có Mã số duy nhất, tên đề tài, chủ nhiệm đề tài, kinh phí thực hiện đề tài (đơn vị tính: triệu đồng) – SV_DT (MaSV, MaDT, NoiAD, KQ) • Mỗi SV có thể thực hiện một hoặc nhiều ĐT: mã số sinh viên, mã đề tài, nơi áp dụng, kết quả thực hiện đề tài • Ta có cơ sở dữ liệu mẫu được cho như sau: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 24
  25. 25. Đại số quan hệ - Các phép toán – Phép chọn (tt) Ví dụ: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 25
  26. 26. Đại số quan hệ - Các phép toán – Phép chọn (tt) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 26
  27. 27. Đại số quan hệ - Các phép toán – Phép chọn (tt) Vd: Tìm những SV sinh trước 1984 và quê ở Đồng Tháp: σ (Namsinh<1984 ^ QQ='Đồng Tháp') Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT (SINHVIEN) 27
  28. 28. Đại số quan hệ - Các phép toán – Phép chiếu • Phép chiếu (Projection): Ký hiệu π – Cho r là một quan hệ trên lược đồ quan hệ R(U), X ⊆ U, khi đó πX(r) = {t[X] / t ∈ r} trong đó t[X] là giá trị bộ t trên tập thuộc tính X. Vd: phép chiếu π MasoSV,DiemTB(HOCBONG) ta có kết quả sau: maSoSV diemTb Ti05020 9.0 Ti05023 8.2 Ti05027 8.5 Ti05006 7.8 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 28
  29. 29. Đại số quan hệ - Các phép toán – Phép chiếu • Nhận xét: – Để thực hiện phép chiếu 1QH trên một tập thuộc tính thực hiện 2 thao tác: • Giữ lại các thuộc tính trong tập X • Chọn bộ đại diện trong các bộ giống nhau. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 29
  30. 30. Đại số quan hệ - Các phép toán – Phép chiếu • Ví dụ: Xem lại CSDL – Tìm họ tên, năm sinh của những sinh viên có quê quán ở Cần Thơ ∏ Hoten, Namsinh(σ (QQ='Cần thơ')(SINHVIEN)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 30
  31. 31. Đại số quan hệ - Các phép toán – Phép chiếu • Ví dụ: Xem lại CSDL – Tìm mã số, tên của những đề tài do thầy Lê Đức Phúc chủ nhiệm có kinh phí từ 10tr trở lên.  ∏ MaDT, TenDT(σ (Chunhiem='Lê Đức Phúc' ^ Kinhphi >= 10)(DETAI)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 31
  32. 32. Đại số quan hệ - Các phép toán • Phép tích Descartes – Tích Descartes của hai quan hệ chỉ xét trên hai LĐQH rời nhau. – Cho hai lược đồ R1, R2 tương ứng với hai tập thuộc tính: U1 = {A1, A2,…,An} U2 = {B1, B2,…,Bm} với U1 ∩ U2 = ∅ – Giả sử r, s là hai QH trên R1, R2 tương ứng, khi đó: • Tích Descartes của r và s ký hiệu r × s là quan hệ gồm các (n+m)_bộ trên lược đồ R1 ∪ R2, theo thứ tự, sao cho mỗi bộ này có n thành phần đầu là một bộ thuộc r và m thành phần sau là bộ thuộc s. r × s = {t/ t = 〈t1, t2〉, t1 ∈ r, t2 ∈ s)} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 32
  33. 33. Đại số quan hệ - Các phép toán Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 33
  34. 34. Đại số quan hệ - Các phép toán – Phép kết nối • Phép kết nối – Cho θ là một trong các phép so sánh sau: =, >,<, ≠, ≥, ≤. – r là một quan hệ xác định trên tập thuộc tính (A1, A2, …, An) và s là một quan hệ trên tập thuộc tính (B1, B2,…,Bm). – Kết quả của phép kết nối quan hệ r với quan hệ s theo điều kiện Ai θ Bj được ký hiệu: r ⋈ Ai θ Bj s = {〈t,u〉/ t ∈ r, u ∈ s và t[Ai] θ u[Bj]} • giả thiết mỗi giá trị thuộc dom(Ai) và mỗi giá trị thuộc dom(Bj) có thể so sánh được qua phép θ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 34
  35. 35. Đại số quan hệ - Các phép toán – Phép kết nối (tt) – Nếu θ là “=” thì phép kết nối được gọi là kết nối bằng. – Nếu kết nối bằng tại thuộc tính trùng tên của hai quan hệ r, s  phép kết nối tự nhiên và ký hiệu là r ∗ s (hoặc r ⋈ s) cho kết quả của nó. • một trong hai thuộc tính đó được loại bỏ khỏi kết quả – Ví dụ: Tìm tên những đề tài được áp dụng ở Đồng Tháp và cho biết họ tên của những sinh viên thực hiện tương ứng. π TenDT, Hoten(σ(NoiAD='Đồng Tháp')(SINHVIEN * SV_DT * DETAI)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 35
  36. 36. Đại số quan hệ - Các phép toán – Phép kết nối (tt) • Ví dụ: r A B C a1 b1 b2 b 2 2 f1 3 f2 3 a3 F 1 a2 s D r ⋈C>=Ds A B C D F a2 b2 3 2 f1 a2 b2 3 3 f2 • Ý nghĩa: a3 b 2 2 f1 – Phép kết nối được dùng để kết hợp hai bộ có liên quan nhau thuộc hai quan hệ khác nhau thành một bộ mới. – nói cách khác, phép kết nối cho phép xử lý mối liên quan giữa các quan hệ trong một CSDL. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 36
  37. 37. Đại số quan hệ - Các phép toán – Phép hợp • Phép hợp – Hợp của hai quan hệ tương thích r1, r2 ký hiệu r1 ∪ r2 là một quan hệ trên U gồm các phần tử thuộc r1 hoặc r2. r1∪ r2 = {t: t ∈ r1 hoặc t ∈ r2} • Ví dụ: Cho 2 LĐQH sau: Canbo(Maso, Hoten, Ngsinh, QQ, Hs_luong) Giangvien(Maso, Hoten, Ngaysinh, QQ, Hs_luong) - In ra danh sách gồm: mã số và họ tên của tất cả các cán bộ và giảng viên: ∏Maso, Hoten(Canbo U Giảngviên) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 37
  38. 38. Đại số quan hệ - Các phép toán – Phép giao • Phép giao – Giao của hai quan hệ tương thích r1, r2 ký hiệu r1 ∩ r2 là một quan hệ trên U gồm các bộ vừa thuộc r1 vừa thuộc r2. r1∩ r2 = {t: t ∈ r1 và t ∈ r2} – Vd: In ra mã sinh viên và họ tên của những sinh viên vừa thực hiện đề tài "DT001" vừa thực hiện đề tài "DT005” ∏MaSV, Hoten(σ(MaDT='DT001')(SINHVIEN * SV_DT )) ∩ ∏MaSV, Hoten(σ(MaDT='DT005')(SINHVIEN * SV_DT )) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 38
  39. 39. Đại số quan hệ - Các phép toán – Phép hiệu • Phép hiệu – Hiệu của hai quan hệ tương thích r và s ký hiệu là r - s, là một quan hệ gồm tất cả các bộ thuộc r nhưng không thuộc s. r – s = {t: t ∈ r và t ∉ s} – Ví dụ: In ra mã sinh viên và họ tên của những sinh viên không thực hiện đề tài có nơi áp dụng ở Vĩnh Long ∏MaSV, Hoten(SINHVIEN) ∏MaSV, Hoten(∏ MaDT(σ(Noi_AD='Vinh Long')(SV_DT))*SINHVIEN* SV_DT) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 39
  40. 40. Đại số quan hệ - Các phép toán Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 40
  41. 41. Đại số quan hệ - Các phép toán • Phép chia – Cho lược đồ quan hệ R(A1, A2, …, An), S là lược đồ con của R. Giả sử r và s là các quan hệ trên R và S tương ứng. Phép chia của quan hệ r cho quan hệ s, ký hiệu r ÷ s là quan hệ trên lược đồ R – S gồm các (n-m)_bộ t sao cho tồn tại bộ ts ∈ s mà t ghép với ts ta được bộ thuộc r. r ÷ s = {t: ∃ts ∈ s và 〈t, ts〉 ∈ r} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 41
  42. 42. Bài tập phần I • Cho các lược đồ quan hệ sau: • Hanghoa(MaHG, TenHG, DVT, Dongia, Cohang) – Mỗi mặt hàng có một mã số duy nhất có tên hàng, đơn vị tính, đơn giá và hàng có còn trong kho hay không (Cohang = 0 nếu hết hàng, Cohang = 1 nếu còn hàng) • Khach(MaKH, Hoten, Diachi, Daily) – Mỗi khách hàng có một mã số duy nhất, họ tên, địa chỉ và khách có phải là đại lý hay khách hàng lẻ (Daily = 1 nếu khách là đại lý, Daily = 0 nếu khách là khách mua bán lẻ) • Hoadon(SoHD, Ngaylap, Ngaygiao, Trigia, MaKH) – Mỗi hóa đơn có một số hóa đơn duy nhất, ngày lập, trị giá hóa đơn, ngày giao hàng và giao cho khách hàng nào • Chitiet_HD(SoHD, MaHG, Soluong, Giaban) – Lưu thông tin chi tiết của hóa đơn bao gồm số HĐ, mã hàng, số lượng bán và giá bán của mặt hàng đó. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 42
  43. 43. Bài tập phần I (tt) • Viết các biểu thức đại số quan hệ cho các câu hỏi sau: – – – – Cho biết Mã số và tên của các mặt hàng còn trong kho Cho biết họ tên và địa chỉ của các khách hàng là đại lý Cho biết trị giá của những hóa đơn lập vào ngày 12/05/2007 Cho biết họ tên, địa chỉ của các khách hàng lẻ mua hàng vào ngày 15/01/2007 – In ra thông tin gồm mã số, tên hàng và đơn vị tính của các mặt hàng được các khách hàng ở Đồng Tháp mua vào ngày 15/12/2006 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 43
  44. 44. Bài tập phần I (tt) – In ra mã số, tên của các mặt hàng thuộc các hóa đơn có trị giá lớn hơn 1000 – Cho biết tên của những mặt hàng chưa từng được bán – Cho biết mã số, tên của những đại lý không mua hai mặt hàng “H001” và “H002” – Tìm tên của những mặt hàng vừa được mua bởi các đại lý ở Vĩnh Long vừa được mua bởi các khách hàng lẻ ở Trà Vinh. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 44
  45. 45. Phần II NGÔN NGỮ SQL Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 45
  46. 46. Nội dung chương III • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 46
  47. 47. Sơ lược về hệ QTCSDL SQL Server 2000 • SQL server 2000: – Là một hệ quản trị cơ sở dữ liệu quan hệ phổ biến hiện nay. – Có thể lưu trữ được dữ liệu rất lớn – Tính bảo mật cao – Hỗ trợ việc sao lưu dữ liệu dự phòng mạnh • Transact - SQL (T-SQL): – Là ngôn ngữ SQL mở rộng dựa trên chuẩn ANSI – T-SQL gồm các nhóm:· • Data Definition Language (DDL): ngôn ngữ định nghĩa dữ liệu • Data Manipulation Language (DML): ngôn ngữ xử lý dữ liệu Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 47
  48. 48. Các kiểu dữ liệu trong SQL • Kiểu dữ liệu là một thuộc tính, nó chỉ định kiểu của dữ liệu và dung lượng có thể lưu trữ của một đối tượng • SQL Server hỗ trợ một số kiểu dữ liệu được cài sẵn như sau: Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 48
  49. 49. Các kiểu dữ liệu trong SQL (tt) int - sử dụng 4 byte trong bộ nhớ máy tính. - thường được dùng để lưu trữ giá trị số nguyên smallint -sử dụng 2 byte trong bộ nhớ máy tính. - lưu trữ các số nguyên từ -32768 đến 32767. Tinyint -Chiếm 1byte trong bộ nhớ -Có giá trị từ 0 đến 255 Exact numbers Bigint - Sử dụng 8bytes trong bộ nhớ máy tính -lưu trữ các số nguyên từ -263(-223372036854775807) đến 263-1 numeric(p,d) -Kiểu số với độ chính xác cố định -Biểu diễn số gồm p chữ số và 1 dấu chấm, có d chữ số bên phải dấu chấm thập phân money -sử dụng 8 byte trong bộ nhớ máy tính. -Biểu diễn giá trị dữ liệu tiền tệ từ (-263/10000) đến (263-1). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 49
  50. 50. Các kiểu dữ liệu trong SQL (tt) float(n) - sử dụng 8 byte trong bộ nhớ máy tính. - Biểu diễn các số dấu chấm động từ -1.79E+308 đến 1.79E+308 real - sử dụng 4 byte trong bộ nhớ máy tính. - biểu diễn các số dấu chấm động có độ chính xác từ -3.4E+38 đến 3.4E+38 datetime - Biểu diễn ngày và giờ - Được lưu trữ như là 2 số integer, chiếm 2 bytes, chính xác đến phần trăm của giây. smalldateti me - Biểu diễn ngày và giờ - Chính xác đến phút Approximat e numerics Date time and Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 50
  51. 51. Các kiểu dữ liệu trong SQL (tt) char - Lưu trữ dữ liệu ký tự, độ dài có thể thay đổi và không hỗ trợ Unicode - Lưu trữ dữ liệu chuỗi, độ dài lớn và không hỗ trợ Unicode ntext - Lưu trữ dữ liệu ký tự, độ dài lớn và có hỗ trợ Unicode nchar - Lưu trữ dữ liệu ký tự, được cố định kích thước và có nvarchar Unicode Types varchar text Character String - Lưu trữ dữ liệu ký tự, được cố định kích thước và không hỗ trợ Unicode - Lưu trữ dữ liệu ký tự, độ dài có thể thay đổi và có hỗ trợ Unicode Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 51
  52. 52. Nội dung chương III • • • Giới thiệu sơ lược HQT CSDL SQL Server Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 52
  53. 53. Tạo cơ sở dữ liệu • Sử dụng cú pháp sau để tạo một cơ sở dữ liệu trong SQL: – CREATE DATABASE <tên csdl> • Ví dụ: Tạo cơ sở dữ liệu QLHH: – CREATE DATABASE QLHH • Sử dụng câu lệnh sau để mở và sử dụng cơ sở dữ liệu: – USE <tên csdl> – Vd: USE QLHH Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 53
  54. 54. Tạo bảng - Khái niệm bảng • Bảng dùng để lưu trữ các thông tin của một đối tượng trong thực tế – Gồm có dòng và cột – Bảng trong CSDL thường có khoá chính – Các bảng thường liên hệ với nhau bằng các mối quan hệ • Bảng trong CSDL SQL Server (2005) có thể có các ràng buộc, trigger Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 54
  55. 55. Tạo bảng - các thuộc tính của bảng • Tên bảng • Tên cột • Kiểu dữ liệu – Độ dài dữ liệu – Số ký số lưu trữ – Số số lẻ lưu trữ • Thuộc tính trên cột – Allow null – Identity – Default value Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 55
  56. 56. Tạo bảng Cú pháp: CREATE TABLE <tên bảng>( <tên cột 1><kiểu dữ liệu>[CONSTRAINT<tên 1>], ( <tên cột 2><kiểu dữ liệu>[CONSTRAINT<tên 2>], …. ( <tên cột n><kiểu dữ liệu>[CONSTRAINT<tên n>] [,CONSTRAINT <tên 1>][, CONSTRAINT <tên 2>] … [,CONSTRAINT <tên n>] ); Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 56
  57. 57. Tạo bảng (tt) • Trong đó, cú pháp khai báo của các ràng buộc toàn vẹn như sau: – [CONSTRAINT <tên RBTV>] NULL|NOT NULL| UNIQUE[(<tên cột i>,<tên cột j>…)]| PRIMARY KEY[(<tên cột i>,<tên cột j>…)]| FOREIGN KEY [[(<tên cột i>,<tên cột j>…)] REFERENCES <tên bảng>(<tên cột i>,<tên cột j>…)| CHECK (<điều kiện>) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 57 57
  58. 58. Tạo bảng (tt) • Ví dụ: Tạo bảng với lược đồ quan hệ sau: HANGHOA (MaHG, TenHG, DVT) • Mã hàng hóa là khóa chính, tên hàng và đơn vị tính. Tất cả không được rỗng. Create Table Hanghoa( MaHG varchar(10) Not Null Primary key, TenHG nvarchar(50) Not Null, DVT varchar(5) Not Null ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 58
  59. 59. Tạo bảng – Cột được phép null • Đặc trưng về khả năng null của một cột quyết định các hàng trong bảng có thể chứa giá trị null cho cột đó. • Khả năng Null của một cột có thể được định nghĩa khi tạo một bảng. – Từ khóa NULL được sử dụng để chỉ ra rằng giá trị null là được phép trong cột – Từ khóa NOT NULL được sử dụng để chỉ ra rằng giá trị null là không được phép Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 59
  60. 60. Tạo bảng – Cột được phép null • Ví dụ: CREATE TABLE Nhanvien( manv char(5) NOT NULL, tennv nvarchar(30), manqly char(5) NULL Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 60
  61. 61. Tạo bảng – Định nghĩa DEFAULT • Ràng buộc default có thể được tạo ra tại thời điểm tạo bảng hoặc thêm sau khi bảng được tạo. • Với một cột, chỉ có thể tạo được một giá trị default. • Giá trị default có thể là một hằng, một hàm hệ thống, một biến toàn cục, hoặc một hàm do người dùng định nghĩa. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 61
  62. 62. Tạo bảng - Định nghĩa DEFAULT (tt) • Định nghĩa default trong khi tạo bảng: CREATE TABLE <tên bảng> <tên cột> <KDL> [NULL|NOT NULL] [CONSTRAINT <tên ràng buộc>] DEFAULT <biểu thức> Ví dụ: CREATE TABLE StoreProduct( ProductID int NOT NULL, Name varchar(40) NOT NULL, Price money NOT NULL DEFAULT (100) ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 62
  63. 63. Tạo bảng - Định nghĩa DEFAULT (tt) • Định nghĩa default đối với một bảng đã tồn tại: ALTER TABLE <tên bảng> ADD [CONSTRAINT <tên ràng buộc>] DEFAULT <biểu thức> FOR <tên cột> Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 63
  64. 64. Tạo bảng - Thuộc tính IDENTITY • Thuộc tính IDENTITY của SQL Server được sử dụng để tạo ra các cột nhận dạng, chúng chứa các giá trị tự động phát sinh tuần tự để nhận dạng duy nhất mỗi hàng trong một bảng. • Một thuộc tính nhận dạng có hai thành phần: – Giá trị khởi đầu – Giá trị tăng Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 64
  65. 65. Tạo bảng - Thuộc tính IDENTITY (tt) • Cú pháp: • CREATE TABLE <table_name> (column_name data_type [ IDENTITY [(seed_value, increment_value)]] NOT NULL ) – Trong đó, - seed_value là giá trị khởi đầu . – - increment_value là giá trị tăng. • Ví dụ: CREATE TABLE ContactPhone ( Person_ID int IDENTITY(500,1) NOT NULL, MobileNumber bigint NOT NULL ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 65
  66. 66. Tạo bảng – Ràng buộc • Ràng buộc là thuộc tính được chỉ định cho một cột hoặc một tập hợp các cột trong bảng để ngăn ngừa các giá trị không nhất quán được nhập vào. • SQL Server hỗ trợ các loại ràng buộc sau: – – – – – PRIMARY KEY UNIQUE FOREIGN KEY CHECK NOT NULL Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 66
  67. 67. Tạo bảng – Ràng buộc - Primary Key (Khoá chính) • Ràng buộc PRIMARY KEY được sử dụng để tạo một khóa chính và đảm bảo toàn vẹn thực thể bảng. • Cú pháp để thêm một khóa chính trong khi tạo bảng: • CREATE TABLE <tên bảng> ( <tên cột> cột] ) <kiểu dữ liệu> PRIMARY KEY [ds • CREATE TABLE <tên bảng> ( <tên cột> <kdl> [ds cột] CONSTRAINT <tên RB> PRIMARY KEY) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 67
  68. 68. Tạo bảng – Ràng buộc - Primary Key (Khoá chính) (tt) • Ví dụ: Tạo bảng PhongBan với khóa chính là maphong CREATE TABLE PhongBan ( maphong int navarchar(20), PRIMARY KEY,tenphong trphong char(5), diadiem nvarchar(20) ) Hoặc có thể viết như sau: CREATE TABLE PhongBan ( maphong int constraint pk_pb PRIMARY KEY, tenphong nvarchar(20), trphong char(5), diadiem nvarchar(20)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 68
  69. 69. Tạo bảng – Ràng buộc - UNIQUE - Khóa duy nhất • Ràng buộc khóa duy nhất: – được sử dụng để bảo đảm rằng chỉ các giá trị duy nhất được nhập vào trong cột hoặc một tập hợp các cột ( cho phép nhà phát triển chắc chắn rằng không có các giá trị trùng lặp được nhập vào) – Được sử dụng trong câu lệnh create table để định nghĩa khóa phụ cho bảng – Ràng buộc UNIQUE cho phép null Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 69
  70. 70. Tạo bảng – Ràng buộc - UNIQUE - Khóa duy nhất (tt) • Cú pháp: – CREATE TABLE <tên bảng> ([ds cột, ] <tên cột> <kdl> [CONSTRAINT <tên RB>]UNIQUE [,ds cột]) • Ví dụ: CREATE TABLE KhachHang ( makh int PRIMARY KEY, tenkh nvarchar(30), diachi nvarchar(30), sodt char(10) UNIQUE ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 70
  71. 71. Tạo bảng – Ràng buộc - Khóa ngoại (foreign key) • Một khóa ngoại trong một bảng là một cột, nó chỉ đến một khóa chính trong một bảng khác • Ràng buộc khóa ngoại được sử dụng để đảm bảo toàn vẹn tham chiếu • Cú pháp: – CREATE TABLE <tên bảng 1>( [ds cột,] <tên cột> <kdl> [CONSTRAINT <tên RB>]FOREIGN KEY REFERENCES <tên bảng 2>(cột làm khóa chính> [, ds cột]) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 71
  72. 72. Tạo bảng – Ràng buộc - Khóa ngoại (foreign key) • Ví dụ: CREATE TABLE Nhanvien( manv char(5) NOT NULL, tennv nvarchar(30), manqly char(5), phong int foreign key PhongBan(maphong) ) references • Hoặc có thể viết như sau: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 72
  73. 73. Tạo bảng – Ràng buộc - Khóa ngoại (foreign key) • Ví dụ: (tt) • Hoặc có thể viết như sau: CREATE TABLE Nhanvien( manv char(5) NOT NULL,tennv nvarchar(30), manqly char(5), phong int constraint fk_nv_pb foreign key(phong) references PhongBan(maphong) ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 73
  74. 74. Tạo bảng – Ràng buộc - Ràng buộc kiểm tra (Check) • Ràng buộc check – Được sử dụng để chỉ định điều kiện hợp lệ đối với dữ liệu • Cú pháp: – CREATE TABLE <Tên bảng>( [ds cột,] <tên cột> <kdl> [CONSTRAINT <tên RB>] CHECK (<điều kiện>) • Ví dụ: Create table KetQua( masv int, mamh char(4), diem float, lanthi int check(lanthi<3) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 74
  75. 75. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 75
  76. 76. Câu lệnh cập nhật dữ liệu (SV) • Là câu lệnh dùng để cập nhật dữ liệu. • Bao gồm các câu lệnh: INSERT, UPDATE, DELETE. – Lệnh thêm dữ liệu vào bảng: INSERT INTO <Tên bảng> [(<DS các trường>)] VALUES (<DS các giá trị tương ứng>) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 76
  77. 77. Câu lệnh cập nhật dữ liệu (tt) (SV) – Lệnh thêm dữ liệu vào bảng: (tt) – Vd: MON (MaMH, TenMH, DVHT) Thêm vào bảng MON với mã môn TH345, tên môn Cơ sở dữ liệu, đơn vị học trình là 5 INSERT INTO MON dữ liệu',5) VALUES ('TH345', 'Cơ sở Hoặc: INSERT INTO MON (MaMH, TenMH, DVHT) VALUES('TH345', 'Cơ sở dữ liệu',5) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 77
  78. 78. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý: – Thêm ký tự N trước chuỗi Unicode • Ví dụ: insert into values(‘NV01’,N’Nguyễn ‘Nam’) văn NhanVien Trường’, – Thuộc tính NOT NULL • Nếu thuộc tính được khai báo là NOT NULL thì bắt buộc phải có giá trị khi nhập 1 bộ vào bảng Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 78
  79. 79. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý (tt) – Nhập dữ liệu khi đã có ràng buộc khóa ngoại • Trường hợp 1: – Cách 1: • B1: Nhập PHONGBAN • B2: Nhập DEAN – Cách 2: • B1: Nhập DEAN, nhập phong = null • B2: Nhập PHONGBAN • B3: Cập nhật DEAN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 79
  80. 80. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý (tt) – Nhập dữ liệu khi đã có ràng buộc khóa ngoại • Trường hợp 2: – Cách 1: • B1: Nhập NHANVIEN, đặt phong = null • B2: Nhập PHONGBAN • B3: Cập nhật thuộc tính phong của NHANVIEN – Cách 2: • B1: Nhập PHONGBAN, đặt trphong = null • B2: Nhập NHANVIEN • B3: Cập nhật PHONGBAN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 80
  81. 81. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý (tt) – Nhập dữ liệu khi đã có ràng buộc khóa ngoại • Trường hợp 3: – Cách 1: • Những nhân viên có manql là null thì nhập trước • Sau đó nhập những nhân viên mà đã nhập thông tin người quản lý nhân viên đó. – Cách 2: • B1: Nhập NHANVIEN đặt manql = null • B2: Cập nhật manql của NHANVIEN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 81
  82. 82. Câu lệnh cập nhật dữ liệu (tt) (SV) - Lệnh Update, Delete • Lệnh cập nhật dữ liệu trong bảng: UPDATE <Tên bảng> SET <Tên trường1> <GT1>,...., <Tên trườngN> <GTN> [WHERE <điều kiện>] = = • Vd: Cập nhật số DVHT cho môn học 'TH345' tăng 1 UPDATE MON SET DVHT = DVHT WHERE MaMH = 'TH345' Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT + 1 82
  83. 83. Câu lệnh cập nhật dữ liệu (tt) (SV) - Lệnh Update, Delete • Lệnh xóa dữ liệu khỏi bảng: DELETE FROM kiện chọn>] <Tên bảng> [WHERE <điều • Vd: Xóa các môn học có số DVHT nhỏ hơn 2 DELETE FROM MON WHERE DVHT < 2 • Lưu ý: Câu lệnh delete chỉ xóa dữ liệu của bảng, cấu trúc bảng tạo bởi câu lệnh create table vẫn được giữ nguyên. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 83
  84. 84. Các lệnh về thay đổi cấu trúc bảng - Thêm, xóa, sửa một cột (thuộc tính) (SV) • Thêm một cột vào bảng có sẵn – Cú pháp ALTER TABLE <tên bảng> ADD <tên cột 1> <kdl1>[,<tên cột 2> <kdl2>, ...] – Ví dụ: Thêm cột ngaysinh vào bảng NhanVien ALTER TABLE NhanVien ADD ngaysinh datetime Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 84
  85. 85. Các lệnh về thay đổi cấu trúc bảng - Thêm, xóa, sửa một cột (thuộc tính) (tt) (SV) • Chỉnh sửa cột trong bảng – Cú pháp ALTER TABLE <table_name> ALTER COLUMN <tên cột 1> <kdl1> [,<tên cột 2> <kdl2> ...] – Ví dụ: Sửa cột tennv trong bảng NhanVien thành cột có kiểu dữ liệu là nvarchar(20) ALTER TABLE NhanVien ALTER column tennv nvarchar(20) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 85
  86. 86. Các lệnh về thay đổi cấu trúc bảng - Thêm, xóa, sửa một cột (thuộc tính) (tt) (SV) • Xóa cột trong bảng – Cú pháp ALTER TABLE <table_name> DROP COLUMN <column_name1> [,<column_name2> – Ví dụ: Xóa cột diadiem trong bảng PhongBan ALTER TABLE PhongBan DROP COLUMN diadiem Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 86
  87. 87. Thêm ràng buộc khóa chính • Thêm RB khóa chính – Cú pháp ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> PRIMARY KEY (<DS các cột làm khóa chính>) - Ví dụ: Thêm khóa chính cho bảng KetQua ALTER TABLE KetQua ADD CONSTRAINT pk_kq PRIMARY KEY(masv,mamh) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 87
  88. 88. Thêm ràng buộc khóa ngoại • Thêm RB khóa ngoại – Cú pháp ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> FOREIGN KEY (<DS các cột làm khóa ngoại>) REFERENCES <tên bảng tham chiếu>(<ds cột>) - Ví dụ: Thêm RB khóa ngoại cho bảng KetQua ALTER TABLE KetQua ADD CONSTRAINT fk_kq_sv FOREIGN KEY(masv) REFERENCES SinhVien(masv) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 88
  89. 89. Thêm ràng buộc kiểm tra (check) • Thêm RB kiểm tra – Cú pháp ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> CHECK(<điều kiện>) - Ví dụ: Thêm RB kiểm tra đảm bảo thuộc tính phai trong bảng NhanVien chỉ nhận giá trị “nam” hoặc “nữ” ALTER TABLE NhanVien ADD CONSTRAINT ck_phai CHECK(phai in (‘nam’,’nu’)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 89
  90. 90. Xóa ràng buộc khóa chính, khóa ngoại, check • Cú pháp ALTER TABLE <tên bảng> DROP CONSTRAINT <tên RB> - Ví dụ: - Xóa RB kiểm tra trong bảng NhanVien ALTER TABLE NhanVien DROP CONSTRAINT ck_phai - Xóa RB khóa ngoại trong bảng KetQua ALTER TABLE KetQua DROP CONSTRAINT fk_kq_sv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 90
  91. 91. Ví dụ tổng hợp • Tạo csdl QLDT gồm các lược đồ sau: – SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc) – DETAI (MaDT, TenDT, Chunhiem, Kinhphi) – SV_DT (MaSV, MaDT, NoiAD, KQ) • Ta có các câu lệnh SQL sau: Create database QLDT Use QLDT Create table SinhVien( masv int primary nvarchar(30), namsinh datetime, qq hocluc float) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT key, hoten nvarchar(20), 91
  92. 92. Ví dụ tổng hợp Create table DeTai( madt int primary key, tendt nvarchar(30), chunhiem nvarchar(30), kinhphi int) Create table SV_DT( masv int foreign key references SinhVien(masv), madt int foreign key references DeTai(madt), noiAD nvarchar(20), kq float, constraint pk_svdt primary key(masv,madt)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 92
  93. 93. Bài tập • Cho lược đồ csdl quản lý hàng hóa như sau: – – – – HangHoa(MaHG, TenHG, DVT, Dongia, Cohang) Khach(MaKH, Hoten, Diachi, Daily, sodienthoai) HoaDon(SoHD, Ngaylap, Ngaygiao, Trigia, MaKH) Chitiet_HD(SoHD, MaHG, Soluong, Giaban) • Thực hiện các công việc sau: – 1. Viết câu lệnh để tạo tất cả các bảng dựa vào các LĐQH trên (có đầy đủ RB khóa chính, khóa ngoại và not null). – 2. Trong bảng Khach, viết câu lệnh sửa cột diachi thành nvarchar(30), giả sử trước đó cột này có kiểu char(20). – 3. Viết câu lệnh kiểm tra RB trên bản Chitiet_HD. – 4. Viết câu lệnh không kiểm tra RB trên bảng HoaDon. – 5. Thêm RB kiểm tra cho thuộc tính cohang trong bang HangHoa là 0 hoặc 1. – 6. Thêm RB duy nhất cho thuộc tính sodienthoai trong bảng Khach. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 93
  94. 94. Cơ sở dữ liệu ví dụ • Trong suốt phần sau của chương này, ta sử dụng csdl sau làm ví dụ minh họa: – NhanVien(manv, honv, tenlot, tennv, ngaysinh, diachi, phai, luong, manql, phong) – PhongBan(maphong,tenphong,trphong, ngnhanchuc) – DDPhong(maphong, diadiem) – DeAn(tenda, mada, ddiemda, phong) – PhanCong(manvien, soda, thoigian) – ThanNhan(manvien, tentn, phai, ngaysinh, quanhe) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 94
  95. 95. Truy vấn dữ liệu • Là ngôn ngữ rút trích dữ liệu – Thường đi kèm với một số điều kiện nào đó • Dựa trên Phép toán ĐSQH + Một số bổ sung – Cho phép kết quả trả về của bảng có nhiều dòng trùng nhau Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 95
  96. 96. Truy vấn cơ bản • Gồm 3 mệnh đề SELECT [DISTINCT] <danh sách các cột> FROM <danh sách các bảng> [WHERE] <điều kiện> Từ khóa DISTINCT để loại bỏ các dòng trùng nhau trong bảng kết quả – <danh sách các cột>: • Tên các cột cần được hiển thị trong kết quả truy vấn – <danh sách các bảng> • Tên các bảng liên quan đến câu truy vấn – <điều kiện> • • • Biểu thức boolean xác định dòng nào sẽ được rút trích Nối các biểu thức: AND, OR, và NOT Phép toán: < , > , <=, >=, <>, =, LIKE và BETWEEN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 96
  97. 97. Truy vấn cơ bản (tt) • SQL và ĐSQH π × SELECT <danh sách các cột> FROM <danh sách các bảng> σ WHERE <điều kiện> SELECT L πL (σC (R)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT FROM R WHERE C 97
  98. 98. Truy vấn cơ bản (tt) • Ví dụ: Cho biết ds sinh viên lớp có mã lớp là ‘Ti01’ SELECT * Dấu * để chỉ tất cả các cột FROM SinhVien WHERE malop = ‘Ti01’ – Tương đương với biểu thức đsqh sau: σ malop = ‘Ti01’ (SinhVien) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 98
  99. 99. Truy vấn cơ bản (tt) • Ví dụ: Cho biết ds sinh viên nam của lớp có mã ‘Ti01’ SELECT masv, hoten, ngaysinh, phai, malop FROM SinhVien WHERE malop = ‘Ti01’ and phai = ‘Nam’ – Tương đương với biểu thức đsqh sau:  ∏ masv, hoten, ngaysinh, phai, malop (σ malop = ‘Ti01’and phai=‘Nam’ (SinhVien)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 99
  100. 100. Truy vấn cơ bản (tt) • Tên bí danh: – Có thể đặt lại tên cho ds các thuộc tính trong bảng kết quả (gọi là tên bí danh) bằng cách sử dụng cú pháp sau: Select <tên cột> AS <tên mới cho cột> – Ví dụ SELECT masv AS ma, hoten AS ‘Ho ngaysinh, phai, malop FROM SinhVien WHERE malop = ‘Ti01’ and phai = ‘Nam’ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT ten’, 100
  101. 101. Truy vấn cơ bản (tt) • Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của danh sách sinh viên lớp ‘công nghệ thông tin 01’ SELECT maso, hoten, ngaysinh, tenlop FROM SinhVien, LopHoc WHERE tenlop = ‘Cong nghe thong tin 01’ AND SinhVien.malop = LopHoc.malop Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 101
  102. 102. Truy vấn cơ bản (tt) • Tên bí danh cho bảng – Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của danh sách sinh viên lớp ‘công nghệ thông tin 01’ Select From Where maso, hoten, ngaysinh, tenlop SinhVien sv, LopHoc lh tenlop = =‘Cong nghe thong tin 01’ and sv.malop = lh.malop Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 102
  103. 103. Truy vấn cơ bản (tt) - Toán tử between, not between, like, not like • BETWEEN – Sử dụng để kiểm tra giá trị dữ liệu nằm trong (ngoài) một khoảng nào đó. SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG > 20000 AND LUONG < 30000 • Có thể viết: SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG BETWEEN 20000 AND 30000 • Sử dụng NOT BETWEEN tương tự Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 103
  104. 104. Truy vấn cơ bản (tt) - Toán tử between, not between, like, not like • LIKE – Từ khóa LIKE (NOT LIKE) được sử dụng trong câu lệnh select nhằm mô tả khuôn dạng dữ liệu cần tìm kiếm. – Thường được kết hợp với các ký tự đại diện sau: • %: chuỗi ký tự bất kỳ (có thể là không có hoặc nhiều ký tự) • _: ký tự đơn bất kỳ • []: ký tự đơn bất kỳ trong giới hạn được chỉ định (ví dụ [a-f]) hay một tập (ví du: [abcdef]) • [^]: ký tự đơn bất kỳ không nằm trong giới hạn được chỉ định (ví dụ [^a-f]) hay một tập (ví dụ [^abcdef]). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 104
  105. 105. Truy vấn cơ bản (tt) - Toán tử between, not between, like, not like • LIKE (tt) – Ví dụ: SELECT masv, hoten, ngaysinh FROM SinhVien WHERE hoten LIKE ‘Nguyen _ _ _ _’ – Hoặc SELECT masv, hoten, ngaysinh FROM SinhVien WHERE hoten LIKE ‘Nguyen %’ • Sử dụng NOT LIKE tương tự – Lưu ý: • Like “ab%cd%” cho ra những chuỗi bắt đầu với “ab%cd” • Like “abcd%” cho ra những chuỗi bắt đầu với “abcd” Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 105
  106. 106. Truy vấn cơ bản (tt) - Ví dụ • Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã phòng ban chủ trì đề án, họ tên trưởng phòng cùng với ngày sinh và địa chỉ của người ấy Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 106
  107. 107. Truy vấn cơ bản (tt) - Ví dụ • Cho biết họ tên của nhân viên phòng số 5 có tham gia vào đề án “Sản phẩm X” với số giờ làm việc trên 10 giờ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 107
  108. 108. Truy vấn cơ bản - Mệnh đề ORDER BY • Dùng để hiển thị kết quả câu truy vấn theo một thứ tự nào đó • Cú pháp: SELECT <ds các cột> FROM <ds các bảng> WHERE <điều kiện> ORDER BY <danh sách các cột><kiểu sắp> – Trong đó <kiểu sắp> có thể là: • ASC: tăng (mặc định) • DESC: giảm Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 108
  109. 109. Truy vấn cơ bản - Mệnh đề ORDER BY (tt) • Ví dụ: SELECT MANVIEN, SODA FROM PHANCONG ORDER BY MANVIEN DESC, SODA MANVIEN 99988777 7 99988777 7 98798798 7 98798798 7 98765432 1 98765432 1 98765432 1 SODA 10 30 10 30 10 20 30 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 109
  110. 110. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 110
  111. 111. Truy vấn lồng • Các câu lệnh SELECT có thể lồng nhau ở nhiều mức • Các câu truy vấn con trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic • Câu truy vấn con thường trả về một tập các giá trị • Cú pháp: SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <so sánh tập hợp> ( SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 111
  112. 112. Truy vấn lồng (tt) • Mệnh đề WHERE của câu truy vấn cha – <biểu thức> <so sánh tập hợp> <truy vấn con> – So sánh tập hợp thường đi cùng với một số toán tử • • • IN, NOT IN ALL ANY hoặc SOME – Kiểm tra sự tồn tại • • EXISTS NOT EXISTS Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 112
  113. 113. Truy vấn lồng (tt) • Có 2 loại truy vấn lồng – Lồng phân cấp • • Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha Khi thực hiện, câu truy vấn con sẽ được thực hiện trước, 1 lần – Lồng tương quan • • Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộ của truy vấn cha Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 113
  114. 114. Truy vấn lồng (tt) - Ví dụ lồng phân cấp • Ví dụ: SELECT MANV, TENNV FROM NHANVIEN, DDPhong WHERE DIADIEM = ‘TP HCM’ AND phong = maphong • Tương đương với câu truy vấn lồng sau: SELECT MANV, TENNV FROM NHANVIEN WHERE PHONG IN (SELECT MAPHONG FROM DDPHONG WHERE DIADIEM = ‘TP HCM’ ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 114
  115. 115. Truy vấn lồng (tt) - Ví dụ lồng phân cấp • Ví dụ: Tìm những nhân viên không có thân nhân nào Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 115
  116. 116. Truy vấn lồng (tt) - Ví dụ lồng tương quan • Ví dụ: SELECT MANV, TENNV FROM NHANVIEN WHERE EXISTS ( SELECT * FROM PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG)  Câu truy vấn trên cho kết quả gì? Tương đương với câu truy vấn đơn giản nào? SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 116
  117. 117. Truy vấn lồng (tt) - Ví dụ • Tìm nhân viên có người thân cùng tên và cùng giới tính với nhân viên đó Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 117
  118. 118. Truy vấn lồng (tt) - Ví dụ • Tìm những nhân viên có lương lớn hơn lương của ít nhất một nhân viên phòng 4 • Tìm những nhân viên có lương lớn hơn lương của tất cả nhân viên phòng 4 Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 118
  119. 119. Truy vấn lồng (tt) - Nhận xét • IN – <tên cột> IN <câu truy vấn con> – Thuộc tính ở mệnh đề SELECT của truy vấn con phải có cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE của truy vấn cha • EXISTS – Không cần có thuộc tính, hằng số hay biểu thức nào khác đứng trước – Không nhất thiết liệt kê tên thuộc tính ở mệnh đề SELECT của truy vấn con – Những câu truy vấn có = ANY hay IN đều có thể chuyển thành câu truy vấn có EXISTS Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 119119
  120. 120. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 120
  121. 121. Hàm kết hợp và gom nhóm • Hàm kết hợp: – Được sử dụng trong mệnh đề SELECT – Có các hàm kết hợp sau: • COUNT – COUNT(*) đếm số dòng – COUNT(<tên thuộc tính>) đếm số giá trị khác NULL của thuộc tính – COUNT(DISTINCT <tên thuộc tính>) đếm số giá trị khác nhau và khác NULL của thuộc tính – MIN • MAX • SUM • AVG Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 121
  122. 122. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Tìm tổng lương, lương cao nhất, lương thấp nhất và lương trung bình của các nhân viên – Select sum(luong) as ‘tong luong’, min(luong) as ‘luong nho nhat’, max(luong) as ‘luong lon nhat’, avg(luong) as ‘luong tb’ From NhanVien – Cho biết số lượng nhân viên của phòng ‘Nghien cuu’ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 122
  123. 123. Hàm kết hợp và gom nhóm (tt) • Gom nhóm: – Nhóm các bộ có cùng giá trị ở một tập các thuộc tính lại với nhau – Cú pháp: SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> GROUP BY <danh sách các cột gom nhóm> Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 123
  124. 124. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Cho biết số lượng nhân viên của từng phòng ban – Cho biết thông tin của những phòng ban có nhiều hơn 10 nhân viên Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 124
  125. 125. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Với mỗi nhân viên cho biết mã số, họ tên, số lượng đề án và tổng thời gian mà họ tham gia SELECT HONV, TENNV, COUNT(*) AS SL_DA,SUM(THOIGIAN) AS TONG_TG FROM PHANCONG, NHANVIEN WHERE MANVIEN=MANV GROUP BY MA_NVIEN, HONV, TENNV – Cho biết những nhân viên tham gia từ 2 đề án trở lên Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 125
  126. 126. Hàm kết hợp và gom nhóm (tt) • Cú pháp: SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> GROUP BY <danh sách các cột gom nhóm> HAVING <điều kiện trên nhóm> • Ví dụ: Cho biết những nhân viên tham gia từ 2 đề án trở lên Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 126
  127. 127. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Cho biết những phòng ban (TENPHONG) có lương trung bình của các nhân viên lớn lơn 20000 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 127
  128. 128. Hàm kết hợp và gom nhóm (tt) - Nhận xét • Mệnh đề GROUP BY – Các thuộc tính trong mệnh đề SELECT (trừ những thuộc tính trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP BY • Mệnh đề HAVING – Sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra một số điều kiện nào đó – Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên từng bộ – Sau khi gom nhóm điều kiện trên nhóm mới được thực hiện Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 128
  129. 129. Hàm kết hợp và gom nhóm (tt) - Nhận xét • Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING – (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề WHERE – (2) Những dòng này sẽ được gom thành nhiều nhóm tương ứng với mệnh đề GROUP BY – (3) Áp dụng các hàm kết hợp cho mỗi nhóm – (4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề HAVING – (5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 129
  130. 130. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Tìm phòng ban có lương trung bình cao nhất – Tìm 3 nhân viên có lương cao nhất – Tìm tên các nhân viên được phân công làm tất cả các đồ án Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 130
  131. 131. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 131
  132. 132. Điều kiện kết ở mệnh đề FROM • Thông thường điều kiện của phép kết nối được chỉ định trong mệnh đề where của câu truy vấn. • Chuẩn SQL2 đưa ra một cách khác để biểu diễn cho phép nối. Trong cách biểu diễn này: – Điều kiện của phép kết nối được chỉ định ngay trong mệnh đề From. – Ưu điểm: Cho phép biểu diễn phép nối và điều kiện nối rõ ràng (đặc biệt trong trường hợp phép nối được thực hiện từ 3 bảng trở lên) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 132
  133. 133. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối bằng (kết nối trong) – Cú pháp: SELECT FROM <biểu WHERE <danh sách các cột> R1 [INNER] JOIN R2 ON thức> <điều kiện> Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 133
  134. 134. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối bằng (kết nối trong) - Ví dụ: Hiển thị họ tên và ngày sinh, tên lớp của ds sinh viên lớp ‘Cong nghe thong tin 01’ có thể viết theo 2 cách sau: select From Where hoten, ngaysinh, tenlop SinhVien, LopHoc SinhVien.malop = LopHoc.malop and tenlop = ‘Cong nghe thong tin 01’ - Hoặc có thể viết: select hoten, ngaysinh, tenlop From SinhVien INNER JOIN LopHoc ON SinhVien.malop = LopHoc.malop Where tenlop = ‘Cong nghe thong tin 01’ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 134
  135. 135. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Cú pháp: SELECT <danh sách các cột> FROM R1 LEFT|RIGHT|FULL [OUTER] JOIN R2 ON <biểu thức> WHERE <điều kiện> – Ví dụ: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 135
  136. 136. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Ví dụ: ta có 2 bảng NhanVien và DonVi như sau: • Khi đó, phép kết nối ngoài trái 2 bảng trên cho kết quả sau: select * from NhanVien left join DonVi on NhanVien.madv = DonVi.madv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 136
  137. 137. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Ví dụ: ta có 2 bảng NhanVien và DonVi như sau: • Phép kết nối ngoài phải 2 bảng trên cho kết quả sau: select * from NhanVien right join DonVi on NhanVien.madv = DonVi.madv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 137
  138. 138. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Ví dụ: ta có 2 bảng NhanVien và DonVi như sau: • Phép kết nối ngoài đầy đủ 2 bảng trên cho kết quả sau: select * from NhanVien full join DonVi on NhanVien.madv = DonVi.madv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 138
  139. 139. Điều kiện kết ở mệnh đề FROM (tt) • Ví dụ: – Tìm mã và tên các nhân viên làm việc tại phòng ‘Nghien cuu’ – Cho biết họ tên nhân viên và tên phòng ban mà họ là trưởng phòng nếu có Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 139
  140. 140. Điều kiện kết ở mệnh đề FROM (tt) • Ví dụ: – Tìm họ tên các nhân viên và tên các đề án nhân viên tham gia nếu có Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 140
  141. 141. Một số dạng câu truy vấn khác • SV tự tìm hiểu Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 141
  142. 142. BÀI TẬP PHẦN II • Cho lược đồ csdl QLBanHang được mô tả như sau: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 142
  143. 143. BÀI TẬP PHẦN II (tt) • Thực hiện các yêu cầu sau bằng SQL – – – – – – – – Tạo csdl và tạo các bảng, nhập dữ liệu cho các bảng trong csdl Cho biết mã và tên của các mặt hàng có giá lớn hơn 10 và số lượng hiện có ít hơn 20 Cho biết thông tin những khách hàng nào đã mua mặt hàng áo Việt Tiến Cho biết thông tin những mặt hàng nào chưa từng được khách hàng đặt mua? Cho biết tổng số lượng bán được của mỗi mặt hàng Bổ sung ràng buộc cho bảng DONDATHANG rang buộc kiểm tra ngày giao hàng và ngày chuyển hàng phải sau hoặc bằng với ngày đặt hàng. Cho biết thông tin những khách hàng có cùng ngày sinh Thống kê số lượng hóa đơn đã lập của mỗi nhân viên Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 143
  144. 144. Phần III RÀNG BUỘC TOÀN VẸN Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 144
  145. 145. CSDL mẫu • A) CSDL HSSINHVIEN – SINH_VIEN(maSV, maKhoa) hotenSV, nam, ngSinh, • maSV: mã số sinh viên • Nam = true nếu sinh viên là nam và = false nếu là nữ; maKhoa: mã số khoa mà sinh viên đang theo học. - KHOA(maKhoa, tenKhoa, soCB) • soCB: tổng số cán bộ giảng dạy của khoa. – MON_HOC(maMH, tenMH, soTietLT, soTietTH) • soTietLT, soTietTH là tổng số tiết lý thuyết và tổng số tiết thực hành của môn học. – KET_QUA(maSV, maMH, lanThi, diem) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 145
  146. 146. CSDL mẫu (tt) • B) CSDL QLHANGHOA QL. đơn hàng và hóa đơn giao hàng của một cty thương mại. – KHACH(maKH, congNo) tenKh, diachiKH, dienThoai, • congNo: công nợ với khách hàng, nếu congNo > 0: khách hàng nợ công ty và ngược lại. – HANG_HOA(maHH, tenHH, dvTinh) – DAT_HANG(soDH, maHH, soLuongDat, ngayDH, maKH) • soDH: mã số của của đơn đặt hàng, một đơn đặt hàng có thể gồm nhiều mặt hàng. maHH: mã số của h.hóa mà k.hàng cần đặt mua. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 146
  147. 147. CSDL mẫu (tt) – HOA_DON(soHD, ngayXuat) ngayHD, soDH, trigiaHD, • soHD: mã số của hóa đơn bán hàng cho khách. Một hóa đơn bán hàng có thể gồm nhiều mặt hàng. • ngayHD: ngày phát hành hóa đơn • soDH: hóa đơn bán hàng theo yêu cầu của một đơn đặt hàng có mã số là soDH và ngược lại, mỗi đơn đặt hàng sẽ được giải quyết chỉ trong một hóa đơn. Do điều kiện khách quan, có thể cty ko giao đầy đủ các mặt hàng cũng như số lượng từng mặt hàng như yêu cầu trong đơn đặt hàng nhưng ko bao giờ giao vượt ngoài yêu cầu. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 147
  148. 148. CSDL mẫu (tt) – CTIET_HD(soHD, maHH, giaBan, soLuongBan) (chi tiết những mặt hàng bán được cho khách hàng) • soHD: mã số của hóa đơn bán hàng cho khách • maHH: mã số của hàng hóa bán cho khách theo yêu cầu của đơn đặt hàng. – PHIEU_THU(soPT, ngayPT, maKH, soTien) • soPT: mã số phiếu thu tiền của khách hàng; khách hàng có thể trả tiền không theo một hóa đơn bán hàng nào cả và cũng có thể trả tiền trước khi nhận hàng xem như tiền đặt cọc. • ngayPT: ngày phát hành phiếu thu tiền • maKH: mã số khách hàng trả tiền • soTien: số tiền thu của khách hàng Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 148
  149. 149. CSDL mẫu (tt) • C) CSDL QLDEAN (đã xét ở chương 2) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 149
  150. 150. Ràng buộc toàn vẹn - Khái niệm • Trong một CSDL, – luôn tồn tại rất nhiều mối liên hệ, – rất nhiều sự ràng buộc qua lại giữa các thuộc tính, các bộ với nhau… – Các mối liên hệ, ràng buộc này là những điều kiện bất biến mà tất cả các bộ của những QH có liên quan trong CSDL đều phải thỏa mãn ở bất kỳ thời điểm nào. • RBTV là Những điều kiện bất biến mà các đối tượng của CSDL phải thỏa mãn ở bất kỳ thời điểm nào. • Trong thực tế, RBTV là các quy tắc quản lý được áp đặt lên trên các đối tượng của thế giới thực. 150 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT
  151. 151. Ràng buộc toàn vẹn - Khái niệm (tt) • Ví dụ: Trong CSDL HSSINHVIEN ta có một số RBTV như sau: • C1: Mỗi sinh viên có một mã số riêng biệt, không trùng với bất kỳ sinh viên nào khác. • C2: Mỗi sinh viên chỉ được thi tối đa hai lần cho một môn học. • C3: Mỗi sinh viên phải thuộc về một khoa nào đó. • Công việc kiểm tra RBTV có thể được tiến hành vào một trong các thời điểm sau: – ngay khi thực hiện một thao tác câp nhật CSDL (thêm, sửa, xóa…). – định kỳ hay đột xuất. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 151
  152. 152. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn • Một RBTV có ba yếu tố: điều kiện (nội dung), bối cảnh và tầm ảnh hưởng • Điều kiện của một RBTV – Ngôn ngữ tự nhiên • Dễ hiểu nhưng thiếu tính chặt chẽ – Ngôn ngữ hình thức: đại số quan hệ, mã giả (pseudo code) • Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu • Biểu diễn thông qua – Cũng có thể được biểu diễn bằng phụ thuộc hàm. (sẽ tìm hiểu sau này) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 152
  153. 153. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Ví dụ: Ràng buộc R1: – Ngôn ngữ tự nhiên • Mức lương của một người nhân viên không được vượt quá trưởng phòng – Ngôn ngữ hình thức ∀t ∈ NHANVIEN ( ∃u ∈ PHONGBAN ( ∃v ∈ NHANVIEN ( u.TRPHG = v.MANV ∧ u.MAPHG = t.PHG ∧ t.LUONG ≤ v.LUONG ))) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 153
  154. 154. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Ví dụ: ràng buộc R2: – Ngôn ngữ tự nhiên • Người quản lý trực tiếp phải là một nhân viên trong công ty – Ngôn ngữ hình thức ∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧ ∃s ∈ NHANVIEN (t.MA_NQL = s.MANV )) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 154
  155. 155. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn • Bối cảnh của một RBTV C: – là những quan hệ có khả năng bị vi phạm RBTV khi thực hiện các phép cập nhật. – có thể là một hay nhiều quan hệ. – Vd4: bối cảnh của RBTV C1 là quan hệ SinhVien. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 155
  156. 156. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Tầm ảnh hưởng của một RBTV – Nhằm xác định thời điểm cần kiểm tra các RBTV đó. – Bảng tầm ảnh hưởng của một RBTV C • Có 2 loại: – Bảng tầm ảnh hưởng cho một RBTV – Bảng tầm ảnh hưởng tổng hợp Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 156
  157. 157. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Bảng tầm ảnh hưởng của một RBTV (C) Thêm Sửa Xóa Quan hệ 1 + + + Quan hệ 2 – + – – + + … Quan hệ n +: cần phải kiểm tra RBTV C –: không cần kiểm tra RBTV C - Ví dụ: Bảng tầm ảnh hưởng của ràng buộc C1 Thêm SinhVien Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Sửa Xóa + –(*) – 157
  158. 158. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Bảng tầm ảnh hưởng tổng hợp Ràng buộc 1 … Ràng buộc m Thêm Sửa Xóa Thêm Sửa Xóa Quan hệ 1 - + - + + + Quan hệ 2 + - - – + – + + + – + + … Quan hệ n Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 158
  159. 159. Ràng buộc toàn vẹn - Phân loại • Các RBTV có thể được chia làm hai loại chính: – RBTV có bối cảnh là một quan hệ – RBTV có bối cảnh nhiều quan hệ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 159
  160. 160. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH • RBTV về miền giá trị – liên quan đến miền giá trị của các thuộc tính. • Ví dụ: trong LĐQH Ketqua ta có: Miền giá trị(Diem)=0..10 – phòng đào tạo quy định thêm một RBTV là: Điểm thi có độ chính xác đến 0.5 điểm, điều kiện ràng buộc này có thể được biểu diễn như sau: (t.Diem * 4) mod 2 = 0, ∀t ∈ Ketqua – trong quan hệ NHANVIEN(maNV,tenNV, luong, tamUng, conLai), ta có: RBTV về miền giá trị: tamUng ≤ luong Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 160
  161. 161. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH • RBTV về miền giá trị – Ví dụ: ràng buộc Thời gian tham gia đề án của một nhân viên không quá 60 giờ – Bối cảnh: • PHANCONG – Biểu diễn: ∀t ∈ PHANCONG ( t.THOIGIAN ≤ 60 ) – Bảng tầm ảnh hưởng: R3 PHANCON G Thêm + Xóa − Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM Sửa + (THOIGIAN) 161161
  162. 162. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên thuộc tính – thể hiện mối liên hệ giữa các thuộc tính trong cùng một lược đồ quan hệ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 162
  163. 163. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên thuộc tính – Vd: Trong LĐQH HoaDon, ta có một RBTV liên thuộc tính như sau: “Hàng hóa chỉ được xuất kho sau khi đã lập hóa đơn” ∀hd ∈ THOADON hd.ngayHD ≤ hd.ngayXuat – Lưu ý: MGT của một th.t A được tính toán từ các th.t khác trong cùng một LĐQH với A thì ta cũng có được một RBTV liên thuộc tính nhưng trong quá trình thiết kế ta có thể loại bỏ thuộc tính A ra khỏi LĐQH. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 163
  164. 164. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên bộ – Là sự ràng buộc giữa các bộ bên trong một quan hệ. – Thường được biểu diễn bằng phụ thuộc hàm. – là loại RBTV rất phổ biến, có mặt trong mọi LĐQH của CSDL và thường được các hệ quản trị CSDL hỗ trợ phần tự động kiểm tra. – Ví dụ: ràng buộc C1 thuộc loại ràng buộc toàn vẹn liên bộ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 164
  165. 165. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên bộ – Ví dụ: với ràng buộc Tên phòng là duy nhất – Bối cảnh: • PHONGBAN – Biểu diễn: ∀t1, t2 ∈ PHONGBAN ( t1≠ t2 ∧ t1.TENPHG ≠ t2.TENPHG ) – Bảng tầm ảnh hưởng: R5 PHONGBA N Thêm + Xóa − Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM Sửa + (TENPHG) 165165
  166. 166. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH • RBTV về phụ thuộc tồn tại – Còn được gọi là RB về khóa ngoại (foreign key) và rất phổ biến. Ví dụ: - a) Trong QH KetQua, sự tồn tại của một bộ kq = (msv, mon, lanthi, diem) ∈ KetQua hoàn toàn phụ thuộc vào sự tồn tại của bộ sv ∈ SinhVien sao cho sv.maSV = msv. – b) Trong QH SinhVien, sự tồn tại của bộ sv = (‘To012’, ‘Pham Anh Hoang’, ‘true’, ‘12/06/81’, ‘To’) hoàn toàn phụ thuộc vào sự tồn tại của một bộ k ∈ Khoa, k = (‘To’, ‘Toan’, 30). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 166
  167. 167. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • Giả sử có hai lược đồ quan hệ R1, R2. Hai tập hợp K1 và K2 lần lượt là các khóa của R1 và R2. Hai dấu hiệu của phụ thuộc tồn tại như sau: – (1) Nếu K1 ⊆ K2 thì ta có phụ thuộc tồn tại của R2 vào R1. – (2) Nếu K1 ⊆ R2 (tập thuộc tính của lược đồ quan hệ R2) thì ta có một phụ thuộc tồn tại của R2 vào R1. Tập hợp K1 gọi là khóa ngoại của R2. – Ví dụ: • Ở ví dụ trước a) là trường hợp ràng buộc với dấu hiệu (1) và b) là trường hợp ràng buộc với dấu hiệu (2). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 167
  168. 168. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV về liên bộ, liên quan hệ – có tác dụng đối với từng nhóm các bộ của nhiều quan hệ khác nhau. (thường là hai quan hệ) – Ví dụ: ràng buộc “mỗi hóa đơn bán hàng phải có ít nhất một mặt hàng” liên quan đến hai quan hệ, HoaDon và CtietHD trên hai lược đồ HOA_DON và CTIET_HD. • Lưu ý là hóa đơn được lập theo đơn đặt hàng, nhưng trong chi tiết hóa đơn mới biết được công ty bán cho khách hàng những mặt hàng nào. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 168
  169. 169. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV liên thuộc tính, liên quan hệ – Là mối liên hệ giữa các thuộc tính trong nhiều lược đồ quan hệ. • Ví dụ: – Xét hai QH DatHang va HoaDon của một thể hiện của CSDL, ta có RB: “Ngày làm hóa đơn in trên hóa đơn phải sau ngày đặt hàng (in trên đơn đặt hàng)” Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 169
  170. 170. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV về thuộc tính tổng hợp – được xác định trong trường hợp một thuộc tính A của một lược đồ quan hệ R được tính toán giá trị từ các thuộc tính của các lược đồ quan hệ khác. • Ví dụ: – Trong CSDL QLHANGHOA ta có RBTV: “số tiền công nợ của kh. A sẽ bằng hiệu số giữa tổng trị giá của các hóa đơn bán cho khách hàng A và tổng số tiền thu của khách đó” Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 170
  171. 171. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV do có chu trình trong đồ thị biểu diễn của lược đồ CSDL – Một lược đồ CSDL có thể được biểu diễn bằng một đồ thị vô hướng. Trong đó ta có hai loại nút: • nút thuộc tính và nút lược đồ quan hệ. • Một cung vô hướng trong đồ thị nối một nút thuộc tính A với một nút lược đồ quan hệ R có nghĩa A ∈ R. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 171
  172. 172. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • Ví dụ: – Xem xét một phần của đồ thị biểu diễn lược đồ CSDL QLHANGHOA gồm các lược đồ quan hệ DAT_HANG, HOA_DON và CTIET_HD. – Ở đây, ta thấy đồ thị biểu diễn lược đồ CSDL có chứa một chu trình gồm 3 LĐQH DAT_HANG, HOA_DON và CTIET_HD. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 172
  173. 173. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH ngayDH soDH ngayHD DAT_HANG HOA_DON maHH soHD CTIET_HD giaBan Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT sLuongBan 173
  174. 174. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • Trong trường hợp này lược đồ CSDL QLHANGHOA sẽ phải có một RBTV thỏa một trong ba trường hợp sau: – (1) Một hóa đơn thực hiện cho một đơn đặt hàng chỉ giao những mặt hàng mà khách đã yêu cầu và phải gồm đầy đủ tất cả những mặt hàng có trong đơn đặt hàng. – (2) Một hóa đơn thực hiện cho một đơn đặt hàng chỉ giao những mặt hàng mà khách đã yêu cầu và có thể không giao đầy đủ tất cả những mặt hàng có trong đơn đặt hàng. – (3) Một hóa đơn thực hiện cho một đơn đặt hàng có thể gồm tùy ý các mặt hàng dù có hay không trong đơn đặt hàng của khách. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 174
  175. 175. BÀI TẬP PHẦN III • Cho các lược đồ quan hệ sau: – SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc) • Mỗi sinh viên có Mã số duy nhất, họ tên, quê quán và học lực – DETAI (MaDT, TenDT, Chunhiem, Kinhphi) • Mỗi đề tài có Mã số duy nhất, tên đề tài, chủ nhiệm đề tài, kinh phí thực hiện đề tài (đơn vị tính: triệu đồng) – SV_DT (MaSV, MaDT, NoiAD, KQ) • Mỗi SV có thể thực hiện một hoặc nhiều ĐT: mã số sinh viên, mã đề tài, nơi áp dụng, kết quả thực hiện đề tài • Xác định và biểu diễn các yếu tố của tất cả các ràng buộc có thể có trong lược đồ csdl trên. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 175
  176. 176. Phần IV PHỤ THUỘC HÀM VÀ KHÓA Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 176
  177. 177. Nội dung Phần IV • Lý thuyết thiết kế CSDL • Phụ thuộc hàm – – – – Định nghĩa Pth được suy dẫn lôgic từ F Hệ tiên đề cho pth Bao đóng của tập thuộc tính • Khóa – Định nghĩa – Các thuật toán tìm khóa • Phủ tối thiểu (cực tiểu) của tập pth – Khái niệm pth tương đương – Tập pth tối thiểu – Thuật toán tìm phủ tối thiểu • Bài tập Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 177
  178. 178. Lý thuyết thiết kế CSDL • Làm thế nào để thiết kế CSDL cho tốt? – Xét ví dụ sau: S(S#, Sname, add, pro, price) S# TL01 Sname add Thiên Long Lý Thường Kiệt pro Price Dream TK03 Tân Kiều Lê Lợi Wave TK03 Tân Kiều Lê Lợi Serius PV01 Phước Vĩnh TK03 Tân Kiều Phạm Hữu Lầu Future neo Lê Lợi Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Atila 178
  179. 179. Lý thuyết thiết kế CSDL (tt) • Các vấn đề nảy sinh: – Dư thừa dữ liệu (redundancy): • Địa chỉ và tên NCC được lặp lại nhiều lần trong quan hệ – Không nhất quán (Inconsistency): • Ví dụ: Khi sửa đổi địa chỉ NCC ở một bộ nào đó còn bộ khác vẫn giữ nguyên  một NCC lại có hai địa chỉ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 179
  180. 180. Lý thuyết thiết kế CSDL (tt) • Các vấn đề nảy sinh: (tt) – Dị thường khi thêm bộ (Insertion anomalies): • Nếu một NCC chưa cung cấp một mặt hàng nào cả thì không thể đưa vào quan hệ vì thuộc tính pro và price NULL – Dị thường khi xóa bộ (deletion anomalies): • Không thể xóa tất cả các mặt hàng được cung cấp bởi một NCC vì mặt hàng đó có thể được cung cấp bởi các NCC khác. • Cách giải quyết: tách lược đồ ban đầu thành các LĐ phù hợp hơn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 180
  181. 181. Nội dung phần IV • Lý thuyết thiết kế CSDL • Phụ thuộc hàm – – – – Định nghĩa Pth được suy dẫn lôgic từ F Hệ tiên đề cho pth Bao đóng của tập thuộc tính • Khóa – Định nghĩa – Các thuật toán tìm khóa • Phủ tối thiểu (cực tiểu) của tập pth – Khái niệm pth tương đương – Tập pth tối thiểu – Thuật toán tìm phủ tối thiểu • Bài tập Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 181
  182. 182. Phụ thuộc hàm • Định nghĩa: – X xác định hàm Y hay Y phụ thuộc hàm vào X, ký hiệu XY nếu: Với ∀r quan hệ xây dựng trên R(U), với t1, t2 ∈ r: t1.X = t2.X ⇒ t1.Y = t2.Y (t.X: bộ t thu hẹp trên tập thuộc tính X) • Ví dụ: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 182
  183. 183. Phụ thuộc hàm - Ví dụ e# ename dept_name dept_addr class 10 Peter Math G16 2nd 20 Joan CS G15 1st 30 Mike CS G15 1st 40 Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st – FD: dept_name class – Các FD khác: dept_namedept_addr e#  ename e#  dept_name, dept_addr, class Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 183
  184. 184. Phụ thuộc hàm - Hệ tiên đề cho phụ thuộc hàm • Hệ tiên đề Armstrong – R(U,F), U = (A1,…, An), X, Y, Z ⊆ U. Hệ tiên đề Armstrong bao gồm: – (A1) (phản xạ) : nếu Y ⊆ X thì X  Y – (A2) (tăng trưởng) : nếu Z ⊆ U, X  Y thì ZX  ZY – (A3) (bắc cầu) : nếu X  Y và Y  Z thì X  Z • Bổ đề 1: – Hệ tiên đề Armstrong là đúng đắn. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 184
  185. 185. Phụ thuộc hàm - Hệ tiên đề cho phụ thuộc hàm (tt) • Bổ đề 2 (quy tắc suy diễn bổ sung) – (1) (Q.T. hợp) : nếu X  Y, X  Z thì X  YZ – (2) (Q.T. giả bắc cầu): nếu X  Y, WY  Z thì WX  Z, với W ⊆ U – (3) (Q.T. tách) : nếu X  Y, Z ⊆ Y thì X  Z • Các quy tắc này có thể dễ dàng chứng minh dựa vào hệ tiên đề Armstrong. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 185
  186. 186. Phụ thuộc hàm - Bao đóng của tập thuộc tính • Định nghĩa: F là tập phụ thuộc hàm trên tập thuộc tính U, X ⊆ U. Bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F, ký hiệu XF+, XF+ = {A ∈ U | (XA) ∈ F+ } • Là tập những thuộc tính A sao cho X  A được suy diễn từ F nhờ tập các quy tắc suy diễn Armstrong. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 186
  187. 187. Phụ thuộc hàm - Bao đóng của tập thuộc tính (tt) • Nhận xét: – X ⊆ X+ ∀A ∈ X thì A ∈ X+ – Nếu Y = Ai1Ai2…Aik và X→Y, từ tiên đề tách, ta có: X→Aij ∀j=1..k – Ý nghĩa: X+ chính là những thuộc tính phụ thuộc vào X. • Bổ đề 3: X  Y được suy diễn từ F nhờ hệ luật Armstrong khi và chỉ khi Y là tập con của bao đóng X đối với F, nghĩa là: F ⊢ Arm (X  Y) ⇔ Y ⊂ XF+ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 187
  188. 188. Phụ thuộc hàm - Bao đóng của tập thuộc tính (tt) • Thuật toán tìm bao đóng của một tập thuộc tính: Vào: R(U,F), X ⊆ U, Ra: X+ Phương pháp: – B1: Đặt X0 = X – B2: Với ∀i = 0,1,…, nếu tồn tại một FD V → W sao cho V ⊆ Xi ⇒ Xi+1 = Xi ∪ Aj ∀Aj ∈ W – B3: Dừng khi Xi = Xi+1 – Kết luận: X+ = Xi • Định lý: Hệ tiên đề Armstrong là đúng đắn và đầy đủ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 188
  189. 189. Phụ thuộc hàm - Bao đóng của tập thuộc tính (tt) • Ví dụ: R = ABCDEG và tập phụ thuộc hàm F như sau: F = {AB→C C →A BC →D ACD→B D→EG BE→C CG→BD CE→AG} X = BD, tính X+  – Đầu tiên ta có X0 = BD, để tìm X1 ta tìm những phụ thuộc hàm trong F có vế trái nằm trong BD, ta có PTH D→EG thỏa mãn điều kiện đó. – X1 = BDEG, tiếp tục để tìm X2 ta tìm những PTH có vế trái nằm trong BDEG, ta có BE→C, vậy X2 = BDEGC. – Tương tự như vậy ta có X3 = ABCDEG đây là tập X+ = (BD) + =R Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 189
  190. 190. Nội dung phần IV • Lý thuyết thiết kế CSDL • Phụ thuộc hàm – – – – Định nghĩa Pth được suy dẫn lôgic từ F Hệ tiên đề cho pth Bao đóng của tập thuộc tính • Khóa – Định nghĩa – Các thuật toán tìm khóa • Phủ tối thiểu (cực tiểu) của tập pth – Khái niệm pth tương đương – Tập pth tối thiểu – Thuật toán tìm phủ tối thiểu • Bài tập Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 190
  191. 191. Khóa - Định nghĩa khóa • Siêu khóa (super key) – Siêu khóa là một tập con X khác rỗng các thuộc tính của lược đồ quan hệ R sao cho với bất kỳ hai bộ t1, t2 trong quan hệ r ∈ R thì t1[X] ≠ t2[X] – X là siêu khóa trong R ⇔ X xác định hàm mọi thuộc tính của R: X U • Nói cách khác: siêu khóa xác định duy nhất một hàng trong bảng. • Khóa tối tiểu (minimal key – khóa) – Khóa tối tiểu K là siêu khóa kèm thêm tính chất là nếu loại khỏi K bất kỳ thuộc tính nào cũng làm cho K không còn là siêu khóa. • Khóa tối tiểu là siêu khóa nhỏ nhất Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 191
  192. 192. Khóa - Định nghĩa khóa (tt) • Định nghĩa khóa của LĐQH dựa trên tập PTH. – Cho R(U,F), – K ⊂ U đgl khóa của lược đồ quan hệ R(U,F) nếu K+ = U và bớt từ K dù một phần tử nào thì bao đóng của nó khác U. – K ⊂ U là khóa nếu: (1) K+ = U (K U ∈ F+) (2) (K - A)+ ≠ U, ∀A ∈K • Nhận xét: – Trong một quan hệ có thể có nhiều khóa và luôn tồn tại ít nhất một khóa. – Cho R(U), nếu U thỏa mãn hai điều kiện trên thì U là khóa. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 192
  193. 193. Khóa - Định nghĩa khóa (tt) • Khóa chính (primary key) – Khóa chính là một khóa tối tiểu được người phân tích chọn để cài đặt. • Khóa dự tuyển (candidate key) – Các khóa dự tuyển là các khóa tối tiểu khác mà không phải là khóa chính. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 193

×