1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Cơ sở dữ liệu (Nghề: Lập trình máy tính, Tin học ứng dụng - Trình độ CĐ/TC) - Trường Cao đẳng Nghề An Giang

93 12 1

Đ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 93
Dung lượng 1,56 MB

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

Nội dung

Giáo trình Cơ sở dữ liệu gồm các nội dung chính sau: Tổng quan về cơ sở dữ liệu; Mô hình cơ sở dữ liệu quan hệ; Ngôn ngữ dữ liệu SQL; Ràng buộc toàn vẹn và phụ thuộc hàm; Dạng chuẩn và chuẩn hóa lược đồ cơ sở dữ liệu quan hệ; Tối ưu hóa câu hỏi. Mời các bạn cùng tham khảo!

Trang 1

ỦY BAN NHÂN DÂN TỈNH AN GIANG

TRƯỜNG CAO ĐẲNG NGHỀ AN GIANG

TRÌNH ĐỘ CAO ĐẲNG NGHỀ & TRUNG CẤP NGHỀ

(Ban hành theo Quyết định số: /QĐ-CĐN ngày tháng năm 20

của Hiệu trưởng trường Cao đẳng nghề An Giang)

Tên tác giả : Trần Thị Kim Ngọc

Năm ban hành: 2018

Trang 3

2

LỜI GIỚI THIỆU

Bài giảng cơ sở dữ liệu được viết nhằm để giảng dạy cho sinh viên chuyên ngành CNTT trường Cao Đẳng Nghề An giang Bài giảng được thiết kế theo chương trình môn học cơ sở dữ liệu của Bộ ban hành theo hệ cao đẳng nghề và trung cấp nghề Bài giảng này bao gồm 6 chương, Trước tiên bài giảng trình bày về các kiến thức cơ bản như: mô hình cơ sở dữ liệu quan hệ, ngôn ngữ dữ liệu SQL và các dạng chuẩn và vấn đề chuẩn hóa Thêm vào đó, cuối chương sẽ có các bài tập tương ứng để sinh viên có thể ôn lại lý thuyết và tùy vào mỗi chương mà có một số bài tập nâng cao để khuyến khích sinh viên tự học và nghiên cứu

Giáo trình này gồm các nội dung chính sau:

Chương 1: Tổng quan về cơ sở dữ liệu

Chương 2: Mô hình cơ sở dữ liệu quan hệ

Chương 3: Ngôn ngữ dữ liệu SQL

Chương 4: Ràng buộc toàn vẹn và phụ thuộc hàm

Chương 5: Dạng chuẩn và chuẩn hóa lược đồ cơ sở dữ liệu quan hệ

Chương 6: Tối ưu hóa câu hỏi

Trong quá trình biên soạn, mặc dù đã cố gắng tham khảo nhiều tài liệu và giáo trình khác nhưng tác giả không khỏi tránh được những thiếu sót và hạn chế Tác giả chân thành mong đợi những nhận xét, đánh giá và góp ý để cuốn giáo trình ngày một hoàn thiện hơn

Cuốn tài liệu giảng dạy này vẫn còn nhiều thiếu sót và hạn chế Rất mong nhận được ý kiến đóng góp của sinh viên và các bạn đọc để bài giảng ngày càng hoàn thiện hơn

Chân thành cảm ơn qu ý Thầy Cô trong Hội đồng thẩm định của trường Cao Đẳng Nghề An Giang để bài giảng cơ sở dữ liệu được hoàn chỉnh

An Giang, ngày tháng năm 2018

Tham gia biên soạn

Trần Thị Kim Ngọc

Trang 4

II Các lệnh liên quan đến cấu trúc của cơ sở dữ liệu 26

CHƯƠNG IV RÀNG BUỘC TOÀN VẸN VÀ PHỤ THUỘC HÀM 51

I Các vấn đề liên quan đến ràng buộc toàn vẹn 51

I Các nguyên tắc tổng quát để tối ưu hóa câu hỏi 86

II Ví dụ một thuật toán tối ưu hóa biểu thức quan hệ 87 III Thuật toán tối ưu hóa câu hỏi trong ngôn ngữ Đại số quan hệ 89

Trang 5

4

GIÁO TRÌNH MÔN HỌC CƠ SỞ DỮ LIỆU

Tên môn học: CƠ SỞ DỮ LIỆU

Mã số môn học: MH 10

Vị trí, tính chất, ý nghĩa và vai trò của môn học:

- Vị trí: Thuộc nhóm môn cơ sở Được bố trí sau các môn: toán cho tin học

và tin học căn bản

- Tính chất: Là môn học chuyên môn nghề bắt buộc, là nền tảng để HSSV có thể thiết kế cơ sở dữ liệu xây dựng ứng dụng và học các môn học mô đun liên quan

-Ý nghĩa và vai trò của môn học: giúp các em có kiến thức cơ bản về xây dựng cơ sở dữ liệu làm nền tảng cho các môn học sau

Mục tiêu của môn học:

- Về kiến thức

 Trình bày được các bước, ý nghĩa của việc thiết kế cơ sở dữ liệu

 Trình bày được các khái niệm về cơ sở dữ liệu như: khóa, lược đồ quan

hệ, phụ thuộc hàm,

 Ghi nhớ được các ngôn ngữ thao tác dữ liệu, ngôn ngữ truy vấn dữ liệu SQL

