You are on page 1of 63

15/09/2022

TRƯỜNG ĐẠI HỌC TÀI CHÍNH MARKETING


KHOA CÔNG NGHỆ THÔNG TIN

Môn học:

CƠ SỞ DỮ LIỆU

PHƯƠNG PHÁP ĐÁNH


GIÁ KẾT QUẢ HỌC TẬP

Điểm đánh giá quá trình: 50% Điểm thi kết thúc học phần: 50%
✓ Điểm danh ✓ Hình thức thi: Trắc nghiệm
✓ Bài kiểm tra cá nhân ✓ Thời gian thi: 60 phút
✓ Điểm cộng các hoạt động trên lớp ✓ Không sử dụng tài liệu
✓ Hoạt động nhóm

01
NỘI DUNG
01 Tổng quan về Cơ sở dữ liệu
02 Mô hình hóa dữ liệu ở mức quan niệm
03 Mô hình quan hệ và đại số quan hệ
04 Ngôn ngữ truy vấn SQL
05 Ràng buộc toàn vẹn
06 Phụ thuộc hàm và chuẩn hóa cơ sở dữ liệu

1
15/09/2022

1
TỔNG QUAN
VỀ CSDL

1.1 Các khái niệm cơ bản

▪ Dữ This is a
liệu (data): slide
Dữtitle
liệu là toàn bộ những gì máy tính lưu trữ và xử lý. Dữ liệu có thể là
các ký tự, con số, hình ảnh, âm thanh, sự kiện có ý nghĩa
▪ Thông tin (Information): dữ liệu được xử lý để giúp cho việc ra quyết
định.
Vd:
Dữ liệu của Sinh viên Dữ liệu Xe hơi Dữ liệu về Hàng hóa
- Họ tên
- Màu xe
- NTNS
- Năm SX
- Nơi sinh
- Hãng sản
- Hộ khẩu TT
xuất
- Giới tính
- Công suất
- Email
- Mức tiêu thụ
- Điện thoại
nhiên liệu
5 - Hình

1.1 Các khái niệm cơ bản

▪ Cơ This is a
sở dữ liệu slide
(Database):
Là một
titletập hợp dữ liệu được tổ chức theo một cấu trúc chặt chẽ được
lưu trữ trong máy tính. CSDL được thiết kế, xây dựng cho phép người dùng
lưu trữ dữ liệu, cập nhật dữ liệu, truy xuất thông tin
Lưu trữ, cập nhật dữ liệu
Cơ sở
Người dùng dữ liệu
(Database) Truy xuất Thông tin

Vd: CSDL nhân viên, CSDL hàng hóa, CSDL sách, CSDL sinh viên,…

2
15/09/2022

1.1 Các khái niệm cơ bản

This
Ví dụ 1 CSDL is a slide Dữ liệu là các
cuốn sách
title
Cơ sở dữ liệu lưu trữ
thông tin các cuốn sách
Dữ liệu về từng cuốn sách gồm:
- Tên sách
- Tên tác giả
- Nhà xuất bản
- Năm xuất bản Truy cập CSDL để tìm
- Giá bán
- … các cuốn sách theo tên
tác giả, theo nhà xuất
bản….

1.1 Các khái niệm cơ bản

▪ Hệ This
quản trịis
cơ a
sởslide
dữ liệu (Database Management System - DBMS):
là hệ thống
titlephần mềm cung cấp công cụ:
• Xây dựng CSDL
• Thao tác trên dữ liệu của CSDL
• Kiểm soát việc truy xuất dữ liệu
▪ Các hệ QT CSDL thương mại lớn:
Oracle, IBM DB2, Microsoft SQL Server, SyBase,…
▪ Các hệ QT CSDL mã nguồn mở mạnh:
MySQL, PostgreSQL, SQLite, Ingres, Apache Derby,…

1.2 Người dùng cơ sở dữ liệu

This is a slide Người dùng cuối (End user):


- Làm việc ở WS, tương tác trực tiếp với
title
Người quản trị CSDL (DBAs): hệ thống. Trả lời yêu cầu của người
- Thực hiện hệ CSDL trong một tổ dùng bên ngoài tổ chức, trả lời cho các
chức cấp quản lý cao hơn, thực hiện các báo
- Có toàn quyền và có thể gắn cáo định kì,…
quyền/ rút quyền truy xuất của các - Có thể thay đổi một số dữ liệu tùy theo
người dùng khác CÁC LOẠI công việc chuyên trách hoặc chỉ có thể
NGƯỜI xem dữ liệu
DÙNG

Lập trình viên ứng dụng (Database


Database vendors,
application programmers)
implementors
- Truy xuất tới dữ liệu từ các chương
- Xây dựng phần mềm DBMS
trình được viết từ ngôn ngữ cấp cao
- Xây dựng các chức năng ứng dụng
(tính lương, tồn kho,..)
9

3
15/09/2022

1.3 Mô hình dữ liệu

▪ Mô This is liệu:
hình dữ a slide
là mô hình trừu tượng dùng để mô tả dữ liệu và
phương thức truy xuất dữ liệu
title
▪ Có nhiều loại mô hình dữ liệu:
• Mô hình phân cấp (hierarchical model)
• Mô hình mạng (network model)
• Mô hình thực thể kết hợp (Entity Relation model)
• Mô hình quan hệ (rational model)
• Mô hình hướng đối tượng (Object oriented model)
• …

10

10

Mô hình thực thể kết hợp

11

11

Mô hình phân cấp


KQua
Mức 1:
DiemTH DiemLT

HPhan SVien
Mức 2:
TenHP SLuong TenSV Lop Nganh

MHoc
Mức 3:
TenMH Khoa TinChi
12

12

4
15/09/2022

Mô hình quan hệ

13

13

Mô hình mạng

14

14

Mô hình đối tượng


SVien
Ten HPhan
Lop hoc
Ten
Nganh
SLuong
1..* 0..*
LapTKB()
InBangDiem() 1

Diem
DiemTH mo
DiemLT
DiemPrj
0..*
SuaDiem()
MHoc
Ten
Khoa +MHoc truoc
SoTinChi
0..*
CapNhatSTC()
0..* Dieu kien
+MHoc sau
15

15

5
15/09/2022

1.3 Mô hình dữ liệu

Mô hình mức Cung cấp khái niệm ➢ Mô hình ER


gần gũi, tự nhiên, ➢ Mô hình đối tượng
quan niệm
giàu ngữ nghĩa

Đưa ra khái niệm


Các người dùng có thể
Mô hình mức ➢ Mô hình quan hệ
loại mô hiểu được nhưng ➢ Mô hình mạng
hình logic không quá khác biệt ➢ Mô hình phân cấp
dữ liệu với dữ liệu tổ chức
thực sự trên máy tính
Mô tả chi tiết về cách
Mô hình
thức dữ liệu được lưu
mức vật lý
trữ trên đĩa cứng của
16 máy tính

16

1.3 Mô hình dữ liệu

This is a slide
title

Relational Object

Mô hình
vật lýl

17

17

1.3 Mô hình dữ liệu


▪ Quá trình thiết kế CSDL

18

18

6
15/09/2022

2
MÔ HÌNH HÓA DỮ LIỆU
Ở MỨC QUAN NIỆM

19

19

Mở đầu

This
Các bước iskếaCSDL:
thiết slide
▪ thập và phân tích nhu cầu:
Thutitle
• Các yêu cầu về CSDL
• Các yêu cầu chức năng (các thao tác trên CSDL)
▪ Thiết kế mức quan niệm và phân tích chức năng:
• Tạo mô hình quan niệm, vd: mô hình thực thể kết hợp (ERD)
• Đặc tả giao tác cấp cao tương ứng với các thao tác lên CSDL
▪ Thiết kế mức logic
• Ánh xạ lược đồ mức quan niệm sang lược đồ mức logic, vd: mô hình
quan hệ
▪ Thiết kế mức vật lý
• Cấu trúc lưu trữ và tổ chức tập tin
• Thiết kế chương trình ứng dụng và cài đặt giao tác
20

20

2.1 Giới thiệu mô hình thực thể kết hợp (ERD)

▪ This
Mô hình isthể
thực a -slide
kết hợp (Entity-Relationship Diagram)
▪ title
Được dùng để thiết kế CSDL ở mức quan niệm
▪ Biểu diễn trừu tượng cấu trúc của CSDL

21

21

7
15/09/2022

2.2 Thực thể

• Thực thể (Entity):


This biểu diễn 1 khái niệm (hoặc 1 đối tượng) trong thế giới
is a slide
thực.
• title
Tập thực thể (Entity set): là một tập hợp các thực thể có tính chất giống
nhau.
✓ Thực thể trực quan:
- Con người: nhân viên, sinh viên, khách hàng,…
- Nơi chốn: văn phòng, chi nhánh, phòng học,..
- Đối tượng: sách, xe, sản phẩm, vật tư, hàng hóa,…
- Sự kiện: bán hàng, yêu cầu, đăng ký,…
✓Thực thể không trực quan: tài khoản, thời gian, khóa học, nguồn
vốn,…

22

22

2.2 Thực thể

✓KýThis
hiệu: is a slide
Tên tập thực thể
Danh từ hoặc cụm danh từ

title
Vd: Nhân viên Sinh viên Đơn đặt hàng

✓ Tập thực thể yếu: thực thể tồn tại phụ thuộc vào thực thể khác.
Vd: Tập thực thể “Thân nhân” phụ thuộc vào tập thực thể “Nhân viên”

23

23

2.3 Thuộc tính

Thistính
• Thuộc is a(Attributes):
slide các tính chất đặc trưng của thực thể hoặc
mối kết hợp
title
Thuộc tính
Thuộc tính của của thực
thực thể Sinh thể Hàng
viên: hóa:
Mã SV, Họ, Tên,
NTNS, Nơi sinh,
Địa chỉ, Số điện
thoại, Giới tính,
Email

• Tất cả các thực thể nằm trong tập thực thể có cùng tập thuộc tính
• Mỗi thuộc tính đều có miền giá trị tương ứng với nó. Miền giá trị của
24 thuộc tính: Kiểu chuỗi, Kiểu số nguyên, Kiểu số thực…

24

8
15/09/2022

2.3 Thuộc tính

✓ KýThis
hiệu: is a Thuộc
slidetính
title
✓ Vd: thực thể Sinh viên có các thuộc tính: Mã sinh viên, Họ, Tên, NTNS,
Địa chỉ, Giới tính, Nơi sinh

Mã sinh
viên Họ Tên
Nơi
sinh
Giới Sinh viên NTNS
tính

Địa chỉ
25

25

2.3 Thuộc tính

This
Các loại istính
thuộc a slide
- Thuộc tính đơn: không thể tách nhỏ ra được. Vd: Giới tính
title
- Thuộc tính kết hợp: có thể tách thành nhiều thuộc tính nhỏ hơn
Vd:
Địa chỉ: Số nhà, đường, phường, quận, thành phố
Họ tên: Họ, Tên lót, Tên Số nhà

Đường
Phường/
Nhân viên Địa chỉ Xã
Quận/
Huyện
Thành phố/
Tỉnh
26

26

2.3 Thuộc tính

- This
Thuộc is trị:
tính đơn a slide
có giá trị duy nhất cho một thực thể. Vd: Số CMND
- Thuộc tính đa trị: có thể có nhiều giá trị khác nhau cho cùng 1 thực thể.
title
Vd: số điện thoại, email

Nhân viên Điện


thoại
- Thuộc tính suy diễn: giá trị của nó được suy ra từ thuộc tính khác.
Vd: Năm sinh -> Tuổi

Nhân viên Tuổi

27

27

9
15/09/2022

2.3 Thuộc tính


- Thuộc tính định danh: tập hợp các thuộc tính có tính chất đặc trưng duy
This
nhất nhằm isbiệt
phân a slide
tất cả các thể hiện của thực thể
Nhân viên title
Mã nv Họ tên NTNS Chuyên Email Số điện thoại
môn
123456 Nguyễn Tuấn Anh 14/9/1992 Kế toán anhnt@gmail.com 098789789
Các thể
hiện 123457 Trần Ngọc Mỹ Lan 3/2/1988 QTKD lanmy@gmail.com 0908989898
của 123458 Hoàng Văn Tú 15/6/1995 CNTT tuhv@gmail.com 091234234
thực thể
123459 Lê Hoàng Ngọc 22/2/1998 QLNS ngoclh@gmail.com 098787878

Chuyên Chuyên
môn Mã nv Họ tên NTNS môn Mã nv Họ tên NTNS
Email Email
Nhân viên Nhân viên
Số ĐT Số ĐT

28

28

2.4 Mối kết hợp

• MốiThis
kết hợp:
is làamối liên hệ giữa các 2 hay nhiều thực thể
slide
✓Ký hiệu: Tên mối
title kết hợp
Động từ hoặc cụm động từ

Vd: Quản
Nhân viên lý

Làm
Nhân viên việc
Phòng ban
Mối quan hệ phản thân

Đăng
Sinh viên ký
Môn học Môn học

Buổi
Ngày học
Lớp học

29 Mối quan hệ đa phân

29

2.4 Bản số

• BảnThis isbuộc
số: ràng a slide
về số lượng các thực thể tham gia vào mối kết hợp.
✓Ký title
hiệu bởi 1 cặp (min, max)
Min: qui định giá trị tối thiểu các thực thể khi tham gia vào mối kết
hợp. Giá trị từ 0, 1, 2,…
Max: qui định giá trị tối thiểu các thực thể khi tham gia vào mối kết
hợp. Giá trị từ 1, 2,…

(min, max) (min, max)


E Mối kết hợp F (0,1) – không hoặc 1
(1,1) – duy nhất 1
(0,n) – không hoặc nhiều
(1,n) – một hoặc nhiều
30

30

10
15/09/2022

