Tải bản đầy đủ (.pdf) (142 trang)

giáo trình cơ sở dữ liệu nghề công nghệ thông tin cao đẳng

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 (1.8 MB, 142 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TẬP ĐỒN DÞT MAY VIÞT NAM </b>

<b>TRÊịNG CAO ắNG CễNG NGHị THNH PH Hõ CH MINH </b>

<i><b>Giỏo Trỡnh </b></i>

<b>CĂ S Dỵ LIịU Ngh: Cụng nghò thụng tin </b>

<b>Trình đß: Cao Đ¿ng </b>

<i>(Ban hành theo Quyết định số: ngày tháng năm của trường Cao đẳng Kinh tế - Kỹ thuật Vinatex Tp.HCM)</i>

TP.HỒ CHÍ MINH, THÁNG 06 NĂM 2021

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LÞI GIàI THIịU </b>

C sỏ d liỏu l mụn hỏc c sỏ chuyên ngành quan tráng của tin hác. Mục đích của giáo trình C¢ sá dā liáu này là nhằm chuẩn hóa tài liáu hác tÁp cho sinh viên hác sinh các há cao đẳng và trung cấp nghề chuyên ngành Quản trß mạng máy tính, đồng thßi cũng là tài liáu tham kháo đåi với các chuyên ngành khác trong lĩnh vực Tin hác. Giáo trình giúp các hác viên tiếp cÁn vấn đề cåt lõi nhất về mặt lý thuyết: các đßnh nghĩa, khái niám, há quả, đßnh lý, giải tht,…từ đó có thể áp dụng vào bài tốn thực tế thiết kế chuẩn hóa c¢ sá dā liáu núi riờng cng nhÔ thit k hỏ thồng thụng tin nói chung.

Giáo trình khơng đi sâu vào viác chứng minh các đßnh lý mà chú tráng đến viác giải thích ý nghĩa thực tế của các cơng thức lý thuyt t ú hÔng dn hỏc viờn cỏch tip cn tÔ duy logic, nm vng k thut tớnh toỏn cng nhÔ cỏc bÔc trin khai gii quyt cỏc bài tốn thực tế trên khía cạnh cơng nghá.

Nội dung giỏo trỡnh Ôc chia lm 5 chÔÂng:

<i>Chng 1: giới thiáu nhāng khái niám c¢ bản nhất về mơ hình c¢ sá dā liáu. Tìm </i>

hiểu về mơ hình thực thể kết hợp.

<i>Chương II: giới thiáu về mơ hình dā liáu quan há, các quy tắc chuyển đổi từ </i>

mơ hình ER sang mơ hình dā liáu quan hỏ. Ngoi ra chÔÂng 2 cũn trỡnh by cỏc quy tắc, phép tốn của ngơn ngā đại så quan há.

<i>Chương III : trình bày về ngơn ngā truy vấn dā liáu quan há (SQL), chủ yếu là </i>

câu lánh truy vấn Select và các mánh đề kết hợp vi cõu lỏnh.

<i>Chng IV: Khỏi lÔc v rang buc toàn vẹn. </i>

<i>Chương V: đi sâu vào một så khái niỏm nhÔ: ph thuc hm, khúa, bao úng, </i>

cỏc dng chuẩn,..Tìm hiểu giới thiáu một så tht tốn liên quan đến tìm khóa hay cách xác đßnh các dạng chuẩn cho lÔc quan hỏ. õy l chÔÂng úng vai trũ quan trỏng trong viỏc tÔ duy logic, giỳp quỏ trỡnh thit k chun húa c sỏ d liỏu Ôc rõ rang và chính xác h¢n.

Ngồi ra, giáo trình cịn trình bày thêm vấn đề thiết kế c¢ sá dā liáu bằng các kỹ thuÁt phân rã theo chuẩn 3 v chun BC.

Sau mi chÔÂng u cú bi tp hÔng dn v bi tp t lm.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Hy váng cuån sách còn là tài liáu tham khảo hāu ích cho các đồng nghiáp trong giảng dạy, nghiên cứu trên các lĩnh vực có liên quan.

Giáo trình này ngồi tài liáu tham khảo chính cịn có sÿ dụng các tài liáu tham khảo nội bộ của các đồng nghiáp khác. Rt mong nhn Ôc nhiu ý kin úng gúp, trao đổi của bạn đác.

<i> Xin chân thành cảm ơn! </i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>CH£¡NG TRÌNH MƠN HàC ... a</b>

I. Vß trí, tính chất của mơn hác: ... aII. Mục tiêu mơn hác: ... aIII. Nội dung mơn hác: ... a

<b>IV. Điều kián thực hián mơn hác: ... Error! Bookmark not defined.V. Ni dung v phÔÂng phỏp ỏnh giỏ:... Error! Bookmark not defined.VI. HÔng dn thc hiỏn mn hỏc:... Error! Bookmark not defined.</b>

<b>BI 1: TọNG QUAN V CĂ S Dỵ LIịU ... 1</b>

I. HỆ THỐNG TẬP TIN CỔ ĐIỂN : ... 1

1. Thực trạng : ... 1

2. Nhận xét : ... 1

II. CƠ SỞ DỮ LIỆU : ... 2

1. Khái niệm: ... 2

2. Các đối tượng sử dụng CSDL: ... 3

3. Các mức trừu tượng hóa của CSDL: có 3 mức ... 3

4. Hệ quản trị CSDL (Database Management System – DBMS): ... 4

III. CÁC MƠ HÌNH DỮ LIỆU : ... 5

1. Khái niệm: ... 5

2. Phân loại: ... 5

<b>BÀI 2: MƠ HèNH Dỵ LIịU QUAN Hị ... 10</b>

I. CC KHI NIM CƠ BẢN : ... 10

1. Lược đồ quan hệ (relation schema): ... 10

2. Thuộc tính (attribute): ... 10

3. Bộ (tuple): ... 12

4. Quan hệ (Relation): ... 12

5. Các loại khóa : ... 12

6. Thao tác trên CSDL quan hệ (Relation): ... 14

II. CÁC THAO TÁC CƠ SỞ TRÊN CÁC QUAN HỆ : ... 14

 Quy ước chung về cách dùng các điều kiện: ... 14

1. Phép chiếu (Project Operation): ... 15

2. Phép chọn (Selection Operation): ... 15

3. Phép gán (Assignment Operator): ... 16

4. Phép đổi tên (Rename Operation): ... 16

III. CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ : ... 17

1. Phép hội (Union Operation): ... 17

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

3. Phép trừ (Minus Operation): ... 18

4. Phép tích Cartersian (Cartersian Product Operation): ... 19

5. Phép đ.kết (theta.join): ... 20

IV. CÁC PHÉP TOÁN KHÁC : ... 22

1. Phép chia (Division Operator): ... 22

2. Phép bù (Complement): ... 24

3. Phép kết nối nội (Inner Join): ... 24

4. Phép kết nối trái (Left Join): ... 25

5. Phép kết nối phải (Right Join): ... 26

6. Phép chiếu tổng quát: ... 27

7. Hàm kết hợp: (Aggregate Functions) ... 28

8. Phép tốn gom nhóm trong đại số quan hệ : (Grouping . ) ... 28

V. CÁC THAO TÁC CẬP NHẬT TRÊN QUAN HỆ : ... 28

1. Thêm: (Insertion) ... 28

2. Xóa: (Deletion) ... 28

3. Sa: (Updating) ... 28

<b>BI 3: NGN NGỵ TRUY VN SQL ... 25</b>

<b>(Structured Query Language) ... 25</b>

I. GIỚI THIỆU : ... 25

II. CÁC LỆNH VỀ KIẾN TRÚC CSDL : ... 25

1) Tạo cấu trúc cho 1 bảng mới : ... 25

2. Thêm các cột của 1 bảng : ... 27

3. Hủy bỏ các cột của 1 bảng : ... 27

4. Hủy bỏ 1 bảng : ... 27

III. LỆNH CẬP NHẬT DỮ LIỆU : ... 28

1. Thêm các bộ vào 1 bảng : ... 28

2. Sửa đổi nội dung các bộ trong 1 bảng : ... 28

3. Hủy bỏ các bộ 1 bảng : ... 29

IV. LỆNH TRUY VẤN DỮ LIỆU : ... 29

1. Công dụng :... 29

2. Cú pháp chung: ... 30

3. Giải thích : ... 30

4. Thí dụ : ... 33

5. Truy vấn lồng nhau nhiều cấp : ... 33

<b>BI 4: RNG BUịC TN VắN (Integrity Constraint) ... 35</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

1. RBTV (Integrity constraint): ... 35

2. Các yếu tố của RBTV : ... 35

II. CÁC LOẠI RÀNG BUỘC TOÀN VẸN : ... 36

1. RBTV miền giá trị : ... 36

2. RBTV liên thuộc tính : ... 37

3. RBTV liên bộ : ... 37

1. RBTV phụ thuộc tồn tại : ... 38

2. RBTV liên bộ – liên quan hệ : ... 38

3. RBTV liên thuộc tính – liên quan hệ: ... 39

4. Ràng buộc toàn vẹn về thuộc tính tổng hợp: ... 39

5. RBTV do có chu trình trong đồ thị biểu diễn của lược đồ CSDL: ... 39

III. CÁC BƯỚC (ĐỀ NGHỊ) KHI XÁC ĐỊNH CÁC RBTV : ... 40

IV. BIỀU DIỄN RBTV BẰNG PHỤ THUỘC HÀM : ... 41

1. Phụ thuộc hàm : (functional dependency) ... 41

2. Biểu diễn phụ thuộc hàm bằng đồ thị có hướng : ... 43

3. Hệ luật dẫn Amstrong : ... 44

4. Bao đóng của tập phụ thuộc hàm F : (closure) ... 44

5. Bao đóng của tập thuộc tính : ... 44

V. QUAN HỆ GIỮA HAI TẬP PHỤ THUỘC HÀM : ... 45

1. Tập phụ thuộc hàm tương đương : ... 45

2. Phụ thuộc hàm đầy dủ : ... 45

3. Tìm phụ thuộc hàm thừa : ... 46

4. Phủ tối tiểu (Minimal cover): ... 48

VI. XÁC ĐỊNH KHÓA CỦA MỘT QUAN HỆ : ... 48

1. Thuật toán xác định tất cả các khóa của một lược đồ quan hệ (nguyên thủy) ... 48

2. Thuật toán cải tiến : ... 49

3. Nhn xột : ... 50

<b>Bi 5: CHUắN HA LÊỵC õ CĂ S Dỵ LIịU ... 50</b>

I. T VN : ... 50

1. Giới thiệu: ... 50

2. Thí dụ : ... 50

II. CÁC DẠNG CHUẨN : ... 51

1. Một số khái niệm liên quan đến các dạng chuẩn : ... 51

2. Dạng chuẩn 1: (First Normal Form – 1NF) ... 52

3. Dạng chuẩn 2 (2NF): ... 53

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

5. Dạng chuẩn BC: (Boyce – Codd) ... 56

III. CHUẨN HÓA LƯỢC ĐỒ CSDL ... 57

5. Nhận xét về thuật toán tổng hợp : ... 61

IV. CÁC LƯU ÝKHI THỰC HIỆN PHÂN RÃ: ... 61

1. Lưu ýï:... 61

2. Các yếu tố cần bảo đảm khi thực hiện phân rã: ... 61

3. Phép kiểm tra nối bảo tồn thơng tin: ... 62

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>Tên mơn hác: Cá sá dÿ lißu Mã mơn hác: MH 14 </b>

<b>Thßi gian thực hißn mơn hác: 45 giß; (Lý thuyết: 43 giß; Thực hành, thí nghiám, thảo </b>

ln, bài tÁp: 0 giß; Kiểm tra: 2 giò)

ỷ Trỡnh by Ôc cỳ phỏp ca ngụn ng SQL.

ỷ Trỡnh by Ôc cỏc dng chun ca lÔc quan hỏ. - V k nng:

