Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu
Trang 1CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN VỀ MÔ HÌNH DỮ LIỆU QUAN HỆ 2
I CÁC KHÁI NIỆM CƠ BẢN: 2
I.1 Khái niệm cơ bản về hệ cơ sở dữ liệu: 2
Ðịnh nghĩa Hệ thống cơ sở dữ liệu (database systems) 2
Ðịnh nghĩa kho dữ liệu (Datawarehouse) 3
I.2 Lược đồ quan hệ: 3
Khóa của lược đồ quan hệ: 4
I.3 Các phép tính trên cơ sở dữ liệu quan hệ, đại số quan hệ và câu lệnh SQL tương ứng: 6
I.3.1 Các phép tính trên quan hệ: 6
I.3.1.a Phép khởi tạo lược đồ: 6
I.3.1.a Phép chèn thêm một phần tử: 6
I.3.1.b Phép xóa bỏ: 6
I.3.1.c Phép cập nhật: 6
I.3.2 Ðại số quan hê: 7
Các phép toán tập hợp: 7
a Phép hợp (UNION, DISJUNCTION, OR): 7
SELECT * FROM r 7
b Phép giao (Intersection, conjonction, and): 8
c Phép hiệu: 8
d Tích Ðêcac: 8
e Phép bù: 9
Các phép toán quan hệ: 9
a Phép chiếu: 9
b Phép chọn: 10
c Phép kết nối (join): 10
d Phép chia: 11
e) Kết ngoại: (Out join) 11
II TỐI ƯU HOÁ CÂU HỎI (CÂU LỆNH TRUY VẤN DỮ LIỆU): 14
II.1 Cây đại số quan hệ: 14
II.2 Các chiến lược tối ưu các câu lệnh truy vấn CSDL: 14
II.3 Tối ưu hoá bằng cách phân rã câu hỏi truy vấn dữ liệu: 14
Phép nữa nối: 15
III XÂY DƯNG VÀ CHUẨN HOÁ QUAN HỆ: 17
III.1 Các dạng chuẩn: 17
III.2 Mô hình thực thể mối quan hệ: 17
Ràng buộc toàn vẹn trên các thực thể: 17
Mối quan hệ giữa các thực thể: 18
Nguyên tắc xây dựng thực thể: 18
Chuẩn hoá mô hình: 19
III.3 Quy tắc chuyên đổi từ mô hình quan niệm dữ liệu sang mô hình tổ chức dữ liệu: 19
a/ Chuyển đổi 1 thực thể thành 1 lược đồ quan hệ: 19
b/ Chuyển mối quan hệ thành một lược đồ quan hệ: 20
Trang 2CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN VỀ MÔ HÌNH DỮ LIỆU QUAN HỆ
Chương này trình bày khái quát về mô hình dữ liệu quan hệ: các khái niệm
cơ bản về hệ cơ sở dữ liệu, lược đơ quan hệ, các phép tính trên cơ sở dữ liệu quan hệ, đại số quan hệ, cách tối ưu câu lệnh truy vấn dữ liệu SQL
I CÁC KHÁI NIỆM CƠ BẢN:
I.1 Khái niệm cơ bản về hệ cơ sở dữ liệu:
Ðịnh nghĩa Dữ liệu: Dữ liệu là các sự kiện, văn bản, đồ họa, hình ảnh, và
các đoạn phim video có ý nghĩa trong môi trường người dùng
Ðịnh nghĩa thông tin: Thông tin là dữ liệu được xử lí theo các cách để làm
tăng hiểu biết của người đang sử dụng dữ liệu này
Thông thường đối với việc thiết kế xây dựng một hệ thống tin quản lí, chúng
ta cần xử lí một hệ thống các file dữ liệu Mỗi file này có cấu trúc bản ghi khác nhau nhưng về nội dung có quan hệ với nhau tạo thành một cơ sở dữ liệu (Data base _ viết tắt CSDL)
Cơ Sở Dữ Liệu là tập hợp thông tin (dữ liệu) có tổ chức nhằm thỏa mãn
một hay nhiều mục đích quản lí thông tin của con người
Hệ các chương trình nhằm quản lí khai thác dữ liệu này là Hệ quản trị Cơ
Sở Dữ Liệu (viết tắt HQTCSDL, Database management system) (Như
Access, SQL server, Oracle )
Hệ thống thông tin gồm bộ phận xử lý thông tin, kênh thông tin vào ra
Hình 1-1 Hệ thống thông tin
Ðịnh nghĩa Hệ thống cơ sở dữ liệu (database systems)
Hệ thống cơ sở dữ liệu là hệ thống thông tin, cho phép người ta dùng chung các dữ liệu có trong hệ thống
Thông tin vào Thông tin ra
Môi trường hệ thốngXử lí thông tin
Trang 3Hình 1-2 Hệ thống cơ sở dữ liệu.
Trong quá trình thiết kế và xây các hệ quản trị CSDL người ta tiến hành xây dựng các mô hình CSDL Thực chất là xây dựng tập các khái niệm và quy tắc tạo thành khái niệm nhằm mô tả dữ liệu mà các dữ liệu nay phản ảnh các mối quan hệ và các thực thể trong thế giới thực Có thể thấy mô hình dữ liệu phản ảnh khía cạnh cấu trúc logic mà không đi vào khía cạnh vật lý của các CSDL
Cơ sở dữ liệu quan hệ được E F Codd giới thiệu năm 1970 Thuật ngữ
“quan hệ” là do bảng dữ liệu hai chiều được Codd gọi là bảng quan hệ từ đó đến nay mô hình quan hệ đã được sử dụng rộng rãi
Theo mô hình quan hệ, dữ liệu được thể hiện về khái niệm trong hai chiều, gồm các cột và dòng Các bảng gọi là các “quan hệ”, các dòng là các “bộ” hay “_tuple” và cột là “thuộc tính” Nói rõ hơn mỗi dòng là một bản ghi (record), các “thuộc tính” cho biết ý nghĩa của các giá trị trong bản ghi
Ðịnh nghĩa kho dữ liệu (Datawarehouse)
Kho dữ liệu là cơ sở dữ liệu trợ giúp quyết định tích hợp, bao gồm thông tin trích từ các cơ sở dữ liệu khác
Trong phần dưới đây sẽ định nghĩa một cách cụ thể hơn
I.2 Lược đồ quan hệ:
Cho tập các thuộc tính U={A1, ,An}, ở đây luôn giả thiết n là hữu hạn Các thuộc tính Ai nhận giá trị trong một miền giá trị nào đó, ký hiệu dom(Ai)
Người sử dụng
Ngôn ngử hỏi cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu
Cơ sở dữ liệu
Trang 4- Một lược đồ quan hệ R được xây dựng trên U, ta ký hiệu R(U) Khi
đó R là một lược đồ dữ liệu thể hiện ở dạng quan hệ
- Một bộ là các thông tin của một đối tượng thuộc một lược đồ quan hệ Một bộ cũng thường được gọi là một mẩu tin hay một bản ghi(record)
Về mặt toán học thì một bộ t là một vector gồm n thành phần thuộc tập hợp con của tập tích Ðề Các giữa các miền giá trị của các thuộc tính
t = (a1, an) dom(A1) x dom(A2) x x dom(An)
- Một quan hệ r định nghĩa trên một lược đồ quan hệ R, ký hiệu r(R) là một thể hiện của lược đồ quan hệ R tại một thời điểm nào đó Khi đó, quan hệ r(R) là một tập hợp các bộ t thỏa mãn lược đồ R Như vậy, một quan hệ r là một tập hợp con của tập tích Ðề Các giữa các miền giá trị của các thuộc tính dom(Ai)
Một cách cụ thể chúng ta thấy lược đồ quan hệ là sự trừu tượng hóa ở mức
độ cấu trúc của một bảng 2 chiều và quan hệ là tình trạng của một lược đồ quan hệ, là một bảng chứa các mẩu tin cụ thể tại một thời điểm Vì vậy một quan hệ r(R) còn được gọi là một bảng được xây dựng trên tập thuộc tính U, hay nói cách khác được xây dựng trên cấu trúc R Nói một cách nôm na như trong thực tế ta vẫn thường nói rằng một quan hệ là một danh sách
Ví dụ: Cho U={hoten, diem, diachi}
Ta có lược đồ quan hệ như sau: Sinhvien(hoten, diem, diachi)
Là một quan hệ được xây dựng trên lược đồ R
t =(Le A, A1, 7, Hue) là một bộ của quan hệ trên
Nhận xét:
- Trên cùng 1 lược đồ quan hệ sẽ có nhiều quan hệ
- Trên cùng 1 quan hệ không có 2 bộỷ trùng nhau
- Trên tập thuộc tính U={A1, ,An} ngoài lược đồ R(U) còn có thể xây dựng được các lược đồ con khác T(V) với V U
Khóa của lược đồ quan hệ:
Cho R(A1, An) và r(R) là quan hệ trên R K {A1, An}
K được gọi là khóa của quan hệ r, nếu K thỏa mãn các tính chất sau:
a t1, t2 r, t1t2 t1[K] t2[K]
Trang 5b K’ K thì K’ không có tính chất a.
ở đây ký hiệu t[K] chính là bộ t chỉ giữ lại các thuộc tính Ai K
Ví dụ: R(hoten, diachi)
Nhânviên(R) = (hoten, diachi)
K={hoten} là một khóa của lược đồ quan hệ nhân viên
Nhận xét:
Trên một bộ t=(a1, ,an) có thể có các thuộc tính ai mang giá trị rỗng null tại một thời điểm nào đó Khi đó ta hiểu rằng các thuộc tính này đang chờ xác định Nhưng mỗi bộ t chỉ xác định khi khoá của nó khác rỗng
Cho K là khóa của R, nếu K’ K thì K’ cũng là khóa
Ta gọi những tập K’ như thế là siêu khóa (đó là khóa không tối thiểu,
có thể bớt đi được)
Trong các khóa nếu K là khoá tối thiểu ta gọi đó là các khoá tối thiểu hay khoá chỉ định
Một lược đồ có thể có nhiều khoá chỉ định Khi cài đặt ta chọn một
khóa chỉ định để xử lý dữ liệu Lúc này khoá được chọn gọi là khoá
chính.
Trong một CSDL có những lược đồ quan hệ có những tập thuộc tính lại là khóa chính cho những lược đồ quan hệ khác gọi là khóa ngoại Hay nói cách khác trong một lược đồ quan hệ ngoài các khóa chỉ định, khóa chính trong chính lược đồ đó còn có các khóa ngoại Trong việc chuyển mô hình dữ liệu khái niệm ở dạng quan hệ thực thể về mô hình lôgic ở dạng mô hình quan hệ thì các tập thực thể sẽ tương ứng với các lược đồ quan hệ (các bảng) Lúc này các khóa ngoại diễn tã các mối liên hệ giữa hai tập thực thể Hay chúng chính là khóa của các mối liên hệ trong sơ đồ quan hệ thực thể
Các thuộc tính tham gia vào khóa được gọi là thuộc tính khóa Một bộ
t của một quan hệ thì các thuộc tính khóa không chứa các giá trị rỗng
Ví dụ:
K’={hoten, diachi} là 1 siêu khóa của quan hệ nhân viên.
Ví dụ: Xét quan hệ Sinhviên(Mã số, Họtên, ngày sinh, khoa) và quan hệ Dựthi(Mã số, Mônthi, Ðiểmthi)
Khi đó: K={Mã số}, K'={Họ tên, ngày sinh} là các khóa chỉ định của quan
hệ Sinhviên (giả sử không có sinh viên nào trùng tên và ngày sinh) Nhưng khi truy cập ta qui định sử dụng khóa K Lúc này K được gọi là khóa chính
Trang 6Trong quan hệ Dự thi khóa chính của nó sẽ là {Mã số,Mônthi} Nhưng khóa ngoại nhằm để nhận biết một sinh viên Nguyễn Văn A nào đó thi một môn nào đó được bao nhiêu điểm là {Mã số}
I.3 Các phép tính trên cơ sở dữ liệu quan hệ, đại số quan hệ và câu lệnh SQL tương ứng:
Trong phần này trình bày các phép tính trên cơ sở dữ liệu quan hệ, đại số quan hệ, và các lệnh tương ứng trong ngôn ngữ khai thác CSDL SQL
I.3.1 Các phép tính trên quan hệ:
I.3.1.a Phép khởi tạo lược đồ:
U= R(U) : U ={ A1, ,An}
Create R(A1,A2, ,An)
Lệnh tương ứng trong ngôn ngữ SQL:
CREATE TABLE {table_name}
(
column_name datatype [ ]
[ ]
)
I.3.1.a Phép chèn thêm một phần tử:
Insert(r; A1=a1, A2=a2, An=an)
Chèn vào r một bộ (a1,a2, ,an)
Nếu thứ tự Ai cố định thì Insert(r; a1, a2, ,an) chính là thêm 1 bộ vào tập con r của (domA1 x domA2 x domAn)
Lệnh tương ứng trong ngôn ngữ SQL:
INSERT [INTO] {table_or_View}
{{[column_list] VALUE ({constant_expression} [, n])}
} [, n]
I.3.1.b Phép xóa bỏ:
Delete(r, a1, ,an)
Loại bớt phần tử t =(a1, ,an) trong r
Lệnh tương ứng trong ngôn ngữ SQL:
{<search_condition>}
I.3.1.c Phép cập nhật:
Gọi {C1, ,Cp} ( {A1, ,An}
là tập các thuộc tính cần thay đổi của bộ t=(a1, ,an) Khi đó phép thay đổi
bộ t có dạng:
Update(r ;A1=a1, An=an; C1=e1, ,Cp=ep)
Lệnh tương ứng trong ngôn ngữ SQL:
UPDATE {table_name |view}
Trang 7SET
Column_name1={expression1}
[, column_name2= ]
[WHERE search_conditions]
Nhận xét:
- Việc thêm hay một phần tử thì phải phù hợp với lược đồ quan hệ Ðó là:
Tương ứng thuộc tính
Giá trị đưa vào năm trong miền giá trị của các thuộc tính
- Khi cập nhật hay chèn, thêm một phần tử cần phải lưu ý tới khóa, để tránh trường hợp khoá là rỗng hay trùng khoá với các phần tử khác
I.3.2 Ðại số quan hê:
Ðại số quan hệ được trình bày xem như một phương pháp để mô hình hoá các phép toán trên CSDL quan hệ Ðồng thời đây cũng là một trong những
ưu điểm của mô hình dữ liệu quan hệ, đó là việc tiếp nhận các kết quả của công cụ toán học trong việc xây dựng ngôn ngữ khai thác, xử lý dữ liệu Nhìn chung các phép toán của đại số quan hệ là khá đơn giản, nhưng nó khá mạnh và là một đại số có tính đầy đủ, phi thủ tục Tuy nhiên đây là một cơ
sở cho việc thiết lập các ngôn ngữ con dữ liệu bậc cao hơn
Trong phần này ta nói rằng hai quan hệ r và s là khả hợp nếu chúng được xây dựng trên cùng một lược đồ hay xây dựng trên các lược đồ khác nhau, nhưng lược đồ này là lược đồ con của lược đồ kia
Cho r, s là 2 quan hệ khả hợp, ta có:
Các phép toán tập hợp:
a Phép hợp (UNION, DISJUNCTION, OR):
r s = {t / t r t s}.
Phép hợp tác động vào hai quan hệ của cùng một lược đồ: QH1 và QH2 để thu nhân được QH3 cùng lược đồ có các bộ thuộc QH1 hoặc QH2 hoặc cả hai QH
Ví dụ a:
r (A B C) s (A B C) r s = (A B C)
a1 b1 c1 a1 b1 c1 a1 b1 c1
a2 b1 c2 a2 b2 c2 a2 b1 c2
a2 b2 c1 a2 b2 c1
a2 b2 c2
Dùng ngôn ngữ SQL:
SELECT * FROM r
UNION
SELECT * FROM s
Trang 8b Phép giao (Intersection, conjonction, and):
r s = {t / t r t s}.
Phép giao tác động lên hai QH: QH1, QH2 của cùng một lược đồ để tạo nên QH3 có các bộ cùng thuộc QH1 lẫn QH2
Lấy lại ví dụ a:
r s = (A B C)
a1 b1 c1
Dùng ngôn ngữ SQL:
SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE (r.A=s.A) and (r.B=s.B) and (r.C=s.C))
c Phép hiệu:
r \ s = { t / t r t s}.
Phép hiệu tác động vào hai QH cùng một lược đồ: QH1, QH2 dể thu được QH3 cùng lược đồ có các bộ thuộc QH1 nhưng không thuộc QH2
Ví dụ:
Lấy lại ví dụ a:
r \ s = (A B C)
a2 b1 c2
a2 b2 c1
Dùng ngôn ngữ SQL:
SELECT * FROM r WHERE NOT EXISTS (SELECT * FROM r WHERE (r.A=s.A) and (r.B=s.B) and (r.C=s.C))
d Tích Ðêcac:
Cho hai lược đồ quan hệ
R(A1, An) và S(B1, Bn) Tích Ðề các của R và S ký hiệu R xS sẽ là một lược đồ quan hệ được xây dựng trên tập các thuộc tính {A1, ,An,B1, ,Bn}
và với r R và s S
Tích Ðêcac giữa r và s, ký hiệu là r x s là một quan hệ xây dựng trên lược đồ {A1, An, B1, Bn}
r x s = { (t,u) / t r u s }
Tích Ðêcac là tác tử tác động vào hai QH: QH1, QH2 để tạo nên QH3 có lược đồ là kết hợp hai QH, các bộ của QH3 là mọi tổ hợp có thể có của các
bộ của các QH
Nhận xét:
- Từ định nghĩa tích Ðề các của hai quan hệ, ta có thể định nghĩa tích Ðêcac của nhiều quan hệ
- Nếu r có n bộ, s có m bộ thì r x s có n x m bộ
Dùng ngôn ngữ SQL:
Trang 9Lấy lại ví dụ a:
SELECT * FROM r, s
Hoặc
SELECT * FROM r cross join s
Kết quả:
A B C A B C a1 b1 c1 a1 b1 c1 a1 b1 c1 a2 b2 c2 a2 b1 c2 a1 b1 c1 a2 b1 c2 a2 b2 c2 a2 b2 c1 a1 b1 c1 a2 b2 c1 a2 b2 c2 (6 row(s) affected)
e Phép bù:
Cho R là một lược đồ quan hệ R(A1, ,An); r R; miền giá trị của thuộc tính Ai là dom(Ai) Ta gọi r' là quan hệ bù của r Nếu r'= {t/ t=(a1, ,an); ai dom(Ai) và t r}
Ví dụ:
Miền: NướcSX{Nhật, Vnam, Tquốc}, Màu{Ðà, Ðỏ, Trắng}
M_Xemay( NướcSX, Mau)
Nhật Ðà
Nhật Ðỏ Vnam Ðà Tquốc Ðỏ Tquốc Trắng NOT M_Xemay( NướcSX, Mau)
Nhật Trắng
Vnam Ðỏ Vnam Trắng Tquốc Ðà
Các phép toán quan hệ:
a Phép chiếu:
Cho R={A1, ,An}
Khi đó R(A1, ,An) xem như là một tích Ðề các trên A1, An
B {A1, An}
Trang 10Phép chiếu r lên B được định nghĩa và ký hiệu như sau:
B r = { t[B] / t r }
Ta thấy B r xem như là một quan hệ được xây dựng trên lược đồ quan hệ
mới B, có các bộ t lấy ra từ r nhưng chỉ giữ lại các thuộc tính Ai thuộc về B
Dùng ngôn ngữ SQL:
Lấy lại ví dụ a:
SELECT r.A from r
Kết quả:
A r= (A)
a1
a2
Nhận xét:
- Phép chiếu gồm hai thao tác:
- Loại bỏ các thuộc tính không có trong B
- Chọn các bộ đại diện trong các bộ giống nhau
b Phép chọn:
Phép chọn tác động trên QH1 tạo nên QH2 cùng một lược đồ nhưng chỉ gồm những bộ thoả điều kiện mà tiêu chuẩn đã chỉ ra
Kí hiệu:
F ( r) = { t r / F ( t ) =
đúng }
ở đây F(t) là giá trị của biểu thức F ứng với bộ t
Ví dụ:A=a1 (r) (A B)
a1 b1 Chọn lại trong danh sách r những bộ thỏa mãn điều kiện F
c Phép kết nối (join):
Phép kết nối là tác tử mà tác động của nó giúp kết hợp các bộ hai QH: QH1, QH2 theo một điều kiện nhằm tạo nên QH3 chứa tất cả các bộ kết hợp thõa điều kiện gọi là kết nối
Cụ thể như sau:
Cho r(R); R={A1, An}, S(U); U={B1, Bn}
Gọi là một trong các phép so sánh >, <, , , =
A R; B U; nếu A và B đối sánh được qua phép Ta viết: AB
Phép kết nối được định nghĩa như sau:
)
{( u t s
r
B
/ tr,us t[A] u[B]}
Ở đây t u
được hiểu là việc xếp cạnh nhau hai bộ t và u
Trong trường hợp phép so sánh là ” = ” gọi là phép kết nối bằng