Tải bản đầy đủ (.doc) (20 trang)

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (237.23 KB, 20 trang )

1 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

CHƯƠ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

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

1/ 20


2 / 20


Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

CHƯƠ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.
Thông tin vào

Thông tin ra
Xử lí thông tin
Môi trường hệ thống


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.

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

2/ 20


3 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

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
Hì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).

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

3/ 20


4 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

- 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)
Hoten
Le A
Tran B

Maso
A1
A2

Diem
7
4

Diachi
Hue
Quangngai


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, t1≠t2 ⇒ t1[K] ≠ t2[K]

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

4/ 20


5 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

b. 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)
A
QN
B
ÐN

C
Hue
D
QN.
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.

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

5/ 20


6 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Trong 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:
DELETE
[FROM]
{table_name
|
View_name}
WHERE
{<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}
Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế


6/ 20


7 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

SET
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

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

7/ 20


8 / 20


Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

b. 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ộ.

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

8/ 20


9 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Dùng ngôn ngữ SQL:
Lấ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
Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

9/ 20


10 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

B ⊂ {A1,.....An}
Phé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: AθB
Phép kết nối được định nghĩa như sau:
r 
s ={(t ∩u )
AθB
/ t ∈r, u ∈s ∧t[ A]θu[ B ]}
Ở đây t ∩ u
được hiểu là việc xếp cạnh nhau hai bộ t và u

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

10/ 20



11 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Trong trường hợp phép so sánh θ là ” = ” gọi là phép kết nối bằng.
Trường hợp kết nối bằng tại thuộc tính cùng tên của hai quan hệ thì sẽ có giá
trị trùng nhau trong mỗi bộ. Ðể loại bỏ sự dư thừa một trong hai thuộc tính
đó được loại bỏ qua phép chiếu thì phép kết nối được gọi là “kết nối tự
nhiên” và sử dụng ký hiệu “ * “.
Nhận xét:
- Biểu thức F trong phép kết nối được gọi là điều kiện nối.
r 
s =σ F ( r x s )
F

Câu lệnh SQL tương ứng:
Lấy lại ví dụ a:
SELECT * FROM r inner join s ON
(r.A=s.A) and (r.B=s.B) and (r.C=s.C)
Hoặc
SELECT * FROM r ,s WHERE
(r.A=s.A) and (r.B=s.B) and (r.C=s.C)
Kết quả:
A B C A B C
---- ---- ---- ---- ---- ---a1 b1 c1 a1 b1 c1
(1 row(s) affected)
d. Phép chia:
Cho r(R) và s(U) là 2 quan hệ. Ta định nghĩa và ký hiệu phép chia hai quan

hệ r cho s như sau:
r / s ={ t / ∀ u ∈ s thì (t, u) ∈ r}
Phép chia là tác tử cho phép tìm thương của QH D(A1,A2,…, Ap,…, An)
Với QH d(Ap,..,An) là QH Q(A1, A2, …,Ap) mà trong đó các bộ khi kết nối
với tất cả các bộ của d sẽ cho một bộ của D.
Nhận xét:
Phép chia r / s thực hiện được khi mà U⊂ R
e) Kết ngoại: (Out join)
Các phép kết nối ở trên khi thực hiện sẽ làm mất những bộ ít nhất của một
QH khi nhưng QH phải kết nối không có hình chiếu đồng dạng với Thuộc
tính chiếu. Ðể có thể giử lại những phép kết có thể bảo toàn những bộ không
tương thích, với các giá trị rỗng ở cột liên quan. Chính với mục đích này
người ta đưa ra phép kết ngoại.
Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

11/ 20


12 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Ðịnh nghĩa: Kết ngoại là tác tử tạo nên QH3 từ QH1 và QH2 bằng cách kết
nối hai QH và thêm vào các bộ của QH1 và Qh2 không thuộc vào quá trình
kết nối với các giá trị rỗng cho thuộc tính tương ứng.
Câu lệnh SQL tương ứng:
Lấy lại ví dụ a:
SELECT *
FROM r full outer join s
on (r.A=s.A)and (r.B=s.B)and(r.C=s.C)