ỷ Phõn tớch d liỏu v v Ôc các mơ hình dā liáu thực thể - kết hợp (mụ hỡnh R); chuyn i E-R sang lÔc quan hỏ. Xỏc ònh Ôc cỏc khúa, chun húa Ôc lÔc đồ á mức tåt nhất có thể.

E-û Sÿ dụng thành thạo ngôn ngā truy vấn dā liáu SQL chuẩn cho viác truy vấn dā liáu đã cài đặt.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>I. HỆ THỐNG TẬP TIN CỔ ĐIỂN : </b>

<i><b>2. Nhận xét : </b></i>

<i><b>a) Ưu điểm : khơng lớn và khơng đáng kể </b></i>

<i><b>a.1. Tính độc lập cao, có thể triển khai song song, nối tiếp hay gối đầu. a.2. Thời gian triển khai ngắn. </b></i>

<i><b>a.3. Khơng địi hỏi ngay khả năng đầu tư lớn về vật chất , nhân sự. </b></i>

<i><b>a.4. Khả năng đáp ứng nhanh chóng kịp thời (do thơng tin được khai thác chỉ phục vụ </b></i>

cho mục đích hẹp).

<i><b>b) Khuyết điểm : </b></i>

<i><b>b.1. Trùng lắp thông tin nên gây ra : </b></i>

đ Lãng phí :  Cùng 1 thơng tin phải nhập nhiều lần.  Vấn đề bảo trì khi có thay đổi.

 Lưu trữ .

ị Thiếu nhất quán của dữ liệu : tại 1 thời điểm, thông tin về 1 cán bộ không nhất quán.

<i><b>b.2. Thông tin đã lưu trữ không thể chia sẻ giữa các hệ thống. Vì vậy khơng có quản </b></i>

lý giao dịch và xử lý đồng thời giữa nhiều người dùng.

<i><b>Thí dụ: không thể chia sẻ những thông tin riêng của Khoa cho Phịng Đào tạo. b.3. Khó mở rộng hệ thống hoặc kết nối các hệ thống. </b></i>

<i><b>Thí dụ : cùng 1 người nhưng có thể tồn tại nhiều mã số khác nhau. Các mã số này hoàn </b></i>

<i>toàn khác nhau về cấu trúc lẫn nội dung của bộ mã. </i>

<i> Giả sử Phòng đào tạo gán mã số theo dạng AutoNumber. </i>

<i> Trong khi đó Khoa lại áp dụng mã số dạng : <Tên Học vị> <STT> </i>

<i><b>b.4. Khơng có cơ chế phục hồi (phụ thuộc phần lớn vào hệ điều hành). b.5. Chi phí bảo hành cao. </b></i>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<i><b>1. Khái niệm: </b></i>

Từ những khuyết điểm trên của hệ thống tập tin cổ điển, người ta đưa ra phương pháp

<i><b>tổ chức dữ liệu mới là Cơ sở dữ liệu. </b></i>

<i><b>Khái niệm : Cơ sở dữ liệu có thể được xem là tập hợp có cấu trúc của thông tin, được </b></i>

lưu trữ trên các thiết bị trữ tin (như băng từ, dĩa từ, . . .) để có thể thỏa mãn yêu cầu khai thác thông tin đồng thời cho nhiều người sử dụng hay nhiều chương trình ứng dụng với nhiều mục đích khác nhau.

<i><b>b) Ưu điểm của CSDL : </b></i>

<i><b>b.1. Về bản thân thông tin lưu trữ : </b></i>

đ Giảm thiểu sự trùng lắp thông tin đến mức thấp nhất, do đó giúp:  Đảm bảo tính nhất qn.

 Tính tồn vẹn của dữ liệu.

ị Đảm bảo dữ liệu có thể được truy xuất theo nhiều cách khác nhau.

ĩ Khả năng chia sẻ thông tin cho nhiều người sử dụng và nhiều ứng dụng khác nhau.

<i><b>b.2. Về hiệu quả sử dụng thông tin: </b></i>

đ Chia sẻ thông tin cho nhiều người dùng khác nhau. ị Tiết kiệm tài nguyên .

ĩ Tăng hiệu quả khai thác.

<i><b>c) Những vấn đề nảy sinh : </b></i>

<i><b>c.1. Cần xác định rõ trách nhiệm đối với: </b></i>

đ Sự an tồn của dữ liệu. ị Tính chính xác của dữ liệu. Cụ thể là phải xác định:

 Ai có trách nhiệm cập nhật, chỉnh sửa?  Những thông tin nào được phép sửa.

Nếu khơng, có thể sẽ nảy sinh trường hợp : người biết thì khơng được quyền sửa, người có quyền sửa thì lại khơng biết. Sau 1 q trình sử dụng thông tin lưu trữ trở nên lỗi thời, khơng ai cịn muốn sử dụng.

<i><b>c.2. Cần một cơ chế bảo mật hay phân quyền khai thác thông tin của người sử dụng. </b></i>

Chương trình ứng dụng 1 Chương trình

<i><b>CƠ SỞ DỮ LIỆU </b></i>

Người khai thác CSDL 2 Người khai thác

CSDL n Chương trình

ứng dụng m

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

và phân quyền khai thác CSDL.

Hiện nay, cơ chế này có thể được cung cấp bởi các hệ điều hành nhiều người dùng (multi.users), hệ điều hành mạng cục bộ (Novell Netwarw, Windows for WorkGroup, WinNT, . . .) hoặc do các hệ quản trị CSDL.

<i><b>c.3. Giải quyết sự tranh chấp trong truy cập dữ liệu khi có nhiều người dùng cùng truy </b></i>

cập đến 1 nguồn dữ liệu. Tức là xác định độ ưu tiên truy cập dựa trên:

đ Quyền hạn khai thác của từng người sử dụng (ưu tiên cho người có quyền khai thác cao hơn).

ị Đặc tính của sự truy cập (phân loại biến cố, phân loại truy cập).

ĩ Thời điểm truy cập (ai có u cầu truy xuất trước thì có quyền truy nhập dữ liệu trước).

Theo cơ chế lập lịch truy xuất hay các cơ chế khóa, . . .

<i><b>c.4. CSDL cũng có một chu kỳ sống tương tự như một phần mềm, bao gồm nhiều giai </b></i>

đoạn phân tích, thiết kế, cài đặt, khai thác, bảo trì. Trong từng giai đoạn đều địi hỏi người phân tích . thiết kế có chun môn, nhiều kinh nghiệm.

<i><b>2. Các đối tượng sử dụng CSDL: </b></i>

ü Người sử dụng không chuyên về lĩnh vực tin học và CSDL : CSDL cần có các cơng cụ để những người này có thể sử dụng, khai thác CSDL khi cần thiết.

ý Chuyên viên tin học biết khai thác CSDL: những người này có thể xây dựng các ứng dụng khác nhau phục v cho nhiu mc ớch khỏc nhau trờn CSDL.

ỵ Người quản trị CSDL: là những người hiểu biết về tin học, về các hệ quản trị CSDL và hệ thống máy tính. Họ là người tổ chức CSDL (khai báo cấu trúc CSDL, ghi nhận các yêu cầu bảo mật cho các dữ liệu cần bảo vệ, . . .) do đó họ phải nắm rõ các vấn đề kỹ thuật về CSDL để có thể phục hồi dữ liệu khi có sự cố. Họ là những người cấp quyền hạn khai thác CSDL, do vậy họ có thể giải quyết được các vấn đề tranh chấp dữ liệu, nếu có.

<i><b>3. Các mức trừu tượng hóa của CSDL: có 3 mức a) Vật lý : </b></i>

và được lưu trữ như thế nào? ở đâu (đĩa từ, băng từ, track, sector . .

<i>. nào)? Cần các chỉ mục gì? Việc truy xuất là tuần tự (Sequential </i>

<i>Access) hay ngẫu nhiên (Random Access) đối với từng loại dữ liệu. </i>

Những người hiểu và làm việc với CSDL tại mức này là người quản trị CSDL

<i>(Administrator), chuyên viên tin học. </i>

<i><b>b) Quan niệm (mức logic): cho biết : </b></i>

Tại mức này sẽ giải quyết các câu hỏi:

ü CSDL cần phải lưu giữ bao nhiêu loại dữ liệu? Đó là những dữ liệu gì? ý Mối quan hệ giữa các loại dữ liệu này như thế nào?

<i>Từ thế giới thực (Real Universe) các chuyên viên tin học qua quá trình khảo sát và </i>

phân tích, cùng với những người sẽ đảm nhận vai trò quản trị CSDL, sẽ xác định được

Thể hiện Quan niệm

Vật lý

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

liên hệ giữa các thơng tin này.

<i><b>c) Thể hiện (cịn gọi là mức ngoài): là mức của người sử dụng và các chương trình ứng </b></i>

dụng. Làm việc tại mức này có các nhà chun mơn, các kỹ sư tin học và những người sừ dụng không chuyên.

<i>Mỗi người sử dụng hay mỗi chương trình ứng dụng có thể được "nhìn" (View) CSDL </i>

theo một góc độ khác nhau. Có thể "nhìn" thấy tồn bộ hay chỉ một phần hoặc chỉ là các thông tin tổng hợp từ CSDL hiện có. Người sử dụng hay chương trình ứng dụng có thể hồn tồn khơng được biết về cấu trúc tổ chức lưu trữ thông tin trong CSDL, thậm chí ngay cả tên gọi của các loại dữ liệu hay tên gọi của các thuộc tính. Họ chỉ có thể làm việc trên một phần CSDL theo cách "nhìn" do người quản trị hay chương trình ứng dụng quy định, gọi là khung nhìn (View).

<i><b>4. Hệ quản trị CSDL (Database Management System – DBMS): a) Nhu cầu : </b></i>

Để bảo đảm các yêu cầu về bảo mật, cạnh tranh truy xuất, an toàn dữ liệu, . . . cần

<i>thiết phải có những phần mềm chuyên dùng thường được gọi tên là hệ quản trị CSDL. </i>

<i><b>b) Khái niệm về hệ quản trị CSDL : </b></i>

ü Các hệ quản trị CSDL có nhiệm vụ hổ trợ một cách tích cực cho các nhà phân tích.thiết kế CSDL và những người khai thác CSDL.

ý Các hệ CSDL cũng có cơ chế riêng để giải quyết các vấn đề tranh chp d liu. ỵ Cú mt s h CSDL cung cấp cho người sử dụng những cơ chế bảo mật và phục hồi dữ liệu khi có sự cố xảy ra.

<i><b>c) Các hệ quản trị CSDL : hiện nay có những hệ quản trị CSDL như : Oracle, SQL </b></i>

Server, Paradox, MS Access, Visual Foxpro, Foxpro, DB2, Sybase, Paradox, Informix,... với chất lượng khác nhau.

<i><b>d) Các tiêu chuẩn để đánh giá một hệ quản trị CSDL: </b></i>

<i><b>d.1. Phải có ngơn ngữ mơ tả dữ liệu (Data Definition Language . DDL) cho phép : </b></i>

đ Khai báo cấu trúc của dữ liệu. ị Mô tả các mối liên hệ của dữ liệu.

Các ngôn ngữ mô tả này thường được xây dựng dựa trên 1 trong các loại mô hình dữ liệu sẽ được đề cập ở phần V .

<i><b>d.2. Phải có ngơn ngữ thao tác dữ liệu (Data Manipulation Language . DML) cho phép </b></i>

người dùng có thể :

đ Cập nhật dữ liệu (thêm, sửa, xóa).

ị Khai thác dữ liệu theo nhiều mục đích khác nhau.

<i><b>d.3. Ngơn ngữ truy vấn dữ liệu, hay ngơn ngữ hỏi đáp có cấu trúc (Structured Query </b></i>

Language. SQL) cho phép những người khai thác CSDL (chuyên nghiệp hoặc không chuyên) sử dụng để truy vấn các thông tin cần thiết trong CSDL.