2.4 Bản số
1,n
Vd: This isNhân
a slide
viên
0,1
Làm việc Phòng ban
title
Hiểu là: một nhân viên chỉ thuộc (làm việc) trong một phòng, một phòng có nhiều nhân viên làm việc
0,1

Nhân viên Quản


0,n

0,1 0,n
Con người Sống ở Thành phố

1,1 0,n
Sinh tại
31

31

Phân loại mối kết hợp dựa vào bản số

32

32

This
- Thuộc tính is
trênamối
slide
kết hợp: mô tả tính chất cho mối quan hệ đó. Thuộc
tính này không thể gắn liền với những thực thể tham gia vào mối quan hệ
title
(0,n) (1,n)
Nhân viên Phân công Dự án

Số giờ

(0,1) (1,1)
Nhân viên Là trưởng Phòng
phòng

Ngày nhận
chức

33

33

11
15/09/2022

Các bước vẽ mô hình ER

▪ Xác định các thực thể


▪ Xác định các thuộc tính
▪ Xác định mối kết hợp
▪ Xác định bản số

34

34

Ví dụ: Ứng dụng Quản lý dự án


▪ Công ty được tổ chức thành các phòng ban chức năng. Mỗi phòng có nhiều nhân
This
viên tham gia cácis
dựaánslide
khác nhau của công ty.
▪ Với mỗi nhân viên chúng ta lưu giữ lại các thông tin bao gồm họ, tên, mã số,địa
title
chỉ, lương, giới tính, ngày sinh. Một nhân viên chỉ làm việc cho một phòng nhưng
có thể làm việc trên nhiều dự án do nhiều phòng kiểm soát. Chúng ta lưu giữ lại số
giờ làm việc của mỗi nhân viên trên dự án mà nhân viên đó tham gia.
▪ Mỗi nhân viên có những thân nhân. Với mỗi thân nhân của nhân viên, chúng ta
lưu giữ họ tên, giới tính, ngày sinh và mối quan hệ với nhân viên.
▪ Mỗi phòng có một tên duy nhất, một mã số phòng ban duy nhất, một nhân viên
cụ thể quản lý phòng đó. Việc nhân viên quản lý phòng được ghi lại bằng ngày
nhân viên đó bắt đầu quản lý và gọi là trưởng phòng. Ta ghi nhận lại ngày nhận
chức của trưởng phòng.
▪ Mỗi phòng phụ trách kiểm soát một số dự án. Một dự án có một tên duy nhất, một
mã số duy nhất và một địa điểm thực hiện dự án đó. Một dự án do 1 phòng duy
nhất quản lý.
35

35

Ứng dụng Quản lý dự án (1)

- XácThis
định các
is tập thực thể và thuộc tính của tập thực thể:
a slide
✓ Nhân viên: họ, tên, mã số, địa chỉ, lương, giới tính, ngày sinh
title
✓ Thân nhân: họ, tên, giới tính, ngày sinh, mối quan hệ
✓ Phòng: tên, mã phòng
✓ Dự án: tên, mã, địa điểm
- Xác định các mối quan hệ giữa các tập thuộc tính:
✓ Nhân viên có các Thân nhân. Thân nhân của Nhân viên
✓ Nhân viên quản lý phòng gọi là trưởng phòng. Trưởng phòng là một nhân
viên của công ty
✓ Nhân viên làm việc tại 1 phòng. Phòng có nhiều nhân viên
✓ Phòng kiểm soát nhiều dự án khác nhau. Dự án do 1 phòng quản lý
36

36

12
15/09/2022

Ứng dụng Quản lý dự án (2)

Mô hình ERDtle

37

37

Ứng dụng Quản lý đề tài nghiên cứu khoa học (1)


▪ Mỗi giảng viên có các thông tin về mã giảng viên, họ tên, địa chỉ, điện thoại, ngày
This
sinh, lương, pháiisvà a slide
thuộc về một bộ môn cụ thể. Mỗi giảng viên có thể có nhiều số
điện thoại, địa chỉ gồm có các thông tin số nhà, đường, quận, thành phố.
title
▪ Mỗi bộ môn có các thông tin mã bộ môn, tên bộ môn, phòng bộ môn làm việc,
điện thoại và một giảng viên làm trưởng bộ môn quản lý, ngày nhận chức của
trưởng bộ môn đó.
▪ Mỗi khoa có các thông tin mã khoa tên khoa, năm thành lập, phòng làm việc, điện
thoại và do một giảng viên làm trưởng khoa, ngày nhận chức trưởng khoa của giảng
viên đó.
▪ Mỗi đề tài gồm có các thông tin mã đề tài, tên đề tài, cấp quản lý, kinh phí, ngày
bắt đầu, ngày kết thúc và thuộc về một chủ đề cụ thể. Mỗi chủ đề gồm có mã chủ đề,
tên chủ đề. Mỗi đề tài có thể chia làm nhiều công việc. Mỗi công việc gồm có mã
công việc, tên công việc, ngày bắt đầu, ngày kết thúc. Mỗi giảng viên có thể tham gia
nhiều công việc cụ thể của các đề tài và mỗi công việc cũng có thể cho phép nhiều
giảng viên tham gia. Khi giảng viên tham gia vào các công việc thì có ghi nhận lại kết
38 quả thực hiện công việc cũng như phụ cấp cho giảng viên

38

Ứng dụng Quản lý đề tài nghiên cứu khoa học (2)


Thishình ERDtle
is a slide title

39

39

13
15/09/2022

Ứng dụng Hệ thống quản lý tồn kho (1)

Hệ thốngThis istồna kho


quản lý slide
của các mặt hàng trong các kho hàng của một công ty
được mô tả như sau:
title
Kho hàng là nơi quản lý các mặt hàng của công ty. Mỗi kho hàng có một mã số duy
nhất (MÃ_KHO) dùng để phân biệt các kho hàng khác, một tên hàng và một loại
hafngg mà kho đó chứa. Mỗi kho có một địa điểm nhất định được xác định bởi mã
số địa điểmm (MÃ_DD), địa chỉ địa điểm, có một nhân viên phụ trách địa điểm và số
điện thoại để liên lạc với kho tại địa điểm trên. Một kho chỉ chứa một loại hàng, một
địa điểm có thể có nhiều kho.
Một mặt hàng có một mã số duy nhất (MÃ_MH) để phân biệt các mặt hàng khác,
có một tên hàng. Một mặt hang được xếp vào một loại hàng, và một loại hàng có
nhiều mặt hàng. Mỗi loại hàng có một mã số duy nhất để phân biệt (MÃ_LH), và có
một tên loại hàng. Một mặt hàng có thể chứa ở nhiều kho, một kho có thể chứa
nhiều mặt hàng cùng loại.

40

40

Ứng dụng Hệ thống quản lý tồn kho (2)


- Số lượng tồn kho của mỗi mặt hàng được xác định bởi phiếu nhập và phiếu xuất
hàng. Mỗi phiếu nhập hàng có số phiếu nhập (SỐ_PN) duy nhất để phân biệt, và
có ngày lập phiếu, phiếu nhập cho biết nhập tại kho nào, có chữ kí của nhân
viên phụ trách địa điểm của kho đó. Trong chi tiết của phiếu nhập cho biết số
lượng nhâp của các mặt hàng của một phiếu nhập.
- Mỗi phiếu xuất hàng có số phiếu xuất (SỐ_PX) duy nhất để phân biệt, và có
ngày lập phiếu, phiếu xuất cho biết xuất tại kho nào, chữ lý của nhân viên đi
nhận hàng tại kho đó.. Trong chi tiết của phiếu xuất cho biết số lượng xuất của
các mặt hàng của một phiếu xuất.
- Thông tin của nhân viên phụ trách địa điểm tại các kho và nhân viên đi nhận
hàng từ các kho bao gồm: Mã nhân viên (MÃ_NV) để phân biệt giữa các nhân
viên, có họ tên, phái, năm sinh, địa chỉ thưởng trú, số điện thoại của nhân viên.

41

41

Ứng dụng Hệ thống quản lý thư viện

Hệ thống quản lý thư viện của một trường Đại học được mô tả như sau:
- Thư viện bao gồm nhiều chi nhánh được đặt tại các cơ sở khác nhau của
trường. Thông tin của mỗi chi nhánh bao gồm: mã chi nhánh, tên chi nhánh và
địa chỉ
- Các cuốn sách trong thư viện được lưu trữ các thông tin sau: mã sách, tên sách,
nhà xuất bản, tác giả
- Một tác giả có thể viết nhiều cuốn sách. Một cuốn sách có thể do nhiều tác giả
cùng viết
- Một nhà xuất bản có nhiều cuốn sách. Một cuốn sách do một nhà xuất bản xuất
bản. Thông tin về Nhà xuất bản gồm có Tên, Địachỉ và Sốđiệnthoại.
- Một cuốn sách có thể có nhiều bản sao được lưu trữ tại các nhánh. Thông tin về
bản sao sách gồm Mã sách, số các bản sao.
- Thư viện có những người mượn sách. Thông tin về những người mượn sách
gồm có Số thẻ, Họ tên, Địa chỉ và Số điện thoại.
- Sách được cho các người mượn mượn tại các chi nhánh. Thông tin về một lần
42
mượn gồm có Ngày mượn và ngày trả.

42

14
15/09/2022

2.6 Sử dụng Power Designer vẽ mô hình thực thể kết hợp (ERD)

▪ Khởi động PD, chọn Create Project.



This is a slide
Trong New Project: nhập name và Location, OK.
▪ Chọntitle
Create a new model
▪ Chọn Conceptual Diagram.
▪ Đặt tên cho mô hình mức quan niệm này trong trong Mode Name. OK.
▪ Right click trên màn hình, chọn Model Option. Trong Notation, chọn
ER+Merise
▪ Trong Toolbox, click vào Entity để tạo các thực thể, click vào Association
Link để tạo mối kết hợp.

43

43

2.6 Sử dụng Power Designer vẽ mô hình thực thể kết hợp (ERD)

- Double click vào mối kết hợp để nhập tên và thuộc tính (nếu có)
This is a slide
- Double click vào bản số để sửa bản số phù hợp tại Cardinality
title
- Sau khi vẽ xong mô hình, RC chọn Check Model để kiểm tra lỗi. Sửa các
Error để hoàn chỉnh mô hình

Assocition Link
Entity
44

44

2.6 Sử dụng Power Designer vẽ mô hình thực thể kết hợp (ERD)

•Lưu mô hình dạng hình ảnh:


This is a slide
✓Click chọn 1 entity rồi nhấn Ctrl+A
✓Menutitle
Edit/ Export Image
✓Chọn dạng hình ảnh cần lưu (.png, .bmp,…)

45

45

15
15/09/2022

HOẠT ĐỘNG NHÓM

This is a slide
•Nội dung 1: Trả lời các câu hỏi:
title
1. Trình bày khái niệm mô hình thực thể kết hợp (ERD)?
2. Mô hình ERD là mô hình được thiết kế ở giai đoạn nào trong quá trình
thiết kế CSDL?
3. Nêu cách xây dựng ERD?

• Nội dung 2: SV chọn đề tài theo nhóm, thực hiện các công việc sau:
1. Mô tả bài toán thực tế
2. Vẽ mô hình ERD
3. Vẽ mô hình ERD trên phần mềm Power Designer

46

46

3 MÔ HÌNH QUAN HỆ

47

47

3.1 Giới thiệu mô hình quan hệ (Realtion model)

• Do tiến sĩ E.F.Codd đưa ra vào 6/1970


• Cung cấp một cấu trúc dữ liệu đơn giản và đồng bộ
• Có nền tảng lý thuyết vững chắc (lý thuyết tập hợp )
• Là cơ sở của các HQT CSDL thương mại (Oracle, DB2, SQL Server,…)

48

48

16
15/09/2022

3.2 Cấu trúc cơ bản của quan hệ

- Mô hình quan hệ thể hiện CSDL dưới dạng tập hợp các quan hệ (relation).
- Một quan hệ được tạo ra bởi 2 phần:
▪ Thể hiện quan hệ (realtion instance): một bảng (table) có nhiều dòng và
nhiều cột
▪ Lược đồ quan hệ (relation schema): đặc tả tên quan hệ, cùng với tên và
miền giá trị của mỗi cột
▪ Thuộc tính (Attribute): tên gọi của 1 cột của quan hệ
▪ Bộ (Tuple): là một dòng của một quan hệ (không phải là dòng tiêu đề)
▪ Miền giá trị (domain): là một tập các giá trị cho phép của một hay nhiều
thuộc tính

49

49

3.2 Cấu trúc cơ bản của quan hệ


Các thông tin lưu trữ trong CSDL được tổ chức thành bảng (table) 2 chiều gọi là quan hệ
1 cột là 1 thuộc tính của nhân viên
TÊN HỌ NGÀY SINH ĐỊA CHỈ PHÁI LƯƠNG PHG
Minh Nguyễn 12/08/1990 6/8A LTT Q1 Nam 10.000.000 5

Hằng Lê 07/19/1989 332 NTH Nữ 15.000.000 4


Q1
Hạnh Trần 06/20/1991 291 HVH Nữ 14.000.000 4
QPN
Huy Nguyễn 09/15/1992 Ba Ria VT Nam 18.000.00 5
0
1 bộ là 1 dòng (1 nhân viên)
Tên quan hệ là NHÂN VIÊN
Lược đồ quan hệ NHÂN VIÊN (TÊN, HỌ, NGÀY SINH, ĐỊA CHỈ, PHÁI, LƯƠNG, PHÒNG)
---> định nghĩa cấu trúc bảng
50

50

3.2 Cấu trúc cơ bản của quan hệ


- Lược đồ CSDL: gồm nhiều lược đồ quan hệ
Ví dụ: Lược đồ CSDL Quản lý dự án