Kết quả:
A
B
C
A
B
C
------------------a1
b1
c1
a1
b1
c1
a2
b1
c2
NULL NULL NULL
a2
b2
c1
NULL NULL NULL
NULL NULL NULL a2
b2
c2
(4 row(s) affected)
Left join: trã về mọi dòng của QH(bảng) bên trái của toán tử join và các
dòng của QH(bảng) bên phải toán tử join có giá trị bằng với dòng của bảng
bên trái.
Lấy lại ví dụ a:
SELECT *

FROM r left outer join s
on (r.A=s.A)and (r.B=s.B)and(r.C=s.C)
Kết quả:
A B C A B C
---- ---- ---- ---- ---- ---a1 b1 c1 a1 b1 c1
a2 b1 c2 NULL NULL NULL
a2 b2 c1 NULL NULL NULL
(3 row(s) affected)
Right join: Trã về mọi dòng của QH(bảng) bên phải của toán tử join và các
dòng của QH(bảng) bên trái toán tử join có giá trị bằng với dòng của bảng
bên phải.
Lấy lại ví dụ a:
SELECT *
FROM r right outer join s
on (r.A=s.A)and (r.B=s.B)and(r.C=s.C)
Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

12/ 20


13 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Kết quả:
A
B
C
---------a1
b1

c1
NULL NULL NULL
(2 row(s) affected)

A B C
---- ---- ---a1 b1 c1
a2 b2 c2

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

13/ 20


14 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

II. TỐI ƯU HOÁ CÂU HỎI (CÂU LỆNH TRUY VẤN DỮ LIỆU):
Nhằm tối ưu thời gian, không gian trong việc khai thác CSDL.
II.1. Cây đại số quan hệ:
Ðể biểu diễn các phép toán quan hệ được rõ ràng hơn và thực hiện trong việc
biều diễn kết quả phép toán người ta dùng cây đại số quan hệ.
- Các lá tương ứng với các quan hệ tham gia vào phép toán.
- Các nút ứng với các phép toán.
- Nút gốc ứng với kết quả.
Ví dụ:
σF (r1 x r2)
Kết quả
σF
x

r1

r2

II.2. Các chiến lược tối ưu các câu lệnh truy vấn CSDL:
- Thực hiện các phép chiếu và chọn trước(chiếu trước chọn).
- Các phép toán có 2 quan hệ (2 ngôi) trở lên làm tiếp theo.
- Nên sắp các phép toán 1 ngôi xuống dưới trong cây đại số quan hệ
đễ giảm số lần vào ra dữ liệu.
- Nếu có 2 phép chọn, chiếu trên 1 r thì nhóm lại để đỡ truy cập đến
quan hệ trên disk.
II.3. Tối ưu hoá bằng cách phân rã câu hỏi truy vấn dữ liệu:
Phép tách:
Tách 1 câu hỏi truy vấn thành 2 câu hỏi của cùng biến chung.
Ví dụ: Tìm những học sinh trúng tuyển từ cơ sở dữ liệu THISINH gồm 2
danh sánh HSHS, HSDIEM
Ngôn ngữ SQL:
SELECT *
FROM HSHS, HSDIEM
Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

14/ 20


15 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

WHERE (HSHS.MASO =HSDIEM.MASO)
AND (HSDIEM.DIEM>= 5)

Câu lệnh này không tối ưu vì khi thực hiện phải kết nối 2 bảng lại sau đó
mới thực hiện điều kiện sau where mặt khác trong bảng HSHS có thể có
nhiều thí sinh không dự thi. (Việc phân tích này chỉ có ý nghĩa khi CSDL
lớn).
Câu lệnh nên có thể tách thành hai câu lệnh như sau:
- Tìm những học sinh có dự thi sang tệp trung gian.
- Tìm trong tệp trung gian những thí sinh trúng tuyển.
SELECT *
FROM HSHS
WHERE HSHS.MASO IN
(SELECT HSDIEM.MASO
FROM HSDIEM
WHERE (HSDIEM.DIEM >=5))
Trong trường hợp muốn lấy thêm thông tin về điểm của các thí sinh trúng
tuyển thì có thể thực hiện như sau:
CREATE VIEW TRUNGTUYEN
AS
SELECT * FROM HSDIEM
WHERE HSDIEM.DIEM >=5
SELECT HSHS.HOTEN, TRUNGTUYEN.DIEM
FROM HSHS RIGHT OUTER JOIN TRUNGTUYEN ON
HSHS.MASO = TRUNGTUYEN.MASO
Phép nữa nối:
Ta gọi r < s phép nữa nối: r < s = π Ai( r s)
Trong đó Ai là tập thuộc tính trong r .
ý nghĩa: có những phép nối ta chỉ quan tâm một số thuộc tính của 1 bảng dữ
liệu mà thôi thì nên dùng phép nữa nối.
Ví dụ:
Có cơ sở dữ liệu sau:
RƯỢU(SỐHIỆU,TÊNRƯỢU,NĂMSX, ÐỘ)