<i><b>d.4. Ngôn ngữ quản lý dữ liệu (Data Control Language . DCL) cho phép những người </b></i>

quản trị hệ thống:

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

ị Khai báo bảo mật thông tin và cấp quyền hạn khai thác CSDL cho người sử dụng. ĩ Có biện pháp giải quyết tranh chấp.

<i><b>d.5. Cho phép phục hồi dữ liệu khi có sự cố (vì do tính tập trung nên khi có sự cố sẽ </b></i>

ảnh hưởng rất lớn).

<b>III. CÁC MÔ HÌNH DỮ LIỆU : </b>

<i><b>1. Khái niệm: </b></i>

ü Là sự biểu diễn dữ liệu ở mức quan niệm (sự trừu tượng hóa).

ý Mỗi loại mơ hình đặc trưng cho một phương pháp tiếp cận dữ liệu của người phân tích.thiết kế.

<i><b>2. Phân loại: </b></i>

<i><b>a) Mơ hình dữ liệu mạng (Network Data Model) : </b></i>

<i><b>a.1. Mô hình này cịn được gọi tắt là mơ hình mạng hoặc mơ hình lưới (Network </b></i>

<i>Model) là mơ hình được biểu diễn bởi một đồ thị có hướng. có sử dụng các khái niệm </i>

chính là :

đ Loại mẫu tin (Record Type): được đặc trưng cho 1 đối tượng riêng biệt, được ký hiệu bằng 1 hình chữ nhật. Trong đồ thị biểu diễn mơ hình mạng mỗi loại mẫu tin được biểu diễn bởi một hình chữ nhật.

<i><b>Thí dụ như : KHOA, SINH VIEN, MON HOC, . . . </b></i>

ị Mẫu tin (Record): là thể hiện của 1 loại mẫu tin (Instance) được gọi là bản ghi.

<i><b>Thí dụ: loại mẫu tin KHOA có các mẫu tin là thơng tin về các Khoa có trong Trường. </b></i>

ĩ Loại liên hệ (Set Type):

 Là sự liên kết giữa 1 loại mẫu tin chủ và 1 loại mẫu tin thành viên, được ký hiệu bằng 1 hình bầu dục với các mũi tên đi từ loại mẫu tin chủ đến loại mẫu tin thành viên .

 Trong mơ hình dữ liệu này có 1 số loại liên hệ sau :

 1:n : 1 mẫu tin chủ có liên hệ với nhiều mẫu tin thành viên.  1:1 : 1 mẫu tin chủ có liên hệ với 1 mẫu tin thành viên.  n:1 : nhiều mẫu tin chủ có liên hệ với 1 mẫu tin thành viên.

 Đệ quy <i>: (Recursive): Một loại mẫu tin chủ cũng có thể đồng thời là </i>

loại mẫu tin thành viên với chính nó.

<b>1ø1 </b>

LÝ LỊCH

PHỊNG BAN

gồm

có thân nhân

1øn

PHỊNG BAN gồm

NHÂN VIÊN

nø1

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

trong việc biểu diễn các CSDL có quy mơ lớn bởi trong một đồ thị có hướng khả năng diễn đạt ngữ nghĩa của dữ liệu, nhất là các dữ liệu và các mối liên hệ phức tạp của dữ liệu trong thực tế là rất hạn chế.

<i><b>a.3. Nhận xét về loại mơ hình mạng : </b></i>

đ Ưu : tương đối đơn giản, dễ sử dụng.

ị Nhược : khơng thích hợp trong việc biểu diễn các CSDL có quy mơ lớn bởi trong một đồ thị có hướng khả năng diễn đạt ngữ nghĩa của dữ liệu, nhất là các dữ liệu và các mối liên hệ phức tạp của dữ liệu trong thực tế là rất hạn chế.

<i><b>b. Mơ hình dữ liệu quan hệ (Relational data model) : </b></i>

Nguồn gốc của mơ hình cơ sở dữ liệu quan hệ đầu tiên là do tiến sĩ E.F.Codd thiết kế đã được công bố rộng rãi trên tạp chí vào tháng 7/1970 với bài :Mơ hình dữ liệu quan hệ cho các ngân hàng dữ liệu lớn;.

Mơ hình này :

ü Sử dụng các khái niệm: thuộc tính (Attribute), quan hệ (Relation), lược đồ quan hệ

<i>(Relation Schema), bộ (Tuple), khóa (Key). </i>

ý Hiện được áp dụng rộng rãi trong việc phân tích và thiết kế CSDL vì nó được xây dựng trên cơ sở lý thuyết rất vững chắc.

Mơ hình này sẽ được bàn sâu trong các chương sau.

<i><b>c. Mô hình thực thể kết hợp (Entity Relationship Model): </b></i>

<i><b>c.1. Do P.P.Chen đề xuất vào năm 1976, sau đó vào khoảng năm 1980 được mở rộng </b></i>

thêm với 1 số dạng đặc biệt của loại thực thể và mối kết hợp như "loại thực thể chuyên

<i>biệt hóa" (Specialized Entity) và "mối kết hợp đệ quy" (Recursive RelationShip). </i>

<i><b>c.2. Các khái niệm chính trong mơ hình này gồm : </b></i>

đ Thực thể : là 1 đối tượng hoặc 1 khái niệm có thể nhận biết 1 cách duy nhất (tương tự như khái niệm mẫu tin của mơ hình dữ liệu mạng và mơ hình dữ liệu phân cấp).

<i><b>Thí dụ: Các record trong các loại thực thể SINHVIEN, KHOA, MONHOC. </b></i>

Người ta có thể chia thực thể thành 2 loại là:  Thực thể yếu :

 Là thực thể mà sự tồn tại của nó phụ thuộc vào sự tồn tại của thực thể khác.

<i><b>Thí dụ : </b></i>

<i>Thực thể yếu Thực thể mà nó phụ thuộc </i>

Chi tiết hóa đơn Hóa đơn Các thân nhân Nhân viên

 Ký hiệu : đường viền kẻ đơi.

<i><b>Thí dụ : </b></i> Chi tiết hóa đơn

 Thực thể mạnh :

 Là thực thể mà có 1 hay nhiều thực thể yếu phụ thuộc vào sự tồn tại của nó.

<i><b>Thí dụ : </b></i>

<i>Thực thể mạnh Thực thể yếu phụ thuộc vào nó </i>

Hóa đơn Chi tiết hóa đơn Nhân viên Các thân nhân

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<i><b>Thí dụ : </b></i> Hóa đơn

ị Loại thực thể : là 1 loại đối tượng hoặc khái niệm tồn tại độc lập (tương tự như khái niệm loại mẫu tin của mơ hình dữ liệu mạng và mơ hình phân cấp).

<i><b>Thí dụ : </b>SINHVIEN, XE, . . . là cụ thể. Thời khóa biểu, bán hàng, . . . là khái niệm. </i>

ĩ Thuộc tính của loại thực thể: các đặc tính riêng biệt của loại thực thể.

<i><b>Thí dụ : MaSV trong SinhVien, hoặc Tên Khoa trong Khoa. </b></i>

 Ký hiệu : bằng hình ellipse. Có thể chia ra:  Thuộc tính đơn nhất.

<i>Thuộc tính Thanhtien trong loại thực thể VATTU(MaVT, SoLuong, DonGia, ThanhTien). </i>

ơ Khóa của loại thực thể: là các thuộc tính nhận diện của loại thực thể. Căn cứ vào các giá trị của các thuộc tính nhận diện này người ta có thể xác định một thực thể duy nhất của một loại thực thể. Ví dụ, khóa của loại thực thể LỚP.HỌC có thể là Mã.Lớp; khóa của loại thực thể HỌC.VIÊN có thể là Mã.Học.Viên; . . . Khái niệm này cũng

<i>tương tực như khái niệm khóa (Key) trong mơ hình dữ liệu quan hệ. </i>

õ Loại của mối kết hợp (Entity Relationship):

 Là sự liên kết giữa 1 loại thực thể mạnh và 1 loại thực thể yếu (tương tự loại liên hệ của mơ hình dữ liệu mạng).

<i>VATTU </i>

<i>MaVT QuyCách </i>

<i>ThanhTien <sup>SoLuong </sup>DonGia </i>

<i>Loại thực thể Quản lý </i>

<i>Loại thực thể Chi nhánh Tập </i>

<i>kết hợp </i>

<i>Các thuộc tính </i>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<i><b>Thí dụ 2: có số ngơi của mối kết hợp = 3 như 2 trường hợp sau: </b></i>

÷ Thuộc tính của mối kết hợp (Relationship Attribute): một mối kết hợp cũng có thể có nhiều thuộc tính riêng.

<i><b>Thí dụ : kết hợp mượn có các thuộc tính là Ngày mượn, Ngày trả. </b></i>

ø Khóa của mối kết hợp: là tổ hợp các khóa của các loại thực thể tham gia vào mối kết hợp.

<i><b>Thí dụ 1: Mã Khoa là khóa của mối quan hệ giữa SinhVien và Khoa. </b></i>

<i><b>Thí dụ 2: Mã Cơng trình và STT Hạng mục khóa của mối quan hệ giữa HẠNG MỤC và </b></i>

<i>THU CHI. </i>

ù Ràng buộc cấu trúc :

 Các ràng buộc dự phần: là có bắt buộc hay khơng bắt buộc có ràng buộc giữa 2 loại thực thể.

 Bản số mỗi nhánh của mối kết hợp: mỗi nhánh của mối kết hợp nối 1 loại thực thể với mối kết hợp. Bản số của mỗi nhánh là 1 bộ 2 thành phần (mincard . maxcard) là số lượng tối thiểu. tối đa các thực thể của nhánh đó tham gia vào 1 thể hiện của mối kết hợp.

<i><small>CƠNGTRÌNH </small></i>

<i><b><small>MaCT </small></b></i>

<i><small>HẠNGMỤC </small></i>

<i><b><small>MaCT SttHM </small></b></i>

<i><small>THUCHI </small></i>

<i><b><small>MaCT SttHM</small></b></i>

<i><b><small>(1,n) (1,1) (1,n) (1,1) </small></b></i>

<i>Thủ thư Đọc giả </i>

<i>Sách Mượn </i>

<i>Môn Giáo </i>

<i>Viên </i> <sup>(1,n) </sup> <i><sup>Dạy </sup><sup>Lớp </sup></i>

(1,n) (1,n)

<i>SINHVIEN </i>

<i>Dạy </i>

<i>GIAOVIEN Anh ruột </i>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

 Nhận xét giữa 2 mơ hình quan hệ và mơ hình thực thể kết hợp:

<i>Mơ hình quan hệ: </i>

<i>Mơ hình thực thể kết hợp: </i>

<i><b>d. Mơ hình hướng đối tượng (Object Oriented Data Mode): </b></i>

<i><b>d.1. Ra đời từ cuối những năm 80 và đầu những năm 90. Đây là loại mơ hình tiên tiến </b></i>

nhất hiện nay dựa trên cách tiếp cận hướng đối tượng đã quen thuộc trong các phương pháp lập trình hướng đối tượng.

<i><b>d.2. Mơ hình này sử dụng các khái niệm như lớp (class), sự kế thừa (inheritance), kế </b></i>

<i>thừa bội (tức là kết thừa từ nhiều lớp cơ sở multi.inheritance). </i>

<i><b>d.3. Đặc trưng cơ bản của cách tiếp cận này là tính đóng gói (encapsulation), tính đa </b></i>

<i>hình (polymorphism) và tính tái sử dụng (Reusability). </i>

Lớp là một kiểu dữ liệu có cấu trúc bao gồm các thành phần dữ liệu và các phương thức xử lý thao tác trên cấu trúc dữ liệu đó. Nó là một kiểu (hay cấu trúc) dữ liệu được

<i>trừu tượng hóa, bởi vì các tác động (còn gọi là các phương thức . method) là để phục vụ </i>

