Professional Documents
Culture Documents
CƠ SỞ DỮ LIỆU
1. Giới thiệu môn học
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 1/6
Nội dung môn học
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 2/6
Các mốc thời gian (tuần)
Kết thúc
học thực
hành
Kết thúc
học lý
thuyết
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Bắt đầu
học lý
thuyết
Bắt đầu
học thực
hành
Thi kết
thúc môn
học
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 3/6
Hình thức thi và kiểm tra
Kiểm tra thực hành khi kết thúc môn thực hành (tuần 14 hoặc 15, do
giảng viên thực hành qui định)
Thi lý thuyết (theo lịch của phòng đào tạo)
Điểm môn học = 0.4×điểm thực hành + 0.6×điểm lý thuyết
Sinh viên được sử dụng tài liệu khi thi lý thuyết:
Làm bài thi giấy, hoặc
Thi trên máy tính
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 4/6
Giáo trình và tài liệu tham khảo
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Giới thiệu https://bit.ly/30lb41A 6/6
BÀI GIẢNG
CƠ SỞ DỮ LIỆU
2. Dữ liệu và cơ sở dữ liệu
Một cơ sở dữ liệu (database) là một tập hợp dữ liệu có liên quan với
nhau, được lưu trữ trên máy tính, có nhiều người sử dụng và được tổ
chức theo một mô hình.
Ví dụ cơ sở dữ liệu SOHUUOTO có các bảng:
CONGDAN: thông tin về công dân có thể sở hữu xe ô tô
OTO: thông tin về ô tô
SOHUU: thông tin về sở hữu ô tô của công dân
Một CSDL biểu thị một khía cạnh nào đó của thế giới thực. Thông
tin được đưa vào trong CSDL tạo thành một không gian CSDL hoặc
một “thế giới nhỏ” (miniworld)
Một cơ sở dữ liệu được thiết kế và được phổ biến cho một mục đích
riêng
Một cơ sở dữ liệu là một tập hợp dữ liệu liên kết với nhau một cách
logic và mang một ý nghĩa nào đó.
Một CSDL không phải là một tập hợp dữ liệu tùy tiện.
1 Lưu trữ các định nghĩa, các mối liên kết dữ liệu (gọi là siêu dữ liệu -
metadata) vào trong một từ điển dữ liệu
2 Tạo ra các cấu trúc phức tạp theo yêu cầu để lưu trữ dữ liệu
3 Biến đổi các dữ liệu được nhập vào để phù hợp với các cấu trúc dữ
liệu ở điểm trên
4 Tạo ra một hệ thống bảo mật và áp đặt tính bảo mật và riêng tư
trong cơ sở dữ liệu
5 Tạo ra các cấu trúc phức tạp cho phép nhiều người sử dụng truy cập
đến dữ liệu
6 Cung cấp các thủ tục sao lưu và phục hồi dữ liệu để đảm bảo sự an
toàn và toàn vẹn dữ liệu
7 Thực hiện các quy tắc an toàn để đảm bảo toàn vẹn dữ liệu
8 Cung cấp việc truy cập dữ liệu thông qua một ngôn ngữ truy vấn
Một mô hình cơ sở dữ liệu là một tập hợp các khái niệm dùng để
biểu diễn các cấu trúc của cơ sở dữ liệu
Một số mô hình CSDL còn có thêm một tập hợp các phép toán cơ
bản để đặc tả các thao tác trên CSDL
Các mô hình dữ liệu bậc cao hoặc mô hình dữ liệu mức quan
niệm cung cấp các khái niệm gắn liền với cách cảm nhận dữ liệu của
nhiều người sử dụng
Các mô hình dữ liệu bậc thấp hoặc các mô hình dữ liệu vật lý
cung cấp các khái niệm mô tả chi tiết về việc dữ liệu được lưu trữ
trong máy tính như thế nào
Các mô hình dữ liệu thể hiện (mô hình dữ liệu mức logic) cung
cấp những khái niệm mà người sử dụng có thể hiểu được, đồng thời
không xa với cách tổ chức dữ liệu bên trong máy tính
Mô hình quan hệ là một trong các mô hình dữ liệu mức logic được
sử dụng nhiều nhất hiện nay
Một số mô hình dữ liệu khác: mô hình dữ liệu đồ thị (graph database
model), mô hình dữ liệu địa lý (geographical database model)
Trong nhiều trường hợp một kiểu thực thể có nhiều kiểu con
(subtype) hoặc lớp con (subclass) cần phải biểu diễn rõ ràng
Ví dụ: các thực thể trong kiểu thực thể NHANVIEN có thể được
phân biệt thành các nhóm nhỏ hơn như THUKY, KYSU,
KYTHUATVIEN; BIENCHE, HOPDONG...
Các nhóm trên được gọi là một lớp con hay kiểu con của kiểu thực
thể NHANVIEN và NHANVIEN là kiểu cha hay lớp cha của các lớp
con đó
Chúng ta gọi liên kết giữa một lớp cha và các lớp con của nó là liên
kết lớp (kiểu) cha/con
Một thực thể không thể tồn tại ở dạng một lớp con độc lập mà phải
có lớp cha
Một thực thể có thể thuộc một hoặc nhiều lớp con, ví dụ: một kỹ sư
có thể thuộc hai lớp con KYSU và HOPDONG
Một thực thể thuộc một lớp con thừa kế tất cả các thuộc tính của
lớp cha và tham gia vào liên kết của lớp cha
Một thực thể ở lớp con là một thực thể độc lập
Kiểu liên kết lớp cha/lớp con có tỷ số lực lượng 1:1
Chuyên biệt hóa (specialization) là quá trình xác định một tập các lớp
con của một kiểu thực thể E ; E được gọi là lớp cha của chuyên biệt
hóa
Ví dụ:
THUKY, KYSU, KYTHUATVIEN là chuyên biệt hóa của lớp cha
NHANVIEN căn cứ vào loại công việc
BIENCHE, HOPDONG là là một chuyên biệt hóa khác của
NHANVIEN căn cứ vào cách trả công
Quá trình chuyên biệt hóa cho phép:
Xác định một tập các lớp con của một kiểu thực thể
Thiết lập các thuộc tính riêng của mỗi lớp con
Thiết lập các kiểu liên kết riêng của mỗi lớp con với các kiểu thực thể
hoặc các lớp con khác
Tổng quát hóa (generalization) là quá trình ngược với chuyên biệt hóa
Xác định các đặc điểm chung của một số kiểu thực thể đã tồn tại
E1 , E2 , ..., En và tổng quát hóa chúng thành một lớp cha (mới) E
E có các lớp con là E1 , E2 , ..., En
Một lớp con có thể có các lớp con → hình thành phân cấp
(hierarchy) hoặc dàn (lattice) chuyên biệt hóa
Nếu mỗi lớp con chỉ tham gia vào một liên kết cha/con với vai trò lớp
con (tức là lớp con đó chỉ có một lớp cha), ta có phân cấp chuyên
biệt hóa
Ngược lại, nếu lớp con tham gia vào hai liên kết cha/con trở lên với
vai trò lớp con, ta có dàn chuyên biệt hóa
Một lớp con có từ hai lớp cha trở lên được gọi là lớp con chung
(shared subclass) → thừa kế bội / dàn
Nếu không tồn tại lớp con chung nào: thừa kế đơn / phân cấp
Trong một số chuyên biệt hóa, có thể xác định chính xác các thực thể
sẽ là thành viên của một lớp con bằng một điều kiện trên một số
thuộc tính của lớp cha: các lớp con xác định bằng điều kiện
Nếu các lớp con của một chuyên biệt hóa có điều kiện thành viên trên
cùng một thuộc tính của lớp cha thì chuyên biệt hóa đó còn được gọi
là chuyên biệt hóa xác định bằng thuộc tính
Nếu việc xác định một lớp con không thực hiện được theo một điều
kiện nào: các lớp con được người sử dụng xác định
Có hai loại ràng buộc khác áp dụng cho chuyên biệt hóa:
Ràng buộc rời rạc: Ràng buộc này được thỏa mãn khi mỗi thực thể chỉ
là thành viên của nhiều nhất một lớp con, ngược lại mỗi thực thể có
thể thuộc vào hai lớp con trở lên
Ràng buộc đầy đủ: Ràng buộc này được thỏa mãn khi mỗi thực thể
của lớp cha phải thuộc vào một lớp con nào đó, ngược lại sẽ có một số
thực thể của lớp cha không thuộc bất kỳ lớp con nào
Hai loại ràng buộc rời rạc và đầy đủ là độc lập với nhau
Trong một số bài toán, ta cần biểu diễn một tập thực thể từ các kiểu
thực thể khác nhau
Khi đó một lớp con sẽ biểu diễn một tập thực thể là tập con của hợp
của các loại thực thể khác nhau
Các lớp con như vậy được gọi là lớp con của kiểu hợp (union) hay
kiểu phân loại (category)
Mỗi một thực thể có các thuộc tính, đó là các đặc trưng cụ thể mô
tả thực thể đó; chẳng hạn màu sơn của xe ô tô, số nhân viên một
công ty là các thuộc tính
Phân loại các thuộc tính:
Thuộc tính đơn là thuộc tính không thể phân chia ra được thành các
thành phần nhỏ hơn
Thuộc tính phức hợp là thuộc tính có thể phân chia được thành các
thành phần nhỏ hơn, biểu diễn các thuộc tính cơ bản hơn với các ý
nghĩa độc lập
Những thuộc tính có giá trị duy nhất cho một thực thể cụ thể gọi là
các thuộc tính đơn trị
Một thuộc tính có thể có một tập giá trị cho cùng một thực thể:
thuộc tính đa trị
Thuộc tính có giá trị có thể tính được thông qua giá trị của các
thuộc tính khác gọi là thuộc tính suy diễn được
Trong một số trường hợp, một số thuộc tính của một thực thể cụ thể
không xác định được giá trị. Trong trường hợp như vậy, ta phải tạo ra
một giá trị đặc biệt gọi là giá trị null. Các thuộc tính nói trên là
thuộc tính có thể nhận giá trị null
Một thuộc tính A có tập giá trị V của kiểu thực thể E là một hàm
A : E → P(V ),
trong đó P(V ) = {S, S ⊆ V } là tập hợp tất cả các tập con của V .
P(V ) còn được gọi là tập lực lượng của V .
Ký hiệu giá trị của thuộc tính A với thực thể e là A(e)
Định nghĩa trên đúng cho các thuộc tính đơn, đa trị và thuộc tính có
thể nhận giá trị null
Với các thuộc tính đơn trị, A(e) có duy nhất một phần tử
Với các thuộc tính có thể nhận giá trị null, A(e) là tập rỗng
Một kiểu thực thể là một nhóm các thực thể có các thuộc tính như
nhau được mô tả bằng tên và các thuộc tính. Ví dụ: NHÂNVIÊN
(Họtên, Tuổi, Lương) là một kiểu thực thể
Một tập hợp các thực thể của một kiểu thực thể trong cơ sở dữ liệu
tại một thời điểm bất kỳ được gọi là một tập thực thể
Thuộc tính mà các giá trị của nó là khác nhau đối với mỗi thực thể
riêng biệt trong một tập thực thể gọi là thuộc tính khóa → khóa
dùng để phân biệt hai thực thể
Nhiều thuộc tính kết hợp với nhau tạo thành một khóa phức hợp.
Khóa phức hợp phải tối thiểu
Một kiểu thực thể có thể có nhiều hơn một khóa
Kiểu thực thể không có khóa gọi là kiểu thực thể yếu
Mỗi thuộc tính đơn của một kiểu thực thể được kết hợp với một
miền giá trị
Liên kết mô tả mối liên quan, quan hệ của các thực thể
Một kiểu liên kết R của n kiểu thực thể E1 , E2 , . . . , En là một quan
hệ toán học trên E1 , E2 , . . . , En hay R ⊆ E1 × E2 × . . . × En với Ei là
các kiểu thực thể ∀i
Một kiểu liên kết R giữa n kiểu thực thể E1 , E2 , . . . , En xác định một
tập liên kết giữa các thực thể của các kiểu đó tại một thời điểm bất
kỳ
Tập liên kết R = {ri , i = 1, n} trong đó:
mỗi ri (được gọi là một thể hiện liên kết) liên kết n thực thể riêng biệt
e1 , e2 , . . . , en , và
mỗi một thực thể ej là một thành phần của kiểu thực thể Ej , 1 ≤ j ≤ n
và có mặt trong thể hiện liên kết ri
Mỗi kiểu thực thể E1 , E2 , . . . , En được gọi là tham gia vào kiểu liên
kết R, và tương tự, mỗi thực thể riêng biệt e1 , e2 , . . . , en được gọi là
tham gia vào thể hiện liên kết ri = (e1 , e2 , . . . , en )
Cấp của một kiểu liên kết là số các kiểu thực thể tham gia vào
kiểu liên kết đó.
Tên vai trò dùng để chỉ rõ vai trò của các kiểu thực thể tham gia
liên kết
Trong nhiều trường hợp, các vai trò là rõ ràng và không cần chỉ ra
Khi một kiểu thực thể có thể tham gia vào một kiểu liên kết với nhiều
vai trò khác nhau, tên vai trò là cần thiết để phân biệt ý nghĩa của
việc tham gia. Các kiểu liên kết như vậy gọi là kiểu liên kết đệ quy
Các kiểu liên kết thường có một số ràng buộc để chỉ ra số tổ hợp có thể
của các thực thể tham gia trong tập hợp các thể hiện liên kết. Có hai loại
ràng buộc chính:
Tỷ số lực lượng
Sự tham gia
Tỷ số lực lượng cho một kiểu liên kết chỉ ra số các thể hiện liên kết
mà một thực thể có thể tham gia.
Với các kiểu liên kết cấp 2, có thể ba kiểu tỷ số lực lượng 1 : 1, 1 : N,
và M : N
Các ràng buộc tham gia và sự phụ thuộc tồn tại: các thực thể của
một kiểu thực thể có phải tham toàn bộ vào các thể hiện liên kết hay
không. Có hai kiểu ràng buộc tham gia:
Ràng buộc tham gia toàn bộ (phụ thuộc tồn tại)
Ràng buộc tham gia bộ phận
Các kiểu liên kết cũng có các thuộc tính, giống như các thuộc tính
của các kiểu thực thể
Ví dụ: Kiểu liên kết LAMVIEC giữa các thực thể NHANVIEN và
DUAN có thể có thuộc tính SoGio, để ghi lại số giờ làm việc của một
nhân viên trên một dự án
Các kiểu thực thể không có thuộc tính khóa được gọi là kiểu thực thể
yếu (W )
Các kiểu thực thể có thuộc tính khóa được gọi là kiểu thực thể mạnh
Các thực thể của một kiểu thực thể yếu được xác định (phân biệt)
bằng cách liên kết với các thực thể của một kiểu thực thể mạnh (S)
khác
Kiểu thực thể mạnh S còn được gọi là kiểu thực thể chủ của W
Ví dụ: TREEM là một kiểu thực thể yếu, cần được xác định dựa vào
kiểu thực thể chủ NHANVIEN với liên kết CON
Một miền D (hoặc miền giá trị) là một tập hợp các giá trị nguyên tố:
mỗi giá trị trong miền là không thể phân chia được
Để đặc tả một miền, người ta chỉ ra một tên, một kiểu dữ liệu và
khuôn dạng dữ liệu, ví dụ:
Miền D1 : kiểu dữ liệu số nguyên có dấu 16 bit
Miền D2 : kiểu dữ liệu nhãn thời gian (timestamp: 2020-03-07 10:01:30)
Miền D3 : kiểu dữ liệu chuỗi ký tự có độ dài nhỏ hơn 32
Một lược đồ quan hệ R, ký hiệu là R(A1 , A2 , ..., An ), được tạo nên
từ một tên R và một danh sách các thuộc tính A1 , A2 , . . . , An với
Dom(Ai ) là miền giá trị của Ai
Một quan hệ (hoặc trạng thái quan hệ) của lược đồ quan hệ
R(A1 , A2 , . . . , An ) được ký hiệu là r (R), là tập hợp
r (R) = {t1 , t2 , ..., tm }, trong đó mỗi ti được gọi là một n-bộ:
Mỗi n-bộ t =< v1 , v2 , . . . , vn > là một danh sách có thứ tự của n giá
trị vi , i = 1, n, trong đó mỗi vi , 1 ≤ i ≤ n, là một phần tử của
Dom(Ai ) hoặc là một giá trị không xác định null
Giá trị thứ i của bộ t được ký hiệu là t[Ai ]: t[Ai ] = vi
Hai bộ t, s trong r (R) được định nghĩa là bằng nhau t = s khi và chỉ
khi t[Ai ] = s[Ai ]∀i = 1, n
Cấp (hoặc ngôi) của một quan hệ là số các thuộc tính của lược đồ
quan hệ của nó
Cấp của lược đồ quan hệ R chúng ta đang xem xét là n
Một siêu khoá SK là một tập các thuộc tính của R thỏa mãn:
Không có hai bộ khác nhau trong một trạng thái r (R) có cùng một giá
trị cho SK , hay nói cách khác:
∀ti , tj ∈ r (R), i 6= j; ti 6= tj thì ti [SK ] 6= tj [SK ]
Một khóa K là một siêu khóa tối thiểu, nghĩa là nếu bỏ đi một tập
con S bất kỳ của K , K sẽ không còn là siêu khóa nữa:
K \ S không là siêu khóa ∀S ⊂ K
Một tập hợp thuộc tính FK1 trong lược đồ quan hệ R1 là một khoá
ngoài của R1 tham chiếu đến lược đồ quan hệ R2 nếu nó thoả mãn
các điều kiện sau:
1 Các thuộc tính trong FK1 có cùng miền giá trị với các thuộc tính của
khoá chính PK2 trong R2 .
2 Giả sử t1 là một bộ bất kỳ của r1 (R1 ). Khi đó:
t1 [FK1 ] nhận giá trị null, hoặc
∃t2 ∈ r2 (R2 ) : t1 [FK1 ] = t2 [PK2 ]. Khi đó ta nói bộ t1 tham chiếu đến
bộ t2
R1 được gọi là lược đồ quan hệ tham chiếu và R2 được gọi là lược đồ
quan hệ bị tham chiếu
Tập FK1 được gọi là tập thuộc tính tham chiếu đến lược đồ quan hệ
R2
Các ràng buộc miền: Các ràng buộc miền chỉ ra rằng giá trị của mỗi
thuộc tính A phải là một giá trị nguyên tố thuộc miền giá trị Dom(A)
Ràng buộc khóa: Với hai bộ khác nhau bất kỳ t1 và t2 trong một
trạng thái quan hệ r của R chúng ta có ràng buộc là t1 [SK ] 6= t2 [SK ]
Ràng buộc trên giá trị không xác định chỉ ra khi nào miền giá trị của
một thuộc tính được phép chứa giá trị null
Lược đồ cơ sở dữ liệu S:
Tập các lược đồ quan hệ:
S = {CONGDAN(SoCMND, HoTen, NgaySinh, GioiTinh),
VATNUOI = (Loai, MauLong, SoCMNDChu)}
Tập các ràng buộc toàn vẹn C = {C1 , C2 }:
Ràng buộc toàn vẹn thực thể C1 : thuộc tính SoCMND là khóa chính
của CONGDAN, không được nhận giá trị null
Ràng buộc toàn vẹn tham chiếu C2 : thuộc tính SoCMNDChu là khóa
ngoài của VATNUOI tham chiếu đến khóa chính SoCMND của
CONGDAN; các giá trị của thuộc tính SoCMNDChu phải tham chiếu
đến một giá trị có trong SoCMND của quan hệ r1 (CONGDAN) hoặc là
null
Phép chèn (insert) đưa một bộ mới t vào một quan hệ R, với tham
số là bộ giá trị của các thuộc tính. Phép chèn có thể vi phạm các
ràng buộc miền, khóa và toàn vẹn tham chiếu:
Lược đồ DUAN(MaDA, TenDA, DiaDiem, MaDV ):
Phép chèn bộ < null,’Phát tờ rơi’,’Đà Nẵng’,’DV3’> vào DUAN vi
phạm ràng buộc toàn vẹn thực thể: giá trị null cho khóa chính
Phép chèn bộ < ’DA2’,’Phát tờ rơi’,’Đà Nẵng’,’DV3’> vào DUAN vi
phạm ràng buộc khóa: giá trị khóa ’DA2’ đã tồn tại
Phép chèn bộ < ’DA5’,’Phát tờ rơi’,’Đà Nẵng’,’DV7’> vào DUAN vi
phạm ràng buộc tham chiếu: không có giá trị khóa ’DV7’ trong quan
hệ bị tham chiếu DONVI
Phép chèn bộ < ’DA5’,’Phát tờ rơi’,’Đà Nẵng’,’DV3’> vào DUAN
được chấp nhận vì thoả mãn tất cả các ràng buộc
Phép xoá (delete) được sử dụng để xoá một hoặc nhiều bộ giá trị của
một quan hệ. Phép xoá có thể vi phạm ràng buộc tham chiếu trong
trường hợp bộ bị xoá được tham chiếu từ các bộ khác trong cơ sở dữ liệu
Xóa bộ <’DV3’, ’Kinh doanh’, ’NV2’, ’2018-09-10’> trong DONVI vi
phạm toàn vẹn tham chiếu, do giá trị khóa chính ’DV3’ được tham
chiếu từ bộ <’DA2’, ’Quảng cáo trực tuyến’, ’Toàn quốc’, ’DV3’ >
của DUAN, do đó không được chấp nhận
Xóa bộ <’DV4’, ’Quản trị’, ’NV8’, ’2018-09-10’ > trong DONVI
được chấp nhận vì không vi phạm ràng buộc tham chiếu: không có
tham chiếu đến giá trị khóa chính ’DV4’
Phép sửa (update) được dùng để thay đổi các giá trị của một hoặc
nhiều thuộc tính trong một (hoặc nhiều) bộ của một quan hệ
Việc sửa một thuộc tính không phải là khóa hoặc khóa ngoài thường
không gây ra các vi phạm ràng buộc, hệ quản trị cơ sở dữ liệu chỉ
kiểm tra giá trị mới thuộc miền
Sửa giá trị khóa chính tương đương với xóa bộ cũ và chèn bộ mới:
Các vi phạm ràng buộc tuân theo các ràng buộc của phép chèn và xóa
Sửa giá trị khóa ngoài: cần đảm bảo giá trị mới thỏa mãn ràng buộc
tham chiếu, tức là giá trị mới hoặc là null hoặc phải tham chiếu đến
một bộ tồn tại trong quan hệ bị tham chiếu
Phép chọn (select) được sử dụng để chọn một tập hợp các bộ thỏa
mãn điều kiện chọn từ một quan hệ
Có thể xem phép chọn như một bộ lọc, nó chỉ giữ lại các bộ thỏa
mãn điều kiện đặt ra
Phép chọn được ký hiệu là σ<cond> (R), trong đó < cond > là điều
kiện chọn
Danh sách dự án có địa điểm ở Hà Nội: σ<DiaDiem=’Hà Nội’> (DUAN),
kết quả:
MaDA TenDA DiaDiem MaDV
DA3 Xây dựng phần mềm tài chính Hà Nội DV1
DA4 Qui trình nghiệp vụ Hà Nội null
Nếu ta xem một quan hệ như một bảng thì phép chiếu (project) là
phép toán chọn một số cột của bảng
Phép chiếu được ký hiệu là: π<attr > (R) trong đó < attr > là tập con
các thuộc tính của R.
Liệt kê tên và địa điểm các dự án: π<TenDA,DiaDiem> (DUAN), kết quả:
TenDA DiaDiem
Tuyển dụng Cần Thơ
Quảng cáo trực tuyến Toàn quốc
Xây dựng phần mềm tài chính Hà Nội
Qui trình nghiệp vụ Hà Nội
Phép đổi tên được ký hiệu là ρS(B1 ,B2 ,...,Bn ) (R), ρS (R) hoặc
ρ(B1 ,B2 ,...,Bn ) (R), trong đó:
ρS(B1 ,B2 ,...,Bn ) (R) đổi tên quan hệ R(A1 , A2 , ..., An ) thành
S(B1 , B2 , ..., Bn ) với tên các thuộc tính mới là B1 , B2 , ..., Bn ,
ρS (R) chỉ đổi tên quan hệ R thành S và
ρ(B1 ,B2 ,...,Bn ) (R) chỉ đổi tên các thuộc tính của R từ A1 , A2 , ..., An
thành B1 , B2 , ..., Bn
Các phép toán lý thuyết tập hợp chỉ áp dụng được cho các quan hệ
R(A1 , A2 , ..., An ) và S(B1 , B2 , ..., Bn ) thỏa mãn điều kiện tương thích
đồng nhất: Dom(Ai ) = Dom(Bi )∀i = 1, n
Phép hợp: Hợp của hai quan hệ R và S, được ký hiệu là R ∪ S, cho
kết quả là một quan hệ chứa tất cả các bộ có trong R hoặc ở trong S
hoặc ở trong cả hai. Các bộ trùng lặp bị loại bỏ
Phép giao: Giao của hai quan hệ R và S, được ký hiệu là R ∩ S, cho
kết quả là một quan hệ chứa tất các các bộ có trong cả hai quan hệ
R và S
Phép trừ: Phép trừ R và S, được ký hiệu là R − S, cho kết quả là
một quan hệ chứa tất cả các bộ có trong R nhưng không có trong S
Phép nối (join) Phép nối được ký hiệu là 1 và được dùng để kết
hợp các bộ có liên hệ với nhau từ hai quan hệ thành một bộ. Phép
toán này rất quan trọng đối với cơ sở dữ liệu quan hệ có nhiều bảng
bởi vì nó cho phép ta xử lý các mối liên kết giữa các quan hệ
Dạng tổng quát của phép nối trên hai quan hệ R(A1 , A2 , . . . , An ) và
S(B1 , B2 , . . . , Bm ) là R 1 S trong đó < cond > là điều kiện nối.
<cond>
Kết quả của phép nối là một quan hệ
Q(A1 , A2 , . . . , An , B1 , B2 , . . . , Bm ) có n + m thuộc tính.
Mỗi bộ của Q là một kết nối giữa một bộ của R và một bộ của S
thoả mãn điều kiện nối
R 1 S = σ<cond> (R × S)
<cond>
Hầu hết các phép nối đều có < cond > là so sánh bằng; các phép nối
đó được gọi là phép nối bằng (equi-join)
trong đó ký hiệu DONVI.MaDV nhằm chỉ rõ thuộc tính MaDV là của quan
hệ DONVI.
Kết quả của phép nối là một quan hệ Q có 8 thuộc tính, trong đó 4
thuộc tính đầu được lấy từ các thuộc tính của DONVI, 4 thuộc tính
còn lại lấy từ DUAN
Ở mỗi bộ của Q, chúng ta thấy điều kiện nối được thỏa mãn:
MaDV = DUAN.MaDV , với MaDV được hiểu là DONVI.MaDV
Tập các phép toán P = {σ, π, ∪, −, ×} là một tập đầy đủ: Mọi phép
toán đại số quan hệ khác đều có thể được biểu diễn qua các phép
toán trong P
Ví dụ:
Phép nối: R 1 S = σ<cond> (R × S)
<cond>
Phép giao: R ∩ S = (R ∪ S) − ((R − S) ∪ (S − R))
Có ba phép nối mở rộng là nối ngoài trái (left outer join), nối
ngoài phải (right outer join) và nối ngoài đầy đủ (full outer
join), ký hiệu tương ứng là: ./, ./ , ./
Phép nối ngoài trái của R(A1 , A2 , ..., An ) và S(B1 , B2 , ..., Bm ) được
định nghĩa như sau:
R ./ S = (R 1 S) ∪ T , trong đó T là một quan hệ gồm các
<cond> <cond>
bộ < a1 , a2 , ..., an , null, ..., null > (m giá trị null), trong đó
< a1 , a2 , ..., an >∈ R không thỏa mãn điều kiện < cond >
Tương tự như vậy đối với các phép nối ngoài phải và các phép nối
ngoài đầy đủ
Các đơn vị không giám sát dự án nào: MaDA nhận giá trị null trong
kết quả phép nối ngoài trái
Các dự án chưa có đơn vị nào quản lý: MaDV nhận giá trị null trong
kết quả phép nối ngoài phải
Các đơn vị không giám sát dự án nào: MaDA nhận giá trị null trong
kết quả phép nối ngoài trái
Các dự án chưa có đơn vị nào quản lý: MaDV nhận giá trị null trong
kết quả phép nối ngoài phải
Phép nhóm: <attr > J<f > (R) (ký hiệu J trong tiếng Anh là
"calligraphic J")
J là ký hiệu phép nhóm, < attr > là danh sách các thuộc tính nhóm,
< f > là danh sách các cặp (<hàm><thuộc tính>) với <hàm> là
một trong các hàm SUM, AVERAGE, MIN, MAX, COUNT và
<thuộc tính> là một trong các thuộc tính của R
Kết quả của DiaDiem JCOUNT () (DUAN):
DiaDiem Tongso
Cần Thơ 1
Hà Nội 2
Toàn quốc 1
Ý nghĩa: Đếm tổng số dự án ở mỗi địa điểm
NT1. (Ngữ nghĩa của các thuộc tính): Thiết kế một lược đồ quan hệ sao
cho dễ giải thích ý nghĩa của nó. Không nên tổ hợp các thuộc tính từ
nhiều kiểu thực thể và kiểu liên kết vào một lược đồ quan hệ
NT2. (Thông tin dư thừa trong các bộ và dị thường cập nhật): Thiết kế
các lược đồ quan hệ cơ sở sao cho không sinh ra những dị thường cập
nhật trong các quan hệ
NT3. (Các giá trị không xác định trong các bộ): Tránh sử dụng các thuộc
tính của các lược đồ quan hệ mà giá trị của các thuộc tính này
thường xuyên là null
NT4. (Sinh ra các bộ giả): Thiết kế các lược đồ quan hệ sao cho chúng có
thể được nối với điều kiện bằng trên các thuộc tính là khoá chính
hoặc khoá ngoài để đảm bảo không sinh ra các bộ "giả"
Ngữ nghĩa của lược đồ rõ ràng thì dễ thiết kế được lược đồ quan hệ
tốt
Không tổ hợp các thuộc tính từ nhiều kiểu thực thể và kiểu liên kết
vào trong một quan hệ
Nếu một lược đồ quan hệ tương ứng với một kiểu thực thể hoặc một
kiểu liên kết thì ý nghĩa của lược đồ đó và các thuộc tính trở nên rõ
ràng
F + = F ∪ {X → Y , F |= X → Y } (1)
Armstrong1 đưa ra 6 qui tắc suy diễn đối với phụ thuộc hàm (1974):
QT1. (phản xạ): Nếu X ⊇ Y thì X → Y
QT2. (tăng): {X → Y } |= XZ → YZ 2
1
William Ward Armstrong là nhà toán học và khoa học máy tính người Canada. Ông nhận bằng
tiến sĩ năm 1966 tại trường Đại học British Columbia (University of British Columbia).
2
Để cho tiện, {X , Y } được viết tắt là XY
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 6 / 25
Chứng minh QT1, QT2
QT3: {X → Y , Y → Z } |= X → Z
Giả sử ta có
X →Y (7)
và
Y →Z (8)
Khi đó, với hai bộ t1 , t2 ∈ r (R) bất kỳ sao cho t1 [X ] = t2 [X ], từ (7)
chúng ta suy ra:
t1 [Y ] = t2 [Y ] (9)
Từ (8) và (9) ta có:
t1 [Z ] = t2 [Z ] (10)
Từ t1 [X ] = t2 [X ] và (10) chúng ta có X → Z
QT4: {X → YZ } |= X → Y và X → Z
Ta có
X → YZ (11)
Do YZ ⊇ Y nên theo QT1:
YZ → Y (12)
QT5: {X → Y , X → Z } |= X → YZ
Giả sử ta có
X →Y (13)
và
X →Z (14)
Áp dụng QT2 cho (13):
XX → YX (15)
Áp dụng QT2 cho (14):
YX → YZ (16)
Áp dụng QT3 cho (15), (16) và do XX = X : X → YZ .
QT6: {X → Y , WY → Z } |= WX → Z
Giả sử ta có:
X →Y (17)
và
WY → Z (18)
Áp dụng QT2 cho (17):
WX → WY (19)
Áp dụng QT3 cho (19): WX → Z .
Amstrong đã chứng minh rằng các quy tắc suy diễn QT1, QT2 và QT3 là
đúng và đầy đủ:
Đúng: cho trước một tập phụ thuộc hàm F trên một lược đồ quan hệ
R, bất kỳ một phụ thuộc hàm nào suy diễn được bằng cách áp dụng
các quy tắc từ từ QT1 đến QT3 cũng đúng trong mỗi trạng thái
quan hệ r (R) thoả mãn các phụ thuộc hàm trong F
Đầy đủ: việc sử dụng các quy tắc từ QT1 đến QT3 lặp lại nhiều lần
để suy diễn các phụ thuộc hàm cho đến khi không còn suy diễn được
nữa sẽ cho kết quả là một tập hợp đầy đủ các phụ thuộc hàm có thể
được suy diễn từ F
Các qui tắc QT1, QT2 và QT3 được gọi là các qui tắc suy diễn
Armstrong
Khi cần chỉ rõ tập phụ thuộc hàm, chúng ta ký hiệu bao đóng của X
dưới F là XF+
Một tập phụ thuộc hàm E được phủ bởi một tập phụ thuộc
hàm F hay F phủ E nếu E ⊂ F + . Điều này có nghĩa là:
∀X → Y ∈ E, F |= X → Y
Hai tập phụ thuộc hàm E và F được gọi là tương đương nếu
E+ = F+
Để kiểm tra F phủ E (E ⊂ F + ), với mỗi X → Y là phụ thuộc hàm
trong E:
Tính X + dưới F ∀X → Y ∈ E
Nếu X + ⊃ Y đúng với tất cả các phụ thuộc hàm X → Y trong
E thì F phủ E
F = {A → C , AC → D, E → AD, E → H}
E = {A → CD, E → AH}
{A}+
E = {A, C , D} ⊃ {C }
{A}+
F = {A, C , D} ⊃ {C , D}
{A, C }+
E = {A, C , D} ⊃ {D}
{E }+
F = {E , A, H, C , D} ⊃
{A, H} {E }+
E = {E , A, H, C , D}:
{E }+ +
E ⊃ {A, D} và {E }E ⊃ {H}
=⇒ E tương đương với F
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 20 / 25
Tập phụ thuộc hàm tối thiểu và phủ tối thiểu
Một tập phụ thuộc hàm F là tối thiểu nếu thoả mãn các điều
kiện sau:
(vế phải tối thiểu) Vế phải của các phụ thuộc hàm trong F chỉ
có một thuộc tính.
(vế trái tối thiểu) Chúng ta không thể thay thế bất kỳ một phụ
thuộc hàm X → A trong F bằng phụ thuộc hàm Y → A, trong
đó Y là tập con đúng của X mà vẫn còn là một tập phụ thuộc
hàm tương đương với F.
(số lượng phụ thuộc hàm tối thiểu) Chúng ta không thể bỏ đi
bất kỳ phụ thuộc hàm nào ra khỏi F mà vẫn có một tập phụ
thuộc hàm tương đương với F
Một phủ tối thiểu của một tập phụ thuộc hàm F là một tập phụ
thuộc hàm tối thiểu G tương đương với F (tức là G + = F + )
Một tập phụ thuộc hàm bất kỳ có thể có nhiều phủ tối thiểu
G=F
Tách vế phải của các phụ thuộc hàm:
G = {A → B, A → C , A → D, A → E , CD → E }
Vế trái của CD → E là tối thiểu
A → C , A → D |= A → CD
A → CD, CD → E |= A → E =⇒ A → E dư thừa và có thể loại bỏ khỏi G =⇒
G = {A → B, A → C , A → D, CD → E }
Chúng ta không bỏ được bất kỳ phụ thuộc hàm nào khỏi G để có một tập phụ
thuộc hàm tương đương, do đó G là tối thiểu
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Phụ thuộc hàm https://bit.ly/3dIZGAm 23 / 25
Ví dụ tìm phủ tối thiểu
G = {A → B, A → C , A → D, CD → E }
F = {A → BCDE , CD → E } là phủ tối thiểu của F
Phụ thuộc hàm, bao đóng của tập phụ thuộc hàm
Các qui tắc suy diễn của Armstrong
Bao đóng của tập thuộc tính
Tìm khóa của lược đồ quan hệ dựa vào bao đóng
Tập phụ thuộc hàm tương đương, tập phụ thuộc hàm tối thiểu và
phủ tối thiểu
Quá trình chuẩn hóa (Codd đề nghị năm 1972): lấy một lược đồ quan
hệ và thực hiện các phép kiểm tra để xác nhận lược đồ có thỏa mãn
một số điều kiện nhất định (dạng chuẩn) hay không; nếu không các
lược đồ quan hệ sẽ được tách ra
Codd đề xuất ba dạng chuẩn 1, 2 và 3 (1NF, 2NF, 3NF)
Sau đó Boyce và Codd đề nghị dạng chuẩn Boyce-Codd (BCNF)
mạnh hơn 3NF
Các dạng chuẩn này dựa trên các phụ thuộc hàm giữa các thuộc tính
của một lược đồ quan hệ
Sau đó dạng chuẩn 4 (4NF) và 5 (5NF) được đề xuất dựa trên phụ
thuộc hàm đa trị và phụ thuộc hàm nối
Chuẩn hóa dữ liệu có thể được xem là quá trình phân tích và tách
các lược đồ quan hệ để đạt được hai mục tiêu:
Cực tiểu hóa sự dư thừa
Cực tiểu hóa các phép cập nhật bất thường
Phép tách các lược đồ quan hệ cần có hai tính chất:
Tính chất nối không mất mát (phải đạt được)
Tính chất bảo toàn phụ thuộc
Một phụ thuộc hàm X → Y là một phụ thuộc hàm đầy đủ nếu bỏ
đi bất kỳ một thuộc tính A ∈ X thì phụ thuộc hàm đó không còn
đúng nữa
Nếu tồn tại một thuộc tính B sao cho (X − B) → Y , chúng ta nói
rằng Y phụ thuộc hàm bộ phận vào X
Một lược đồ quan hệ R là ở dạng chuẩn 2 (2NF - second normal
form) nếu:
R là 1NF, và
Mỗi thuộc tính không khóa A trong R phụ thuộc hàm đầy đủ
vào khóa chính của R
Lược đồ
LAMVIEC (MaNV , Hoten, Ngaysinh, MaDV , TenDV , MaDA, TenDA)
với các thuộc tính đơn, ở dạng chuẩn 2NF vì khóa chính chỉ có một
thuộc tính (→ không có phụ thuộc hàm bộ phận), có các phụ thuộc
hàm:
MaNV → {Hoten, Ngaysinh, MaDV , TenDV , MaDA, TenDA}
MaDV → TenDV
MaDA → TenDA
LAMVIEC không ở dạng chuẩn 3NF vì các phụ thuộc hàm bắc cầu
MaNV → MaDV → TenDV và MaNV → MaDA → TenDA
Chuẩn hóa LAMVIEC về 3NF:
Loại {TenDV , TenDA} phụ thuộc bắc cầu vào khóa chính:
LAMVIEC1 (MaNV , Hoten, Ngaysinh, MaDV , MaDA)
Tạo lược đồ quan hệ mới N1 (MaDV , TenDV )
Tạo lược đồ quan hệ mới N2 (MaDA, TenDA)
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Chuẩn hóa https://bit.ly/2AmGfir 14 / 23
Dạng chuẩn Boyce-Codd (BCNF)
Một lược đồ quan hệ R là ở dạng chuẩn 3 (3NF) nếu với mọi phụ thuộc
hàm X → A thỏa mãn trong R thì ta đều có:
X là một siêu khóa của R, hoặc
A là một thuộc tính khóa của R
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 1 / 12
Định nghĩa bao đóng của tập thuộc tính
Khi cần chỉ rõ tập phụ thuộc hàm, chúng ta ký hiệu bao đóng
của X dưới F là XF+
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 2 / 12
Tìm bao đóng của tập thuộc tính
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 3 / 12
Lược đồ quan hệ và các phụ thuộc hàm
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 4 / 12
Chương trình cài đặt thuật toán tìm bao đóng
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 5 / 12
Chương trình cài đặt thuật toán tìm bao đóng
Lặp 1:
oldX+ = {A6}
X+ = {A6}
Lặp 1.1:
X+ = {A6}
Y->Z = {A1, A2}->{A3, A4, A5, A6}
X+ không chứa Y.
Lặp 1.2:
X+ = {A6}
Y->Z = {A4}->{A2}
X+ không chứa Y.
Lặp 1.3:
X+ = {A6}
Y->Z = {A6}->{A1}
X+ chứa Y, do đó X+ = X+ hợp Z. Giá trị mới của X+ = {A6, A1}
X+ != oldX+, tiếp tục.
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 6 / 12
Chương trình cài đặt thuật toán tìm bao đóng
Lặp 2:
oldX+ = {A6, A1}
X+ = {A6, A1}
Lặp 2.1:
X+ = {A6, A1}
Y->Z = {A1, A2}->{A3, A4, A5, A6}
X+ không chứa Y.
Lặp 2.2:
X+ = {A6, A1}
Y->Z = {A4}->{A2}
X+ không chứa Y.
Lặp 2.3:
X+ = {A6, A1}
Y->Z = {A6}->{A1}
X+ chứa Y, do đó X+ = X+ hợp Z. Giá trị mới của X+ = {A6, A1}
X+ == oldX+, dừng thuật toán.
Bao đóng X+ = {A6, A1}
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 7 / 12
Ứng dụng 1: Kiểm tra qui tắc suy diễn
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 8 / 12
Ứng dụng 1: Kiểm tra qui tắc suy diễn
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 9 / 12
Ứng dụng 2: Kiểm tra tập thuộc tính là siêu khóa
{A2 , A6 }+
F = {A1 , A2 , A3 , A4 , A5 , A6 } do đó {A2 , A6 } là siêu khóa
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 10 / 12
Ứng dụng 2: Kiểm tra tập thuộc tính là khóa
{A2 , A6 } là siêu khóa; {A2 , A6 } có là khóa không?
Tìm {A6 }+
F:
Tìm {A2 }+
F:
{A2 }+ +
F và {A6 }F đều là tập con thực sự của {A1 , A2 , A3 , A4 , A5 , A6 }, do đó
{A2 , A6 } là siêu khóa tối thiểu → là khóa
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 11 / 12
Ứng dụng 3: Tìm khóa của lược đồ quan hệ
N. H. Châu (VNU-UET) Cơ sở dữ liệu: Ứng dụng bao đóng của tập thuộc tính https://bit.ly/2BJ1ivR 12 / 12