HÀNG(SỐHIỆU, MASỐSX)
SX(MASO,TÊNVÙNG)
UỐNG(TÊN,SỐHIỆU,SỐLƯỢNG,THỜIGIAN)

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

15/ 20


16 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Hãy in ra tên những người uống rượu hiệu sản xuất tại Bắc Ninh vào
năm 1979 có độ < 40o ?
Dùng đại số quan hệ:
RM=RƯỢU * UỐNG * HÀNG *SX
§K = “Bắc Ninh” ∧ NĂM = 1975 ∧ ÐỘ < 40
∏ TêN ( σ ®K(RM))
Dùng ngôn ngử SQL:
SELECT
UỐNG.TÊN
FROM RƯỢU,UỐNG,HÀNG,SX
WHERE (UỐNG.SỐHIỆU =RƯỢU.SỐHIỆU) AND
(RƯỢU.SỐHIỆU = HÀNG.SỐHIỆU) AND
(HÀNG.MÃSỐSX =SX.MÃSỐ) AND
(SX.TÊNVÙNG=”BẮC NINH”) AND
(RƯỢU.NĂMSX =1975) AND
(RƯỢU.ÐỘ < 40O)
Trong trường hợp CSDL lớn thì câu lệnh trên không tối ưu (có thể gây tràn

bộ nhớ máy tính) do kết nối quá nhiều table, trong khi các Table này có thể
loại đi những bản ghi không có ý nghĩa tìm kiếm.
Câu lệnh trên nên tách thành câu lệnh sau:
SELECT TÊN
FROM UỐNG
WHERE UỐNG.SỐHIỆU IN
(SELECT RƯỢU.SỐHIỆU
FROM RƯỢU
WHERE (RƯỢU.NĂMSX =1975) AND
(RƯỢU.ÐỘ < 40O) AND
(RƯỢU.SỐHIỆU IN
(SELECT HÀNG.SỐHIỆU
FROM HÀNG
WHERE HÀNG.MÃSỐSX IN
(SELECT SX.MÃSỐ
FROM SX
WHERE SX.TÊNVÙNG =”BẮC NINH”))))
Tối ưu theo đại số quan hệ:
T1 = ∏ SỐHIỆU ( σ NÀM =1975 ∧ ĐỘ < 40 (RƯỢU))
T2 = ∏ MÃ SỐ ( σ VÙNG=”BẮC NINH”(SX) )
T3 = HÀNG < T1

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

16/ 20


17 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL


T4 = T3 < T2
Kết quả:
∏ TÊN(UỐNG < T4 )
III. XÂY DƯNG VÀ CHUẨN HOÁ QUAN HỆ:
Trong phần này trình bày các chuẩn và một số tiêu chuẩn để chuẩn hoá mô
hình dữ liệu nhằm:
- Có 1 tiêu chuẩn chung về sự đúng đắn của mô hình.
- Tránh được dư thừa dữ liệu bào đảm tính nhất quán dữ liệu, và tối ưu
trong lưu trữ.
III.1. Các dạng chuẩn:
- 0NF: Dạng chuẩn của 1 lược đồ có khóa.
- 1NF: Lược đồ quan hệ R được gọi là ở 1NF nếu mọi thuộc tính là
nguyên tố.
- 2NF: Lược đồ quan hệ R được gọi là ở 2NF nếu ở 1NF và mọi thuộc
tính phải phụ thuộc đầy đủ vào khoá.
- 3NF: Lược đồ quan hệ R được gọi là ở 3NF nếu ở 2NF và mọi thuộc
tính không phụ thuộc bắc cầu vào khoá.(Tức là tồn tại một thuộc tính
phụ thuộc vào thuộc tính không khóa).
III.2. Mô hình thực thể mối quan hệ:
Thực thể: (entity) là mô hình 1 lớp đối tượng cụ thể hoặc trừu tượng của
thế giới thực. Các đối tượng này tồn tại một cách khách quan và độc lập
tương đối với nhau, tồn tại của chúng không phụ thuộc vào hoạt động của hệ
thống và chúng liên hệ với nhau thông qua tổ chức của hệ thống hoặc hoạt
động của hệ thống.
Mổi thể hiện cụ thể gọi là bản thể hay cá thể.
Ví dụ: Trong thực thể SACH thì mổi cuốn sách là 1 cá thể.
Thuộc tính: Những thông tin về 1 thực thể mô hình bằng các thuộc tính.
Các loại thuộc tính:
Thuộc tính đơn (Sơ cấp) và thuộc tính phức hợp: những thuộc tính mà