- Về kỹ năng

 Xây dựng được các mô hình quan hệ

 Thiết kế được cơ sở dữ liệu

 Phân tích được chương trình: xác định nhiệm vụ chương trình (phải làm gì)

- Về năng lực tự chủ và trách nhiệm

 Nghiêm túc trong học tập và thực hiện tốt các yêu cầu được giao

 Luôn động não suy nghĩ Thường xuyên luyện tập tư duy trong việc học

 Thực hiện học tập và thực hành nhóm

Trang 6

Để dễ dàng cho việc giải thích các khái niệm, trước tiên ta hãy thử xem xét

hệ thống bán vé máy bay bằng máy tính Dữ liệu lưu trữ trong máy tính bao gồm thông tin về hành khách, chuyến bay, đường bay… Mọi thông tin về mối quan hệ này được biểu diễn trong máy thông qua việc đặt chỗ của khách hàng Vậy làm thế nào để biểu diễn được dữ liệu đó và đảm bảo cho hành khách đi đúng chuyến? Dữ liệu nêu trên được lưu trữ trong máy theo một quy định nào đó và được gọi là cơ

sở dữ liệu

Như vậy, cơ sở dữ liệu là tập hợp các thông tin có quan hệ với nhau được lưu trữ trong máy tính theo một quy định nhất định nhằm phục vụ cho một mục đích nào đó

2 Hệ quản trị cơ sở dữ liệu (Database Management System):

Hệ quản trị cơ sở dữ liệu là hệ thống các chương trình nhằm tạo lập, xử lý, thay đổi, quản lý và khai thác các cơ sở dữ liệu

Một số hệ quản trị cơ sở dữ liệu hiện nay: Foxpro, Access, Oracale, … với các phiên bản khác nhau Có hai đặc điểm để phân biệt một hệ quản trị cơ sở dữ liệu với các hệ thống lập trình khác:

(1) Khả năng quản lý những dữ liệu cố định

(2) Khả năng truy xuất có hiệu quả một số lượng lớn dữ liệu

Điểm (1) khẳng định rằng có một cơ sở dữ liệu tồn tại thường xuyên và nội dung của cơ sở dữ liệu này là những dữ liệu được hệ quản trị cơ sở dữ liệu truy xuất và quản lý Điểm (2) phân biệt một hệ quản trị cơ sở dữ liệu với một hệ thống quản lý tập tin cùng quản lý dữ liệu cố định nhưng nói chung không cho phép truy xuất nhanh chóng các thành phần tùy ý của dữ liệu Ngòai ra, còn có một số khả năng khác thường gặp trong các hệ quản trị cơ sở dữ liệu trên thị trường:

Trang 7

6

+ Hệ quản trị cơ sở dữ liệu hổ trợ ít nhất một mô hình dữ liệu, nhờ đó người

sử dụng có thể xem được dữ liệu

+ Hệ quản trị cơ sở dữ liệu hổ trợ một số ngôn ngữ bậc cao cho phép người

sử dụng định nghĩa các cấu trúc dữ liệu, truy xuất dữ liệu và thao tác dữ liệu

+ Hệ quản trị cơ sở dữ liệu quản lý các giao dịch, nghĩa là cho phép nhiều người sử dụng truy xuất đồng thời và chính xác đến một cơ sở dữ liệu

+ Hệ quản trị cơ sở dữ liệu điều khiển quá trình truy xuất, là khả năng giới hạn các quá trình truy xuất dữ liệu của những người không được phép và khả năng kiểm tra độ tin cậy của dữ liệu

+ Hệ quản trị cơ sở dữ liệu có khả năng tự thích ứng là khả năng phục hồi lại

dữ liệu do sự cố của hệ thống mà làm mất dữ liệu

II CÁC MÔ HÌNH DỮ LIỆU:

Phân loại các mô hình:

Phân cấp Mạng Quan hệ Thực thể - liên kết Ngữ nghĩa

Đối tượng – Quan hệ Hướng đối tượng

Các mô hình dựa trên bản ghi

Các mô hình dựa trên đối tượng

Thế hệ 1

Thế hệ 2

Thế hệ 3

Trang 8

7

1 Mô hình mạng (Network model):

Là mô hình thực thể liên hệ trong đó các mối liên hệ bị hạn chế trong kiểu nhị phân (hai thực thể) và nhiều - một hoặc một - một và được biểu diễn bởi một

2 Mô hình phân cấp (Hierachical model):

Là mô hình mạng có nhiều cây trong đó tất cả các đường nối chỉ đi theo hướng từ con đến cha

- Ưu điểm: Dễ xây dựng và thao tác, tương thích với các lĩnh vực tổ chức phân cấp (vd: tổ chức nhân sự trong các đơn vị, ), ngôn ngữ thao tác đơn giản (duyệt cây)

- Nhược điểm: Sự lặp lại của các kiểu bản ghi → dư thừa dữ liệu và dữ liệu không nhất quán , hạn chế trong biểu diễn ngữ nghĩa của các móc nối giữa các bản ghi (chỉ cho phép quan hệ 1-n)

3 Mô hình quan hệ (Relation model):

Là mô hình dựa vào ký hiệu là tập các tên và cơ sở toán học của nó là các phép toán tập hợp và ánh xạ Nó là mô hình phổ biến hiện nay Tập các phép toán trong mô hình này dựa trên hai hệ ký hiệu: hệ ký hiệu đại số và hệ ký hiệu logic

Trang 9

8

LOP

