1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

20 833 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 20
Dung lượng 174,5 KB

Nội dung

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

Trang 1

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

Trang 2

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

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 3

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)

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, t1t2  t1[K]  t2[K]

Trang 5

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)

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 6

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:

{<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 7

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

Trang 8

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ộ

Dùng ngôn ngữ SQL:

Trang 9

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

B  {A1, An}

Trang 10

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:

)

{( u t s

r

B



/ tr,ust[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

Ngày đăng: 06/06/2016, 21:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w