giá trị của nó không thể phân tách được trong các xữ lý gọi là thuộc tính
đơn. Các thuộc tính được hợp thành từ các thuộc tính đơn gọi là thuộc tính
hổn hợp.
Thuộc tính lặp: là thuộc tính có thể nhận nhiều giá trị đồng thời.
Ví dụ: trường: Ðiểm 9,8,7...
Ràng buộc toàn vẹn trên các thực thể:
Các thuộc tính của một thực thể có giá trị hạn chế trong 1 khoảng nào đó gọi
là miền giá trị. Trường hợp các thuộc tính này phải chịu những ràng buộc thì
gọi nó là là ràng buộc toàn vẹn.
Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

17/ 20


18 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Ví dụ: Ðiểm học sinh có ràng buộc toàn vẹn là: 0 - 10.
Khóa: là một hay một nhóm các thuộc tính sao cho xác định duy nhất các cá
thể trong 1 thực thể.
Mối quan hệ giữa các thực thể:
Các khái niệm thực thể, thuộc tính, khoá không đủ sức để mô tả thế giới
thực vì giữa các đối tượng còn có mối liên quan với nhau. Các mối liên quan
này gọi là mối quan hệ. (relationship). Trong 1 mối quan hệ có nhiều hơn hai
thực thể, số thực thể trong 1 mối quan hệ được gọi là số chiều của mối quan
hệ.
Mối quan hệ 1 chiều (phản xạ):
Ví dụ: Quản lí các căp vợ chồng trong khu phố:
NGUOI

HO TEN
SOCMND

KET HON

Mối quan hệ ISA:
CONGCHUC
HO TEN
SOCMND

DANG VIEN

