1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ôn tập cơ sở dữ liệu

15 272 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 778,59 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CƠ SỞ DỮ LIỆU I Database Cơ sở dữ liệu Cơ sở dữ liệu là: + Sự tập hợp có tổ chức các dữ liệu + Các dữ liệu có liên quan luận lý với nhau + Dữ liệu được nhiều người sử dụng chung Data Dữ

Trang 1

CƠ SỞ DỮ LIỆU I

Database (Cơ sở dữ liệu)

Cơ sở dữ liệu là:

+ Sự tập hợp có tổ chức các dữ liệu

+ Các dữ liệu có liên quan luận lý với nhau

+ Dữ liệu được nhiều người sử dụng chung

Data (Dữ liệu)

Dữ liệu là:

+ Sự biểu hiện của các đối tượng và sự kiện được ghi nhận và lưu trữ trong máy tính

Dữ liệu có hai loại:

+ Dữ liệu có cấu trúc: số, ngày, chuỗi kí tự …

+ Dữ liệu không có cấu trúc: hình ảnh, âm thanh, đoạn phim …

Thông tin

Thông tin là :

+ Dữ liệu đã được xử lý để làm tăng sự hiểu biết của người sử dụng dữ liệu

+ Dữ liệu được đặt trong ngữ cảnh  thông tin

+ Dữ liệu được tổng hợp, xử lý  thông tin

Siêu dữ liệu (metadata)

Siêu sữ liệu là:

+ Là dữ liệu dùng để mô tả các tính chất hoặc các đặc điểm của dữ liệu khác, chẳng hạn như các định nghĩa dữ liệu, các cấu trúc dữ liệu và các quy tắc (các ràng buộc)

Cơ sở dữ liệu quan hệ (relational database)

Cơ sở dữ liệu quan hệ là:

+ CSDL mà dữ liệu được lưu trữ trong các bảng (quan hệ)

Miền trị (domain)

+ Là tập hợp các giá trị hợp lệ của một hoặc nhiều thuộc tính

+ Miền trị của thuộc tính A được kí hiệu là dom(A)

Ex : dom(Phai) = {„nam‟,‟nu‟}

Quan hệ (relation)

+ Là một khái niệm toán học

+ Là một bảng dữ liệu hai chiều được đặt tên Mỗi quan hệ bao gồm các cột được đặt tên và nhiều hàng

+ Dùng để lưu trữ thông tin về các đối tượng được biểu diễn trong cơ sở dữ liệu

 Dữ liệu không phải là một phần của quan hệ

Thuộc tính (attribute)

+ Thuộc tính của một quan hệ là một cột được đặt tên của một bảng

+ Thứ tự xuất hiện các thuộc tính trong một quan hệ là khô ng quan trọng và quan

hệ vẫn không bị thay đổi

Bộ (tuple)

+ Bộ của một quan hệ là một hàng của một bảng

+ Thứ tự xuất hiện của các bộ trong một quan hệ là không quan trọng và quan hệ vẫn không bị thay đổi

ex : Một bộ t của quan hệ Sinhvien là:

Trang 2