hoặc thao tác trên kiểu dữ liệu này. Dữ liệu và phương thức hòa quyện vào nhau thành một thể thống nhất: dữ liệu cần có những cách thức xử lý thỏa đáng, và phương thức xử lý được đưa vào trong kiểu dữ liệu đó là để phục vụ cho các đối tượng có cấu trúc như thế. Người ta gọi sự thống nhất đó là sự đóng gói.

Thí dụ, trong việc định nghĩa phép cộng (+) hai số phức c1 và c2 để cho một số phức

<i>kết quả là: COMPLEX (c1.Real+c2.Real, c1.Image+c2.Image) để người ta có thể sử </i>

<i>dụng phép cộng (+) một cách tự nhiên như việc gán kết quả đó cho biến phức c = c1 + c2, hồn toàn tự nhiên và trong sáng hơn rất nhiều so với việc phải viết một thủ tục Add_COMPLEX (COMPLEX &c1, COMPLEX &c2, COMPLEX &c) để cộng hai số phức </i>

<i>CSDL theo mối quan hệ Thực tế </i>

<i>Thực thể kết hợp </i>

<i>CSDL theo mối quan hệ Thực tế </i>

<i>MaSV HoTen </i>

<i>MaKhoa TenKhoa </i>

<i><b><small>MonHoc </small></b></i>

<i>MaMH TenMH Thuộc </i>

<i>Kiểm tra </i>

<i><b><small>(1,1) (1,n) </small></b></i>

<i><b><small>(0,n) (0,n) </small></b><sup>Điểm </sup></i>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<i>và kết quả được gán vào tham đối thứ 3 của hàm thông qua tham chiếu địa chỉ của biến c theo cách lập trình hướng thủ tục trước đó. Và, hiển nhiên rằng, cách thức cộng như trên là chỉ được áp dụng cho các đối tượng số phức. </i>

<i>Tương tự, cũng có thể định nghĩa phép toán cộng (+) trong lớp ma trận (MATRIX) để cộng hai ma trận có cùng bậc. Khi đó giả sử A và B là hai ma trận m * n; Phép gán tổng hai ma trận A và B cho biến ma trận C có thể được viết: C = A + B rõ ràng là tự nhiên và dễ hiểu hơn đối với các ứng dụng lớp ma trận so với việc gọi thủ tục Add_MATRIX (MATRIX &A, MATRIX &B, MATRIX &C, int m, int n) . . . </i>

Phương pháp tiếp cận hướng đối tượng trong mơ hình dữ liệu mặc dù còn mới mẻ nhưng hiện nay đang được nhiều người quan tâm nghiên cứu phát triển và áp dụng. Các hệ quản trị CSDL hướng đối tượng hiện nay vẫn chưa nhiều, một số còn chưa thuần nhất (nghĩa là việc lập trình là hướng đối tượng nhưng CSDL vẫn chủ yếu dựa trên mô hình quan hệ).

<i><b>e. Mơ hình dữ liệu phân cấp (Hierachical Data Model): </b></i>

<i><b>e.1. Được gọi tắt là mơ hình phân cấp (Hierachical Model): Mô hình là một cây </b></i>

<i>(Tree), trong đó mỗi nút của cây biểu diễn một thực thể, giữa nút con và nút cha được </i>

liên hệ với nhau theo một mối quan hệ xác định.

<i><b>e.2. Mơ hình dữ liệu phân cấp sử dụng các khái niệm sau: </b></i>

đ Loại mẫu tin: giống khái niệm mẫu tin trong mơ hình dữ liệu mạng. ị Loại mối liên hệ: Kiểu liên hệ là phân cấp, theo cách:

 Mẫu tin thành viên chỉ đóng vai trò thành viên của một mối liên hệ duy nhất, tức là nó thuộc một chủ duy nhất. Như vậy, mối liên hệ từ mẫu tin chủ tới các mẫu tin thành viên là 1øn, và từ mẫu tin (hay bản ghi . record) thành viên với mẫu tin chủ là 1ø1.  Giữa 2 loại mẫu tin chỉ tồn tại 1 mối liên hệ duy nhất.

<i><b>Thí dụ: Trong cuộc Tổng điều tra dân số, dữ liệu được tổ chức như sau: </b></i>

<i> Các dịng là các mẫu tin (hay bản ghi) có độ dài thay đổi. </i>

<i> Có 6 loại mẫu tin: </i>

<i> Mẫu tin đặc trưng cho tỉnh, thành phố (thí dụ như Hà nội, Thành phố Hồ Chí Minh, . . .). </i>

<i> Mẫu tin đặc trưng cho quận huyện (thí dụ như Quận Ba Đình, Quận I, . . .). </i>

<i> Mẫu tin đặc trưng cho phường xã (thí dụ như Phường Phạm Ngũ Lão, Phường 1, . . .). </i>

<i> Mẫu tin đặc trưng cho địa bàn (thí dụ như khu phố V, Tổ 12, Aáp 3, . . .). </i>

<i> Mẫu tin đặc trưng cho hộ điều tra. </i>

<i> Mẫu tin đặc trưng cho nhân khẩu của hộ. </i>

<i>Ở đây rõ ràng là một sự phân cấp trong file CSDL. Một tỉnh thành phố (thì) có nhiều quận huyện, một quận huyện chỉ thuộc một tỉnh thành duy nhất. Một quận huyện (thì) có nhiều phường xã và một phường xã chỉ thuộc một quận huyện duy nhất. Mỗi phường xã được chia thành nhiều địa bàn điều tra, mỗi địa bàn chỉ thuộc một phường xã duy nhất v.v. . . </i>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<i>Hình sau mơ tả cây phân cấp của mơ hình dữ liệu đối với CSDL Tổng điều tra số dân Toàn quốc. </i>

<small>TỒN QUỐC </small>

<small>üHà Nội üTP.Hồ Chí Minh üTỉnh Đồng Nai üTỉnh . . . </small>

<small>üQuận1 üQuận 2 üQuận Tân Bình üHuyện Củ Chi </small>

<small>üP.Bến Thành üP.Phạm Ngũ Lão üP.Cô Giang üP. . . . </small>

<small>üĐịa bàn 01 üĐịa bàn 02 üĐịa bàn 03 üĐịa bàn N </small>

<small>üHộ Đ.TRA 01 üHộ Đ.TRA 02 üHộ Đ.TRA 03 üHộ Đ.TRA N </small>

<small>üNhân khẩu 01 üNhân khẩu 02 üNhân khẩu 03 üNhân khẩu N </small>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>I. CÁC KHÁI NIỆM CƠ BẢN : </b>

<i><b>1. Lược đồ quan hệ (relation schema): a) Lược đồ quan hệ: </b></i>

<i><b>a.1. 1 lược đồ quan hệ thường biểu diễn cho </b></i>

đ Trong thực tế là : 1 thực thể tồn tại khách quan (Sinh viên, Hóa đơn, Hàng hóa, ...).

ị Sự trừu tượng hóa (thí dụ: thời khóa biểu, cơng nợ khách hàng,...).

<i><b>a.2. Một lược đồ quan hệ được đặc trưng bởi: </b></i>

đ 1 tên phân biệt (Q).

ị 1 tập hợp hữu hạn các thuộc tính (A<small>1</small>, A<small>2</small>, . . .,A<small>n</small>) của lược đồ quan hệ đó.

<i><b>Thí dụ : Q</b></i><small>+</small> = A<small>1</small>, A<small>2</small>, . . .,A<small>n</small>

<i>hoặc có thể được viết gọn lại thành Q(A1</i>, A<small>2</small>, . . .,A<small>n</small>).

ĩ Mỗi thuộc tính có một kiểu dữ liệu cơ sở, miền gá trị (domain) ơ Bậc của lược đồ quan hệ : là số lượng thuộc tính có trong quan hệ . õ Cardinality : là số lượng các bộ có trong quan hệ. Ký hiệu card.

<i><b>a.3. Một lược đồ cơ sở dữ liệu T gồm nhiều lược đồ quan hệ con. </b></i>

<i><b>b) Các đặc điểm của mơ hình quan hệ: </b></i>

<i><b>b.1. Thứ tự các thuộc tính trong Q</b></i><small>+</small> là khơng quan trọng, nhưng cần có 1 thứ tự xác định để tiện lưu trữ.

<i><b>b.2 Khơng có bộ nào trùng nhau. </b></i>

<i><b>b.3 Giá trị không biết cũng phải được thể hiện, thường dùng giá trị NULL cho trường </b></i>

<i><b>d) Tân từ của lược đồ quan hệ Q : </b></i>

ü Ký hiệu là || Q||.

ý Dùng để mô tả ý nghĩa (ngữ nghĩa) của lược đồ quan hệ Q.

<i><b>Thí dụ : KETQUA(MaSV, MaMH, LanThi, Diem) </b></i>

<i>Tân từ : Mỗi sinh viên có thể dự thi các mơn học tối đa 2 lần. </i>

<i><b>2. Thuộc tính (attribute): a) Khái niệm và tên gọi : </b></i>

<i><b>a.1. Mỗi dữ liệu, mỗi đối tượng được khảo sát đều có những đặc tính riêng biệt gọi là </b></i>

thuộc tính.

<i><b>Thí dụ : Mỗi sinh viên có các thuộc tính MaSV, HoTenSV, NgaySinh, ... </b></i>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<i><b>a.2. Các thuộc tính được phân biệt với nhau thơng qua tên của chúng. a.3. Khơng có 2 thuộc tính trùng tên nhau trong cùng 1 lược đồ quan hệ. </b></i>

<i><b>a.4. Trong các ứng dụng thực tế , ta nên đặt tên của thuộc tính thỏa các điều kiện sau: </b></i>

đ Gợi nhớ.

<i><b>Thí dụ: nên đặt thuộc tính PhaiNu hơn là Phai khi thuộc tính có kiểu là logic (Yes/No). </b></i>

ị Không quá dài hoặc quá ngắn.

ĩ Không nên đặt trùng 1 tên cho 2 thuộc tính thuộc 2 đối tượng khác nhau.

<i><b>Thí dụ : 2 table GIANGVIEN và SINHVIEN đều có thuộc tính Tên. </b></i>

<i><b>a.5. Từ đây trở đi, khi khơng cần lưu ý đến ngữ nghĩa của tên thuộc tính thì ta quy ước </b></i>

đặt tên lại cho các thuộc tính như sau: đ Tên của thuộc tính :

Thông thường là các chữ cái đầu tiên (A, B, C, . . .).

Khi cần nhấn mạnh số lượng các thuộc tính sẽ dùng A<small>1</small>,A<small>2</small>,..., A<small>n</small>.

ị Tên của 1 tập hợp nhiều thuộc tính : các chữ cái cuối cùng(X, Y, Z,. . .)

<i><b>b) Kiểu dữ liệu của thuộc tính: </b></i>

<i><b>b.1. Mỗi thuộc tính phải có 1 kiểu dữ liệu (data type). Kiểu dữ liệu có thể là : </b></i>

đ Vô hướng : rời rạc hoặc liên tục như :

 Chuỗi.  Số nguyên  Luận lý  Số thực.

ị Có cấu trúc : thường được định nghĩa trên các kiểu dữ liệu kiểu vô hướng.

<i><b>b.2. Miền giá trị (MGT): </b></i>

đ Là tập hợp các phần tử mà thuộc tính A<b><small>i</small></b> có thể nhận giá trị.

<i><b>Thí dụ : Thuộc tính PhaiNu chỉ nhận 1 trong 2 giá trị là 0, 1. </b></i>

ị Nếu thuộc tính A<b><small>j</small></b> có kiểu dữ liệu là có cấu trúc :

 Miền giá trị của A là tích Descartes của các miền giá trị thành phần.

<i><b>Thí dụ : Thuộc tính A<small>j</small></b> có kiểu là tọa độ màn hình , ta có : MGT(Aj) = </i><i>0..79</i><i> x</i><i>0..24</i>

 Trong 1 số trường hợp đặc biệt, miền giá trị của 1 thuộc tính A<small>j</small> chỉ là một tập hợp miền con (thật sự) của tích Descartes của các miền giá trị thành phần.