IT4 Tin 4 CNTT Ng.V.Anh Trần.T.Bình IT5 Tin 5 CNTT Lê A.Văn Ng.Đ.Trung IT6 Tin 6 CNTT Ng.T.Thảo Trần.M.Quế

SINHVIEN

SV0011 Trần T.Bình 1/4/1981 0 21 T.Q.B IT4 SV0025 Ng.Đ.Trung 3/2/1980 1 56 Đ.C.V IT5 SV0067 Trần M.Quế 26/3/1982 0 45 H.B.T IT6

- Ưu điểm: Dựa trên lý thuyết tập hợp, khả năng tối ưu hoá các xử lý phong phú

- Nhược điểm: Hạn chế trong biểu diễn ngữ nghĩa, cấu trúc dữ liệu không linh hoạt

4 Mô hình thực thể liên kết (Entity Relationship model):

Là mô hình cho phép mô tả các thực thể thông qua các thuộc tính và mối liên hệ giữa các thực thể Một trong các cách biểu thị mô hình thực thể là dùng đồ thị, sơ đồ khối

- Ưu điểm: Dễ dàng biểu diễn cái mà con người nhận thức từ thế giới thực, biểu diễn ngữ nghĩa phong phú của các thực thể và quan hệ giữa các thực thể

Trang 10

9

- Nhược điểm: Không dễ dàng ánh xạ vào những cấu trúc lưu trữ trên máy tính

* Mô hình hóa dữ liệu: Dựa trên các khái niệm chính

+ Thực thể: một đối tượng trong thế giới thực

+ Tập thực thể: các thực thể có cùng các tính chất

+ Thuộc tính: một đặc tính của một tập thực thể

+ Khoá:xác định sự duy nhất của 1 thực thể

+ Liên kết: mối liên hệ có nghĩa giữa nhiều thực thể

1-1: Liên kết 1 thực thể của một tập thực thể với nhiều nhất 1 thực thể của tập thực thể khác

1-n: Liên kết 1 thực thể của một tập thực thể với nhiều thực thể của tập thực thể khác

n-m: Liên kết 1 thực thể của một tập thực thể với nhiều thực thể của tập thực thể khác và ngược lại

đệ quy: Liên kết giữa các thực thể cùng kiểu

+ Tập liên kết: tập hợp các liên kết cùng kiểu

Trang 11

10

Là mô hình cung cấp đặc tính nhận dạng đối tượng Trong đó mỗi lớp đối tượng được đặc trưng bởi hai yếu tố:

+ Tập các thuộc tính (properties) để nhận dạng đối tượng

+ Tập các phương thức (methods) để thao tác với đối tượng

void gan_DC(string DC_moi);

void gan_lop(string lop);

Công ty được tổ chức bởi các phòng ban Mỗi phòng ban có 1 tên duy nhất,

1 số duy nhất và 1 người quản lý (thời điểm bắt đầu công tác quản lý của người này cũng được lưu lại trong CSDL)

Mỗi phòng ban có thể có nhiều trụ sở làm việc khác nhau Mỗi phòng điều phối một số dự án Mỗi dự án có 1 tên và 1 mã số duy nhất, thực hiện tại một địa điểm duy nhất

Trang 12

11

Các thông tin về nhân viên cần được quan tâm gồm: tên, số bảo hiểm, địa chỉ, lương, giới tính, ngày sinh Mỗi nhân viên làm việc tại một phòng ban nhưng

có thể tham gia nhiều dự án khác nhau

Những dự án này có thể được điều phối bởi các phòng ban khác nhau Thông tin về số giờ làm việc trong từng dự án (theo tuần) cũng như người quản lý trực tiếp của các nhân viên cũng được lưu trữ

Thông tin về con cái của từng nhân viên: tên, giới tính, ngày sinh

Trang 13

Các thuộc tính được phân biệt qua tên gọi và phải thuộc vào một kiểu dữ liệu nhất định (số, chuỗi, ngày tháng, logic, hình ảnh,…) Kiểu dữ liệu ở đây là kiểu đơn Trong cùng một đối tượng không có hai thuộc tính cùng tên Thông thường mỗi thuộc tính chỉ chọn lấy giá trị trong một tập con của kiểu dữ liệu và tập hợp con đó gọi là miền giá trị của thuộc tính đó Thuộc tính ngày trong tháng thì có kiểu dữ liệu là số nguyên, miền giá trị của nó là 1 đến (tối đa là) 31 Hoặc điểm thi của sinh viên chỉ là các số nguyên từ 0 đến 10

Thường người ta dùng các chữ cái hoa A,B,C,… để biểu diễn các thuộc tính, hoặc A1,A2,…., An để biểu diễn một số lượng lớn các thuộc tính

2 Quan hệ (Relation):

Sự thể hiện của lược đồ quan hệ Q ở một thời điểm nào đó được gọi là quan

hệ, rõ ràng là trên một lược đồ quan hệ có thể định nghĩa rất nhiều quan hệ Thường ta dùng các ký hiệu như R, S, Q để chỉ các lược đồ quan hệ, còn quan hệ được định nghĩa trên nó tương ứng được ký hiệu là là r, s, q

3 Bộ giá trị (Tuple):

Bộ là tập mỗi giá trị liên quan của tất cả các thuộc tính của một lược đồ quan

hệ

Chẳng hạn quan hệ sau có 2 bộ

Trang 14

rSv

99004 NGUYEN NGOC THUAN FALSE 24-12-1980 CĐTH2B CA MAU