t = („075400128‟,‟Nguyen Van A‟,‟nam‟,01/01/1989

Thành phần của một bộ (component)

+ Thành phần của một bộ là một giá trị của một hàng

+ ex : Thành phần masv của bộ t là „075400128‟

Bậc của một quan hệ là số lượng các thuộc tính của quan hệ

Cơ sở dữ liệu quan hệ (relational database)

+ Là cơ sở dữ liệu mà dữ liệu được lưu trữ trong các quan hệ (bảng) Cơ sở dữ liệu quan hệ bao gồm nhiều quan hệ

Miền (domain) – Quan hệ toán học

+ Là một tập hợp các giá trị hợp lệ Thông thường tên của miền được kí hiệu bằng chữ D

Tích Descartes (Cartesian product)

+ Tích Descartes của các miền D1 , D2 ,…, Dn ký hiệu D1 x D2 x … x Dn là một tập các phần tử (d1, d2, …,dn) sao cho di  Di

D = D1 x D2 x … x Dn = {(d1, d2, …, dn) | di  Di , 1 ≤ i ≤ n }

Quan hệ (relation) – Quan hệ toán học

+ Là một tập con của tích Descartes

Lược đồ quan hệ (relation schema) – Quan hệ cơ sở dữ liệu

+ Cho A1, A2 , …,An là tên của các thuộc tính thuộc các miền D1, D2, …, Dn theo thứ tự tương ứng

+ Lược đồ quan hệ được biểu diễn bởi một tên đi theo sau là một tập hữu hạn các thuộc tính {A1, A2, …,An } được ghi trong hai dấu ngoặc đơn Lược đồ quan hệ được biểu diễn như sau:

+ R(A1, A2, …, An) với R là tên của lược đồ quan hệ

Bậc của lược đồ quan hệ là số lượng các thuộc tính của lược đồ quan hệ

+ Gọi U = {A1, A2, …, An} là tập các thuộc tính của lược đồ quan hệ R

+ Lược đồ quan hệ R(U) có bậc n

Quan hệ r:

+ Quan hệ r trên lược đồ quan hệ R, kí hiệu là r(R), là một tập hữu hạn các ánh xạ {t1, t2,…,tp} từ R vào D với điều kiện mọi ánh xạ t  r thì t[Ai]  Di, 1 ≤ i ≤ n + Quan hệ r là một thể hiện quan hệ của lược đồ quan hệ R tại một thời điểm + Mỗi ánh xạ của quan hệ là một bộ của quan hệ và đư ợc ký hiệu là:

(A1: d1, A2:d2, …, An: dn) với di  DI , 1 ≤ i ≤ n + Thành phần Ai của một bộ được kí hiệu là t[Ai], thành phần có nhiều thuộc tính X = {Ai, …., Aj} của bộ t được kí hiệu là t[X]

Siêu khóa (subpe rkey)

+ Siêu khóa của một quan hệ là một thuộc tính hoặc một tập các thuộc tính dùng

để xác định duy nhất một bộ của quan hệ này

Khóa dự tuyển của một quan hệ

+ Là một siêu khóa K mà không có một tập con thực sự bất kì K‟  K lại là một siêu khóa

+ Khóa dự tuyển K của một quan hệ r có hai đặc điểm:

(1) Tính duy nhất: các giá trị của K trong các bộ của r là duy nhất (không

trùng nhau)

Trang 3

(2) Tính tối giản: Không có một tập con thực sự bất kỳ K‟  K lại có tính duy

nhất Tính chất này còn được gọi là tính tối thiểu

Khóa phức hợp

+ Là một khóa có nhiều hơn một thuộc tính

Khóa chính (primary key)

+ Là một khóa dự tuyển được chọn để xác định duy nhất một bộ của quan hệ + Khóa chính có thể chỉ có một thuộc tính hoặc là một khóa phức hợp bao gồm nhiều thuộc tính

Khóa ngoại (foreign key)

+ Khóa ngoại là một thuộc tính hoặc một tập thuộc tính của một quan hệ tương ứng với (tham chiếu đến) khóa dự tuyển của một quan hệ khác hoặc của cùng quan hệ này

Khóa (key)

+ Khóa của lược đồ quan hệ R có tập thuộc tính U = {A1, A2, …, Am} là một tập con K = {Aj1, Aj2,…, Ajn}, với j1, j2, …, jn là các số nguyên phân biệt và nằm trong khoảng từ 1 đến m, phải thỏa mãn đồng thời hai điều kiện sau đây:

(1) r(R),  t1, t2  r, nếu t1  t2 thì t1[K]  t2[K]

(2) Không tồn tại K‟  K sao cho K‟ thỏa mãn điều kiện 1

Thuật toán tìm tất cả các khóa:

U: Tập thuộc tính

F: Tập phụ thuộc hàm

K: Tập khóa

func Set_of_keys(U, F, out K) {

N = U - ( )

f F

right f

 

if ( N+F = U) K = {N}

else {

L = U – N+FD

K = 

for each Li  L {

if ( {NLi}+F = U)

K = K  {NLi}

while Ki, Kj  K và Ki  Kj

K = K – {Kj}

}

}

}

Ví dụ:

R(ABCDEFGH)  Tập thuộc tính U = {ABCDEFGH}

Trang 4

F = { f1: B  G, f2: BE  H, f3: CF  A, f4: F  BE, f5: E  FA, f6: F  G }

Yêu cầu: Tìm tất cả các khóa của R

Giải

N = U - ( )

f F

right f

  = {ABCDEFGH} – {GHABEF} = {CD}

N+F = {CD}+F = {CD}

Vì N+F U do đó:

L = U – N+FD = {ABCDEFGH} – {CDGHA} = {BEF}

Xét các tập con Li của L: Li  L

{Li} = {BEF, BE, BF, EF, B, E, F}  (L có n thuộc tính thì có 2n – 1 tập)

Tìm {NLi}+F:

{CDB}+F = {CDBGH}  U

{CDE}+F = {CDEFAGBH} = U

 {CDE} là một khóa của R, loại bỏ các tập cha của Li = {E} trong L : {BE},

{EF}, {BEF}

{CDF}+F = {CDFBEGHA} = U

 {CDF} là 1 khóa của R, loại bỏ các tập cha của {F}: {BF}

Kết luận:

R có 2 khóa là {CDE} và {CDF}

Chú ý: Nếu N +

F = U  R chỉ có 1 khóa là N

Ví dụ 2:

R(ABCDE)  Tập thuộc tính U = {ABCDE}

F = {

f1: A  BCDE, f2: B  CD, f3: C  ABDE, f4: E  D }

Yêu cầu: Tìm tất cả các khóa của R

Giải

f1

f1 f6 f4 f1

Trang 5

N = U - ( )

f F

right f

  = {ABCDE} – {BCDEA} = 

N+F = 

Vì N+F U do đó:

L = U – N+FD = {ABCDE} – {D} = {ABCE}

Xét các tập con Li của L: Li  L

{Li} = {A, B, C, E, AB, AC, AE, BC, BE,CE, ABC, ABE, ACE, BCE, ABCE}  (L có

n thuộc tính thì có 2n

– 1 tập) Tìm {NLi}+F:

{A}+F = {ABCDE} = U  {A} là khóa  loại các tập cha của A

{B}+F = {BCDEA} = U  {B} là khóa  loại các tập cha của B

{D}+F = {D}  U  {D} không là khóa

{E}+F = {ED}  U  {E} không là khóa

Phụ thuộc hàm

Cho một lược đồ quan hệ R(U), r là một quan hệ bất kỳ trên lược đồ quan hệ R, X và Y là

hai tập thuộc tính con của U Phụ thuộc hàm X  Y trên lược đồ quan hệ R, đọc là “X

xác định hàm Y” hoặc “Y phụ thuộc hàm vào X”, nếu:

t1, t2  r(R): t1[X] = t2[X] => t1[Y] = t2[Y]

Tức là mỗi giá trị của X trong r chỉ tương ứng với một giá trị của Y

X -/→ Y đọc là “X không xác định hàm Y” hoặc “ Y không phụ thuộc hàm vào X”

Trong phụ thuộc hàm f: X  Y, X được gọi là vế trái của f, ký hiệu là left(f) và Y được gọi là vế phải của f, ký hiệu là right(f)

Quy ước: X, Y,Z : là tập các thuộc tính A,B,C là 1 thuộc tính

Phụ thuộc hàm riêng phần :

Y  X: Y  A

Phát biểu : tồn tại Y là tập con thực sự của X sao cho Y xác định A

Ví dụ: Cho quan hệ

sinhvien(masv, hoten, ngaysinh) Phụ thuộc hàm {masv,hoten}  ngày sinh là một phụ thuộc hàm riêng phần vì :

{masv}  {masv,hoten}: masv  ngaysinh

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

Phát biểu: không tồn tại Y là tập con thực sự của X sao cho Y xác định A, với A thuộc X

Ví dụ: Cho quan hệ

Bangdiem(masv,mamh,diemthi) Phụ thuộc hàm {masv,mamh}  diemthi là một phụ thuộc hàm đầy đủ vì:

{masv} -/ diemthi {mamh} -/ diemthi

Phụ thuộc bắc cầu:

Trang 6

X  A là phụ thuộc bắc cầu nếu Y sao cho:

X Y,Y A

Y

Ví dụ:

sinhvien(masv, hoten, socmnd, malop, tenlop)

f1: masv  {hoten, socmnd, malop, tenlop}

f2: malop  tenlop

f3: socmnd  {masv, hoten, malop, tenlop}

masv  tenlop là phụ thuộc bắc cầu ? Đúng

Giải thích:

malop (Y) : masv (X)  malop (Y) , malop (Y)  tenlop (A)

malop (Y) -/-> masv (X), tenlop (A) {masv, malop} XY

socmnd  tenlop là phụ thuộc bắc cầu ? Sai

Giải thích:

masv (Y) : socmnd (X)  masv (Y) , masv (Y)  socmnd (X)

masv (Y)  tenlop (A), tenlop (A) {socmnd, masv} XY

Hệ tiên đề Armstrong

Cho lược đồ quan hệ R(U) và X,Y,Z,W là các tập con của U

F1 Phản xạ: Y  X => X  Y

Phát biểu: Nếu Y là một tập con của X thì X xác định hàm Y

Ví dụ : {hoten, phai} hoten

F2.Gia tăng: X  Y => XZ  YZ

Phát biểu: Nếu X xác định hàm Y thì X hợp với Z xác định hàm Y hợp với Z

F3 Bắc cầu: X Y và Y  Z => X  Z

Phát biểu: Nếu X xác định hàm Y và Y xác định hàm Z thì X xác định hàm Z

Các quy tắc được suy ra từ hệ tiên đề Armstrong

F4 Hợp : X  Y và X  Z => X  YZ

Phát biểu: Nếu X xác định hàm Y và X xác định hàm Z thì X xác định hàm Y hợp Z

F5 Chiếu: X  YZ => X  Y và X  Z

Phát biểu: Nếu X xác định hàm Y hợp Z thì X xác định hàm Y và X xác định hàm Z

F6 Bắc cầu giả: X  Y và YZ  W => XZ  W

Phát biểu: Nếu X xác định hàm Y và Y hợp Z xác định hàm W thì X hợp với Z xác định hàm W

Bao đóng

Bao đóng của một tập thuộc tính X dựa trên một tập phụ thuộc hàm F (closure of X under F), ký hiệu là XF+, là một tập thuộc tính Y sao cho :

(1) X  Y  F+

Phát biểu: Tồn tại X xác định Y thuộc bao đóng của tập phụ thuộc hàm F

(2) X  Z F+

: Z  Y

Phát biểu : Với mọi X xác định hàm Z thuộc bao đóng của tập phụ thuộc hàm F thì Z là tập con của Y

Hệ quả: Với một tập X bất kỳ thì X  X+F vì X  X  F+

Trang 7

Ví dụ:

R(ABCDEF)

F = {

f1: D  B, f2: A  C, f3: AD  E, f4: C  F }

1 Tìm A+F = {A}

Lần lặp 1: Lấy vế trái coi là tập con của vế phải {A}

Từ f2 lấy vế phải bổ sung vào A+

F  A+F = {AC}

Từ f4 lấy vế phải bổ xung vào A+

F  A+F = {ACF} (có đổi  tiếp tục lặp) (có thêm vào thì đánh dấu không sử dụng lại)

Lần lặp 2:

Kết luận: AF+

= {ACF}

2 Tìm {AD}+F = {AD}

Từ f1: {AD}+

F = {ADB}

Từ f2: {AD}+

F = {ADBC}

Từ f3: {AD}+

F = {ADBCE}

Từ f4: {AD}+

F = {ABCDEF}

Kết luận: {AD}+

F = {ABCDEF}

Chuẩn hóa

Chuẩn hóa là một quá trình thuận nghịch từng bước để thay thế tập các quan hệ cho trước thành các quan hệ có cấu trúc đơn giản hơn và chuẩn hơn

Mục đích của chuẩn hóa là loại bỏ các bất thường (anomaly) của một quan hệ để có được các quan hệ có cấu trúc tốt hơn, chuẩn hơn

Định nghĩa dạng chuẩn 1 (1NF – First Normal Form)

Lược đồ quan hệ R ở dạng chuẩn 1 nếu mọi thuộc tính của R đều chứa các giá trị nguyên

tố, giá trị này không là một danh sách các giá trị hoặc các giá trị phức hợp

Định nghĩa dạng chuẩn 2 (2NF – Second Normal Form)

Lược đồ quan hệ R ở dạng chuẩn 2 đối với tập phụ thuộc hàm F nếu R ở dạng chuẩn 1

và mọi thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào mọi khóa của R

Chú ý:

X  A là phụ thuộc hàm đầy đủ:

 Z  X : Z  A

X  A là phụ thuộc hàm riêng phần:

 Z  X : Z  A

Định nghĩa dạng chuẩn 3 (3NF – Thirt Normal Form)

Lược đồ quan hệ R ở dạng chuẩn 3 đối với tập phụ thuộc hàm F nếu R ở dạng chuẩn 1

và mọi thuộc tính không khóa đều không phụ thuộc bắc cầu vào một khóa của R

Chú ý:

X  A là phụ thuộc bắc cầu nếu:

Trang 8

Y: X  Y, Y  A và Y -/-> X, A  XY

Dạng chuẩn BCNF

Lược đồ quan hệ R ở dạng chuẩn BCNF nếu R ở dạng chuẩn 1 và mọi định thuộc đều là siêu khóa

Ví dụ : Cho lược đồ quan hệ R(sinhvien, giangvien, monhoc)

Tập phụ thuộc hàm: {sinhvien, monhoc}  giangvien, giangvien  monhoc

Ta dễ dàng tìm được khóa : {sinhvien, monhoc}, {sinhvien, giangvien}

Ta thấy quan hệ này có bất thường (không thỏa phụ thuộc hàm giangvien  monhoc) do giangvien  monhoc có định thuộc giangvien không là một siêu khóa

 Phải phân rã lược đồ trên thành 2 lược đồ con

R 1 (giangvien, monhoc)

R 2 (sinhvien, giangvien)

Như vậy lược đồ của chúng ta đã thỏa dạng chuẩn BCNF

Phủ tối thiểu

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 được suy ra từ F mà:

(1) Mọi phụ thuộc hàm mà vế phải chỉ có một thuộc tính

f: X  Y => Y là một thuộc tính

(2) Mọi phụ thuộc hàm là phụ thuộc hàm đầy đủ (vế trái không dư thừa)

f: X  A => ~Z  X : Z  A  F+

(3) Mọi phụ thuộc hàm là không dư thừa (không được suy từ các phụ thuộc hàm còn lại bằng cách dùng các luật suy diễn Armstrong)

 f: X  A  M : (M – {f}) +

= M+

Ví dụ:

Bước 1: Biến đổi tất cả các phụ thuộc hàm mà vế phải có nhiều thuộc tính thành các phụ thuộc hàm mà vế phải chỉ có một thuộc tính (phép chiếu)

R(ABCDEFGH)

F = {

B  GH,

BE  H,

CF  A,

F  BE,

E  FA,

F  G

}

F = {

f1: B  G,

Trang 9

f2: B  H,

f3: BE  H,

f4: CF  A,

f5: F  B,

f6: F  E,

f7: E  F,

f8: E  A,

f9: F  G

}

Bước 2: Xét các phụ thuộc hàm đầy đủ (Các phụ thuộc hàm mà vế trái có 2 thuộc tính trở lên)

Xét f3: BE  H; Xét B và E

B+F = {BGH} có chứa H  B  H

 Thay thế {BE}  H bằng B  H

Trùng f2:  Bỏ f3: BE  H

Xét f4: CF  A; C, F (tập con thật sự)

C+F = {C} không chứa A

F+F = {FBEAG} có chứa A

 Thay thế CF  A với F  A

F = {

f1: B  G,

f2: B  H,

f3: BE  H,

f4: F  A,

f5: F  B,

f6: F  E,

f7: E  F,

f8: E  A,

f9: F  G

}

Bước 3: Loại bỏ các phụ thuộc hàm dư thừa (là các phụ thuộc hàm được suy ra từ các phụ thuộc hàm còn lại bằng cách dùng các luật suy dẫn)

Xét f1: B  G

B+F-{f1} = {BH} không chứa G  phụ thuộc hàm không dư thừa

Xét f2: B  H

B+F – {f2} = {BG} không chứa H  phụ thuộc hàm không dư thừa

Xét f4: F  A

F+F – {f4} = {FBGEAH} chứa A  phụ thuộc hàm dư thừa

 Bỏ f4: F1 = F – {f4}

F1 = {

Trang 10

f1: B  G,

f2: B  H,

f3: BE  H,

f4: F  A,

f5: F  B,

f6: F  E,

f7: E  F,

f8: E  A,

f9: F  G

}

Xét f5: F  B

F+F1-{f5} = {FEAG} không chứa B  là phụ thuộc hàm không dư thừa

Xét f7: E  F

E+F1-{f7} = {EA} không chứa F  là phụ thuộc hàm không dư thừa

Xét f8: E  A

E+F1-{f8} = {EFGBH} không chứa A  là phụ thuộc hàm không dư thừa

Xét f9: F  G

F+F1-{f9} = {FBEAGH} chứa G  là phụ thuộc hàm dư thừa

 Bỏ f9: F2 = F1 – {f9}

F2 = {

f1: B  G,

f2: B  H,

f3: BE  H,

f4: F  A,

f5: F  B,

f6: F  E,

f7: E  F,

f8: E  A,

f9: F  G

}

Kết luận: Phủ tối thiểu của F là F2

Phân rã

Cho R(U) và  =  

1,

( )

i n

Ri Ui

= {R1(U1), R2(U2), …, Rn(Un)}

 là một phân rã của R nếu:

(1) U =

1,

i n

Ui

 = U1  U2 … Un và Ui  U (2) r(R) : ri = Ui(r) , i = 1,n (quan hệ ri phải tồn tại trong lược đồ quan hệ R)

Ví dụ:

Cho R(ABCDEF) Hỏi :

Trong các phân rã sau, phân rã nào là phân rã của R ?

Ngày đăng: 15/03/2015, 21:19

TỪ KHÓA LIÊN QUAN

w