<i><b>Thí dụ : TYPE ngay_dl=RECORD </b></i>

<i>d: 1..31 m: 1..12 y: 0..2000 END; </i>

<i>Nếu 1 thuộc tính Aj có kiểu ngay_dl, ta có : MGT(B) </i>ü<i>1..31</i><i> x </i><i>1..12</i><i> x </i><i>0..2000</i>

<i><b>Thí dụ : trong table NV có thuộc tính Số lần sinh, vậy NV nam sẽ không thể áp dụng. </b></i>

 Chưa thể xác định ở thời điểm đang xét, nhưng có thể biết được vào 1 thời điểm khác.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<i><b>Thí dụ : trong table NV có thuộc tính TênVợ, nhưng đối với người độc thân thì khơng thể </b></i>

<i>biết. </i>

 Giá trị có thể biết nhưng vắng mặt.

<i><b>Thí dụ : trong table KetQua có thuộc tính Điểm, và mọi người trong lớp đều đã có điểm </b></i>

<i>nhưng sinh viên A chưa có điểm vì vắng mặt (khơng dự kiểm tra). </i>

 Không quan tâm.

 Khuyết điểm của gía trị NULL :  Tốn không gian lưu trữ.  Nhập nhằng về mặt ngữ nghĩa.  Nên :

 Tránh đặt các thuộc tính có giá trị NULL trong lược đồ quan hệ (nếu có thể được).  Nếu bắt buộc phải dùng thì phải chắc chắn áp dụng giá trị rỗng trong những trường hợp ngoại lệ chứ không phải là hầu hết các bộ như thí dụ sau :

<i><b>Thí dụ : NV(MaNV, TenNV, Phòng Phụ Trách) </b></i>

<i>trong trường hợp này thuộc tính Phịng Phụ Trách hầu hết là NULL. </i>

<i><b>3. Bộ (tuple): </b></i>

 Một bộ là các thông tin của 1 đối tượng thuộc 1 lược đồ quan hệ.

 Chính là 1 dịng có trong lược đồ quan hệ. Thường được gọi là mẫu tin, bản ghi hay record.

 Trong cùng 1 lược đồ quan hệ: đ Khơng có 2 bộ giống nhau. ị Thứ tự các bộ không quan trọng.  Ký hiệu : q

<i><b>4. Quan hệ (Relation): a) Khái niệm : </b></i>

đ Lược đồ quan hệ (Q) : là sự trừu tượng hóa ở mức độ cấu trúc của 1 bảng 2 chiều. ị Quan hệ (TQ) : là tình trạng của lược đồ quan hệ và là một bảng đang có chứa các bộ cụ thể tại 1 thời điểm.

<i><b>b) Có thể có nhiều Quan hệ được định nghĩa trên cùng 1 lược đồ quan hệ. Thí dụ :ta có 2 quan hệ sau trên cùng 1 lược đồ quan hệ SANPHAM như sau: </b></i>

<i><b>TQ<small>1</small></b>MaSP TênSP <b>Đơn giá TQ</b></i><b><small>2</small></b> <i>MaSP TênSP Đơn giá K01 Kẽm 700 K01 Kẽm 700 S02 Sắt 1100 S02 Sắt 1100 </i>

<i>T01 Thép 2700 </i>

<i><b>5. Các loại khóa : </b></i>

<i><b>a) Siêu Khóa : (Super Key) </b></i>

<i><b>a.1. Siêu khóa là tập hợp con các thuộc tính của Q</b></i><b><small>+</small></b> mà nhờ vào chúng ta có cơ sở để

<i><b>phân biệt 2 bộ khác nhau tùy ý trong cùng 1 quan hệ TQ bất kỳ </b></i>

<i><b>a.2. Số lượng siêu khóa trong một lược đồ quan hệ : </b></i>

đ có ít nhất 1 siêu khóa(chính là Q<b><small>+</small></b>). ịø có thể có nhiều siêu khóa.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i><b>Thí dụ:Cho lược đồ quan hệ SINHVIÊN(MaSV,HoSV, TenSV, NgaySinh) </b></i>

<i>Ta có các siêu khóa sau : S<sub>1</sub> : </i><i>MaSV</i>

<i>S<sub>2</sub> : </i><i>MaSV, HoSV, TenSV</i>

<i>S<sub>3</sub> : </i><i> MaSV, NgaySinh</i>

<i>S<sub>4</sub> : </i><i>MaSV, HoSV, TenSV, NgaySinh, SoCMND</i>

<i>S<sub>5</sub> : </i><i>SoCMND</i>

<i><b>b) Khóa chỉ định : (Candidate Key) </b></i>

<i><b>b.1. Mục đích của siêu khóa là để nhận diện 1 bộ trong 1 quan hệ. Nhưng nếu ta dùng </b></i>

siêu khóa bất kỳ để nhận diện 1 bộ trong 1 quan hệ xét về mặt hiệu quả là khơng có lợi do phải tốn chi phí cao cho việc dị tìm.

<i><b>b.2. Vì vậy, ta cần chọn ra 1 siêu khóa :nhỏ nhất; (chứa ít thuộc tính nhất và khác </b></i>

rỗng) rồi gọi nó là khóa chỉ định hay khóa nội. Vậy:

đ Khóa chỉ định khơng bao giờ chứa 1 siêu khóa khác bên trong nó.

ị Số lượng siêu khóa ln >=1. Theo ví dụ trên, ta có 2 khóa chỉ định là : MaSV và SoCMND.

<i><b>c) Khóa chính : (Primary Key) </b></i>

<i><b>c.1. Trường hợp trong 1 lược đồ quan hệ Q có nhiều khóa chỉ định, khi cài đặt trên 1 </b></i>

hệ quản trị CSDL ta chỉ được chọn 1 trong các khóa chỉ định để tạo chỉ mục chi phối đến các bộ. Khi đó:

đ Khóa chỉ định được chọn sẽ gọi là khóa chính.

ị Các khóa chỉ định cịn lại gọi là các khóa tương đương.

<i><b>c.2. Vậy khóa chính chỉ có ý nghĩa trong quá trình khai thác CSDL và xét trên phương </b></i>

diện lý thuyết, khóa chính hồn tồn khơng có vai trị gì khác so với các khóa cịn lại.

<i><b>c.3. Trong những phần sau, nếu khơng có chú thích gì thêm thì các khóa chỉ định sẽ </b></i>

được gọi tắt là khóa.

<i><b>d) Thuộc tính khóa – Thuộc tính khơng khóa : </b></i>

<i><b>d.1. Thuộc tính khóa: là các thuộc tính có tham gia vào 1 khóa của quan hệ được gọi </b></i>

là thuộc tính khóa và khi liệt kê trong 1 lược đồ quan hệ sẽ được gạch dưới và thường được đặt đầu danh sách các thuộc tính.

<i><b>d.2. Thuộc tính khơng khóa: là những thuộc tính khơng tham gia vào bất ký 1 khóa </b></i>

nào.

<i><b>e) Quy ước : </b></i>

<i><b>e.1. Trong một bộ của một quan hệ: các thuộc tính khóa khơng chứa giá trị rỗng (NOT </b></i>

NULL).

<i><b>e.2. Không được phép sửa đổi giá trị của thuộc tính khóa. Nếu muốn sửa đổi thuộc </b></i>

tính khóa, trước tiên ta hủy bộ cũ, sau đó thêm vào bộ mới với khóa đã được sửa đổi và lấy lại giá trị của các thuộc tính khơng khóa.

<i><b>f). Khóa ngoại (Foreign Key) : </b></i>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<i><b>f.1. Khóa ngoại cịn được gọi là ràng buộc tồn vẹn về phụ thuộc tồn tại. </b></i>

<i>Thí dụ: Xét 2 quan hệ KHOA(MaKhoa, TenKhoa) </i>

<i>SINHVIEN(MaSV, TenSV, MaKH) </i>

<i>Trong quan hệ SinhVien, sự tồn tại của bộ sv<b><sub>i</sub></b>=(:SV03;, :Tran Ty;,;CNTT;) hoàn toàn phụ thuộc vào sự tồn tại của bộ k<b><sub>j</sub></b>=(:CNTT;, :Công nghệ thông tin;). </i>

<i>Khi đó, thuộc tính MaKH của quan hệ SinhVien được gọi là khóa ngoại của quan hệ này và được ký hiệu: </i>

SINHVIENMaKhoa ý KHOAMaKhoa

<i>Lược đồ quan hệ (ldqh) Khoa được gọi là lđqh cha và lđqh SinhVien có chứa khóa chính của lđqh Khoa nên được gọi là lđqh con. </i>

<i><b>f.2. Các hình thức của Khóa ngoại: </b></i>

<i>Giả sử có 2 lđqh Q và R. </i>

đ Khóa ngoại tham chiếu: là khóa nội của Q và là thuộc tính khơng khóa của R.

<i>Thí dụ: KHOA(MaKhoa, TenKhoa) </i>

<i>SINHVIEN(MaSV, TenSV, MaKH) </i>

ị Khóa ngoại phân cấp: là khóa nội của Q chứa trong khóa của R.

<i>Thí dụ: SINHVIEN(MaSV, TenSV, MaKH) </i>

<i>KETQUA(MaSV, MaMH, LanThi, DIem) </i>

<i><b>6. Thao tác trên CSDL quan hệ (Relation): a) Các loại thao tác : </b></i>

<i><b>a.1. Thao tác làm thay đổi dữ liệu (thêm, xóa, sửa). </b></i>

<i><b>a.2. Thao tác khơng làm thay đổi dữ liệu (rút trích, truy vấn). b) Các cách chính để thực hiện các thao tác trên : </b></i>

<i><b>b.2. Ngôn ngữ thực sự: SQL – ngôn ngữ thao tác CSDL quan hệ chuẩn. </b></i>

<b>II. CÁC THAO TÁC CƠ SỞ TRÊN CÁC QUAN HỆ :  Quy ước chung về cách dùng các điều kiện: </b>

÷ <tên thuộc tính>= <tên thuộc tính> hay <hằng số>.

÷ Có thể thay vị từ :=; bởi các vị từ so sánh khác như: ù, >, <.

÷ Các điều kiện có thể được liên kết với nhau thơng qua ^ (and), v (or),  (not). ÷ Kết hợp các phép tốn đại số qian hệ: có thể chọn 1 trong 2 cách:

 Tạo một biểu thức quan hệ bằng cách lồng các phép toán với nhau.

 Aùp dụng từng phép toán một, sau mỗi lần áp dụng một phép toán sẽ cho ra quan hệ kết quả.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i><b>1. Phép chiếu (Project Operation): a) Khái niệm : </b></i>

 Dùng để trích chọn các thuộc tính (cột) từ quan hệ r được chỉ ra trong danh sách thuộc tính.

 Ký hiệu : ðA<small>1, </small>A<small>2</small>, . . .A<small>n</small>(r)

<i><b>Trong đó: ư r : là tên quan hệ được chọn. </b></i>

ư A<small>1, </small>A<small>2</small>, . . .A<small>n</small> : là tên các thuộc tính được chiếu.

 Kết quả trả về là một quan hệ r’ có k thuộc tính theo thứ tự được liệt kê.

 Số lượng các bộ trong quan hệ kết quả của phép chiếu (r9) luôn luôn ít hơn hay bằng các bộ có trong r. Các dòng trùng nhau sẽ được loại bỏ khỏi quan hệ kết quả, bởi vì quan hệ là tập hợp.

 ðA<small>1, </small>A<small>2</small>, . . .A<small>k</small>(ðA<small>1, </small>A<small>2</small>, . . .A<small>l</small>(r))= ðA<small>1, </small>A<small>2</small>, . . .A<small>k</small>(r) . Với k  l