99008 TRUONG KIM QUANG FALSE 15-05-1979 CĐTH2B HA NOI

99014 TRAN QUANG CUONG FALSE 30-05-1981 CĐĐT2 DONG THAP 120000

Trang 15

14

99022 TRAN PHUOC QUYEN FALSE 12-12-1979 CĐTH2B BAC LIEU 60000

INTER CAC DICH VU INTERNET 45

rLop

TCTH29C TRUNG CAP TIN HOC KHOA 29C 121 CNTT

Trang 16

4 Lược đồ quan hệ (Relation Schema):

Tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với mối liên hệ giữa chúng được gọi là lược đồ quan hệ Lược đồ quan hệ Q với tập thuộc tính {A1,A2, ,An} được viết là Q(A1,A2, ,An) Tập các thuộc tính của Q được ký hiệu là Q+ Chẳng hạn lược đồ quan hệ sinh viên (Đặt tên là Sv) với các thuộc tính như trên là:

Sv(MASV, HOSV,TENSV,NU, NGAYSINH, MALOP, HOCBONG, TINH)

Thường khi thành lập một lược đồ, người thiết kế luôn gắn cho nó một ý nghĩa nhất định, ý nghĩa đó gọi là tân từ của lược đồ quan hệ đó Dựa vào tân từ người ta xác định được tập thuộc tính khóa của lược đồ quan hệ (khái niệm khoá sẽ được trình bày ở phần sau)

Trang 17

Nhiều lƣợc đồ quan hệ cùng nằm trong một hệ thống quản lý đƣợc gọi là một lƣợc đồ cơ sở dữ liệu

Ví dụ 2.1: Lƣợc đồ cơ sở dữ liệu để quản lý điểm sinh viên có thể gồm các

Mh(MAMH, TENMH, SOTIET)

Kq(MASV, MAMH, DIEMTHI)

Phần giải thích các thuộc tính:

HOTEN Tên sinh viên

TENKHOA Tên khoa

SOCBGD Số cán bộ giảng dạy

Trang 18

17

DIEMTHI Điểm thi

5 Thể hiện của quan hệ:

Quan hệ r là một thể hiện (relation instance) của lược đồ quan hệ tại một thời điểm

6 Khóa – siêu khóa – khóa chỉ định – khóa chính – khóa ngoại:

Cho lược đồ quan hệ R, SR S được gọi là một siêu khóa (superkey) của lược đồ quan hệ R nếu với hai bộ tùy ý trong quan hệ R thì giá trị của các thuộc tính trong S là khác nhau

Một lược đồ quan hệ có thể có nhiều siêu khoá Siêu khoá chứa ít thuộc tính nhất được gọi là khóa chỉ định, trong trường hợp lược đồ quan hệ có nhiều khóa chỉ định, thì khóa được chọn để cài đặt gọi là khóa chính (Primary key) (trong các phần sau khóa chính được gọi tắt là khóa)

Các thuộc tính tham gia vào một khóa được gọi là thuộc tính khóa (prime key), ngược lại được gọi là thuộc tính không khóa (non prime key)

Một thuộc tính được gọi là khóa ngoại nếu nó là thuộc tính của một lược đồ quan hệ này nhưng lại là khóa chính của lược đồ quan hệ khác

Ví dụ 2.2: Ta hãy xem lược đồ quan hệ sau:

Xe(SODANGBO, QUICACH, HINHDANG, MAUSAC, SOSUON, SOMAY, MAXE, QUOCGIA)

Siêu khóa: (SOSUON,QUICACH),

Khóa chỉ định: (SODANGBO,QUOCGIA), (SOSUON), (SOMAY), (MAXE)

7 Phụ thuộc hàm (Functional dependendies):

Là công cụ để biểu diễn 1 số ràng buộc toàn vẹn

8 Ràng buộc toàn vẹn (Intergrity constraints):

Ràng buộc toàn vẹn sử dụng các luật để định nghĩa các điều kiện đảm bảo cho cơ sở dữ liệu luôn ở trạng thái an toàn Chúng quyết định các trạng thái và các

Trang 19

18

biến đổi hợp lệ của cơ sở dữ liệu Ràng buộc toàn vẹn được dùng để ngăn chặn việc đưa các dữ liệu không hợp lệ vào cơ sở dữ liệu để cơ sở dữ liệu luôn an toàn trong điều kiện đó Do đó 1 ràng buộc toàn vẹn là một yêu cầu chặt chẽ mà phải được đảm bảo đúng sau mỗi thao tác cập nhật cơ sở dữ liệu

Các phép cập nhật trên cơ sở dữ liệu không nên được thực hiện một cách tùy tiện, có thể đưa cơ sở dữ liệu đến một tình trạng “xấu”, không còn phản ánh đúng thế giới thực mà nó đại diện Các phép cập nhật trên cơ sở dữ liệu phải tuân thủ theo một số quy tắc ràng buộc nhất định Các quy tắc ràng buộc này được gọi là ràng buộc toàn vẹn

Ví dụ: Mức lương nhân viên không được vượt quá trưởng phòng

9 Các thao tác cơ bản trên các quan hệ:

Người ta có thể truy cập dữ liệu trong cơ sở dữ liệu quan hệ thông qua đại số quan hệ, gồm một số phép toán cơ bản và phép toán dẫn xuất

II CÁC PHÉP TOÁN TRÊN ĐẠI SỐ TẬP HỢP:

1 Phép hợp (Union operation):

Cho hai lược đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1,A2, ,An} r1