NHÂNVIÊN(MÃNV,HỌNV,TÊNNV,NGÀYSINH,ĐỊACHỈ,PHÁI,LƯƠNG,ĐIỆNTHOẠI,MAPH)
PHÒNG(MÃPHG,TÊNPHG,ĐIAĐIỂMPH,TRPHG,NGNHẬNCHỨC)
THÂNNHÂN(MÃNVIÊN,TÊNTN,GT,NS,QUANHỆ)
DỰÁN(MÃDA,TÊNDA,ĐĐIỂM_DA,MÃPHÒNG)
PHÂNCÔNG(MÃNV, MÃDA, ĐỊAĐIỂMDA)

51

51

17
15/09/2022

3.3 Định nghĩa Quan hệ

- Lược đồ CSDL quan hệ (Relational database schema) là tập hợp các


lược đồ quan hệ.
- Một lược đồ quan hệ R với các thuộc tính A1, A2, …, An được kí hiệu là
R(A1, A2, …, An) trong đó Ai là tên các thuộc tính biến thiên trên một
miền giá trị Di được kí hiệu là dom(Ai)
- Một lược đồ R(A1:D1, A2:D2, …, An:Dn) bao gồm:
➢ Tên của quan hệ: R
➢ Miền giá trị: D1, D2, …, Dn
➢ Thuộc tính: A1, A2, …, An
➢ Cấu trúc R(A1:D1, A2:D2, …, An:Dn)
- Bậc của lược đồ quan hệ là số lượng thuộc tính trong lược đồ

52

52

3.3 Định nghĩa Quan hệ

Vd: NHANVIEN(MANV:int, TENNV: varchar, HONV: varchar, NGSINH: date, DCHI:


varchar, PHAI: string, LUONG: float, PHONG: char)
✓ NHANVIEN là một lược đồ bậc 8 mô tả đối tượng nhân viên
✓ MANV là một thuộc tính có miền giá trị là số nguyên
✓ TENNV là một thuộc tính có miền giá trị là chuỗi ký tự

▪ Giá trị Null


• Một giá trị có thể không biết được vì một trong số các lý do:
✓ Không có giá trị áp dụng cho bộ đó
✓ Hiện tại đang còn thiếu giá trị
✓ Giá trị bị bỏ qua có chủ đích
• Để thuận tiện, CSDL quan hệ cung cấp một giá trị đặc biệt gọi là NULL
53

53

3.4 Các kí hiệu

• Lược đồ quan hệ R bậc n: R(A1, A2, …, An)


• 1 bộ: t = <v 1, v2,..,vn>
• Giá trị của 1 bộ: t.Ai hay t[Ai]
• Tên quan hệ: R, S, P, Q
• Thể hiện quan hệ: r, s, p, q
• Bộ: t, u, v
• Lược đồ CSDL: S là tên của CSDL S={R1, R2,…, Rn}

54

54

18
15/09/2022

3.5 Khóa (Key) của quan hệ

3.5.1 Siêu khóa (Super Key)


▫ Là 1 thuộc tính hay tập hợp các thuộc tính để xác định duy nhất một bộ
trong một quan hệ
▫SK là 1 siêu khóa của R khi:
-SK là 1 tập con khác rỗng các thuộc tính của R
-r, t1, t2  r, t1≠ t2  t1.SK ≠ t2.SK
▫ Một quan hệ có thể có nhiều siêu khóa và có 1 siêu khóa mặc định là tập
hợp tất cả các thuộc tính của quan hệ đó.

55

55

3. 5 Khóa (Key) của quan hệ


Vd: Xác định các siêu khóa của quan hệ
NHANVIEN (MANV, HONV, TENNV, NTNS, GT, LUONG, PHONG)
MANV HONV TENNV NTNS GT LUONG PHONG

1234 Lê Minh Huy 23/4/1988 Nam 10.000.000 2

1235 Nguyễn Tiến 12/6/1980 Nam 8.000.000 1

1236 Trần Lan null Nữ 6.000.000 1

1237 Hoàng Hiền 19/8/1987 Nam 8.500.000 3

56

56

3.5 Khóa (Key) của quan hệ

3.5.2 Khóa chỉ định (Candidate Key)


- Khóa chỉ định K của R khi:
✓ K là một siêu khóa
✓ K là siêu khóa bé nhất (siêu khóa có ít thuộc tính nhất)
3.5.3 Khóa chính (Primary Key)
✓ Nếu có nhiều khóa chỉ định trong 1 quan hệ, ta chọn ra 1 khóa làm khóa
chính
✓ Thuộc tính khóa chính phải có giá trị khác NULL
✓ Thuộc tính khóa chính thường được gạch dưới hoặc in nghiêng hoặc in đậm
NHANVIEN(MANV,HONV,TENNV,NS,DCHI,GT,LUONG,PHG)

57

57

19
15/09/2022

C3.5.4 Khóa ngoại:


hương 2: Mô hình
HONVdữ liệu quan hệ NTNS
TENNV GT LUONG PHONG
Lê Minh Huy 23/4/1978 Nam 10.000.000 2 2
Nguyễn Tiến 12/6/1980 Nam 8.000.000 1 1
Trần Ngọc Lan 5/2/1982 Nữ 6.000.000 1 1
Hoàng Hiền 19/8/1977 Nam 8.500.000 3 3
Nguyễn Thị Hoa 4/2/1984 Nữ 5.000.000 4

Nguyễn Thị Hoa 4/2/1984 Nữ 5.000.000 2

MAPHG TENPHG
1 1 Kế toán
2 2 Kinh doanh tổng hợp
3 3 Kiểm định chất lượng sản phẩm

58

3.5 Khóa (Key) của quan hệ

NHANVIEN(MANV,HONV,TENNV,NS,DCHI,GT,LUONG,PHG)

PHONGBAN(MAPHG,TENPHG) Khóa ngoại

Khóa chính

Thuộc tính được gọi là khóa ngoại của 1 quan hệ nếu nó tham chiếu đến
khóa chính của 1 quan hệ khác

59

59

3.5 Khóa (Key) của quan hệ

Xác định khóa chính, khóa ngoại cho lược đồ CSDL sau:
NHANVIEN

HONV TENLOT TENNV MANV NGNSINH DCHI PHAI LUONG MA_NQL PHG

PHONGBAN DIADIEM_PHG

TENPHG MAPHG TRPHG NG_NHANCHUC MAPHG DIADIEM

DEAN
PHANCONG
TENDA MADA DDIEM_DA PHONG MA_NVIEN SODA THOIGIAN

THANNHAN
MA_NVIEN TENTN PHAI NGAYSINH QUANHE
60

60

20
15/09/2022

3.5 Khóa (Key) của quan hệ

61

61

3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ

-Các qui tắc chuyển đổi:


Qui tắc 1: Các tập thực thể (trừ tập thực thể yếu) chuyển thành các quan hệ
có cùng tên và tập thuộc tính
MANV
NGSINH LUONG DCHI
TENPHG MAPHG

HONV

(1,1) (1,n)
NHANVIEN Lam_viec
TENNV PHONG

PHAI
(1,1) (1,1)
La_truong_phong

PHONG(MAPHG,TENPH)
NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG)
62

62

3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ
Tên Địa điểm
Ngày nhận phòng phòng
Họ tên
chức
Ngày sinh
Lương (1,1)
Là trưởng Phòng
Mã nv phòng
Phái
(0,1) (1,n) (0,n)
Điện Mã
Làm việc phòng
thoại Nhân viên
cho
(1,1)
(0,n) (0,n)
Địa chỉ
Kiểm soát
Số giờ

Thực hiện Mã DA
(1,1)
Tên TN Quan hệ
(1,n) Dự án Tên DA

Có Thân nhân
Địa điểm DA
(1,1)
Ngày Phái
Sinh

NHANVIEN(MANV, NGAYSINH, HOTEN, PHAI, DIENTHOAI, DIACHI, LUONG)


PHONG(MAPH, TENPH, DIADIEMPH)
DUAN(MADA, TENDA, DIADIEMDA)
THANNHAN(TENTN, QUANHE, PHAI, NGAYSINH) 63

63

21
15/09/2022

3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ

Qui tắc 2: Mối quan hệ


• Mối quan hệ Nhiều-Nhiều: Tạo một quan hệ mới có
▪Tên quan hệ là tên của mối quan hệ
▪Thuộc tính là những thuộc tính khóa của các tập thực thể liên quan
MANV
NGSINH LUONG DCHI
DDIEM_DA

HONV
THOIGIAN MADA
DUAN
TENNV
NHANVIEN
TENDA
(1,n) (1,n)
Phan_cong
PHAI

PHANCONG(MANV, MADA, THOIGIAN)


64

64

3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ

• Mối quan hệ Một-Nhiều: Thêm vào quan-hệ-một thuộc tính khóa của
quan-hệ-nhiều
MANV
NGSINH LUON DCHI
G TENPHG MAPHG

HONV

(1,1) (1,n)
NHANVIEN Lam_viec PHONGBAN
TENNV

PHAI

NHANVIEN(MANV, TENNV, HONV, NGSINH, DCHI, PHAI, LUONG, MAPHG)

65

65

3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ

• Mối quan hệ Một-Một


▪Hoặc thêm vào quan hệ này thuộc tính khóa của quan hệ kia
▪Hoặc thêm thuộc tính khóa vào cả 2 quan hệ
MANV
NGSINH LUON DCHI
TENPHG MAPHG
G
HONV

NG_NHANCHUC
TENNV
NHANVIEN PHONGBAN

(1,1) (1,1)
PHAI La_truong_phong

PHONGBAN(MAPHG, TENPHG, MANV, NG_NHANCHUC)


66

66

22
15/09/2022

3.6 Chuyển lược đồ thực thể kết hợp sang mô hình quan hệ

• Thực thể yếu: Chuyển thành một quan hệ


▪ Có cùng tên với thực thể yếu
▪ Thêm vào thuộc tính khóa của quan hệ liên quan
MANV
NGSINH LUONG DCHI

HONV

TENNV
NHANVIEN (1,n)
Co_than_nhan QUAN HE

PHAI (1,1) NGSINH

PHAI
THANNHAN
TENTN

THANNHAN(MANV, TENTN, PHAI, NGSINH, QUANHE)


67

67

3.7 Ngôn ngữ đại số quan hệ

• Quan hệ là tập hợp các bộ


▫ Phép hội R  S
▫ Phép giao R  S
▫ Phép trừ R − S
• Tính khả hợp (Union Compatibility)
Hai lược đồ quan hệ R(A1, A2, …, An) và S(B1, B2, …, Bn) là khả hợp nếu
▪ Cùng bậc n
▪ Và có DOM(Ai)=DOM(Bi) , 1 i  n
• Kết quả của , , và − là một quan hệ có cùng tên thuộc tính với quan
hệ đầu tiên (R)

68

68

3.7 Ngôn ngữ đại số quan hệ

NHANVIEN TENNV NGSINH PHAI THANNHAN TENTN NG_SINH PHAITN

Tung 12/08/1989 Nam Trinh 04/05/2006 Nu

Khang 10/25/1993 Nam


Hang 07/19/1988 Nu
Phuong 05/03/1998 Nu
Nhu 06/20/1991 Nu
Minh 02/28/1992 Nam
Hung 09/15/1992 Nam
Chau 12/30/2008 Nu

Bậc n=3
DOM(TENNV) = DOM(TENTN)
DOM(NGSINH) = DOM(NG_SINH)
DOM(PHAI) = DOM(PHAITN)

69

69

23
15/09/2022

3.7 Ngôn ngữ đại số quan hệ

• Phép hội: Cho 2 lược đồ quan hệ R(A1, A2, …, An) và S(S1, S2,…, Sn)
và hai quan hệ r(R), s(S) khả hợp, phép hội của r và s:
- Ký hiệu r  s
- Là một quan hệ gồm các bộ thuộc r hoặc thuộc s, hoặc cả hai (các bộ
trùng lắp sẽ bị bỏ)
r  s = { t / tr  ts }
Vd:
r s rs
A B A B A B
 1  2  1
 2  3  2
 1  1
 3 70

70

3.7 Ngôn ngữ đại số quan hệ


• Phép giao: Cho 2 quan hệ r và s khả hợp. Phép giao của r và s:
- Ký hiệu r  s
- Là một quan hệ gồm các bộ thuộc r đồng thời thuộc s

r  s = { t / (tr)  (ts)}

Vd: r s rs

A B A B A B

 1  2  2

 2  3

 1
71

71

• Phép trừ:
Cho 2 quan hệ r và s khả hợp. Phép trừ của r và s
- Ký hiệu r − s
- Là một quan hệ gồm các bộ thuộc r và không thuộc s

r − s = { t / (tr)  (ts) }
Vd:

r s r-s
A B A B A B
 1  2  1
 2  3  1
 1

72

24
15/09/2022

3.7 Ngôn ngữ đại số quan hệ

• Phép chọn:
Được dùng để lấy ra các bộ của quan hệ r thỏa điều kiện chọn.
- Ký hiệu: <điều kiện chọn>(r)
- Điều kiện chọn là biểu thức luận lýđược tạo thành dựa trên các thuộc
tính của r và có dạng
▫ <tên thuộc tính> <phép so sánh> <hằng số>
▫ <tên thuộc tính> <phép so sánh> <tên thuộc tính>
<phép so sánh> gồm  ,  ,  ,  ,  , =
- Các mệnh đề được nối lại nhờ các toán tử logic như And () , Or() ,
Not()
- Kết quả trả về là một quan hệ
▫ Có cùng danh sách thuộc tính với r
▫ Có số bộ luôn ít hơn hoặc bằng số bộ của r
73

73

3.7 Ngôn ngữ đại số quan hệ

- Phép chọn có tính giao hoán:


 p1 ( p2 (R)) = p2 ( p1 (R)) = p1  p2 (R)

Vd: Quan hệ r A=B  D>5(r)

A B C D AB C D

  1 7  1 7
  5 7   23 10
  12 3
  23 10
74