<i><b>b) Thí dụ : phép chiếu lược đồ quan hệ SINHVIÊN (MaSV, HoTen, NgaySinh, HocBong) </b></i>

<i>lên tập thuộc tính gồm HoTen,MaSV sẽ cho kết quả như sau: </i>

<i><b>MÃ </b></i>

<i><b>SV <sup>HỌ TÊN </sup>BỔNG <sup>HỌC </sup><sup>HỌ TÊN </sup><sup>MÃ </sup>SV </b></i>

<i>A01 Phạm Tý 200.000 Phạm Tý A01 B01 Trần Sửu </i> ð<i><small>HoTen, MaSV</small>(SinhVien) Trần Sửu B01 A02 Nguyễn Dần 100.000 Nguyễn Dần A02 C01 Phùng Hợi Phùng Hợi C01 </i>

<i><b>c) Bài tập : (tham khảo dữ liệu trong BTập số 3 . Chương II&III . trang91) c.1. Hãy cho biết tên, địa chỉ của tất cả các nhân viên? </b></i>

<i><b>c.2. Cho biết họ tên và lương của tất cả các nhân viên. c.3. Cho biết lương và mã số của tất cả các nhân viên. 2. Phép chọn (Selection Operation): </b></i>

<i><b>a) Khái niệm : </b></i>

 Dùng để trích chọn các bộ (dịng) từ quan hệ r. Các bộ được trích chọn phải thỏa điều kiện p.

 Ký hiệu : <sub>P</sub>(r)

<i><b>Trong đo:ù ư r : là tên quan hệ được chọn. </b></i>

ư p : là một biểu thức mệnh đề.

 Kết quả trả về là một quan hệ r’ có cùng danh sách các thuộc tính như quan hệ r.  Phép chọn có tính giao hoán:

<small>P1</small>(<small>P2</small>(r)) = <small>P2</small>(<small>P1</small>(r)) = <small> (P1 ^P2)</small>(r)

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<i><b>b) Thí dụ : ta chỉ muốn xem danh sách các sinh viên có học bổng. </b></i>

<i><b>MÃ </b></i>

<i><b>SV <sup>HỌ TÊN </sup></b></i>

<i><b>HỌC BỔNG </b></i>

<i><b>MÃ </b></i>

<i><b>SV <sup>HỌ TÊN </sup></b></i>

<i><b>HỌC BỔNG </b></i>

<i>A01 Phạm Tý 200 A01 Phạm Tý 200 B01 Trần Sửu </i> <i><small>HocBong>0</small>(SinhVien) A02 Nguyễn Dần 100 A02 Nguyễn Dần 100 </i>

Đưa ra một số phép chọn để có kết quả là R9.

<i><b>c.2. Cho quan hệ r: </b></i>

Phối hợp các phép chiếu và chọn để có kết quả là R9.

<i><b>c.3. Chọn những nhân viên thuộc Phịng có mã số là :P3; và phái là :Nam;. c.4. Chọn những nhân viên có lương nằm trong khoảng từ 30000 đến 40000. </b></i>

<i><b>c.5. Chọn những nhân viên phái là :Nữ; và lương >25000 hoặc những nhân viên có họ </b></i>

là :Đinh;.

<i><b>3. Phép gán (Assignment Operator): </b></i>

 Phép gán giúp thể hiện dễ dàng các câu truy vấn phức tạp. Yù tưởng: viết các câu truy vấn như là một chương trình tuần tự gồm một chuỗi các phép tốn.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<i>Thí dụ: SV  </i>ð<i><small>HoTen, MaSV</small>(SinhVien) </i>

 Đổi tên thuộc tính:

<tên mới của quan hệ>(tên mới của các thuộc tính)  phép tốn quan hệ

<i>Thí dụ: SV(TenSV,MaSo)  </i>ð<i><small>HoTen, MaSV</small>(SinhVien) </i>

<b>III. CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ : </b>

 Quan hệ khả hợp: hai quan hệ r và s được coi là khả hợp khi: ÷ Số lượng thuộc tính phải bằng nhau (cùng bậc).

÷ Miền giá trị của thuộc tính phải tương thích (dom(A<small>i</small>) = dom(B<small>i</small>)) với 1  I  n.

<i><b>1. Phép hội (Union Operation): a) Khái niệm : </b></i>

<i> Ký hiệu : r ø s </i>

<i> Định nghĩa : r ứ s := {t | t ỵ s v t ỵ r } </i>

Trong ú r và s là 2 quan hệ khả hợp.

<i><b>b)Thí dụ : giả sử liên kết danh sách sinh viên 2 lớp ANHVĂN và TIN HỌC, ta được: </b></i>

<i><b>DSLỚP ANHVĂN DSLỚP TIN HỌC </b></i>

<i><b>MÃSV HỌTÊN MÃSV HỌTÊN </b></i> Kết <i><b>MÃSV HỌTÊN </b></i>

SV02 Phạm Tý ø SV05 Nguyễn Dần quả <i>SV02 Phạm Tý </i>

SV05 Nguyễn Dần

<i>Bộ giá trị có MãSV là SV02 xuất hiện 2 lần trong 2 quan hệ nên bộ này chỉ được giữ lại 1 lần trong quan hệ kết quả. </i>

<i><b>c) Bài tập : </b></i>

 Cho biết kết quả của phép toán : Q<b><small>1</small> ø Q<small>1</small></b>

 Khi nào thì Q<b><small>1</small> ø Q<small>1 </small></b>có kết quả là rỗng?

 Biết Q<b><small>1</small> ø Q<small>2 = </small></b>Q<b><small>3 . </small></b>Q<b><small>2 </small></b>phải ra sao để Q<b><small>1 </small></b>và Q<b><small>3 </small></b>giống nhau hoàn toàn?

<i>(Tham khảo dữ liệu trong Bài tập số 3 . Chương II&III . trang91) </i>

 Cho biết những nhân viên có thân nhân hoặc những nhân viên là trưởng phòng.  Cho biết những nhân viên là nữ hoặc có lương >=30000.

<i><b>2. Phép giao (Set.Intersection Operation) : a) Khái niệm : </b></i>

<i> Ký hiệu : r ÷ s </i>

<i> Định nghĩa : r ÷ s := {t | t ỵ s ^ t þ r } </i>

Trong đó r và s là 2 quan hệ khả hợp.

<i> Nguồn gốc : r ÷ s = r . ( r – s ) </i>

<i><b>b) Thí dụ : giả sử ta có 2 bảng cho biết các môn học của 2 lớp : Điện tử . Tin học và Tin </b></i>

<i>học . Ứng dụng, sau khi thực hiện phép giao, ta được: </i>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<i><b>ĐTỬ – TH TH – ỨNG DỤNG MÃ </b></i>

<i><b>MÔN <sup>TÊN MÔN </sup></b></i>

<i><b>MÃ </b></i>

<i><b>MÔN <sup>TÊN MÔN </sup></b></i> Kết

<i><b>MÃ </b></i>

<i><b>MÔN <sup>TÊN MÔN </sup></b></i>

07 Điện tử căn bản ÷ 08 Cấu trúc máy tính quả 08 Cấu trúc máy tính 08 Cấu trúc máy tính 10 Cơ sở dữ liệu

09 Kỹ thuật số 11 PTTK hệ thống

<i>Cả 2 quan hệ chỉ có chung 1 bộ có mã mơn là 08 nên trong quan hệ kết quả chỉ gồm duy nhất 1 bộ. </i>

<i><b>c) Bài tập : </b></i>

 Khi nào thì Q<b><small>1</small> ÷ Q<small>2</small></b> có kết quả là rỗng?

 Biết Q<b><small>1</small> ÷ Q<small>2 = </small></b>Q<b><small>3 . </small></b>Q<b><small>2 </small></b>phải ra sao để Q<b><small>1 </small></b>và Q<b><small>3 </small></b>giống nhau hoàn toàn?

<i>(Tham khảo dữ liệu trong Bài tập số 3 . Chương II&III . trang91) </i>

 Cho biết những nhân viên có người thân và là trưởng phòng.  Cho biết tên những nhân viên nam thuộc phòng :P2;.

 Cho biết mã số và tên những nhân viên nữ sinh trước năm 1970 hoặc những nhân viên có lương dưới 28000 hoặc trên 50000.

<i><b>3. Phép trừ (Minus Operation): a) Khái niệm : </b></i>

<i> Ký hiệu : r . s </i>

<i> Định nghĩa : r . s := {t | t ỵ r ^ t ÿ s } </i>

Trong đó r và s là 2 quan hệ khả hợp.

<i> Thường áp dụng cho những câu truy vấn có dạng :khơng có; hoặc :chưa có;. </i>

<i><b>b) Thí dụ : giả sử ta có 2 bảng cho biết các mơn học của 2 lớp : Điện tử .Tin học và Tin </b></i>

<i>học. Ứng dụng, sau khi thực hiện phép giao, ta được: </i>

<i><b>ĐTỬ – TH TH . ỨNG DỤNG </b></i>

<small>MÃ </small>

<small>MÔN </small> <sup>TÊN MÔN </sup> <small>_ </small> <sup>MÃ </sup><small>MÔN </small> <sup>TÊN MÔN </sup> Kết <sup>MÃ </sup><small>MÔN </small> <sup>TÊN MÔN </sup>

07 Điện tử căn bản 08 Cấu trúc máy tính 07 Điện tử căn bản 08 Cấu trúc máy tính 10 Cơ sở dữ liệu <i><b>quả </b></i> 09 Kỹ thuật số 09 Kỹ thuật số 11 PTTK hệ thống

<i>Cả 2 quan hệ chỉ có chung 1 bộ có mã mơn là 08 nên trong quan hệ kết quả sẽ gồm tất cả những bộ không có trong quan hệ TH.ỨNG DỤNG. </i>

<i><b>c) Bài tập : </b></i>

 Cho biết kết quả của phép toán : Q<b><small>1</small> . Q<small>1</small></b>

 Khi nào thì quan hệ kết quả là rỗng?

 Q<b><small>2 </small></b>phải ra sao để Q<b><small>1 </small></b>và quan hệ của kết quả là giống nhau hoàn toàn?

<i>(Tham khảo dữ liệu trong Bài tập số 3 . Chương II&III . trang91) </i>

 Cho biết những nhân viên khơng có thân nhân?

 Cho biết mã số của những đề án chưa phân công cho bất kỳ nhân viên nào?

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<i><b>4. Phép tích Cartersian (Cartersian Product Operation): a) Khái niệm : </b></i>

<i> Ký hiệu : r x s </i>

<i> Định nghĩa : r x s := {t q | t ỵ r ^ q ỵ s } </i>

<i> Lu ý : các thuộc tính của r và s là khác nhau (r ÷ s = ư). Nếu các thuộc tính của r và </i>

s không khác nhau, ta phải đổi tên chúng.

<i> Tập kết quả : </i>

ý Mỗi bộ có trong tập kết quả là tổ hợp giữa 1 bộ t<small>i</small> trong r và 1 bộ q<small>j</small> trong s.

KQ(A<small>1</small>,A<small>2</small>,. . .,A<small>n</small>,B<small>1</small>,B<small>2</small>,. . .B<small>m</small>)  r(A<small>1</small>,A<small>2</small>,. . .,A<small>n</small><b>) x s(B</b><small>1</small>,B<small>2</small>,. . .B<small>m</small>) ý Nếu r có n bộ và s có m bộ thì tập kết quả sẽ có n x m bộ.

<i> Đặc điểm : Phép tích Carersian là một phép tốn vơ nghĩa nếu đứng riêng. Do đó, </i>

người ta thường phải sử dụng phối hợp với các phép tốn khác. Thí dụ : <i><small>ri=sj</small>(r x s) </i>

<i><b>b) Thí dụ : </b></i>

<i> Giả sử các Sinh viên đều phải học các Mơn học giống nhau. Vậy ta có thể dùng phép </i>

<i>tốn này để có : </i>

<i><b>MÃ SV MÃ MƠN MÃ SV MÃ MÔN </b></i>