và r2 lần lượt là hai quan hệ trên Q1 và Q2 Phép hợp của hai lược đồ quan hệ Q1

và Q2 sẽ tạo thành một lược đồ quan hệ Q3 Q3 được xác định như sau:

Cho hai lược đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1,A2, ,An} r1

và r2 lần lượt là hai quan hệ trên Q1 và Q2 Phép giao của hai lược đồ quan hệ Q1

và Q2 sẽ tạo thành một lược đồ quan hệ Q3 như sau:

Trang 20

Cho hai lƣợc đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1,A2, ,An} r1

và r2 lần lƣợt là hai quan hệ trên Q1 và Q2 Phép trừ lƣợc đồ quan hệ Q1 cho Q2

sẽ tạo thành một lƣợc đồ quan hệ Q3 nhƣ sau:

4 Phép tích Đề các (Cartesian Product, product):

Cho hai lƣợc đồ quan hệ Q1(A1,A2, ,An), Q2(B1,B2, ,Bm) r1 và r2 lần lƣợt là hai quan hệ trên Q1 và Q2 Tích Descartes của hai lƣợc đồ quan hệ Q1 và Q2 sẽ tạo thành một lƣợc đồ quan hệ Q3 nhƣ sau:

Q3 = Q1  Q2 = {A1, , B1, }

r3 = r1 x r2 = {(t1,t2)| t1  r1 và t2  r2}

Ví dụ 2.6:

Trang 22

21

III CÁC PHÉP TOÁN TRÊN ĐẠI SỐ QUAN HỆ:

1 Phép chiếu (Projection):

Cho một lƣợc đồ quan hệ Q(A1,A2, ,An) r là quan hệ trên Q X  Q

Phép chiếu của Q lên tập thuộc tính X sẽ tạo thành lƣợc đồ quan hệ Q‟= Q[X], trong đó Q‟ chính là X và r‟ chính là r nhƣng chỉ lấy các thuộc tính của X

Phép chọn từ r theo điều kiện E sẽ tạo thành một lƣợc đồ quan hệ Q‟ nhƣ sau:

Q‟ = Q

r‟= r(E)= r:E ={t | t  r và t(E)}

Phép chọn chính là phép rút trích dữ liệu theo dòng (chiều ngang)

Trang 23

22

3 Phép kết nối (join):

Cho hai lƣợc đồ quan hệ Q1(A1,A2, ,An), Q2(B1,B2, ,Bm) r1 và r2 lần lƣợt là hai quan hệ trên Q1 và Q2 Ai và Bj lần lƣợt là các thuộc tính của Q1 và Q2 sao cho MGT(AI) = MGT(BJ) (MGT: miền giá trị).θ? là một phép so sánh trên MGT(AI)

Phép kết giữa Q1 và Q2 sẽ tạo thành một lƣợc đồ quan hệ Q3 nhƣ sau:

Q3 = Q1  Q2 , r3 =

= {t12 | t1 € r1, t2 € r2 sao cho t12.Q1+ = t1

Ví dụ 2.11: Với Ai ≡ Bj = MAMH

Trang 24

- LEFT OUTER JOIN: mở rộng bên trái, ký hiệu: ¯|><|

- RIGHT OUTER JOIN: mở rộng bên trái, ký hiệu: |><|¯

- FULL OUTER JOIN: mở rộng bên trái, ký hiệu: ¯|><|¯

Bài tập:

Bài 1:

Cho lƣợc đồ cơ sở dữ liệu

Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH, TINH, MALOP)

Lop(MALOP, TENLOP, MAKHOA)

Khoa(MAKHOA,TENKHOA)

Monhoc(MAMH, TENMH, DONVIHT)

Giangvien(MAGV, HOTENGV, HOCVI, CHUYENNGANH, MAKHOA) Ketqua(MASV, MAMH, LANTHI, DIEMTHI)

Phancong(MALOP, MAMH, MAGV)

Trang 25

24

Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ:

a Lập danh sách những sinh viên có hộ khẩu thường trú ở tỉnh “LONG AN”, danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TENLOP

b Lập danh sách các sinh viên của lớp có MALOP là CDTH2A, danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TINH

c Lập danh sách các giảng viên có cấp học vị là THAC SY của khoa có MAKHOA là “CNTT”, danh sách cần: MAGV,HOTENGV, CHUYENNGANH

d Lập bảng điểm thi lần 1 môn học “869” cho tất cả sinh viên thuộc hai lớp

có MALOP là “CĐTH2A” và “CĐTH2B”, danh sách cần: MASV,HOTENSV,DIEMTHI

e Lập danh sách các giảng viên đã dạy lớp CĐTH2A, danh sách cần các thông tin: MAGV, HOTENGV, TENKHOA, HOCVI, TENMH

f Lập danh sách các môn mà lớp CDTH2A đã học, danh sách cần các thông tin: MAMH, TENMH, DONVIHT, HOTENGV

g Lập danh sách những giảng viên đã dạy sinh viên có MASV là

“00CDTH189“, danh sách cần MAGV, HOTENGV, HOCVI, CHUYENNGANH, TENKHOA, TENMH

h Lập danh sách các sinh viên có mã khoa “CNTT” có điểm thi lần 1 môn học “869” lớn hơn hoặc bằng 8, danh sách cần MASV, HOTENSV, DIEMTHI, TENLOP

Bài 2:

Cho lược đồ cơ sở dữ liệu dùng để quản lý hồ sơ sinh viên bao gồm các quan hệ Sv(sinh viên), Lop(Lớp), kh(khoa), Mh(môn học), Kq(kết quả) được mô tả bởi các lược đồ quan hệ như sau:

Tân từ: Mỗi khoa có mỗi MAKHOA duy nhất Mỗi MAKHOA xác định tất

cả các thuộc tính còn lại của khoa đó

Trang 26

a Lập danh sách sinh viên gồm MASV, HOTEN, HOCBONG

b Lập danh sách sinh viên nữ khoa „CNTT‟,danh sách cần MASV, HOTEN, HOCBONG

c Lập bảng điểm cho tất cả sinh viên khoa „CNTT‟, bảng điểm gồm các cột MASV, HOTEN, TENMH, DIEMTHI

d Lập phiếu điểm cho sinh viên có MASV=”99001”

e Lập danh sách sinh viên gồm MASV,HOTEN,TENLOP, TENKHOA

f Lập bảng điểm môn học có mã môn học là CSDL cho tất cả sinh viên có

mã lớp là “CĐTH2B”

g Lập danh sách sinh viên của lớp có mã lớp là “CĐTH2B” và có điểm thi môn học lớn hơn hay bằng 8

Trang 27

Đây là ngôn ngữ con dữ liệu quan hệ được xác nhận là rất mạnh, phổ dụng

và lại dễ sử dụng SQL được phát triển từ ngôn ngữ SEQUEL-2, thử nghiệm và cài đặt tại trung tâm nghiên cứu của hãng IBM ở San Jose, California cho hệ thống QTCSDL lớn điển hình là System – R Trong System – R, SQL vừa đóng vai trò là một ngôn ngữ định nghĩa dữ liệu – DDL vừa là ngôn ngữ thao tác dữ liệu –DML SQL là một ngôn ngữ phi thủ tục, chuẩn mực và điển hình Do vậy, hiện nay rất nhiều sản phẩm phần mềm thương mại đều được cài đặt SQL như Oracle, Visual Foxpro, Visual Basic, Access… Trong tài liệu này sẽ trình bày các khả năng của ngôn ngữ, đồng thời cung cấp thêm kinh nghiệm và cách nhìn các hệ QTCSDL tạm gọi là “kinh điển”

Phép toán cơ bản trong SQL là phép ánh xạ, được miêu tả như một khối select – from – where Các mệnh đề của ngôn ngữ SQL sẽ được trình bày chi tiết bằng các ví dụ Các thuật ngữ trong cơ sở dữ liệu quan hệ như quan hệ, thuộc tính, bộ… được thay thế bằng các thuật ngữ như bảng (table), cột (column), bản ghi (record) hoặc hàng (row) để phù hợp với ý nghĩa của các hệ mềm này

II CÁC LỆNH LIÊN QUAN ĐẾN CẤU TRÚC CỦA CƠ SỞ DỮ LIỆU:

1 Lệnh định nghĩa cấu trúc bảng:

Mệnh đề tạo bảng có dạng tổng quát như sau:

CREATE TABLE <tên_bảng>

Trang 28

- Kiểu_dữ_liệu: Trong mệnh đề create table dùng một số kiểu dữ liệu nhƣ sau:

+ Kiểu chuỗi + Kiểu số + Kiểu ngày tháng + Kiểu luận lý Tùy theo hệ quản trị cơ sở dữ liệu cơ sở dữ liệu , sẽ có tên gọi cụ thể cho từng kiểu dữ liệu

Ngoài ra khi khai báo các cột có thể bổ sung một số từ khóa:

PRIMARY KEY: Khai báo cột là khóa chính trong bảng

UNIQUE: Khai báo cột có giá trị là duy nhất (các dòng khác nhau có giá trị tại cột này khác nhau)

DEFAULT: Khai báo giá trị mặc định cho cột

NOT NULL: Khai báo cột không đƣợc chứa giá trị rỗng

Ví dụ 3.1:

Tạo bảng SINHVIEN (MASV, HOTEN, NAM, KHOA)

CREATE TABLE SINHVIEN

(

MASV CHAR(10) PRIMARY KEY, HOTEN CHAR(30) NOT NULL, NAM INTEGER DEFAUL 1, KHOA CHAR(10)

)

Trong bảng SINHVIEN nhƣ định nghĩa trên, cột MASV là khóa chính (từ khóa PRIMARY KEY), cột HOTEN bắt buộc phải có giá trị (NOT NULL) và cột NAM có giá trị mặc định là 1

Trang 29

28

Lệnh trên chỉ là lệnh định nghĩa cấu trúc bảng đơn giản nhất là khai báo các cột trong bảng Ngoài ra, trong bảng còn có các ràng buộc toàn vẹn mà ta cần khai báo và định nghĩa một cách chính xác và đầy đủ

2 Khai báo ràng buộc toàn vẹn:

a Khai báo ràng buộc khóa chính:

Tạo bảng MONHOC (MAMH, TENMH, TINCHI, KHOA)

CREATE TABLE MONHOC

(

MAMH CHAR(10) PRIMARY KEY, TEN_MH CHAR(30) NOT NULL, TINCHI INT,

KHOA CHAR(10) )

Cách 2: (có thể khai báo trong trường hợp khóa chính có nhiều cột)

CREATE TABLE <tên_bảng>