Bản số: Xác định mối quan hệ như trên thực ra mới chỉ ra được mối quan hệ
mà chưa chỉ ra được độ phức tạp của mối quan hệ vấn đề đặt ra là làm sao để
biết mỗi cá thể của thực thể có thể có bao nhiêu kết hợp với các cá thể của
thực thể khác (ở đây đang đề cập đến bản số của một thực thể trong mối
quan hệ, trong thực tế người ta thường biểu diển bản số trực tiếp giữa hai
thực thể, theo đó bản số trực tiếp có các loại sau: (1:1), (1:n), (n:n).
Nguyên tắc xây dựng thực thể:
Nguyên tắc 1: Tất cả các thuộc tính của 1 thực thể phải độc lập tuyến tính
nghĩa là không thuộc tính nào được suy ra từ 1 hay nhiều thuộc tính khác.

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

18/ 20


19 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL


Nguyên tắc 2: Trong 1 thực thể có thuộc tính khoá. Nếu 1 thực thể nào đó
không có 1 thuộc tính nào làm khóa thì áp đặt 1 thuộc tính mới làm khoá.
Thông thường đặt MA + <Tên thực thể> làm khoá áp đặt này.
Nguyên tắc 3: Khi 1 thuộc tính của thực thể chiếm 1 dung lượng lớn và
nhập lại nhiều lần thì tách thành 1 thực thể riêng có tên là Tên thuộc tính và
có 2 thuộc tính là: MA + <Tên thuộc tính>, TEN + <Tênthuộctính>.
Nguyên tắc 4: (dùng cho mối quan hệ ISA) chuyên biệt hoá.
Khi 1 thuộc tính của thực thể mà chỉ có một số phần tử có giá trị nếu phần tử
nào có giá trị thì thêm 1 số thuộc tính riêng của nó thì chuyển thành 1 thực
thể(chuyên biệt hoá) có tên là <TEN THUOC TINH> và có thuộc tính là các
thuộc tính riêng của nó.
Ví dụ: Trong hệ thống quản lí nhân viên của một cơ quan. Ðối với thức thể
NHAN VIEN ta có các thuộc tính như: MAVN,
HOTEN,NSINH,DANGVIEN
Nếu Nhân viên nào là đảng viên thì phải xác định (NgàyVàoÐảng, Ngày
Công tác,..)
Chuẩn hoá mô hình:
Sau đây là 1 số tiêu chuẩn để xem xét và chuẩn hoá mô hình:
Tiêu chuẩn 1: Mức độ cơ sỡ của thuộc tính: Thuộc tính các thực thể phải là
cơ sơ với mục đích quản lý. Tức là sự chi tiết vừa đủ cho mục đích quản lý.
Tiêu chuẩn 2: Sự phụ thuộc của các thuộc tính vào toàn bộ các thuộc tính
khóa. (Mọi thuộc tính không khoá đều phụ thuộc hoàn toàn(đây đủ) vào
khoá).
Tiêu chuẩn 3: Không có sự phụ thuộc bắc cầu, thúc là không xãy ra trường
hợp 1 thuộc tính thứ nhất phụ thuộc vào thuộc tính thứ 2 thuộc tính thứ 2
phụ thuộc vào thuộc tính thứ 3.
Tiêu chuẩn 4: Áp dụng với trường hợp khi chính 1 thuộc tính khoá lại phụ
thuộc vào 1 thuộc tính không khoá.
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:
a/ Chuyển đổi 1 thực thể thành 1 lược đồ quan hệ:
Quy tắc 1: Biến 1 thực thể thành 1 lược đồ quan hệ. Mổi thực thể trong mối
quan hệ dữ liệu được chuyển thành 1 lược đồ quan hệ, tên của lược đồ quan
hệ là tên thực thể, thuộc tính và khoá của lược đồ quan hệ là thuộc tính và
khoá của thực thể, coa thể có thêm khoá ngoại.
Quy tắc Khoá ngoại:

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

19/ 20


20 / 20

Cơ sở dữ liệu quan hệ và phân tích thiết kế cơ sở dữ liệu – Nhóm CSDL

Thực thể tham gia vào mối quan hệ 2 ngôi và có cặp bản số (1:1)-(1:n) thì
lược đồ quan hệ sinh ra bởi thực thể ở nhánh (1:1) nhận thuộc tính khoá của
thực thể ở nhánh (1:n) là khoá ngoại.
Ví dụ: Tỉnh(MATINH,TENTINH),
Huyện(MAHUYEN,TENHUYEN,MATINH).
Quy tắc 2: Biến thực thể chuyên biệt hoá thành lược đồ quan hệ.
Một thực thể chuyên biệt hoá (thực thể con trong quan hệ ISA) trong mô
hình quan niệm dữ liệu được biến thành 1 lược đồ quan hệ tên là tên thực thể
chuyên biệt hoá có các thuộc tính là thuộc tính của thực thể chuyên biệt hoá
và nhân khoá của thực thể cha làm khoá.
Ví dụ:
CONGCHUC(MACC, TENCC, NGSINH,..)
DANGVIEN(NGVDANG, NGCT, MACC).

b/ Chuyển mối quan hệ thành một lược đồ quan hệ:
Quy tắc 3: Mối quan hệ hai ngôi có cặp bản số (1,1)-(1,n) hay (1,n)-(1,1) thì
không chuyển thành lược đồ quan hệ.
Quy tắc 4: Mối quan hệ 2 ngôi có cặp bản số (1,n)-(1,n) hoặc mối quan hệ
nhiều ngôi(không phân biệt bản số) thì chuyển thành lược quan hệ có tên là
tên của mối quan hệ nhận các thuộc tính khoá của tất cả các thực thể tham
gia vào mối quan hệ làm KHOá và cùng với thuộc tính riêng của mối quan
hệ(nếu có).
Quy tắc 5: Mối quan hệ phản xạ (1 chiều) (không phân biệt bản số) chuyển
thành 1 lược đồ, có tên là tên của mối quan hệ mà nó sẽ lấy giá trị của các
thuộc tính khoá của thực thể sinh ra mối quan hệ này làm khoá, và cùng các
thuộc tính riêng của nó (nếu có).

Trung tâm Công Nghệ Phần Mềm Thừa Thiên Huế

20/ 20



×