<i>B01 X T02 Kết quả A01 T02 B01 L01 B01 T02 </i>

<i>Số lượng thuộc tính có trong quan hệ kết quả = 1 + 1 = 2. Số lượng các bộ có trong quan hệ kết quả = 2 x 2 = 4. </i>

<i> Với mỗi phòng ban, cho biết thơng tin về người trưởng phịng: </i>

<i>PB_NV  PhongBan x NhanVien </i>

<i>PB_TruongPhong  MaNV=TruongPhong</i> (PB_NV)

<i>Hoặc PB_TruongPhong </i><small>MaNV=TruongPhong</small>(PhongBan x NhanVien)

<i> Cho biết nhân viên có lương cao nhất: </i>

ư Quan hệ tạm chứa những nhân viên có lương không lớn nhất. Tam  ð<small>NhanVien.Luong</small>(<small>NhanVien.Luong < NV.Luong </small>

(NhanVien x pNV(NhanVien))) ư Thực hiện phép trừ giữa quan hệ nhanVien và quan hệ tạm:

KetQua  ð<small>Luong</small><b>(NhanVien) . ð</b><small>Luong</small>(Tam)

<i> Cho biết những phòng ban có cùng địa điểm với phịng số 5: </i>

ư Tìm các địa điểm của phịng số 5:

Tam  ð<small>ĐịaĐiểm</small> (<small>MaPhong=5</small> (DiaDiem_Phong))

ư Thực hiện phép trừ giữa hai quan hệ DiaDiem_Phong và tạm: KetQua  ð<small>MaPhong</small><b>(DiaDiem_Phong) . ð</b><small>MaPhong</small>(Tam)))

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<i><b>5. Phép đ.kết (theta.join): a) Khái niệm : </b></i>

ü Giả sử ta có 2 lược đồ quan hệ Q<b><small>1</small></b> và Q<b><small>2</small></b> như sau : Q<b><small>1</small></b>(A<b><small>1</small></b>, A<b><small>2</small></b>, . . ., A<b><small>n</small></b>)

Q<b><small>2</small></b>(B<b><small>1</small></b>, B<b><small>2</small></b>, . . ., B<b><small>m</small></b>)

đ TQ<b><small>1</small></b><i><b> và TQ</b></i><b><small>2</small></b> là 2 quan hệ định nghĩa trên Q<b><small>1</small></b> và Q<b><small>2</small></b>.

ị Ai và Bj lần lượt là các thuộc tính của 2 lược đồ quan hệ Q<b><small>1</small></b> và Q<b><small>2</small></b> sao cho MGT(A<b><small>i</small></b>) = MGT(B<b><small>j </small></b>).

ĩ đ là 1 phép so sánh (=, ù, ú, , , , ) trên MGT (A<b><small>i</small></b>). Khi phép so sánh là :

<i><b>= thì ta gọi là kết bằng (equi.join). </b></i>

<i><b>ú thì ta gọi là kết tự nhiên (natural.join). Phép kết tự nhiên đóng vai trị rất quan trọng </b></i>

trong mơ hình dữ liệu quan hệ.

ơ Phép đ . kết giữa 2 lược đồ quan hệ Q<b><small>1</small></b> và Q<b><small>2 </small></b>sẽ tạo thành một lược đồ quan hệ Q<b><small>12</small></b>

ý Phép đ<i>.kết là liên kết dữ liệu của 2 bảng bằng phép tích Descartes dựa trên 1 tập </i>

thuộc tính cho trước. Sau đó chọn lại các record thỏa điều kiện đề ra trên các thuộc tính.

ị A<i><small>i</small><b> được chọn là thuộc tính A, B</b><small>i</small><b> được chọn là thuộc tính D. </b></i>

<i><b>TQ1 và TQ</b></i><b><small>2</small></b> là 2 quan hệ định nghĩa trên Q<b><small>1</small></b> và Q<b><small>2</small></b>.

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

ý<i> Cũng với thí dụ trên, hãy thực hiện phép so sánh (</i>đ<i><b>) được chn l phộp A=D. </b></i>

ỵ<i> Cho 2 lc quan hệ : SINHVIEN(MaSV, HoSV, TenSV) và KETQUA (MaSV, MaMH, Diem). </i>

<i><b>TSinhvien và TKetQua là 2 quan hệ định nghĩa trên 2 lược đồ quan hệ SINHVIEN và </b></i>

<i>KETQUA. </i>

<i><b>TSinhVien TKetQua </b></i>

<i><b>MÃSV HỌ TÊN </b>MÃSV <b>Mã MH Điểm </b></i>

<i>Thực hiện phép kết bằng (=) với Ai = SINHVIEN.MaSV và Bj = KETQUA.MaSV ta được kết quả: </i>

<i><b>MÃSV HỌ TÊN MÃSV Mã MH Điểm </b></i>

Loại bỏ cột MaSV thừa, ta còn lại kết quả :

<i><b>MÃSV HỌ TÊN Mã MH Điểm </b></i>

A02 Nguyễn Dần VL05 7 A02 Nguyễn Dần HH 05 5

<i><b>d) Nhận xét : </b></i>

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

Khi thực hiện kết tự nhiên, số thuộc tính trên bảng kết quả sẽ bằng tổng số các thuộc tính có trong 2 bảng ban đầu trừ đi số lượng thuộc tính tham gia vào phép kết (do trùng nhau và thường số lượng này là 1).

<b>IV. CÁC PHÉP TOÁN KHÁC : </b>

<i><b>1. Phép chia (Division Operator): a) Khái niệm : </b></i>

<i> Áp dụng : dùng trong các câu truy vấn có từ :tất cả;, tức là đưa ra các bộ trong một </i>

quan hệ r sao cho khớp với tất cả các bộ trong quan hệ khác s.

<i> Đây là phép toán ngược với phép nhân.  Ký hiệu : r ø s </i>

<i> Điều kiện : các thuộc tính trong s phải là một tập thuộc tính con của r.  Thuộc tính của quan hệ kết quả : chính là các thuộc tính của r – s. </i>

<i> Nguồn gốc : cho hai quan hệ r(Z) ø s(X) trong đó X ý Z. </i>

ư Gọi Y=Z – X (do đó Z = XøY)

ư Phép chia có thể diễn đạt bằng phép toán đại số quan hệ sau: t<small>1 </small>  ð<small>Y</small>(r)

t<small>2 </small>  ð<small>Y</small><b>((s x t</b><small>1</small><b>) – r ) </b>

t  t<small>1</small> –t<small>2</small>

<i><b>b) Các bước thực hiện : </b></i>

<i><b>Thực hiện phép chia (ø) giữa lược đồ quan hệ R(ABC) và S(BD). </b></i>

ü Xóa các thuộc tính trong R và S nếu thuộc tính đó khơng tham gia vào khóa chính của lược đồ quan hệ).

ý Giả sử, gọi B là cột chung của cả 2 quan hệ R và S. Thực hiện xóa các dịng trong R sao cho giá trị của cột B trong R khụng cú trong ct B ca S.

ỵ To t1 gồm các thuộc tính của R khơng có trong S. ÿ Tạo t2 = t1 x S.

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<i><b>B6: t6=Chiếu thuộc tính A của t5 B5: tKq = t3 – t6 </b></i>

<i><b>d) Bài tập: thực hiện phép chia. Sau đó so sánh với tập kết quả: </b></i>

ü Cho 2 lược đồ quan hệ : MonHoc(MaMH, TenMH)

<i>và DiemThi (MaSV, MaMH, Diem). </i>

<i><b>TMonHoc và TKetQua là 2 quan hệ định nghĩa trên 2 lược đồ quan hệ MONHOC và </b></i>

KETQUA.

<i><b>Phép chia TKetQua cho TMonHoc sẽ cho kết quả danh sách các sinh viên đã dự thi đủ tất cả các môn học trong TmonHoc. </b></i>

<i><b>MÃSV Mã MH Điểm MÃ MH TÊN MÃSV </b></i>

<i>A01 TH01 8 TH01 TH cơ bản A01 A02 TH01 7 VL01 VL đại cương A02 </i>

<i>A03 TH01 4 Kết quả sau khi thực hiện phép chia </i>

<i>A01 VL01 5 A02 VL01 6 A02 HH01 6 </i>

ý Cho quan hệ về khả năng giảng dạy của từng giáo viên:

<i><b>TGIÁO VIÊN </b></i>

<i>Mã Giáo Viên </i>

GV4

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<i><b>2. Phép bù (Complement): a) Khái niệm : </b></i>

Giả sử ta có lược đồ quan hệ Q(A<small>1</small>, A<small>2</small>, . . ., A<small>n</small>) với các miền giá trị của thuộc tính A<small>i</small>

là MGT(A<small>i</small>). Phép bù của quan hệ R là quan hệ Q xác định trên tập thuộc tính R<small>+</small>, ký hiệu là  R, được định nghĩa như sau:

Q =  R =  t (a<small>1</small>, a<small>2</small>, . . ., a<small>n</small>) và a<small>i</small> þ MGT(A<small>i</small>) i=1.. n / t ÿ R 

Nghĩa là tập tất cả các bộ giá trị có thể có của tích Descartes miền giá trị MGT(A<small>i</small>) nhưng chưa có mặt trong thể hiện của quan hệ R. Quan hệ bù của một quan hệ có số lượng bộ giá trị là rất lớn, vì vậy trong thực tế rất ít hệ quản trị CSDL cài đặt phép tốn này.

<i><b>b) Các bước thực hiện : </b></i>

ü Tạo ra quan hệ Q2 bằng cách thực hiện tích Descartes giữa các giá trị có trong từng thuộc tính của Q1.

ý Thực hiện phép trừ giữa Q2 và Q1.

<i><b>c) Thí dụ : cho Quan hệ CUNG.CẤP (Mã.NCC, Hàng.hóa) với Mã.NCC = { S</b></i><small>1</small>, S<small>2</small>, S<small>3</small> } và các Hàng.hóa cung cấp là { Đinh, Ốc, Vít }

<i>NCC HHóa NCC HHóa NCC HHóa NCC HHóa </i>

<i><b>3. Phép kết nối nội (Inner Join): </b></i>

<i><b>a) Khái niệm : Thực chất là phép kết nối bằng (đã trình bày ở các phần trên). Tuy nhiên, </b></i>

ngay cả trong trường hợp hai thuộc tính so sánh có cùng tên thì kết quả phép kết nối vẫn giữ lại 2 tên thuộc tính đó.

<i><b>b) Thí dụ : </b></i>

<b>ü Cho 2 quan hệ R (A, B, C) và S (A, D, E, F) với các bộ giá trị như dưới đây. Kết quả </b>

<i>của phép kết nối nội được cho trong bảng phía bên phải. </i>

a<small>1</small> b<small>1</small> a<small>1</small> d<small>1</small> e<small>1</small> a<small>1</small> b<small>1</small> a<small>1</small> d<small>1</small> e<small>1</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>2</small> e<small>2</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>2</small> e<small>2</small> a<small>3</small> b<small>3</small> a<small>2</small> d<small>22</small> e<small>22</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>22</small> e<small>22</small>

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

ý Cho 2 quan hệ SINHVIÊN và LỚP như sau:

<i><b>MaSV TênSinhViên MãLớp MãLớp TênLớp </b></i>

<i><b>MaSV TênSinhViên MãLớp MãLớp TênLớp </b></i>

<i><b>4. Phép kết nối trái (Left Join): </b></i>

Giả sử có 2 quan hệ R (A<small>1</small>, A<small>2</small>, . . ., A<small>n</small>) và S (B<small>1</small>, B<small>2</small>, . . ., B<small>m</small>).

t = (a<small>1</small>, a<small>2</small>, . . ., a<small>n</small>) và u = (b<small>1</small>, b<small>2</small>, . . ., b<small>m</small><i>) là hai bộ giá trị của R và S. Gọi v là bộ ghép nối u vào t (hay bộ giá trị t và u được "xếp cạnh nhau") và ký hiệu là: </i>