74

3.7 Ngôn ngữ đại số quan hệ


Vd: Cho biết các nhân viên ở phòng số 1
▫ Quan hệ: NHÂNVIÊN
▫ Thuộc tính: PHÒNG
▫ Điều kiện: PHÒNG=P1
 PHÒNG=1 (NHANVIEN)
MÃNV HỌNV TÊNNV NTNS GT LƯƠNG PHÒNG

MÃNV Lê Minh
N111 HỌNV TÊNNV 23/4/1983
Huy NTNS GT
Nam LƯƠNG
10.000.000 PHÒNG
P2
N112 Nguyễn
N112 Nguyễn Tiến
Tiến 12/6/1989
12/6/1989 Nam
Nam 8.000.000
8.000.000 P1
P1

N113 TrầnNgọc
N113 Trần Ngọc Lan
Lan 5/2/1990
5/2/1990 Nữ
Nữ 6.000.000
6.000.000 P1
P1

N114 Hoàng Hiền 19/8/1991 Nam 8.500.000 P3

75

75

25
15/09/2022

Vd: Tìm các nhân viên có lương trên 8.500.000 ở phòng 1 hoặc các nhân
viên có lương trên 6.000.000 ở phòng 2
▫ Quan hệ: NHÂNVIÊN
▫ Thuộc tính: LƯƠNG, PHÒNG
▫ Điều kiện:
▪ LƯƠNG>8500000 và PHÒNG=P1 hoặc
▪ LƯƠNG>6000000 và PHÒNG=P2

 (PHÒNG=“P1” AND LUONG>8.500.000)OR (PHÒNG=“P2” AND LUONG>6.000.000) (NHÂNVIÊN)

76

• Phép chiếu:
Dùng để lấy ra một số thuộc tính của một quan hệ.
- Ký hiệu: A1, A2,…Ak (r)
- Kết quả trả về là một quan hệ
▫ Có k thuộc tính
▫ Có số bộ luôn ít hơn hoặc bằng số bộ của r
-Phép chiếu không có tính giao hoán X,Y (R) = X (Y (R))

r A, C(r)
Vd:
A B C A C
 a x  x
 b x  x
 c x  y
 d y

77

Ví dụ: Cho biết mã, họ tên và lương của các nhân viên
Chương 2: Mô hình dữ liệu quan hệ
▫ Quan hệ: NHÂNVIÊN
▫ Thuộc tính: HỌNV, TÊNNV, LƯƠNG

MÃNV,HỌNV, TÊNNV, LƯƠNG(NHÂNVIÊN)


MÃNV MÃNV
HỌNV HỌNV
TÊNNV TÊNNV
NTNS LƯƠNG
GT LƯƠNG PHÒNG

N111 Lê Minh Huy 10.000.000


N111 Lê Minh Huy 23/4/1983 Nam 10.000.000 P2
N112 Nguyễn Tiến 8.000.000
N112 Nguyễn Tiến 12/6/1989 Nam 8.000.000 P1

N113 Trần Ngọc Lan 6.000.000


N113 Trần Ngọc Lan 5/2/1990 Nữ 6.000.000 P1

N114 Hoàng Hiền 8.500.000


N114 Hoàng Hiền 19/8/1991 Nam 8.500.000 P3

78

26
15/09/2022

• Phép gán
Khi biểu thức đại số quan hệ phức tạp có liên quan đến nhiều phép
toán, ta có thể làm đơn giản chúng bằng cách cho thực hiện từng phép
toán riêng biệt và gán kết quả cho một quan hệ trung gian
Ký hiệu: 
Cú pháp: r  E
Khi đó kết quả của biểu thức đại số quan hệ E sẽ được gán cho quan
hệ r. Sau đó có thể dung r như là toán hạng cho một phép toán đại số
quan hệ khác
Vd: Cho biết mã, họ tên các nhân viên làm việc tại phòng P1
NHÂNVIÊN_P1   PHÒNG=1 (NHÂNVIÊN)
KẾTQUẢ  MÃNV,HỌNV, TÊNNV(NHÂNVIÊN_P1)

79

• Phép tích Descartes:


Được dùng để kết hợp các bộ của các quan hệ lại với nhau
- Ký hiệu r x s
- Kết quả trả về là một quan hệ:
▫ Mỗi bộ là tổ hợp giữa 1 bộ trong r và 1 bộ trong s
▫ Nếu r có u bộ và S có v bộ thì Q sẽ có u  v bộ
▫ Nếu R có n thuộc tính và Q có m thuộc tính thì Q sẽ có n + m
thuộc tính

r x s = { <t1, t2>/ t1 r, t2  s}

80

Ví dụChương 2: Mô hình dữ liệu quan hệ


Quan hệ r Quan hệ s r×s
A B C D E F A B C D E F
a1 b1 c1 d1 e1 f1 a1 b1 c1 d1 e1 f1
a2 b2 c2 d2 e2 f2 a1 b1 c1 d1 e2 f2
e3 f3 a1 b1 c1 d1 e3 f3
a2 b2 c2 d2 e1 f1
a2 b2 c2 d2 e2 f2
a2 b2 c2 d2 e3 f3

81

27
15/09/2022

Ví dụChương 2: Mô hình dữ liệu quan hệ


Quan hệ r Quan hệ s r×s
A B C C D A B r.C s.C D
1 2 3 3 1 1 2 3 3 1
4 5 6 6 2 1 2 3 6 2
7 8 9 4 5 6 3 1
4 5 6 6 2
7 8 9 3 1
7 8 9 6 2

82

• Phép kết:Chương
dùng để2:
tổMô
hợp hình dữliên
2 bộ có liệu quan
quan từ 2hệ
quan hệ thành 1 bộ
- Ký hiệu:
Phép kết dùng để kết hợp các bộ có liên quan từ 2 quan hệ tham gia
vào phép kết. Mối liên quan này được thể hiện trong điều kiện kết.
Cho R(A1, A2,…, An), S(B1, B2,…, Bm) và r(R), s(S). R(R) có n bộ,
s(S) có m bộ, kết quả của phép kết là một quan hệ có m+n thuộc tính,
có lược đồ quan hệ là Q (A1, A2,…, An,B1, B2,…, Bm). Với mỗi bộ r0
thuộc r, nếu có một bộ s0 thuộc s thỏa mãn <điều kiện kết> thì sẽ sinh
ra một bộ trong kết quả q

83

- Phân loại
▪ Kết theta (theta join) là phép kết có điều kiện
Ký hiệu r Cs
C gọi là điều kiện kết trên thuộc tính
▪ Kết bằng (equi join) khi C là điều kiện so sánh bằng
▪ Kết tự nhiên (natural join): Kết quả của phép kết bằng bỏ bớt đi 1
cột giống nhau

84

28
15/09/2022

Ví dụChương 2:nhiên
phép kết tự Mô hình dữ liệu quan hệ
Quan hệ r Quan hệ s r s
A B C C D A B r.C s.C D
1 2 3 3 1 1 2 3 3 1
4 5 6 6 2 1 2 3 6 2
7 8 9 4 5 6 3 1
4 5 6 6 2
7 8 9 3 1
7 8 9 6 2

85

Ví dụChương 2: Mô hình dữ liệu quan hệ


Quan hệ r Quan hệ s r s

A B C C D A B C D

1 2 3 3 1 1 2 3 1

4 5 6 6 2 1 2 6 2

7 8 9

86

Vd: Cho biết mã, họ tên nhân viên và tên phòng


họ làm việc NHANVIEN PHONGBAN

87

29
15/09/2022

Ví dụ phép kết bằng: r s


C=D

r A B C S D E A B C D E

1 2 3 3 1 1 2 3 3 1
4 6 6 6 2 4 6 6 6 2
7 8 9
r C>D  B>5 s
Ví dụ theta kết:
r A B C S D E A B C D E

1 2 3 3 1 7 8 9 3 1
4 6 6 6 2 7 8 9 6 2
7 8 9

88

▪ Kết ngoài (outer join): được sử dụng khi muốn giữ lại
ở quan hệ kết quả tất cả các bộ của quan hệ bên trái
(left outer join) hoặc tất cả các bộ của quan hệ bên phải
(right outer join) hoặc của cả 2 quan hệ (outer join).
Kí hiệu:

Vd:
NHÂNVIÊN PHÒNGBAN

89

Equi join

Left outer join

Right outer join

Full outer join

90

30
15/09/2022

▪ Phép chia
Chương 3: Mô hình dữ liệu quan hệ
Được dùng để lấy ra một số bộ trong quan hệ r sao cho thỏa với
tất cả các bộ trong quan hệ s
- Ký hiệu r  s A B
r a1 b1 s rs
a2 b1 A B
a3 b1 a1 b1
a4 b1 a2 b4
a1 b2 a3
a3 b2
a2 b3
a3 b3
a4 b3
a1 b4
a2 b4
a3 b4

91

▪ Hàm kếtChương
hợp (Aggregation
2: Mô function)
hình dữ liệu quan hệ
Nhận vào tập hợp các giá trị và trả về một giá trị đơn. Các hàm thường sử
dụng: Avg: tính giá trị trung bình; Min: tính giá trị nhỏ nhất; Max: tính giá trị
lớn nhất; Sum: tính tổng các giá trị; Count: đếm số lượng
Vd:

r A B sum(B) = 10
1 2 avg(A) = 1.5
3 4 min(A) = 1
1 2 max(B) = 4
1 2
count(A) = 4

92

Ví dụ:
Chương
MÃNV HỌNV 2: TÊNNV
Mô hình
NTNSdữ liệu
GT quan hệ
LƯƠNG PHÒNG

N111 Lê Minh Huy 23/4/1983 Nam 10.000.000 P2


N112 Nguyễn Tiến 12/6/1989 Nam 8.000.000 P1

N113 Trần Ngọc Lan 5/2/1990 Nữ 6.000.000 P1

N114 Hoàng Hiền 19/8/1991 Nam 8.500.000 P3

Sum (LƯƠNG)=
Count(MÃNV)=
Min (LƯƠNG)=
Max (LƯƠNG)=
Avg(LƯƠNG)=

93

31
15/09/2022

• Phép gom nhóm


▪ Được dùng để phân chia quan hệ thành nhiều nhóm dựa trên điều
kiện gom nhóm nào đó
▪ Ký hiệu
G1, G2, …, GnFF1(A1), F2(A2), …, Fn(An)(E)
▪ E là biểu thức ĐSQH
▪ G1, G2, …, Gn là các thuộc tính gom nhóm
▪ F1, F2, …, Fn là các hàm
▪ A1, A2, …, An là các thuộc tính tính toán trong hàm F

94

Chương
Vd: Tìm số lượng2: Môviên
nhân hình dữmỗi
trong liệuphòng
quan hệ
MA_PHG F COUNT (MANV) (NHANVIEN)

MAPHG MANV MAPHG SONV

KT NV01 KT 3
TCHC NV02 TCHC 2
TCHC NV03
KT NV04
KT NV05

95

4 Ngôn ngữ
truy vấn SQL
96

96

32
15/09/2022

Ngôn ngữ truy vấn


- Là ngôn ngữ CSDL quan hệ chuẩn dành cho các cơ sở dữ liệu quan hệ
thương mại
- Sử dụng thuật ngữ: Bảng thay cho quan hệ; Cột thay cho thuộc tính;
Dòng thay cho bộ
- Cấu trúc của ngôn ngữ SQL bao gồm:
▪ Ngôn ngữ định nghĩa dữ liệu: Lệnh mô tả bảng; Xóa bảng; Tạo chỉ mục
cho bảng; Xóa chỉ mục
▪ Ngôn ngữ thao tác dữ liệu: Truy xuất dữ liệu; Cập nhập dữ liệu; Khai
thác dữ liệu

97

97

Lệnh Create Table


- Tạo cấu trúc cho một bảng mới
- Cú pháp:
CREATE TABLE <tên bảng>
( <thuộc tính 1> <kiểu dữ liệu> [RBTV],
………,
<thuộc tính n> <kiểu dữ liệu> [RBTV],
[RBTV]
)

98

98

▪ Trong đó kiểu dữ liệu bao gồm:


Chương 3: SQL
- Kiểu số (Numeric)
+ Số nguyên : INT, INTEGER, SMALLINT
+ Số thực : FLOAT, REAL, DOUBLE PRECISION.
+ Số thực có định dạng : DECIMAL (i, j) hay NUMERIC (i, j)
- Kiểu chuỗi ký tự (Character - String)
+ Chuỗi ký tự có chiều dài cố định : CHAR (n)
+ Chuỗi ký tự có chiều dài biến động : VARCHAR (n)
- Kiểu ngày/giờ (DateTime) : DATETIME
- Kiểu Boolean: TRUE/ FALSE

99

33
15/09/2022

Vd : Tạo bảng NHÂNVIÊN trong CSDL Quản lý dự án


Chương 3: SQL
CREATE TABLE NHANVIEN
( MANV CHAR(10),
HONV VARCHAR(100),
TENNV VARCHAR(50),
NGAYSINH DATETIME ,
DIACHI VARCHAR(150),
PHAI VARCHAR(30),
LUONG FLOAT,
MAPHONG CHAR(10)
)

100

Khai báo các ràng buộc cơ bản:


- Ràng buộc trên thuộc tính:
Not Null: giá trị tại cột được đặt ràng buộc này không được rỗng.
Unique: giá trị tại cột được đặt ràng buộc này là duy nhất.
Default: đặt giá trị mặc định
Check: kiểm tra giá trị của cột

101

101

Vd : Tạo bảng NHÂNVIÊN trong CSDL Quản lý dự án


Chương 3: SQL
CREATE TABLE NHANVIEN
( MANV CHAR(10) NOT NULL,
HONV VARCHAR(100) NOT NULL,
TENNV VARCHAR(50) NOT NULL,
NGAYSINH DATETIME ,
DIACHI VARCHAR(150) DEFAULT ‘Chưa có’
PHAI VARCHAR(30) CHECK (PHAI IN (‘Nam’, ‘Nữ’, ‘Khác’)),
LUONG FLOAT,
MAPHONG CHAR(10)
)