(

<tên_cột 1> <kiểu_dữ_liệu 1> (<kích thước 1>),

<tên_cột 2> <kiểu_dữ_liệu 2> (<kích thước 2>),

Trang 30

KHOA CHAR(10), PRIMARY KEY (MAMH) )

Cách 3: (đây là cách tổng quát nhất để khai báo khóa chính, cách này cho phép đặt tên cho khóa, có thể khai báo trong trường hợp khóa chính có nhiều cột)

CREATE TABLE <tên_bảng>

Trang 31

30

(

MAMH CHAR(10) , TEN_MH CHAR(30) NOT NULL, TINCHI INT,

KHOA CHAR(10), CONSTRAINT mh_pk PRIMARY KEY (MAMH) )

b Khai báo ràng buộc khóa ngoại:

Tạo bảng DIEUKIEN (MAMH, MAMHTRUOC)

Trong đó, cả 2 cột (MAMH, MAMHTRUOC) là khóa chính, từng cột MAMH và MAMHTRUOC đều là khóa ngoại tham chiếu đến cột MAMH trong bảng MONHOC

CREATE TABLE DIEUKIEN

(

MAMH CHAR(10) REFERENCES MONHOC (MAMH), MAMHTRUOC CHAR(10)

REFERENCES MONHOC (MAMH),

Trang 32

Tạo bảng DIEUKIEN (MAMH, MAMHTRUOC)

CREATE TABLE DIEUKIEN

(

MAMH CHAR(10), MAMHTRUOC CHAR(10), PRIMARY KEY (MAMH, MAMHTRUOC), CONSTRAINT dk_mh_fk1 FOREIGN KEY (MAMH) REFERENCES MONHOC (MAMH),

CONSTRAINT dk_mh_fk2 FOREIGN KEY (MAMHTRUOC) REFERENCES MONHOC (MAMH)

)

Ví dụ 3.7:

Tạo bảng KHOAHOC (MAKH, MAMH, HOCKY, NAM, GV)

CREATE TABLE KHOAHOC

Trang 33

GV CHAR(20), CONSTRAINT kh_mh_fk1 FOREIGN KEY (MAMH) REFERENCES MONHOC (MAMH)

CREATE TABLE KETQUA

(

MASV CHAR(10), MAKH INT,

Trang 34

Tạo bảng KETQUA (MASV, MAKH, DIEM)

CREATE TABLE KETQUA

(

MASV CHAR(10), MAKH INT,

DIEM INT, PRIMARY KEY (MASV, MAKH), CONSTRAINT kq_kh_fk FOREIGN KEY (MAKH) REFERENCES KHOAHOC (MAKH),

CONSTRAINT kq_chk CHECK (DIEM>=0 AND DIEM<=10) )

3 Sửa đổi cấu trúc bảng:

a Bổ sung thêm cột mới:

Trang 35

34

Cú pháp:

ALTER TABLE <tên bảng>

ADD <tên cột><kiểu dữ liệu>(<kích thước>)[<RBTV>]

Ví dụ 3.10:

Thêm cột ngày thi vào bảng kết quả ở ví dụ trên:

ALTER TABLE KETQUA

ADD NGAYTHI DATE

b Sửa định nghĩa cột:

Cú pháp:

ALTER TABLE <tên bảng>

ALTER COLUMN <tên cột> <kiểu dữ liệu mới>(<kích thước>) [NULL]

Ví dụ 3.11:

Trong bảng kết quả ở ví dụ 3.10, ta khai báo kiểu dữ liệu của cột điểm là INT, giờ ta sửa lại thành kiểu dữ liệu FLOAT

ALTER TABLE KETQUA

ALTER COLUMN DIEM float NULL

c Thêm một ràng buộc tòan vẹn:

Cú pháp:

ALTER TABLE <tên bảng>

ADD CONSTRAINT <tên constraint> <LOẠI CONSTRAINT>…

Ví dụ 3.12:

Xét bảng khóa học trong ví dụ 3.7, giả sử chưa khai báo khóa chính, muốn

bổ sung ràng buộc khóa chính, thực hiện lệnh sau:

ALTER TABLE KHOAHOC

ADD CONSTRAINT kh_pk PRIMARY KEY (MAKH) Giả sử bảng này chưa khai báo ràng buộc khóa ngoại, muốn bổ sung ràng buộc này, thực hiện lệnh sau:

ALTER TABLE KHOAHOC

ADD CONSTRAINT kh_mh_fk FOREIGN KEY (MAMH) REFERENCES MONHOC (MAMH)

Trang 36

35

d Hủy bỏ một ràng buộc tòan vẹn ra khỏi bảng:

Cú pháp:

ALTER TABLE <tên bảng>

DROP CONSTRAINT <tên RBTV>

Ví dụ 3.13:

Xét bảng điều kiện đƣợc định nghĩa trong ví dụ 3.6, ta có 2 RBTV khóa ngoại có tên là dk_mh_fk1 và dk_mh_fk2, muốn hủy 2 RBTV này, thực hịên lệnh sau:

ALTER TABLE DIEUKIEN

tự đặt cho các khóa này của ta 1 cái tên, để biết đƣợc tên này ta dùng lệnh xem cấu trúc bảng sp_help <tên bảng> để xem tên của các ràng buộc này (giả sử là f1 và f2), sau đó ta thực hiện lệnh xóa nhƣ sau:

ALTER TABLE ĐIEUKIEN

DROP CONSTRAINT f1

ALTER TABLE ĐIEUKIEN

DROP CONSTRAINT f2

e Hủy bỏ 1 bảng ra khỏi cơ sở dữ liệu:

DROP TABLE <tên bảng>

Ví dụ 3.15: Xóa bảng kết quả

DROP TABLE KETQUA

III CÁC LỆNH CẬP NHẬT CƠ SỞ DỮ LIỆU:

1 Thêm dữ liệu:

a Thêm trực tiếp một bộ giá trị:

Cú pháp:

Trang 37

36

INSERT INTO <tên bảng> [<tên cột 1>,…<tên cột n>)]

VALUES (<biểu thức1>,… <biểu thức n>) Lưu ý:

Nếu cột được khai báo kiểu dữ liệu chuỗi hoặc kiểu ngày thì khi nhập dữ liệu, giá trị của cột phải được đặt trong dấu nháy đơn („ ‟), nếu cột được khai báo kiểu dữ liệu số giá trị để bình thường

Ví dụ 3.16:

Thêm dòng dữ liệu vào bảng SINHVIEN

INSERT INTO SINHVIEN

VALUES („TH1‟,‟Trần Mai Phương‟, 1,‟CNTT‟)

b Thêm một hay nhiều bộ giá trị từ bảng có sẵn:

Cú pháp:

INSERT INTO <tên bảng> [<tên cột 1>,…,<tên cột i>)]