<i>v = (t, u) = (a1</i>, a<small>2</small>, . . ., a<small>n</small>, b<small>1</small>, b<small>2</small>, . . ., b<small>m</small>).

Bộ t<sub>NULL</sub><i> = (NULL, NULL, . . ., NULL) là một bộ đặc biệt của R gồm n giá trị của các </i>

thuộc tính A<small>1</small>, A<small>2</small>, . . ., A<small>n</small> đều là không xác định và u<small>NULL</small> = (NULL, NULL, . . ., NULL)

<i>là một bộ đặc biệt của S gồm m giá trị của các thuộc tính B</i><small>1</small>, B<small>2</small>, . . ., B<small>m</small> u l khụng xỏc nh.

A ỵ R<small>+</small> v B þ S<small>+</small> là hai thuộc tính có thể so sánh được.

<i><b>a) Khái niệm : Phép kết nối trái hai quan hệ R với S trên các thuộc tính A và B với phép </b></i>

so sánh bằng ( = ), với giả thiết là giá trị cột R[A] có thể so sánh tương đương được với mỗi giá trị của cột S[B], được định nghĩa là:

R <i> S = { v = (t, u) | (t ỵ R , u ỵ S v t.A ỵ u.B) hoc (t ỵ R, u = u</i><small>NULL</small> với t.A ÿ S[B]) }

<i>nghĩa là, tất cả các bộ v có được nhờ cách đặt bộ giá trị của R và S xếp cạnh nhau, nếu có giá trị giống nhau trên 2 thuộc tính kết nối; và các bộ v có được nhờ cách đặt bộ của </i>

R với các bộ NULL của S, nếu khơng tìm được giá trị tương ứng của thuộc tính kết nối trên quan hệ S.

<i><b>b) Thí dụ : </b></i>

<b>ü Với hai quan hệ R và S ở thí dụ kết nối nội, kết quả của phép kết nối trái của R và </b>

S là:

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

R (A B) S (A D E) R S =Q (A B A D E) a<small>1</small> b<small>1</small> a<small>1</small> d<small>1</small> e<small>1</small> a<small>1</small> b<small>1</small> a<small>1</small> d<small>1</small> e<small>1</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>2</small> e<small>2</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>2</small> e<small>2</small> a<small>3</small> b<small>3</small> a<small>2</small> d<small>22</small> e<small>22</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>22</small> e<small>22</small> a<small>4</small> d<small>4</small> e<small>4</small> a<small>3</small> b<small>3</small> . . .

<i>Ký hiệu dấu trừ (.) trong các thuộc tính của S được hiểu là giá trị không xác định (giá </i>

<i>trị Null). </i>

Các dịng có giá trị thuộc tính A của R là a<small>3</small> và a<small>5</small> khơng tìm được giá trị của thuộc tính A tương ứng trong quan hệ S, nên phần cịn lại của nó được để là khơng xác định. Qua đó, chúng ta thấy ý nghĩa của phép tốn này là nhằm xác định các bộ giá trị của quan hệ bên trái nhưng khơng có bộ giá trị tương ứng trong quan hệ phía bên phải.

<b>ý Lấy lại thí dụ 2 của phép kết nối nội: Khi đó phép kết nối trái (Left Join) hai quan </b>

hệ SINHVIÊN và LỚP cho kết quả là quan hệ có thể hiện như sau:

<i><b>KQ1 </b></i>

<i><b>MaSV TênSinhViên MãLớp MãLớp TênLớp </b></i>

<i>Vì trong quan hệ LỚP khơng có bộ nào có giá trị ở cột MãLớp là L4, do đó ở dòng cuối cùng của quan hệ trên, một bộ gồm toàn giá trị NULL ở cả hai cột MãLớp và </i>

<i>TênLớp được đặt cạnh bộ giá trị S5 trong thể hiện của quan hệ SINHVIÊN. </i>

Ứng dụng của phép kết nối này có thể thấy rõ trong bài tốn cần xác định những sinh viên thuộc những lớp khơng có trong danh mục Lớp. Khi đó, ta chỉ việc chọn ra các

<i>dòng của bảng kết nối có giá trị NULL ở cột Lớp. </i>

<i><b>5. Phép kết nối phải (Right Join): </b></i>

Vẫn với các quan hệ R, S; các thuộc tính A, B; và các bộ giá trị v, t, u, t<small>NULL</small>, u<small>NULL</small> được xác định như trên.

<i><b>a) Khái niệm : Phép kết nối phải hai quan hệ R với S trên các thuộc tính A và B với </b></i>

phép so sánh =, với giả thiết là giá trị cột R[A] có thể so sánh tương đương được với mỗi giá trị của cột S[B], được định nghĩa là:

R <i>S = { v = (t, u) | (t ỵ R , u ỵ S v t.A ỵ u.B) </i>

hoc (t = t<small>NULL </small><i>, u ỵ S, vi t.B R[A]) } </i>

<i>nghĩa là, tất cả các bộ v có được nhờ cách đặt bộ giá trị của R và S xếp cạnh nhau nếu </i>

chúng có giá trị giống nhau trên 2 thuộc tính kết nối, và các bộ NULL của R với các bộ của S, nếu khơng tìm được giá trị tương ứng của thuộc tính kết nối trên quan hệ R.

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<i><b>b) Thí dụ : </b></i>

<b>ü Cũng với các quan hệ R và S như trong các thí dụ ở trên. Kết quả của phép kết nối </b>

phải R với S là quan hệ với các bộ giá trị sau:

a<small>1</small> b<small>1</small> a<small>1</small> d<small>1</small> e<small>1</small> a<small>1</small> b<small>1</small> a<small>1</small> d<small>1</small> e<small>1</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>2</small> e<small>2</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>2</small> e<small>2</small> a<small>3</small> b<small>3</small> a<small>2</small> d<small>22</small> e<small>22</small> a<small>2</small> b<small>2</small> a<small>2</small> d<small>22</small> e<small>22</small> a<small>4</small> d<small>4</small> e<small>4</small> . . a<small>4</small> d<small>4</small> e<small>4</small>

<i>Ký hiệu dấu trừ (.) trong các thuộc tính của R được hiểu là giá trị không xác định (giá </i>

<i>trị Null). </i>

Các dịng có giá trị tại thuộc tính A của S là a<small>4</small> và a<small>6</small> khơng tìm được giá trị của thuộc tính A tương ứng trong quan hệ R, do đó phần đầu của nó được để là khơng xác định. Qua bảng kết quả trình bày trên, chúng ta thấy ý nghĩa của phép toán này là nhằm xác định các bộ giá trị của quan hệ bên phải khơng có bộ giá trị tương ứng trong quan hệ phía bên trái.

<b>ý </b><i>Lấy lại thí dụ 2 của phép kết nối nội: Khi đó phép kết nối phải (Right Join) hai </i>

quan hệ SINHVIÊN và LỚP cho kết quả là quan hệ có thể hiện như sau:

<i><b>KQ1 </b></i>

<i><b>MaSV TênSinhViên MãLớp MãLớp TênLớp </b></i>

<i>Vì trong quan hệ SINHVIÊN khơng có bộ nào có giá trị ở cột MãLớp là L5, do đó ở </i>

dòng cuối cùng của quan hệ trên, một bộ gồm toàn giá trị NULL ở cả ba cột

<i>MãLO&!P<TênSInhViên và MãLớp được đặt cạnh bộ giá trị L5 trong thể hiện của quan </i>

hệ LỚP.

 Tóm lại: Hai phép tốn kết nối trái (Left Join) và kết nối phải (Right Join) còn được

<i>gọi là "phép kết nối ngoài" (Outer Join). Mục đích của phép kết nối này là cho phép giữ </i>

lại tất cả các dòng (hoặc bộ giá trị) của 2 quan hệ có cùng giá trị của các thuộc tính kết nối và những bộ giá trị của cả 2 quan hệ khơng tìm được bộ giá trị giống nhau trên các thuộc tính kết nối thuộc quan hệ đối ứng.

<i><b>6. Phép chiếu tổng quát: </b></i>

Là mở rộng phép chiếu bằng cách cho phép sử dụng các phép tốn và hàm số học. Thí dụ: cho quan hệ ChiTietHoaDon(SoHD, MaSP,SoLuong, DonGia), Tìm trị giá của từng chi tiết hóa đơn:

ð <sub>SoHD, MaSP, SoLuong  DonGia</sub>(ChiTietHoaDon)

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<i><b>7. Hàm kết hợp: (Aggregate Functions) </b></i>

Nhận vào 1 tập hợp các giá trị và trả về giá trị đơn. Các hàm thường dùng là:

<i><b>8. Phép toán gom nhóm trong đại số quan hệ : (Grouping . ) </b></i>

Giúp sử dụng được các hàm kết hợp.

Thí dụ:  Tính số lượng nhân viên và lương trung bình của cả đơn vị  <sub>COUNT(MaNV), AVG(Luong)</sub> (NHANVIEN)

 Cho biết số lượng nhân viên và lương trung bình của mỗi phái Phái  <sub>Phái , COUNT(MaNV), AVG(Luong)</sub> (NHANVIEN)

<b>V. CÁC THAO TÁC CẬP NHẬT TRÊN QUAN HỆ : </b>

 Nội dung của CSDL có thể được cập nhật bằng cách dùng các thao tác thêm, xóa, sửa.

 Tất cả các thao tác này được diễn đạt thông qua phép toán gán. R (kết quả)  Các phép toán trên R (ban đầu)

<i><b>1. Thêm: (Insertion) </b></i>

<i> Diễn đạt : R  R ø E ( với E là một biểu thức đại số quan hệ) </i>

<i> Thí dụ :thêm vào bảng kết quả về điểm thi môn CSDL của sinh viên SV001 là 8 điểm. </i>

<i>KetQua </i><i> KetQua </i>ø<i> {(:SV001;, :CSDL;, 8)} </i>

<i><b>2. Xóa: (Deletion) </b></i>

<i> Diễn đạt : R  R . E ( với E là một biểu thức đại số quan hệ)  Thí dụ :  Xóa nhân viên có mã số nhân viên là 110: </i>

<i><b>(NHANVIEN)  (NHANVIEN) . (</b></i><i><sub>MaNV =110</sub> (NHANVIEN) ) </i>

 Xóa tồn bộ kết quả học tập của sinh viên :SV001;

<i>R1  (</i><i><small>MaSV =;SV001;</small>(KETQUA<sub>KetQua.MaSV=SinhVien.MaSV</sub>(SINHVIEN)) </i>

<i>KetQua <b> KetQua . (R2) </b></i>

<i><b>3. Sửa: (Updating) </b></i>

<i> Diễn đạt:Thường được diễn đạt bằng chuỗi các thao tác thêm và xóa. Tuy nhiên, bạn </i>

vẫn có thể sử dụng trực tiếp các phép toán số học.

<i> Thí dụ :  Tăng lương gấp 1,5 cho nhân viên có mã số 110: </i>

<i>T<b><sub>1</sub></b>  </i>ð<i><sub> MaNV,TenNV, Luong 1.5</sub><b>(</b><small>MaNV=110</small><b> (NHANVIEN)) </b></i>

<i>T<b><sub>2</sub></b>  </i><i><small>MaNV=110</small> (NHANVIEN) </i>

<i><b>NHANVIEN  NHANVIEN – T<small>2</small></b></i>

<i>NHANVIEN  NHANVIEN </i>ø<i> T<b><sub>1</sub></b></i>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

<i> Trong quan hệ PHANCONG, các nhân viên làm việc trên 30 giờ sẽ tăng thời gian làm </i>

<i>việc lên 1.5, số còn lại sẽ tăng thời gian làm việc lên gấp 2: </i>

<i>PHANCONG  </i>ð<i><sub>MaNV.SoDA,ThoiGian  1.5</sub>(</i><i><small>ThoiGian >30</small>(PHANCONG) </i>

</div>

×