102

34
15/09/2022

- Ràng buộc khóa chính: PRIMARY KEY


CREATE TABLE NHANVIEN
( MANV CHAR(10) PRIMARY KEY,
HONV VARCHAR(100) NOT NULL,
TENNV VARCHAR(50) NOT NULL,
NGAYSINH DATETIME ,
DIACHI VARCHAR(150) DEFAULT ‘Chưa có’
PHAI VARCHAR(30) CHECK (PHAI IN (‘Nam’, ‘Nữ’, ‘Khác’)),
LUONG FLOAT,
MAPHONG CHAR(10)
)

103

- Hoặc:
CREATE TABLE NHANVIEN
( MANV CHAR(10),
HONV VARCHAR(100) NOT NULL,
TENNV VARCHAR(50) NOT NULL,
NGAYSINH DATETIME ,
DIACHI VARCHAR(150) DEFAULT ‘Chưa có’
PHAI VARCHAR(30) CHECK (PHAI IN (‘Nam’, ‘Nữ’, ‘Khác’)),
LUONG FLOAT,
MAPHONG CHAR(10),
PRIMARY KEY(MANV)
)

104

- Ràng buộc khóa ngoại: FOREIGN KEY


CREATE TABLE NHANVIEN
( MANV CHAR(10) PRIMARY KEY,
HONV VARCHAR(100) NOT NULL,
TENNV VARCHAR(50) NOT NULL,
NGAYSINH DATETIME ,
DIACHI VARCHAR(150) DEFAULT ‘Chưa có’
PHAI VARCHAR(30) CHECK (PHAI IN (‘Nam’, ‘Nữ’, ‘Khác’)),
LUONG FLOAT,
MAPHONG CHAR(10),
FOREIGN KEY (MAPHONG) REFERENCES PHONG(MAPHONG)
)

105

35
15/09/2022

- Đặt tên cho ràng buộc: CONSTRAINT <Tên ràng buộc> <RBTV>
Vd:
CREATE TABLE NHANVIEN
( MANV CHAR(10)
CONSTRAINT PK_NHANVIEN PRIMARY KEY,
HONV VARCHAR(100) NOT NULL,
TENNV VARCHAR(50) NOT NULL,
NGAYSINH DATETIME ,
DIACHI VARCHAR(150)
CONSTRAINT DF_DIACHI_NHANVIEN DEFAULT ‘Chưa có’
PHAI VARCHAR(30)
CONSTRAINT CK_PHAI_NHANVIEN CHECK (PHAI IN (‘Nam’, ‘Nữ’, ‘Khác’)),
LUONG FLOAT,
MAPHONG CHAR(10),
CONSTRAINT FK_MAPHONG_NHANVIEN FOREIGN KEY (MAPHONG)
REFERENCES PHONG(MAPHONG)
)

106

Các lệnh cập nhật

Lệnh Alter Table: Dùng để thay đổi cấu trúc của bảng (thêm hoặc xóa
thuộc tính trong bảng
▫ Thêm thuộc tính:
ALTER TABLE <tên bảng>
ADD <thuộc tính> <kiểu dữ liệu>
Ví dụ:
Thêm thuộc tính (cột) NGHENGHIEP có kiểu dữ liệu chuỗi, tối đa chứa 12
ký tự vào bảng NHANVIEN:
ALTER TABLE NHANVIEN
ADD NGHENGHIEP VARCHAR(12)

107

107

Các lệnh cập nhật

Lệnh Alter Table:


▫ Thay đổi thuộc tính:
ALTER TABLE <tên bảng>
ALTER COLUMN <thuộc tính> <kiểu dữ liệu>
Ví dụ:
Chỉnh sửa thuộc tính (cột) NGHENGHIEP có kiểu dữ liệu chuỗi, tối đa chứa
20 ký tự vào bảng NHANVIEN:
ALTER TABLE NHANVIEN
ALTER COLUMN NGHENGHIEP VARCHAR(20)

108

108

36
15/09/2022

▫ Hủy bỏ thuộc tính:


ALTER TABLE <tên bảng> DROP COUMN <thuộc tính>

Ví dụ: Xóa thuộc tính (cột) NGHENGHIEP trong bảng NHANVIEN:


ALTER TABLE NHANVIEN
DROP COLUMN NGHENGHIEP

Lệnh Drop Table


- Dùng để xóa bỏ một bảng.
- Cú pháp: DROP TABLE <tên bảng>

- Ví dụ: Xóa bảng NHANVIEN


DROP TABLE NHANVIEN

109

Lệnh Insert Into


- Dùng để thêm một hay nhiều dòng bằng cách chỉ ra tên bảng và danh sách các giá
trị của một dòng
- Cú pháp
▫ Thêm một bộ vào một quan hệ:
INSERT INTO <BẢNG> {<thuộc tính 1>, <thuộc tính 2>,…}
VALUES (<giá trị 1>, <giá trị 2>,…)

Ví dụ : Thêm vào bảng NHANVIEN


INSERT INTO NHANVIEN
VALUES (‘NV01’ , “Lê Ngọc’,’Linh’,12/8/1992,’64/2bis Trần Đình Xu’, ‘Nữ’, Null, P1)

110

Thêm nhiều dòng vào một bảng, các bộ này là kết quả từ một câu truy vấn:
INSERT INTO <BẢNG> {<thuộc tính 1>, <thuộc tính 2>,…}
SELECT …
FROM …
WHERE …

111

37
15/09/2022

Lệnh Delete From


- Xóa khỏi một quan hệ một hay nhiều dòng
DELETE FROM< tên bảng>
[WHERE <điều kiện>]
Nếu không chỉ ra điều kiện ở mệnh đề WHERE thì tất cả các dòng trong bảng sẽ bị
xóa hết.

Ví dụ: Xóa bảng NHANVIEN


DELETE FROM NHANVIEN
- Xóa những nhân viên nữ
DELETE FROM NHANVIEN
WHERE PHAI=‘Nữ’

112

Lệnh Update table


- Cập nhật các giá trị thuộc tính của một hay nhiều dòng được chọn để cập nhật.
UPDATE <tên bảng>
SET <thuộc tính 1> = <giá trị 1>, <thuộc tính 2> = <giá trị 2>,
…..
[WHERE <điều kiện>]
MANV HỌ TEN GT PHONG NGAYNV
Ví dụ: Bảng NHANVIEN NV001 Trần Mai Lan Nữ KT 01/12/2005
Update NHANVIEN NV002 Lê Hoàng Minh Nam NS 01/05/2005
Set NGAYNV=‘1/1/2012’ NV003 Nguyễn Thị Lý Nữ KT 01/03/2007
Where MANV=‘NV002’
MANV HỌ TEN GT PHONG NGAYNV
NV001 Trần Mai Lan Nữ KT 01/12/2005
NV002 Lê Hoàng Minh Nam NS 01/01/2012
NV003 Nguyễn Thị Lý Nữ KT 01/03/2007

113

Truy vấn cơ bản SQL


▪ Lược đồ CƠ SỞ DỮ LIỆU

114

114

38
15/09/2022

Truy vấn cơ bản SQL


Câu lệnh SELECT- FROM

SELECT <danh sách các thuộc tính>


FROM <tên bảng>

<danh sách các thuộc tính>


Tên các thuộc tính cần được hiển thị trong kết quả truy vấn

<tên bảng>
Tên bảng liên quan đến thuộc tính trong câu truy vấn

115

115

Truy vấn cơ bản SQL


Nhanvien

Vd: Cho biết mã nhân viên, họ, tên nhân viên và lương của họ

SELECT MANV, HONV, TENNV, LUONG


FROM NHANVIEN

KẾT QUẢ

116

116

ASTERISK (*)

- Kí tự * trong mệnh đề Select để lấy tất cả các thuộc


SELECT *
FROM <tên bảng>

Vd: Cho biết thông tin của tất cả các nhân viên trong công ty

SELECT *
FROM NHANVIEN
117

117

39
15/09/2022

DISTINCT, ALL
- Trong mệnh đề SELECT, sử dụng:
DISTINCT: loại bỏ các bộ trùng trong kết quả
ALL: hiển thị tất cả các bộ

Vd: Cho biết các phòng ban có trong công ty

SELECT DISTINCT MAPH KẾT QUẢ


FROM NHANVIEN

SELECT ALL MAPH KẾT QUẢ


FROM NHANVIEN
118

118

Sử dụng các phép toán: + - * /


- Vd: Cho biết mã nhân viên, họ tên và lương của họ sau khi
tăng lên 10%
SELECT MANV, HONV, TENNV, LUONG*1.1
FROM NHANVIEN

SELECT MANV, HONV+’ ‘+ TENNV AS HOTENNV,


LUONG*1.1 AS ‘LUONG TANG 10%’
FROM NHANVIEN

119

119

Mệnh đề WHERE
- Điều kiện lọc dữ liệu theo hàng
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
<điều kiện> có thể là:
▪ WHERE <tên cột> <phép so sánh> <giá trị>
• Trong đó: <phép so sánh>: =, <>, >, >=, <, <=
• Nếu nhiều mệnh đề điều kiện nối với nhau, sử dụng phép toán
logic như sau:
WHERE <ĐK1> AND <ĐK2>
WHERE <ĐK1> OR <ĐK2>
120

120

40
15/09/2022

MANV HO TEN GT PHONG LUONG


Vd: NV01 Nguyễn Tiến Nam Kỹ thuật 15.000.000
Cho biết mã nhân viên, họ, NV02 Mai Văn Tùng Nam Kế toán 13.000.000
tên, giới tính, phòng và NV03 Trần Ngọc Hà Nữ Kế toán 16.000.000
lương của các nhân có lương NV04 Võ Thúy Hằng Nữ Tiếp tân 7.000.000

từ 7.000.000 trở lên NV05 Lương Sơn Bá Nam Kỹ thuật 12.000.000


NV06 Hoàng Thủy Nữ Kế toán 5.000.000
NV07 Chúc Anh Đài Nữ Tiếp tân 4.000.000
NV08 Trần Huyền Trân Nữ Kỹ thuật 8.000.000
NV09 Lê Ngọc Hân Nữ Tiếp tân 6.000.000
NV10 Phạm Mách Nam Kỹ thuật 16.000.000

MANV HO TEN GT PHONG LUONG


SELECT MANV, HO, TEN, GT,
NV01 Nguyễn Tiến Nam Kỹ thuật 15.000.000
PHONG, LUONG
FROM NHANVIEN NV02 Mai Văn Tùng Nam Kế toán 13.000.000
WHERE LUONG >= 7 000 000 NV03 Trần Ngọc Hà Nữ Kế toán 16.000.000
NV04 Võ Thúy Hằng Nữ Tiếp tân 7.000.000
NV05 Lương Sơn Bá Nam Kỹ thuật 12.000.000

121

So sánh chuỗi: LIKE, NOT LIKE


So sánh chuỗi gần đúng: % đại diện cho chuỗi bất kì
_ đại diện cho kí tự bất kì
Vd: Cho biết các nhân viên họ Nguyễn
SELECT *
FROM NHANVIEN
WHERE HONV LIKE N‘Nguyễn%’

- So sánh với giá trị: IS NULL, IS NOT NULL


Vd: Cho biết các nhân viên chưa cung cấp địa chỉ
SELECT *
FROM NHANVIEN
122
WHERE DIACHI IS NULL

122

Sử dụng các phép toán: BETWEEN… AND…


Vd: Cho biết các nhân viên có lương nằm trong khoảng 7 triệu đến 10 triệu
SELECT *
FROM NHANVIEN
WHERE LUONG BETWEEN 7000000 AND 10000000

Vd: Cho biết các nhân viên có lương nằm trong khoảng 7 triệu đến 10 triệu
SELECT *
FROM NHANVIEN
WHERE LUONG NOT BETWEEN 7000000 AND 10000000

123

123

41
15/09/2022

Phép kết trong WHERE

SELECT MANV, HOTEN, NTNS, PHAI, PHONG, TENPH, TRPH


FROM NHANVIEN, PHONGBAN
WHERE PHONG = MAPH

124

- Thuộc tính trùng: Khi tên thuộc tính trong các quan hệ khác nhau được đặt giống
nhau, bắt buộc phải chỉ rõ thuộc tính được lấy từ bảng nào:
<Tên quan hệ>. <Tên thuộc tính>

MAPH

SELECT MANV, HOTEN, NTNS, PHAI,


NHANVIEN.MAPH, TENPH, TRPH
FROM NHANVIEN, PHONGBAN
WHERE NHANVIEN.MAPH = PHONGBAN.MAPH

125

Phép kết INNER JOIN


Select Danh_sách_các_cột
From Tên_bảng
Left/Right Join Tên_bảng_quan_hệ On Điều_kiện_quan_hệ

- Left Join: chỉ định việc so sánh giá trị các cột trong bảng được ưu tiên cho
mối quan hệ bên nhánh trái
- Right Join: chỉ định việc so sánh giá trị các cột trong bảng được ưu tiên cho
mối quan hệ bên nhánh phải

126

42
15/09/2022

- Left Join: Bảng A LEFT [OUTER] JOIN với bảng B thì kết quả gồm các bản ghi có
trong bảng A, với các bản ghi không có mặt trong bảng B thì các cột từ B được điền
NULL. Các bản ghi chỉ có trong B mà không có trong A sẽ không được trả về.
Ví dụ:
SELECT MANV, HOTEN, NHANVIEN.MAPH, TENPH, TRPH
FROM NHANVIEN INNER JOIN PHONGBAN
ON NHANVIEN. MAPH= PHONGBAN.MAPH

- Right Join: đổi vị trí của bảng A và B

127

- Mệnh đề liên kết dữ liệu trong 2 bảng: Full [Outer] Join


Là kết quả gộp lại của cả hai table bên trái và bên phải Với các mẫu tin chỉ
xuất hiện trong một bảng thì các cột dữ liệu từ bảng kia được điền giá trị
NULL.

128

- Sắp xếp kết quả trả về với ORDER BY: dùng để sắp xếp thứ tự (mặc định là sắp
xếp tăng dần)
SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện>
ORDER BY <danh sách các cột> <ASC/DESC>

Vd: Cho biết mã nhân viên, họ tên, sắp xếp theo mã nhân viên giảm dần
SELECT MANV, HONV, TENNV
FROM NHANVIEN
ORDER BY MANV DESC

129

43
15/09/2022

Câu lệnh GROUP BY


- GROUP BY chỉ ra các thuộc tính gom nhóm
▪ Sử dụng các hàm COUNT, SUM, MIN, MAX, AVG trên từng
nhóm nhỏ: mệnh đề GROUP BY
– Chia các dòng thành các nhóm nhỏ dựa trên tập thuộc tính chia
nhóm.
– Thực hiện các phép toán trên nhóm như: Count (thực hiện phép
đếm), Sum (tính tổng), Min(lấy giá trị nhỏ nhất), Max(lấy giá trị
lớn nhất), AVG (lấy giá trị trung bình).

130

Chương
Vd: Tìm số lượng2: Môviên
nhân hình dữmỗi
trong liệuphòng
quan hệ
MA_PHG F COUNT (MANV) (NHANVIEN)

MAPHG MANV MAPHG SONV

KT NV01 KT 3
TCHC NV02 TCHC 2
TCHC NV03
KT NV04
KT NV05

131

Chương 3: SQL
Chia các dòng thành các
Q S
nhóm dựa trên tập thuộc tính
a 1
a 02 chia nhóm
b 9
Q
b 5 Count(S) Tương tự cho các
c 1 a 2 hàm SUM, MIN,
nhóm

c 08 b 2
MAX, AVG
c 6 c 5
c 4 d 3
c 1
d 01
d 16 Câu SQL:
d 85 Select Q, count(S)
0
Các thuộc tính GROUP BY: Q From NV
Group by Q

132

44
15/09/2022

▪ Vd: Cho biết số lượng nhân viên theo từng phái?


Do cột phái có 2 giá trị “nam” và “nữ”, trường hợp này ta chia bảng NhanVien thành
2 nhóm nhỏ. Thuộc tính chia nhóm là thuộc tính “Phai”.
SELECT COUNT(MANV)
FROM NHANVIEN
GROUP BY PHAI
Vd: Cho biết số lượng nhân viên theo từng phòng?
Do cột MaPH có 3 giá trị “NC” và “DH” và “QL”, trường hợp này ta chia bảng nhân
viên thành 3 nhóm nhỏ. Thuộc tính chia nhóm là thuộc tính “MaPH”.
SELECT COUNT(MANV)
FROM NHANVIEN
GROUP BY MAPH

133

- Câu lệnh HAVING


▪ Mệnh đề HAVING lấy các giá trị của hàm gom nhóm trên những nhóm thỏa mãn
một số điều kiện nhất định.
▪ Mệnh đề này dùng để chỉ điều kiện lọc trên các nhóm chứ không lọc trên từng bộ.
Điều kiện trong mệnh đề HAVING được thực hiện sau khi gom nhóm các bộ.

Vd: Cho biết mã phòng có số lượng nhân viên từ 2 người trở lên
SELECT MAPH, COUNT(MANV)
FROM NHANVIEN
GROUP BY MAPH
HAVING COUNT(MANV)>=2

134

- Hàm tính tổng hợp trong SQL: COUNT, SUM, MAX, MIN, AVG
Vd: Tìm lương cao nhất, thấp nhất, trung bình của các nhân viên
SELECT MAX(LUONG), MIN(LUONG), AVG(LUONG)
FROM NHANVIEN

Cho biết tổng số tiền lương của toàn bộ nhân viên


SELECT SUM(LUONG)
FROM NHANVIEN

So nhan vien vien trong cong ty


SELECT COUNT(MANV)
FROM NHANVIEN

135

45
15/09/2022

- Truy vấn lồng: sử dụng một khối lệnh SELECT – FROM – WHERE trong mệnh
đề WHERE của một câu truy vấn khác. So sánh tập hợp: các toán tử thường được
sử dụng trong so sánh là In, Not In, All, Any, Some, Exists, Not Exists

SELECT <danh sách cột>


FROM <danh sách bảng>
WHERE <so sánh tập hợp> (SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện>)
Truy vấn
cha
Truy vấn con

136

Vd:
Cho biết mã nhân viên, họ tên nhân viên thuộc phòng Tài chính
SELECT MANV, HONV+ ‘ ‘+TENNV AS HOTENNV
FROM NHANVIEN
WHERE MAPH IN (SELECT MAPH
FROM PHONG
WHERE TENPH=‘Tài chính’)
Vd: Cho biết họ tên nhân viên không thuộc Phòng Kế Toán
SELECT HONV, TENNV
FROM NHANVIEN
WHERE MANV NOT IN (SELECT MAPH FROM PHONG
WHERE TENPH=‘Kế Toán’)

137

Bài tập: Cho lược đồ CSDL “quản lý đề án công ty” như sau

NHANVIEN (MaNV, HoTen, Phai, Luong,NTNS, Ma_NQL, MaPH)


PHONGBAN (MaPH, TenPH, TRPH)
DEAN (MaDA, TenDA, Phong, NamThucHien)
PHANCONG (MaNV, MaDA, ThoiGian)

138

46
15/09/2022

NHANVIEN
MANV HOTEN NTNS PHAI MA_NQL MaPH LUONG
001 Vuong Ngoc Quyen 22/10/195 Nu QL 3.000.00
7 0
002 Nguyen Thanh Tung 09/01/195 Nam 001 NC 2.500.00
5 0
003 Le Thi Nhan 18/12/196 Nu 001 DH 2.500.00
0 0
004 Dinh Ba Tien 09/01/196 Nam 002 NC 2.200.00
8 0
005 Bui Thuy Vu 19/07/197 Nam 003 DH 2.200.00
2 0
006 Nguyen Manh Hung 15/09/197 Nam 002 NC 2.000.00
3 0
007 Tran Thanh Tam 31/07/197 Nu 002 NC 2.200.00
5 0
008 Tran Hong Minh 04/07/197 Nu 004 NC 1.800.00
6 0
PHANCONG MANV MADA THOIGIA
N
DEAN 001 TH001 30,0

MADA TENDA PHONG NamThucHien 001 TH002 12,5

TH001 Tin hoc hoa 1 NC 2002 002 TH001 10,0


002 TH002 10,0
TH002 Tin hoc hoa 2 NC 2003
002 DT001 10,0
DT001 Dao tao 1 DH 2004
002 DT002 10,0
DT002 Dao tao 2 DH 2004
003 TH001 37,5

004 DT001 22,5


PHONGBA
N MAPH TENPH TRPH 004 DT002 10,0

QL Quan Ly 001 006 DT001 30,5

DH Dieu Hanh 003 007 TH001 20,0

NC Nghien Cuu 002 007 TH002 10,0

008 DT002 12,5


139

139

Câu hỏi 1: Sử dụng =,>,>=,… Danh sách các nhân viên sinh trong khoảng từ năm
1978 đến 1983?

Câu hỏi 2: Sử dụng BETWEEN, ORDER BY. Danh sách các nhân viên sinh trong
khoảng từ năm 1978 đến 1983? Sắp xếp theo mức lương giảm dần.

Câu hỏi 3: Sử dụng IS NULL. Cho biết những nhân viên không có người quản lý trực
tiếp? (không chịu sự quản lý trực tiếp của người nào)

140

Câu hỏi 4: Sử dụng Is Not Null. Cho biết những nhân viên có người quản lý trực
tiếp?Thông tin hiển thị gồm: mã nhân viên, họ tên, mã người quản lý.

Câu hỏi 5: Sử dụng IN (so sánh với một giá trị cụ thể). Cho biết họ tên nhân viên
thuộc phòng ‘NC’?

Câu hỏi 6: Sử dụng IN (so sánh với một tập hợp giá trị chọn từ câu SELECT
khác). Cho biết họ tên nhân viên thuộc phòng ‘NC’ hoặc phòng ‘DH’?

141

47
15/09/2022

Câu hỏi 7: Cho biết mã số, họ tên, ngày tháng năm sinh của những nhân viên đã
tham gia đề án?

Câu hỏi 8: Sử dụng NOT IN. Cho biết mã số, họ tên, ngày tháng năm sinh của
những nhân viên không tham gia đề án nào?
Gợi ý cho mệnh đề NOT IN: thực hiện câu truy vấn “tìm nhân viên có tham gia đề
án (dựa vào bảng PhanCong)”, sau đó lấy phần bù.

142

Câu hỏi 9: so sánh chuỗi = chuỗi. Liệt kê mã nhân viên, ngày tháng năm sinh, mức
lương của nhân viên có tên “Nguyễn Tường Linh”?

Câu hỏi 10: Sử dụng LIKE (%: thay thế 1 chuỗi ký tự). Tìm những nhân viên có họ
Nguyễn.

Câu hỏi 11: Tìm những nhân viên có tên Lan.

Câu hỏi 12: Tìm những nhân viên có tên lót là “Văn”.

143

Sử dụng các hàm COUNT, SUM, MIN, MAX, AVG trên 1 nhóm lớn (trên toàn bộ quan
hệ):
– Câu hỏi 13: Tính số nhân viên của công ty.
– Câu hỏi 14: Tính số lượng nhân viên quản lý trực tiếp nhân viên khác.
– Câu hỏi 15: Tìm mức lương lớn nhất, mức lương trung bình, tổng lương của công ty.
– Câu hỏi 16: Cho biết nhân viên có mức lương lớn nhất.
– Câu hỏi 17: Cho biết nhân viên có mức lương trên mức lương trung bình của công ty
–Câu hỏi 18: Cho biết số lượng nhân viên theo từng phái?
–Câu hỏi 19: Cho biết số lượng nhân viên theo từng phòng?
–Câu hỏi 20: Với mỗi phòng, cho biết số lượng nhân viên theo từng phái?
–Câu hỏi 21: Đếm số đề án của từng nhân viên tham gia?
–Câu hỏi 22: Cho biết những nhân viên tham gia từ 2 đề án trở lên?
–Câu . biết mã phòng ban có trên 4 nhân viên?
hỏi 23: Cho

144

48
15/09/2022

5 RÀNG BUỘC
TOÀN VẸN
145

145

5.1 Khái niệm


▪ Ràng buộc toàn vẹn sử dụng các luật để định nghĩa các điều kiện đảm
bảo cho cơ sở dữ liệu luôn ở trạng thái an toàn. Ràng buộc toàn vẹn là
một điều kiện được định nghĩa liên quan đến một hoặc nhiều quan hệ bối
cảnh khác nhau.
▪ Các mối quan hệ ràng buộc là những điều kiện bất biến mà mọi thể hiện
của quan hệ đều phải thỏa mãn ở bất kì thời điểm nào.
Ví dụ:
- Điểm phải là số không âm và <= 10.
- Số lượng bán phải nhỏ hơn hoặc bằng số lượng tồn

146

146

5.2 Các vấn đề liên quan đến RBTV


- Bối cảnh: là những quan hệ có khả năng làm cho RBTV bị vi phạm.
- Biểu diễn: phát biểu bằng ngôn ngữ hình thức (phép tính quan hệ, đại số
quan hệ, mã giả,…)
- Tầm ảnh hưởng: là bảng 2 chiều, xác định các thao tác ảnh hưởng (+)
và thao tác không ảnh hưởng (-) lên các quan hệ nằm trong bối cảnh.
Thêm Xóa Sửa

Quan hệ 1 + + -
………
Quan hệ n - - +(A)

Ký hiệu + : Có thể gây ra vi phạm RBTV


Ký hiệu - : Không thể gây ra vi phạm RBTV
Ký hiệu +(A) : Có thể gây ra vi phạm RBTV khi thao tác trên thuộc tính A
147

147

49
15/09/2022

5.3 Các loại RBTV


RBTV miền giá trị:
Rbtv miền giá trị là ràng buộc quy định các giá trị cho một thuộc tính. Miền
giá trị của một thuộc tính có thể liên tục hoặc rời rạc.
Vd:
NHANVIEN (MANV, HONV, TENLOT, TENNV, NGSINH, PHAI, DCHI, MA_NQL,
MAPHG)
Rb: Phái của nhân viên chỉ có thể là ‘Nam’ hoặc ‘Nữ’
▫ Bối cảnh: NHANVIEN
▫ Biểu diễn: n  NHANVIEN (n.PHAI  {‘Nam’,’Nữ’})
▫ Bảng tầm ảnh hưởng :
Thêm Xóa Sửa
NHANVIEN + - +(PHAI)
148

148

Ràng buộc toàn vẹn liên thuộc tính trên cùng một quan hệ.
Rbtv liên thuộc tính trên một quan hệ là sự ràng buộc giữa các thuộc tính trong cùng
một quan hệ
Vd:
DUAN (MADA, TENDA, DDIEM_DA, PHONG, NGBD_DK, NGKT_DK)
Rb: Với mọi dự án, ngày bắt đầu dự kiến (NGBD_DK) phải nhỏ hơn ngày kết thúc
dự kiến (NGKT_DK)
- Bối cảnh: DUAN
- Biểu diễn: d  DUAN ( d.NGBD_DK <= d.NGKT_DK)
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa
DUAN + - +(NGBD_DK, NGKT_DK)

149

Ràng buộc Chương


toàn vẹn liên bộ trên BUỘC
4: RÀNG một quan hệ: VẸN
TOÀN
Ràng buộc giữa các bộ giá trị trên cùng một quan hệ là sự tồn tại của một hay nhiều bộ
phụ thuộc vào sự tồn tại của một hay nhiều bộ khác trong một quan hệ đó. Trường hợp
đặc biệt của Rbtv liên bộ trên một quan hệ là ràng buộc khóa chính và ràng buộc duy
nhất
Vd: PHANCONG(MANV, MADA, ĐỊAĐIỂMDA)
Rb: Mỗi nhân viên không được tham gia quá 5 dự án
▪ Bối cảnh: PHANCONG
▪ Biểu diễn:
p  PHANCONG (Card({n PHANCONG/n.MANV=p.MANVʌ n.MADA=p.MADA})<=5)
▪ Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

NHANVIEN + - +(MANV, MADA)

150

50
15/09/2022

Vd 2: DUAN(MADA,TENDA,ĐĐIEM_DA,MAPHONG)
Chương 4: RÀNG BUỘC TOÀN VẸN
Rb: Tên dự án là duy nhất
Bối cảnh: DUAN
Biểu diễn: d1, d2  DUAN (d1d2  d1.TENDAd2.TENDA)
Bảng tầm ảnh hưởng:
Thêm Xóa Sửa
DUAN + - +(TENDA)

151

Ràng buộc toàn vẹn tham chiếu


- RBTV tham chiếu là ràng buộc trên giá trị các thuộc tính trong một quan hệ nào đó,
các giá trị này phải xuất hiện (ở bộ nào đó) trên tập thuộc tính khóa chính của một
quan hệ khác. Rbtv tham chiếu còn gọi là ràng buộc phụ thuộc tồn tại hay ràng buộc
khóa ngoại.
Vd: PHONGBAN (MAPH, TENPH, TRPH)
NHANVIEN (MANV, HOTEN, NTNS, PHAI MAPH, LUONG)
Rb: Mỗi trưởng phòng phải là một nhân viên trong công ty.
▪ Bối cảnh: NHANVIEN, PHONGBAN
▪ Biểu diễn:
p  PHONGBAN (n  NHANVIEN (p.TRPH= n.MANV))
Hay: PHONGBAN[TRPH] NHANVIEN[MANV])
▪ Bảng tầm ảnh hưởng: Thêm Xóa Sửa
PHONGBAN + - +(TRPH)

NHANVIEN - + +(MANV)

152

Ràng buộc toàn vẹn liên thuộc tính liên quan hệ


Rbtv liên thuộc tính liên quan hệ là ràng buộc xảy ra trên nhiều thuộc tính của nhiều
quan hệ khác nhau
Vd:
DATHANG(MADH, MAKH, NGAYDH)
GIAOHANG(MAGH, MADH, NGAYGH)
Rb: Ngày giao hàng không được đặt trước ngày đặt hàng
▪ Bối cảnh: DATHANG, GIAOHANG
▪ Biểu diễn:
gGIAO_HANG (dDAT_HANG(d.MADH=g.MADH  d.NGAYDH <= g.NGAYGH))
▪ Bảng tầm ảnh hưởng:
Thêm Xóa Sửa
DATHANG - - + (NGAYDH)
GIAOHANG + - + (MADH, NGAYGH)

153

51
15/09/2022

Ràng buộc toàn vẹn liên bộ, liên quan hệ


RBTV liên bộ, liên quan hệ là điều kiện giữa các bộ trên nhiều quan hệ khác nhau,
nghĩa là sự tồn tại của bộ dữ liệu trên quan hệ này quyết định sự tồn tại của bộ dữ liệu
trên quan hệ khác
Vd:
PHONGBAN (MAPH, TENPH, TRPH, NGNC)
DIADIEM_PHG (MAPH, DIADIEM)
Rb: Mỗi phòng ban phải có ít nhất một địa điểm phòng
▪ Bối cảnh: PHONGBAN, DIADIEM_PHG
▪ Biểu diễn: p  PHONGBAN (d  DIADIEM_PHG(p.MAPH = d.MAPH))
▪ Bảng tầm ảnh hưởng: Thêm Xóa Sửa
PHONGBAN + - + (MAPH)
DIADIEM_PHG - + + (MAPH)

154

Ràng buộc toàn vẹn do thuộc tính tổng hợp


- Thuộc tính tổng hợp là thuộc tính mà giá trị của nó được tính toán từ các thuộc tính
khác
Vd:
PXUAT(SOPHIEU, NGAY, TONGTRIGIA)
CTIET_PX(SOPHIEU, MAHANG, SL, DG)
Rb: Tổng trị giá của 1 phiếu xuất phải bằng tổng trị giá các chi tiết xuất.
▪ Bối cảnh: PXUAT,CTIET_PX
▪ Biểu diễn:
pxPXUAT(px.TONGTRIGIA=(ct  CTIET_PX  ct.SOPHIEU = px.SOPHIEU) (ct.SL*ct.DG))
▪ Bảng tầm ảnh hưởng:
Thêm Xóa Sửa
PXUAT - - + (SOPHIEU,TONGTRIGIA)
CTIET_PX + + + (SOPHIEU,SL,DG)

155

6
PHỤ THUỘC
HÀM VÀ
CHUẨN HÓA
CSDL
156

156

52
15/09/2022

6.1 Các vấn đề liên quan thiết kế CSDL


- Nhìn lại vấn đề thiết kế CSDL:
• Dựa trên trực quan của người thiết kế
• Thiếu một tiêu chuẩn hình thức để đánh giá
- Một lược đồ CSDL thiết kế tốt được thể hiện:
• Ngữ nghĩa của các quan hệ, thuộc tính được thể hiện rõ ràng
• Các thuộc tính trên quan hệ không trùng lắp
• Giảm trùng lắp giữa các bộ trên một quan hệ (dư thừa thông tin)
• Giảm giá trị rỗng (Null) trên quan hệ
- Kiểm tra lược đồ tốt hay xấu:
• Kinh nghiệm thiết kế
• Dạng chuẩn
157

157

Sự dư thừa thông tin


- Khi một phần dữ liệu có thể suy ra từ một số thành phần dữ liệu khác thì ta nói
có sự trùng lắp dữ liệu

MANV HOTENNV NGAYSINH DIACHI MAPHONG TENPHONG TRPHONG

NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005

NV0002 Trần Minh Tú 30/6/1989 12bis/27 Nguyễn Huệ,Q1 1 Hệ thống NV0002

NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003

NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002

NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005

Dư thừa
Thông tin về mã phòng, tên phòng và trưởng phòng lặp lại nhiều lần thông tin

158

Các dị thường khi thực hiện các thao tác cập nhật
Thêm: Khi thêm 1 nhân viên thì phải thêm thông tin về phòng hoặc là cho các
giá trị liên quan đến phòng là null.
Không thể thêm một phòng mới nếu chưa có nhân viên thuộc về phòng đó
MANV HOTENNV NGAYSINH DIACHI MAPHONG TENPHONG TRPHONG

NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005

NV0002 Trần Minh Tú 30/6/1989 12bis/27 Nguyễn Huệ,Q1 1 Hệ thống NV0002

NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003

NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002

NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005

NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 Null Null Null

159

53
15/09/2022

Sửa: Khi sửa thông tin về phòng thì phải sửa tất cả các dòng có liên quan nếu
không sẽ xảy ra tình trạng không nhất quán
Xóa: Có thể bị mất thông tin. Xem trường hợp xóa NV0003.

MANV HOTENNV NGAYSINH DIACHI MAPHONG TENPHONG TRPHONG

NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005

NV0002 Trần Minh Tú 30/6/1989 12bis/27 Nguyễn Huệ,Q1 1 Hệ thống NV0002

NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003

NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002

NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005

NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 Null Null Null

160

Tốn không gian lưu trữ Lược đồ 1

MANV HOTENNV NGAYSINH DIACHI MAPHONG TENPHONG TRPHONG


NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005
NV0002 Trần Minh Tú 30/6/1989 12bis/27 Nguyễn Huệ,Q1 1 Hệ thống NV0002
NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003
NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002
NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005

NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 2 Nhân sự NV0005

Lược đồ 2
MANV HOTENNV NGAYSINH DIACHI
NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức MAPHONG TENPHONG TRPHONG

NV0002 Trần Minh Tú 30/6/1989 12bis/27 Nguyễn Huệ,Q1 2 Nhân sự NV0005


NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT
1 Hệ thống NV0002
NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi
NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 3 Kỹ thuật NV0003
NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1

161

6.2 Phụ thuộc hàm (PTH)


6.2.1 Vì sao có PTH
- Tính duy nhất của các thuộc tính
- Các ràng buộc trên miền giá trị và ràng buộc ứng dụng
- Các ràng buộc của thế giới thực
- PTH giúp định nghĩa “khóa”
6.2.2 Định nghĩa phụ thuộc hàm
- Cho lược đồ quan hệ R với tâp thuộc tính U=(A1, A2,…, An ), X và Y là 2 tập
thuộc tính con của U (X, Y  U).
- Y được gọi là phụ thuộc hàm vào X hoặc X xác định hàm Y nếu:
t1.X = t2.X→ t1.Y = t2.Y
- Ký hiệu: X → Y
- Ý nghĩa : Nếu 2 bộ có cùng trị tại thuộc tính X thì cũng có cùng trị tại thuộc162
tính Y.
162

54
15/09/2022

Vd: MANV → HOTENNV, NGAYSINH, DIACHI

MANV HOTENNV NGAYSINH DIACHI


NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức
NV0002 Trần Minh Tú 30/6/1989 12bis/27 Nguyễn Huệ,Q1
NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT
NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi
NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9
NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1

Nhận xét:
- PTH thể hiện ràng buộc từ thế giới thực
- Khi K là khóa của R thì ta có PTH: K → U
- PTH dùng để đánh giá một kết quả thiết kế CSDL

163

Nhận dạng PTH


- Việc nhận diện PTH dựa vào ý nghĩa của thuộc tính và mối quan hệ của chúng
trong quan hệ
- Vd:
MANV HOTENNV NGAYSINH DIACHI MAPHONG TENPHONG TRPHONG
NV0001 Nguyễn Ngọc Anh 4/12/1990 111 Hoàng Diệu, Thủ Đức 2 Nhân sự NV0005
NV0002 Trần Minh Tú 30/6/1989 12bis/27 Nguyễn Huệ,Q1 1 Hệ thống NV0002
NV0003 Lê Văn Hiệp 20/7/1991 75A Ngô Tất Tố, Q.BT 3 Kỹ thuật NV0003
NV0004 Hoàng Kiên Quyết 12/8/1987 Chung cư Miếu Nổi 1 Hệ thống NV0002
NV0005 Nguyễn Thị Mai 19/10/1991 345/67bis Man Thiện, Q9 2 Nhân sự NV0005

NV0006 Trần Minh Mẫn 6/2/1993 276 Trần Hưng Đạo, Q1 2 Nhân sự NV0005

Dựa vào dữ liệu trên, ta có:


MANV → HOTENNV

164

6.2.3 Hệ tiên đề Armstrong


5.3 HỆ LUẬT DẪN ARMSTRONG
Cho R(X,Y,Z)
Luật phản xạ: Y  X, X→ Y.
Luật cộng: Nếu X→ Y thì XZ → YZ.
(XZ là hợp của hai tập A và Z)
Luật bắc cầu: Nếu X→ Y và Y→ Z thì X→ Z.

Các luật suy dẫn từ hệ luật dẫn Armstrong:


Bắc cầu giả:Nếu X→ Y và YW → Z thì XW → Z
Luật hội: Nếu X→ Y và X → Z thì X → YZ
Luật phân rã : Nếu X→ YZ thì X → Y và X →Z

165

55
15/09/2022

6.2.4 Phụ thuộc hàm đầy đủ


5.3 HỆ LUẬT DẪN ARMSTRONG
Xét PTH X → Y được định nghĩa trên R.
Nếu  X’ X sao cho X’ → Y thì Y phụ thuộc đầy đủ vào X

Vd: Cho R(ABCDEI)


Tập PTH: F = {A →BCD, BCD → E, CD → EI}
PTH BCD → E là PTH đầy đủ không?

166

6.2.5 Bao đóng


a. Bao đóng5.4của
BAOtập thuộc
ĐÓNG CỦAtính
TẬP THUỘC TÍNH

- Bao đóng của một tập thuộc tính X nhờ vào tập phụ thuộc hàm cho sẵn:
X+ F = {Y/ X → Y}
 theo định nghĩa: X  X+ F
- Khái niệm bao đóng của X dùng để xét xem một phụ thuộc hàm f có được suy dẫn
từ F hay không.

167

- Thuật toán xác định X+


▪ 5.5 BAO
Tính liên tiếp các ĐÓNG CỦA tính
tập thuộc TẬP THUỘC TÍNH
X0, X1, X (tt)
2 theo phương pháp sau:
▪ Bước 1: X0 = X;
▪ Bước 2: lần lượt xét các PTH của F
▫ Nếu Nếu Y → Z có Y  Xi Thì Xi+1 = Xi = Xi  Z
Loại PTH Y → Z khỏi F
▪ Bước 3: Nếu ở bước 2 không tính được Xi+1 thì Xi chính là bao đóng của X. Ngược lại, lặp
lại bước 2
Ví dụ: Tìm bao đóng của AB với các phụ thuộc hàm sau của Q (ABCDE)
F = {BC → A; B → E; AE → C}
Giải
AB+ = AB
AB+ = AB  E vì có PTH B → E
AB+ = ABE  C vì có PTH AE → C Vậy AB+ = ABCE

168

56
15/09/2022

b. Khái niệm bao đóng của tập phụ thuộc hàm F


5.5 BAO ĐÓNG CỦA TẬP PHỤ THUỘC HÀM
- Tập tất cả phụ thuộc hàm hệ quả của F được gọi là bao đóng của F
- Ký hiệu F + = {X→ Y / F |= X → Y }
▪ Ví dụ:
U= {ABCD}
F= {A → BC (1);
CD → B (2)}
Ta có các PTH hệ quả của F:
- Từ (1), ta có theo luật phân rã A → B và A → C
- Theo luật phản hồi, ta có: A → A; B → B; C → C; D →D; AB → A; AB → B;
BC → B; BC → C;…………

169

- Cách xác định bao đóng của tập PTH


5.5 BAO ĐÓNG CỦA TẬP PHỤ THUỘC HÀM (tt)
THUẬT TOÁN : LĐQH Q, TẬP PTH F
▪Bước 1: Tìm tất cả các tập con của tập thuộc tính của Q
▪Bước 2: Tìm bao đóng của tất cả tập con của tập tìm được ở bước 1
▪Bước 3: Dựa vào bao đóng của các tập con đã tìm để suy ra các PTH  F+
Ví dụ: Q(ABC); F = {AB → C; C → B}
Bước 1: {A}; {B}; {C}; {AB}; {AC}; {BC}; {ABC}
Bước 2: A+F = A; B+F = B; C+F = CB; AB+F = ABC; AC+F = ACB; BC+F = BC;
ABC+F = ABC
Bước 3: C → B; C → CB; AB → ABC; AB→BC; AB → AC; AB → C; AC →ACB;
AC → CB; AC→ AB; AC → B

170

Nhận xét
▪Xác định tập
5.5 BAO ĐÓNG CỦA TẬP PHỤ THUỘC HÀM (tt)
F + dựa vào bộ luật dẫn có thể dẫn đến tâp F + rất lớn.
▪Thực tế người ta thường không đi tính F + mà chỉ sử dụng bộ luật dẫn để trả lời
cho các câu hỏi thuộc dạng:
F |= X→ Y
Vd: Cho U = ABEGIH;
F={AB → E, AG → I, E → G}. CM: F |= AB→ G
Giải : Ta có: AB → E
E→G
Theo luật bắc cầu ta có: AB→ G
Vậy F |= AB→ G

171

57
15/09/2022

6.2.6 Thuật 5.6toán xác định


THUẬT TOÁN khóa
XÁCdựaĐỊNH vào tập PTH
KHÓA DỰA VÀO TẬP
Bước 1: Tìm cácPHỤ
tậpTHUỘC
sau: HÀM

-Tập nguồn : bao gồm các thuộc tính chỉ xuất hiện ở vế trái của tập phụ thuộc hàm F
- Tập đích: bao gồm các thuộc tính chỉ xuất hiện ở vế phải của tập phụ thuộc hàm F
- Tập trung gian : bao gồm các thuộc tính xuất hiện ở cả vế phải và vế trái của tập phụ
thuộc hàm F
- Tập thuộc tính không xuất hiện trong tập phụ thuộc hàm F
Bước 2:
- Tập các thuộc tính khoá K ban đầu bao gồm: các thuộc tính thuộc tập nguồn và tập thuộc
tính không xuất hiện trong tập phụ thuộc hàm.
- Tính bao đóng của K trên F (K+F )
- Nếu K+F = U (tập thuộc tính) thì kết luận K là khoá duy nhất của quan hệ. Kết thúc thuật
toán.
- Ngược lại, chuyển sang bước 3

172

5.6 THUẬT TOÁN XÁC ĐỊNH KHÓA DỰA VÀO TẬP


Bước 3: Lặp:PHỤ THUỘC HÀM (tt)
- Xây dựng tổ hợp của K với tập thuộc tính trung gian.
- Tính bao đóng của tổ hợp đó. Nếu bao đóng = U thì kết luận tổ hợp đó là khoá của
quan hệ
- Nếu tổ hợp xây dựng K1 có bao đóng = U thì không xét các tổ hợp K2 mà K2  K1

173

Vd: Cho R (ABCDE)


F = { f1: B → CD, f2: AE → C, f3: D → B}
Giải:
- Tập các thuộc tính U = ABCDE
- Tập nguồn = AE
- Tập đích = C
- Tập trung gian = BD
- Xét: (AE)+F = AEC
- Xét: (AEB)+F = AEBCD = U
- Xét: (AED)+F = AEDCB = U
Vậy R có 2 khóa là AEB và AED

174

58
15/09/2022

6.3 Chuẩn hóa lược đồ CSDL


- Mỗi một dạng chuẩn là một tập các điều kiện trên lược đồ nhằm đảm bảo
các tính chất của nó (liên quan tới dư thừa và bất thường trong cập nhật)
- Chuẩn hóa dữ liệu: quá trình phân tích lược đồ quan hệ dựa trên các phủ
tối tiểu và các khóa chính để đạt được:
▫ Cực tiểu sự dư thừa
▫ Cực tiểu các phép cập nhật bất thường
- Các dạng chuẩn: dạng chuẩn 1, dạng chuẩn 2, dạng chuẩn 3, dạng
chuẩn Boyce-Codd, dạng chuẩn 4, dạng chuẩn 5

175

175

Dạng chuẩn 1 (DC 1):


Một quan hệ đạt DC 1 không có thuộc tính nào là thuộc tính đa trị, nghĩa là tất cả các
giá trị tại các thuộc tính phải là thuộc tính đơn.
MAPHONG TENPHONG TRPHONG TRUSO
Vd: PHONGBAN
1 Nhân Sự NV001 Tân Bình
Phú Nhuận
Không thuộc
2 Kinh Doanh NV123 Tân Bình
DC1 Phú Nhuận
Q7

MAPHONG TENPHONG TRPHONG TRUSO


1 Nhân Sự NV001 Tân Bình
Phú Nhuận
1 Nhân Sự NV001 Phú Nhuận
Thuộc DC1
2 Kinh Doanh NV123 Tân Bình

2 Kinh Doanh NV123 Phú Nhuận

DC1 có thể dẫn đến trùng lắp 2 Kinh Doanh NV123 Q7


dữ liệu

176

Dạng chuẩn 2 (DC 2):


- Một số khái niệm bổ sung
• Thuộc tính khóa: A là thuộc tính khóa của R nếu A U và A tham gia vào một
khóa của R
• Thuộc tính không khóa: A là thuộc tính không khóa của R nếu A U và A không
tham gia vào một khóa nào của R
Vd: R(MNOPX)
M, N, O là thuộc tính khóa của R
P, X là thuộc tính không khóa của R

177

59
15/09/2022

• Thuộc tính phụ thuộc đầy đủ vào một tập thuộc tính: A là một thuộc tính phụ
thuộc đầy đủ vào X nếu X →A là một phụ thuộc hàm đầy đủ
Vd:
PHANCONG (MANV, MADA, HOTENNV, TENDA, SOGIO, DIADIEM)
F={MANV, MADA → HOTENNV, TENDA, SOGIO, DIADIEM
MANV → HOTENNV
MADA → TENDA}
Trong quan hệ PHANCONG khóa là MANV, MADA
Thuộc tính khóa: MANV, MADA
Thuộc tính không khóa: HOTENNV, TENDA, SOGIO, DIADIEM
Thuộc tính không khóa HOTENNV không phụ thuộc đầy đủ vào khóa MANV,
MADA vì có MANV → HOTENNV
Xét các thuộc tính không khóa còn lại?

178

• Một lược đồ đạt DC2 nếu như lược đồ đó đã đạt DC1 và các thuộc tính không
khóa phụ thuộc đầy đủ vào thuộc tính khóa
Vd1: PHANCONG (MANV, MADA, HOTENNV, TENDA, SOGIO, DIADIEM)
F={MANV, MADA → HOTENNV, TENDA, SOGIO, DIADIEM
MANV → HOTENNV
MADA → TENDA}
Quan hệ PHANCONG không đạt DC2 thì có thuộc tính không khóa HOTENNV
không phụ thuộc đầy đủ vào khóa MANV, MADA
Vd2: PHANCONG (MANV, MADA, SOGIO, DIADIEM)
F={MANV, MADA → HOTENNV, TENDA, SOGIO, DIADIEM}
Quan hệ PHANCONG đạt DC2 vì các thuộc tính không khóa phụ thuộc đầy đủ vào
khóa

179

Biến đổi DC1 sang DC2


- Bước 1: Xác định khóa trên quan hệ DC1
- Bước 2: Xác định các PTH gây ra thuộc tính không khóa không phụ thuộc đầy đủ vào khóa
- Bước 3: Nếu có tồn tại PTH không đầy đủ trên khóa chính thì xóa chúng ở quan hệ cũ và đưa
chúng vào một quan hệ mới. Quan hệ ban đầu loại bỏ các thuộc tính không khóa không phụ
thuộc đầy đủ vào khóa.
Vd: PHANCONG (MANV, MADA, HOTENNV, TENDA, SOGIO, DIADIEM)
F={MANV, MADA → HOTENNV, TENDA, SOGIO, DIADIEM
MANV → HOTENNV
MADA → TENDA}
- Bước 1: Khóa: MANV, MADA
- Bước 2: PTH MANV → HOTENNV, MADA → TENDA
- Bước 3: NHANVIEN(MANV, HOTENNV), DUAN(MADA, TENDA)
PHANCONG (MANV, MADA, SOGIO, DIADIEM)

180

60
15/09/2022

Dạng chuẩn 3 (DC 3):


- Khái niệm bổ sung: Thuộc tính phụ thuộc bắc cầu vào một tập thuộc tính. A phụ thuộc bắc
cầu vào X nếu thỏa 4 điều kiện sau:
X →Y F+ (1)
Y →A F+ (2)
Y → XF+ (3)
A (XY) (4)
Vd: Cho F = {MN →OPX; NO →M; P →RY}
P có phụ thuộc bắc cầu vào NO? (NO →P)
NO →M suy ra NO →MN: thỏa (1)
MN → P: thỏa (2)
MN →0 suy ra MN →NO: thỏa (3)

R có phụ thuộc bắc cầu vào NO? (NO →R)?

181

Dạng chuẩn 3 (DC 3):


Một lược đồ R ở DC3 khi nó đạt DC2 và tất cả các thuộc tính không khóa không phụ thuộc bắc
cầu vào khóa
Vd: NHATHUE (MANHA, DIACHI, GIATHUE, MACHUNHA, TENCHUNHA)
F={MANHA→ DIACHI, GIATHUE, MACHUNHA
MACHUNHA → TENCHUNHA}
NHATHUE có đạt DC3?

182

Biến đổi DC2 sang DC3


- Bước 1: Xác định khóa trên quan hệ DC2
- Bước 2: Xác định các PTH gây ra thuộc tính không khóa phụ thuộc bắc cầu vào khóa
- Bước 3: Xóa PTH gây ra tính bắc cầu và đưa vào quan hệ mới.
Vd: NHATHUE (MANHA, DIACHI, GIATHUE, MACHUNHA, TENCHUNHA)
F={MANHA→ DIACHI, GIATHUE, MACHUNHA
MACHUNHA → TENCHUNHA}
- Bước 1: Khóa: MANHA
- Bước 2: PTH MACHUNHA → TENCHUNHA
- Bước 3: NHATHUE(MANHA, DIACHI, GIATHUE, TENCHUNHA)
CHUNHA(MANHA, TENCHUNHA)

183

61
15/09/2022

Nhận xét
- Mọi lược đồ đạt DC3 đều đạt DC2
- PTH bắc cầu là nguyên nhân dẫn đến trùng lắp dữ liệu và làm cho lược đồ không đạt DC3
- DC3 không đạt được là do sự xuất hiện của các thuộc tính không khóa trong lược đồ suy ra
được lẫn nhau
- DC3 là DC tối thiểu trong thiết kế CSDL

184

Dạng chuẩn BCK (Boyce Codd Kent):


Một lược đồ R ở DC BCK nếu mỗi phụ thuộc hàm có vế trái đều là siêu khóa/ khóa
Vd:
NHANVIEN(MANV, HOTENNV); F={MANV → HOTENNV}
DUAN(MADA, TENDA); F={MADA →TENDA}
PHANCONG (MANV, MADA, SOGIO, DIADIEM); F={MANV, MADA →SOGIO,
DIADIEM}

R(MAHV, MAGV, MAKHOAHOC); F={MAHV, MAKH → MAGV, MAGV → MAKH}


R có 2 khóa: K1=MAHV, MAKH và K2=MAGV, MAHV

185

Dạng chuẩn BCK (Boyce Codd Kent):


Một lược đồ R ở DC BCK nếu mỗi phụ thuộc hàm có vế trái đều là siêu khóa/ khóa
Vd:
NHANVIEN(MANV, OTENNV); F={MANV → HOTENNV}
DUAN(MADA, TENDA); F={MADA →TENDA}
PHANCONG (MANV, MADA, SOGIO, DIADIEM); F={MANV, MADA →SOGIO,
DIADIEM}

R(MAHV, MAGV, MAKHOAHOC); F={MAHV, MAKH → MAGV, MAGV → MAKH}


R có 2 khóa: K1=MAHV, MAKH và K2=MAGV, MAHV

186

62
15/09/2022

Biến đổi DC3 sang DCBCK


- Bước 1: Xác định khóa trên quan hệ DC3
- Bước 2: Xác định các PTH A → B mà A không phải là khóa/ siêu khóa
- Bước 3: Phân rã quan hệ gốc thành 2 quan hệ R1={A,B}; R2={tập các thuộc tính còn lại của
R}- {B}}
Lặp lại các bước trên cho đến khi không thể phân rã được nữa.
Vd: R(MAHV, MAGV, MAKHOAHOC)
F={MAHV, MAKH → MAGV, MAGV → MAKH}
- Bước 1: Khóa: K1=MAHV, MAKH và K2=MAGV, MAHV
- Bước 2: PTH MAGV → MAKH
- Bước 3: R1(MAGV, MAHV); R2={MAGV, MAKHOAHOC }

187

188

188

63

You might also like