SELECT <biểu thức 1>,…,<biểu thức i>

FROM <danh sách các bảng nguồn>

[WHERE <điều kiện>]

[ORDER BY <cột 1>[ASC/DESC],…,<cột i>[ASC/DESC]]

[GROUP BY <danh sách các cột phân nhóm>]

[HAVING <điều kiện trên nhóm>]

Trang 38

37

INTO <tên bảng mới>

FROM <danh sách các bảng nguồn>

[WHERE <điều kiện>]

[ORDER BY <cột 1>[ASC/DESC],…,<cột i>[ASC/DESC]]

[GROUP BY <danh sách các cột phân nhóm>]

[HAVING <điều kiện trên nhóm>]

DELETE FROM <tên bảng>

[WHERE <điều kiện>]

Ví dụ 3.20:

Trang 39

38

Xóa 1 dòng dữ liệu: xóa SV có MASV=‟TH4‟

DELETE FROM SINHVIEN

WHERE MASV=‟TH4‟

Xóa toàn bộ dữ liệu trong bảng kết quả

DELETE FROM KETQUA

IV CÁC LỆNH TRUY VẤN CƠ SỞ DỮ LIỆU:

Cú pháp:

SELECT <biểu thức 1>,…,<biểu thức i>

FROM <danh sách các bảng nguồn>

[WHERE <điều kiện>]

[ORDER BY <cột 1>[ASC/DESC],…,<cột i>[ASC/DESC]]

[GROUP BY <danh sách các cột phân nhóm>]

[HAVING <điều kiện trên nhóm>]

Trong đó, ở lệnh ORDER BY:

- ASC: sắp xếp theo thứ tự tăng dần, đây là tùy chọn mặc định

- DESC: sắp xếp theo thứ tự giảm dần

Ví dụ 3.21: Liệt kê danh sách tất cả các sinh viên

SELECT *

FROM SINHVIEN

1 Tìm thông tin từ các cột trong bảng:

SELECT [DISTINCT] * |<biểu thức 1> AS <tên đại diện 1>,…,<biểu thức i> AS <tên đại diện i>

Xem mã số, họ tên của tất cả các sinh viên

SELECT MASV, HOTEN

FROM SINHVIEN

Trang 40

WHERE HOTEN LIKE „%Nguyễn%‟

Lưu ý: Tóan tử LIKE dùng để so sánh chuỗi một cách tương đối, trong đó dấu % được dùng để đại diện cho tất cả các ký tự đứng sau dấu %

Ngày đăng: 30/08/2022, 11:55

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[4] Aho, Hopcroft &amp; Ullman, Data Structures and Algorithms,Addison Wesley, 2001 Sách, tạp chí
Tiêu đề: Data Structures and Algorithms
Tác giả: Alfred Vaino Aho, John E. Hopcroft, Jeffrey D. Ullman
Nhà XB: Addison-Wesley
Năm: 2001
[5] Robert Sedewick, Algorithms in Java Third Edition,Addison Wesley, 2002 Sách, tạp chí
Tiêu đề: Algorithms in Java Third Edition
[6] Niklaus Wirth, Data Structures and Algorithms,Prentice Hall, 2004 Sách, tạp chí
Tiêu đề: Data Structures and Algorithms
Tác giả: Niklaus Wirth
Nhà XB: Prentice Hall
Năm: 2004
[7] Robert Sedewick, Algorithms,Addison Wesley, 1983 Sách, tạp chí
Tiêu đề: Algorithms
[8] Bruno R. Preiss, Data Structures and Algorithms with Object-Oriented Design, Jon Wiley &amp; Sons, 1998 Sách, tạp chí
Tiêu đề: Data Structures and Algorithms with Object-Oriented Design, Jon Wiley & Sons
[1] Nhập môn cơ sở dữ liệu quan hệ - nhà xuất bản khoa học và kỹ thuật – năm 2002 Khác
[2] Cơ sở dữ liệu – Phương Lan, Nguyễn Thiên Băng – nhà xuất bản lao động và xã hội – Năm 2005 Khác
[3] Giáo trình nhập môn cơ sở dữ liệu – Phương Lan – nhà xuất bản lao động xã hội – năm 2006 Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm