SlideShare ist ein Scribd-Unternehmen logo
1 von 271
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
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 đồ 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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 ^ QQ='Đồng Tháp')

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

(SINHVIEN)

27
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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: =, >,<, ≠, ≥,
≤.
– 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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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 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
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
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
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
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ữ 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
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

142
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
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 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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinVõ Phúc
 
phân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tinphân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tinQuynh michelanh quynh
 
Chương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà SáchChương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà SáchBIC
 
Quản lý học sinh cấp 2
Quản lý học sinh cấp 2Quản lý học sinh cấp 2
Quản lý học sinh cấp 2laonap166
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm nataliej4
 
Phân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tinPhân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tinhuynhle1990
 
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...nataliej4
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồzDollz Lovez
 
UML mô hình khái niệm
UML mô hình khái niệmUML mô hình khái niệm
UML mô hình khái niệmNguyễn Phúc
 
Kiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webserviceKiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webserviceThuyet Nguyen
 
Phân tích và thiết kế HTTT
Phân tích và thiết kế HTTTPhân tích và thiết kế HTTT
Phân tích và thiết kế HTTTLy hai
 
Phan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tinPhan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tinNguyễn Duy Hưng
 
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịđồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịThanh Hoa
 
Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Hoa Le
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGThùy Linh
 

Was ist angesagt? (20)

Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
 
phân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tinphân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tin
 
Chương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà SáchChương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà Sách
 
Quản lý học sinh cấp 2
Quản lý học sinh cấp 2Quản lý học sinh cấp 2
Quản lý học sinh cấp 2
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm
 
Phân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tinPhân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tin
 
Đề tài: Quản lý nhập xuất vật tư tại công ty xây dựng Tiền Phong
Đề tài: Quản lý nhập xuất vật tư tại công ty xây dựng Tiền PhongĐề tài: Quản lý nhập xuất vật tư tại công ty xây dựng Tiền Phong
Đề tài: Quản lý nhập xuất vật tư tại công ty xây dựng Tiền Phong
 
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
 
UML mô hình khái niệm
UML mô hình khái niệmUML mô hình khái niệm
UML mô hình khái niệm
 
Kiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webserviceKiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webservice
 
Phân tích và thiết kế HTTT
Phân tích và thiết kế HTTTPhân tích và thiết kế HTTT
Phân tích và thiết kế HTTT
 
Phan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tinPhan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tin
 
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịđồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
 
Luận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAY
Luận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAYLuận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAY
Luận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAY
 
Ứng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoa
Ứng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoaỨng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoa
Ứng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoa
 
Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 
Báo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh HóaBáo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh Hóa
 
Danh Sách 200 Đề Tài Báo Cáo Thực Tập Công Nghệ Thông Tin, 9 Điểm
Danh Sách 200 Đề Tài Báo Cáo Thực Tập Công Nghệ Thông Tin, 9 ĐiểmDanh Sách 200 Đề Tài Báo Cáo Thực Tập Công Nghệ Thông Tin, 9 Điểm
Danh Sách 200 Đề Tài Báo Cáo Thực Tập Công Nghệ Thông Tin, 9 Điểm
 

Ähnlich wie 13929219602082.ppt

Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...
Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...
Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...BangNgoVanCong
 
Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1Vo Oanh
 
buoi2_MoHinhQuanHe.ppt
buoi2_MoHinhQuanHe.pptbuoi2_MoHinhQuanHe.ppt
buoi2_MoHinhQuanHe.pptTrngTun36
 
csdl - buoi5-6
csdl - buoi5-6csdl - buoi5-6
csdl - buoi5-6kikihoho
 
Chap03.ppsx
Chap03.ppsxChap03.ppsx
Chap03.ppsxTonMnh13
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệutrieulongweb
 
Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Hồ Lợi
 
Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5 Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5 NguynMinh294
 
Bai 1 mo hinh quan he
Bai 1 mo hinh quan heBai 1 mo hinh quan he
Bai 1 mo hinh quan hegianghuong091
 
[123doc] mo-hinh-thuc-the-moi-ket-hop
[123doc]   mo-hinh-thuc-the-moi-ket-hop[123doc]   mo-hinh-thuc-the-moi-ket-hop
[123doc] mo-hinh-thuc-the-moi-ket-hopMay Trang
 
W03_Thietkecosodulieulogic.pptx
W03_Thietkecosodulieulogic.pptxW03_Thietkecosodulieulogic.pptx
W03_Thietkecosodulieulogic.pptxHnginh10297
 

Ähnlich wie 13929219602082.ppt (20)

Chap03
Chap03Chap03
Chap03
 
Các mô hình dữ liệu
Các mô hình dữ liệuCác mô hình dữ liệu
Các mô hình dữ liệu
 
Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...
Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...
Mô hình dữ liệu quan hệ Các khái niệm của mô hình quan hệ Ràng buộc toàn vẹn ...
 
Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1
 
Chuong 3 ER
Chuong 3 ERChuong 3 ER
Chuong 3 ER
 
buoi2_MoHinhQuanHe.ppt
buoi2_MoHinhQuanHe.pptbuoi2_MoHinhQuanHe.ppt
buoi2_MoHinhQuanHe.ppt
 
C3 1
C3 1C3 1
C3 1
 
csdl - buoi5-6
csdl - buoi5-6csdl - buoi5-6
csdl - buoi5-6
 
Chap03.ppsx
Chap03.ppsxChap03.ppsx
Chap03.ppsx
 
Giaoandientu bai10lop12
Giaoandientu bai10lop12Giaoandientu bai10lop12
Giaoandientu bai10lop12
 
Csdl hdt
Csdl hdtCsdl hdt
Csdl hdt
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
 
Giaoandientu bai10lop12
Giaoandientu bai10lop12Giaoandientu bai10lop12
Giaoandientu bai10lop12
 
Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1
 
Final
FinalFinal
Final
 
Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5 Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5
 
Bai 1 mo hinh quan he
Bai 1 mo hinh quan heBai 1 mo hinh quan he
Bai 1 mo hinh quan he
 
[123doc] mo-hinh-thuc-the-moi-ket-hop
[123doc]   mo-hinh-thuc-the-moi-ket-hop[123doc]   mo-hinh-thuc-the-moi-ket-hop
[123doc] mo-hinh-thuc-the-moi-ket-hop
 
C2 1
C2 1C2 1
C2 1
 
W03_Thietkecosodulieulogic.pptx
W03_Thietkecosodulieulogic.pptxW03_Thietkecosodulieulogic.pptx
W03_Thietkecosodulieulogic.pptx
 

13929219602082.ppt

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. Đạ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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Đ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. Đ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. Đ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. Đ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. Đ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. Đ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. Đ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. Đ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. Đ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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

Hinweis der Redaktion

  1. fafdsfsfda
  2. Dfkaksdf skfdsakjfd
  3. Định nghĩa khác này tương đương với định nghĩa ban đầu, vì nếu X không là siêu khóa và A là thuộc tính không khóa suy ra sẽ tồn tại một khóa K sao cho KX, XA, khi đó A phụ thuộc bắc cầu vào K qua X.
  4. Định nghĩa khác này tương đương với định nghĩa ban đầu, vì nếu X không là siêu khóa và A là thuộc tính không khóa suy ra sẽ tồn tại một khóa K sao cho KX, XA, khi đó A phụ thuộc bắc cầu vào K qua X.
  5. Xem cm trang 132/NTDung