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

Giáo trình Cơ sở dữ liệu (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

83 61 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ngôn ngữ thao tác dữ liệu
Trường học Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Chuyên ngành Kỹ thuật sửa chữa, lắp ráp máy tính
Thể loại Giáo trình
Thành phố Hà Nội
Định dạng
Số trang 83
Dung lượng 915,71 KB

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

Nội dung

(NB) Giáo trình Cơ sở dữ liệu cung cấp cho người học những kiến thức như: Tổng quan về cơ sở dữ liệu; Các mô hình dữ liệu; Mô hình cơ sở dữ liệu quan hệ; Ngôn ngữ thao tác dữ liệu; Ngôn ngữ truy vấn dữ liệu SQL;...Mời các bạn cùng tham khảo nội dung giáo trình phần 2 dưới đây.

Trang 1

Chương 4 Ngôn ngữ thao tác dữ liệu 4.1 Đại số quan hệ

Đại số quan hệ là ngôn ngữ hình thức cho mô hình quan hệ được phát triển trước SQL Đại số quan hệ còn có thể hiểu là tập các thao tác trên mô hình quan

hệ, được sử dụng như là cơ sở cho việc cài đặt và tối ưu các câu lệnh truy vấn Một số khái niệm của đại số quan hệ được tích hợp vào các câu lệnh truy vấn của SQL, do đó việc tìm hiểu về đại số quan hệ là bệ phóng để xây dựng và thực thi các câu lệnh SQL một cách có hiệu quả

Đại số quan hệ được định nghĩa bằng công thức: α = (R, O)

Trong đó:

R: Là các quan hệ trong CSDL hoặc kết hợp với các phép toán quan hệ O: Là tập các phép toán quan hệ với đầu vào là một hoặc nhiều quan hệ để được đầu ra là một quan hệ mới – quan hệ kết quả

Cho quan hệ R(U) và E – biểu thức logic gồm (<, <=, >, >=, ^, ≠, ⌐, v) à Phép chọn ϭ trên quan hệ R theo điều kiện E, kí hiệu ϭE(R) có kết quả là một tập hợp con của R, gồm các bộ t thuộc R thoã điều kiện E

πX(R) = { t / t R ^ t[X] }

πX(R) chỉ gồm các bộ phân biệt – các bộ trùng nhau trong kết quả chỉ giữ lại một

Trang 2

ᵽS(A1, A2,…An)(R): Đặt lại tên quan hệ và thuộc tính

ᵽS(R) : Đặt lại tên quan hệ và giữ nguyên các thuộc tính

Ví dụ:

ᵽS(πMSSV, hoten(SINHVIEN) )

ᵽS(ma, ten) (πMSSV, hoten(SINHVIEN) ) à MSSV, hoten được đặt lại là

ma, ten

Thêm nữa, chúng ta có phép toán trên tập hợp

Các phép toán trên tập hợp: Bao gồm giao, hợp, trừ - và chỉ sử dụng được khi đó là 2 quan hệ tương thích (hai quan hệ cùng bậc và các thuộc tính thư j có cùng miền giá trị)

Phép hợp: Hợp của hai quan hệ tương thích R và S gồm các bộ thuộc ít nhất một trong hai quan hệ đã cho

Ví dụ: Khi dùng phép hợp để liệt kê danh sách tên sinh viên và giáo viên: πhoten(SINHVIEN) ᴗ πhoten(GIAOVIEN)

Phép giao: Giao của hai quan hệ S và R gồm các bộ thuộc về cả hai quan

hệ đã cho

Ví dụ: Tìm MSSV vừa học CSDL, vừa học JAVA

πmssv(ϭmonhoc=‟CSDL‟(SINHVIEN)) ᴖ πmssv(ϭmonhoc=‟JAVA‟(SINHVIEN))

Phép trừ (Hiệu): Của hai quan hệ tương thích R và S, kí hiệu R \ S gồm các

bộ chỉ thuộc R không thuộc S

4.2 Các phép toán tập hợp

Hai quan hệ khả hợp là 2 quan hệ có cùng bậc (Có số thuộc tính bằng nhau

và thuộc tính thứ i của quan hệ này có cùng miền trị với thuộc tính thứ i của quan hệ kia

Trang 3

- Phép hợp (Union): Cho 2 quan hệ khả hợp r(U) và s(U) Hợp của 2 quan

hệ r và s cho ta một quan hệ với tập thuộc tính U và các bộ là các bộ thuộc ít nhất 1 trong 2 quan hệ r hoặc s

r  s = (A B C)

a2 b1 c2 a2 b2 c1 a2 b2 c2

- Phép giao (Intersect): Giao của 2 quan hệ khả hợp r(U) và S(U) cho ta một quan hệ mới với tập thuộc tính U, các bộ là các bộ đồng thời thuộc 2 quan

hệ đó

r  s= {t | tr và ts}

K1305 Thi Hồng K1304 Mai Ca K1303 Nguyễn An

Trang 4

r  s = (A B C) a1 b1 c1

- Phép trừ (Substraction): Phép trừ quan hệ r(U) cho quan hệ khả hợp s(U) cho ta một quan hệ mới với tập thuộc tính U và các bộ là các bộ thuộc r nhƣng không thuộc s

K1305 Thi Hồng K1304 Mai Ca K1303 Nguyễn An

Trang 5

- Phép tích Đề các (Catersion Product): Cho 2 quan hệ r(U) và s(V) Tích

đề các của r và s cho ta một quan hệ với tập thuộc tính U và V với các bộ

- Phép chia (Division): Cho 2 quan hệ r(U) và s(V), V U, s, đặt X=U-

V Phép chia quan hệ r cho quan hệ s cho ta một quan hệ mới với tập thuộc tính

X và các bộ có dạng {t[X] | t r, q  s thì t[X],q r }

r s={t[X] | t r, q  s thì t[X],q r }

Ten NgaySinh Anh 10/10/91 Mai 5/9/90

Trang 7

MaSV HoDem Ten NgaySinh DiaChi MaNganh K1301 Nguyễn An Anh 10/10/91 Hoa Lƣ TT

E : “DiaChi = Hoa Lƣ”

phép chọn E(r) sẽ cho ta quan hệ sau:

K1301 Nguyễn An Anh 10/10/91 Hoa Lƣ TT

K1302 LK K1303 VS VD4: Cho X=AB và quan hệ

r (A B C D) thì X(r)= (A B)

Trang 8

r 

B

A

s ={tq | tr, q s và t[A]  q[B] là đúng}

Nếu  là phép toán bằng “=” thì phép kết nối gọi là phép kết nối bằng

Nếu  là phép toán bằng “=” và AiBjA gọi là phép kết nối tự nhiên, ký hiệu là * Ta có r * s = {tq | tr, q s và t[A] = q[A], AUV}

VD1: Cho quan hệ r1={SBD, Họ đệm, Tên, Ngày sinh, quê quán}

K1301 Lê Lan Anh 10/10/91 Hoa Lƣ

K1303 Nguyễn An Ninh 15/3/89 Kim Sơn

Cho quan hệ r2={SBD, Đmôn1, Đmôn2, Đmôn3}

r1 * r2 =

SBD HoDem Ten NgaySinh QueQuan Dmon1 Dmon 2 Dmon 3

K1301 Lê Lan Anh 10/10/91 Hoa Lƣ 6 9 6

K1303 Nguyễn An Ninh 15/3/89 Kim Sơn 3 4 3

VD2: Cho r1 (A B) r2 (B C) r3(A D)

Trang 9

- Phép kết nối ngoài trái (Left Outer Join)

Kết nối ngoài trái của r và s bao gồm không chỉ những bộ là kết quả của việc xếp cạnh nhau của 2 bộ t,u kết nối tự nhiên đƣợc với nhau, mà còn bao gồm những bộ có phần bên trái là một bộ t không kết nối đƣợc với bộ nào trong s, phần bên phải là các giá trị null

r < s ={(t,u)| (t,u)r*s hoặc ((t, null, null ) và (us:t[A]≠u[A]))}

ở đây A là thuộc tính xuất hiện ở cả 2 lƣợc đồ quan hệ r và s

Trang 10

- Phép kết nối ngoài phải (Right Outer Join)

Tương tự kết nối ngoài trái của r và s bao gồm không chỉ những bộ là kết quả của việc xếp cạnh nhau của 2 bộ t,u kết nối tự nhiên được với nhau, mà còn bao gồm những bộ có phần bên phải là một bộ u không kết nối được với bộ nào trong r, phần bên trái là các giá trị null

r   s ={(t,u)| (t,u)r*s hoặc (( null,… null, u) và (tr:t[A]≠u[A]))}

- Đặt lại tên cho quan hệ

Để đạt được quan hệ kết quả, có thể phải áp dụng nhiều phép toán quan hệ liên tiếp trong trường hợp đó, chúng ta có thể viết một biểu thức đại số quan hệ

mà các phép toán có thể xếp lồng với nhau Có thể làm cho việc này trở nên đơn giản hơn bằng cách áp dụng mỗi phép toán tại một thời điểm và tạo ra các quan

hệ kết quả trung gian, những quan hệ trung gian như vậy cần phải đặt tên

Ví dụ: KQTG  NCC*CUNG_UNG

KQ  Ma_Sp=‟P2‟(KQTG)

Cũng có thể đặt lại tên thuộc tính trong các quan hệ trung gian và kết quả cuối cùng, ta liệt kê tên mới của các thuộc tính trong dấu ngoặc đi kèm theo tên quan hệ kết quả

Ví dụ: CUNG_UNG_P2(CTY, SOLUONG) Ma_Cty, so_luong(KQ)

4.4 Các phép toán quan hệ bổ sung

Các hàm tính toán

Chúng ta hay gặp những dạng câu hỏi kiểu như phòng đó có bao nhiêu nhân viên, trung bình lương của các nhân viên trong một công ty là bao nhiêu…Sau đây là một số hàm thường dùng

SUM, AVERAGE, MAX, MIN, COUNT

Các hàm gộp nhóm

Trang 11

Sử dụng khi cần nhóm dữ liệu theo một tiêu chí nào đó, chẳng hạn tính tổng số sinh viên quê ở mỗi Huyện của Tỉnh Ninh Bình

Ta định nghĩa nhƣ sau:

<Các thuộc tính cơ sở để gộp nhóm> F<danh sách hàm tính toán>(r)

Kết quả của phép gộp nhóm là một quan hệ Nếu danh sách thuộc tính cơ

sở để gộp nhóm là rỗng thì hàm tính toán áp dụng cho tất cả các bộ trong quan

hệ và quan hệ kết quả chỉ có một bộ

Ví dụ: có quan hệ NHAN_VIEN nhƣ sau:

Ma_NV HO_TEN NG_SINH MA_PHONG LUONG(x100.000)

Trang 12

Chương 5 Ngôn ngữ truy vấn dữ liệu SQL Giới thiệu:

Để có thể lấy được thông tin từ một cơ sở dữ liệu quan hệ, người dùng phải hiểu rõ ý nghĩa, mục đích của các thao tác trên cơ sở dữ liệu Cùng với phép tính

đó, ở chương này còn trình bày một ngôn ngữ được sử dụng chủ yếu trong các

hệ quản trị cơ sở dữ liệu quan hệ( ngôn ngữ SQL) Những kiến thức cơ bản về ngôn ngữ SQL giúp người học có thể diễn đạt được các câu lệnh truy vấn đối với cơ sở dữ liệu quan hệ

Mục tiêu:

- Hiểu cách xây dựng cơ sở dữ liệu trên Access

- Hiểu cấu trúc các câu lệnh truy vấn SQL

- Xây dựng được một số cơ sở dữ liệu trên Access

- Viết các câu lệnh truy vấn đến cơ sở dữ liệu bằng SQL

- Nghiêm túc, tỉ mỉ trong việc học và làm bài tập

Nội dung chính:

5.1 Cách tạo quan hệ bằng Access

Trên tab Công cụ Cơ sở dữ liệu, trong nhóm Quan hệ, bấm Quan hệ

Hình 5.1 Tab Database Tools

Nếu ta vẫn chưa xác định được mối quan hệ nào, hộp thoại Hiện Bảng sẽ

tự động xuất hiện Nếu hộp thoại không xuất hiện, trên tab Thiết kế, trong nhóm Quan hệ, hãy bấm Hiện Bảng

Hộp thoại Hiện Bảng hiển thị tất cả bảng và truy vấn trong cơ sở dữ liệu

Trang 13

Hộp thoại Sửa Quan hệ xuất hiện

Hình 5.2 Hộp thoại Edit Relationships

- Xác nhận rằng tên trường đã hiện là trường chung cho mối quan hệ Nếu một tên trường không đúng, hãy bấm vào tên trường và chọn trường thích hợp từ danh sách

- Để bắt buộc tính toàn vẹn tham chiếu cho mối quan hệ này, hãy chọn hộp Bắt buộc Tính toàn vẹn Tham chiếu

- Bấm Tạo

Access vẽ một đường quan hệ giữa hai bảng Nếu ta đã chọn hộp kiểm Bắt buộc Tính toàn vẹn Tham chiếu, đường quan hệ đó sẽ xuất hiện dầy hơn ở hai đầu cuối Ngoài ra, chỉ khi nào ta đã chọn hộp kiểm Bắt buộc Tính toàn vẹn Tham chiếu, số 1 sẽ xuất hiện trên phần dầy ở một bên của đường quan hệ và ký

tự vô cực (∞) sẽ xuất hiện trên phần dầy bên kia của đường quan hệ

Ghi chú:

+Để tạo quan hệ một đối một: Cả hai trường chung (thường là các trường

khóa chính và khóa ngoại) phải có chỉ mục duy nhất Điều đó có nghĩa là thuộc tính Đã lập chỉ mục cho những trường này nên được đặt là Có (Không Trùng nhau) Nếu cả hai trường đều có một chỉ mục duy nhất, Access sẽ tạo ra mối quan hệ một đối một

+ Để tạo quan hệ một đối nhiều: Trường trên một phía (thường là khóa chính) của mối quan hệ phải có chỉ mục duy nhất Điều đó có nghĩa là thuộc tính Đã lập chỉ mục cho trường này nên đươc đặt là Có (Không Trùng nhau)

Trường ở bên nhiều không nên có một chỉ mục duy nhất Nó có thể có một chỉ

mục nhưng nó phải cho phép trùng nhau Điều đó có nghĩa là thuộc tính Đã lập chỉ mục cho trường này nên được đặt làKhông hoặc là Có (Đồng ý Trùng nhau) Khi một trường có một chỉ mục duy nhất mà trường khác không có, Access tạo

ra mối quan hệ một- nhiều

Trang 14

Tạo mối quan hệ trong ứng dụng Access

Cửa sổ Mối quan hệ không s n dùng trong ứng dụng Access Thay vì tạo một mối quan hệ trong ứng dụng Access, bạn tạo một trường tra cứu, trường này lấy giá trị từ một trường liên quan trong bảng khác Ví dụ, giả sử ta có bảng Nhân viên và bạn muốn thêm tra cứu vào bảng Vùng để có thể hiển thị cho biết mỗi nhân viên làm việc trong vùng nào

Ghi chú:

Trường mà tra cứu của ta sẽ dùng làm nguồn giá trị phải tồn tại trước khi

ta có thể tạo trường tra cứu

Đây là cách để bạn tạo một trường tra cứu:

1 Mở bảng mà ta muốn tạo trường tra cứu mới bằng cách bấm đúp vào bảng đó trong ngăn dẫn hướng (Mẹo: ta có thể cần bấm vào Trang đầu > Ngăn Dẫn hướng để xem các bảng s n dùng)

Trong ví dụ trên đây, hãy bấm vào bảng Nhân viên

2 Bấm vào cột Tên Trường ngay bên dưới trường cuối cùng trong bảng và nhập tên cho trường tra cứu mới của bạn

Trong ví dụ này, hãy nhập tên trường là Vùng

3 Trong cột Kiểu Dữ liệu, bấm vào mũi tên và chọn Tra cứu

Hình 5.3 Trình hướng d n Tra cứu khởi động

Trang 15

4.Trên trang đầu tiên của Trình hướng dẫn Tra cứu, hãy chọn Tôi muốn trường tra cứu lấy giá trị từ một truy vấn hoặc bảng khác Các tùy chọn khác sẽ xuất hiện trong hộp thoại

5 Chọn tên của bảng hoặc truy vấn sẽ cung cấp giá trị cho tra cứu của ta

Trong ví dụ này, hãy chọn ng: V ng

Hình 5.4 Hộp thoại Lookup Wizard

6 Sau khi chọn bảng, ta hãy dùng danh sách Giá trị nào ta muốn hiển thị trong tra cứu của mình để chọn trường mà bạn muốn dùng làm giá trị hiển thị cho trường tra cứu của mình Theo mặc định, Access sẽ chọn trường văn bản đầu tiên nó tìm thấy trong bảng đã chọn

7.Trong ví dụ này, ta sẽ giữ nguyên trường đã chọn, trường Tiêu đề, làm

giá trị hiển thị

8 Nếu ta muốn, hãy dùng danh sách Bạn có muốn sắp xếp mục trong tra cứu của mình không để đặt sắp xếp

Bên dưới mục Điều gì sẽ xảy ra khi một bản ghi trong bảng "Vùng" bị xóa

bỏ, hãy đặt kiểu quan hệ mà ta muốn có giữa hai bảng và cho biết liệu ta có muốn bắt buộc tính toàn vẹn tham chiếu hay không (Tên của bảng trong câu hỏi này khác nhau phụ thuộc vào việc ta đã chọn bảng nào trong bước 5.)

Trình hướng dẫn Tra cứu sẽ mặc định Ngăn chặn việc xóa bỏ nếu có các bản ghi tương ứng trong bảng “Nhân viên”, vì đây là sự lựa chọn an toàn nhất trong hầu hết các trường hợp Trong ví dụ này, tùy chọn này có nghĩa là bạn không thể xóa bỏ một giá trị từ bảng Vùng nếu vùng đó đang được sử dụng trong các bản ghi của bảng Nhân viên Vì vậy, nếu bản ghi nhân viên đang sử dụng một vùng, chẳng hạn như vùng "Tây" và bạn tìm cách xóa vùng "Tây"

Trang 16

trong bảng Vùng, thì Access sẽ ngăn không cho bạn xóa bỏ nó Trong trường hợp này, ta cần phải đặt lại tất cả các bản ghi nhân viên vốn đang sử dụng giá trị

đó thành một giá trị khác, trước khi ta có thể xóa bỏ vùng "Tây" trong bảng Vùng Tùy chọn cuối cùng có thể hữu ích trong ví dụ này, vì nó sẽ cho phép ta xóa vùng "Tây" trong bảng Vùng Giá trị vùng sẽ tự động được loại bỏ khỏi các bản ghi Nhân viên đã được đặt là "Tây", để lại giá trị trống Chọn tùy chọn thứ hai sẽ xóa bỏ tất cả các bản ghi nhân viên ra khỏi bảng Nhân viên đã được đặt

vùng là “Tây” Điều đó gọi là xóa bỏ xếp tầng và nó sẽ xóa bỏ nhiều dữ liệu hơn

so với ý định của ta trong ví dụ này Hãy cẩn thận khi chọn tùy chọn đó

5.2 Câu lệnh truy vấn

5.2.1 Biểu thức

Là sự kết hợp một cách hợp lệ giữa các thuộc tính, các toán tử và các hàm Sau đây sẽ là các toán tử và các hàm thông dụng nhất (Chú ý: Cách sử dụng các toán tử và các hàm này còn tùy thộc vào câu lệnh SELECT của ngôn ngữ được

sử dụng)

5.2.2 Câu lệnh SQL

a Lệnh CREATE TABLE

Cú pháp: CREATE TABLE Tên_bảng(Tên_cột Loại_dữ_ liệu [Not

Null]),Primary Key( Tên khoá chính ),Foreign Key( Tên khoá ngoài),…);

Trong đó:

- Tên_ b ng: là xâu kí tự không chứa các ký tự trống và không trùng với

các từ khoá

- Tên _cột: là xâu kí tự bất kì không chứa kí tự trống, tên cột trong một

bảng là duy nhất, thứ tự các cột không quan trọng

- Loại_dữ_liệu: gồm một số loại dữ liệu sau:

+ integer: số nguyên từ - 2147483648 đến 2147483647

+ smallinteger: số nguyên từ - 32768 đến 32767

+ decimal(n, p): số thập phân với độ dài tối đa là n kể cả p chữ số phần

thập phân (không tính dấu chấm thập phân) Từ khoá Number trong SQL được dùng trong dạng dữ liệu này

+ Float: số dấu phẩy động

+ Char(n): xâu kí tự có độ dài cố định n, (n<=255)

+ Varchar(n): xâu ký tự có độ dài biến đổi, độ dài xâu có thể từ 0 đến n và

được xác định tại thời điểm đưa dữ liệu vào lưu trữ

Trang 17

+ Longvarchar: xâu kí tự có độ dài không cố định Độ dài này có thể từ

CREATE TABLE detai(MaDT Varchar(10) Not Null,TenDT Varchar(30) Not Null,ChuNhiem Varchar(25),Kinhphi Decimal(10,2),KetQua Decimal(4,2), PRIMARY KEY (MaDT));

+ Tạo bảng sinh viên đề tài như sau:

CREATE TABLE sv_detai(MaSV Varchar(5) Not Null,MaDT Varchar(10) Not Null,NoiTT Varchar(30) Not Null,KM Decimal(10,2),PRIMARY KEY (MaDT, MaSV),FOREIGN KEY (MaDT) REFERENCES detai(MaDT),FOREIGN KEY (MaSV) REFERENCES sinhvien(MaSV));

b Lệnh INSERT INTO

- Cú pháp:INSERT INTO Tên_bảng

VALUES(gia trị1, giá trị 2, …, giá trị n);

trong đó: giá trị1, giá trị 2, …, giá trị n là những giá trị để chèn vào các cột tương ứng từ cột 1 đến cột n của một bản ghi trong bảng

- Chức năng:Chèn một bản ghi vào bảng

- Ví dụ:Chèn vào bảng sinh viên một bản ghi như sau:

INSERT INTO sinhvien

VALUES(“Nguyễn Hồng”, “Sơn”, “2/12/1976”,”A420”,”Hà Nội”,9.5);

c Lệnh DELETE

- Cú pháp:DELETE FROM Tên_bảng

WHERE <Điều kiện xoá >;

- Chức năng:Xoá các bản ghi trong bảng thoả mãn điều kiện xoá

- Ví dụ:Xóa những sinh viên có học lực <5 trong bảng sinh viên

DELETE FROM sinhvien

WHERE (HocLuc<5);

Trang 18

d Lệnh UPDATE

- Cú pháp:UPDATE Tên_bảng

SET Giá_trị_mới

WHERE <Điều kiện sửa đổi>;

- Chức năng:Sửa đổi giá trị các trường của các bản ghi trong bảng

- Ví dụ:Sửa học lực của sinh viên có MaSV = “B401” lên 8

Cấu trúc SELECT – FROM – WHERE

Cấu trúc SELECT – FROM – WHERE là cấu trúc đơn giản nhất của SQL

- Ví dụ 1: Hiển thị họ đệm, tên của bảng sinh viên:

Trang 19

FROM sinhvien

WHERE HocLuc>=8;

f Truy vấn sử dụng các hàm MAX, MIN, AVG, SUM, COUNT

* Hàm MAX

- Chức năng:Cho giá trị lớn nhất trong cột

- Ví dụ:Hiển thị học lực cao nhất trong danh sách sinhvien

SELECT Max(HocLuc) AS DiemCaoNhat

FROM sinhvien;

( AS để đặt tên cho cột Max(HocLuc))

* Hàm MIN

- Chức năng:Cho giá trị nhỏ nhất trong cột

- Ví dụ:Hiển thị học lực nhỏ nhất trong danh sách sinhvien

SELECT Min(HocLuc) AS DiemThapNhat

FROM sinhvien;

* Hàm AVG

- Chức năng: Cho giá trị tung bình cộng trong cột

- Ví dụ: Hiển thị học lực trung bình của cột học lực trong danh sách sinhvien

SELECT AVG(HocLuc) AS DiemTB

FROM sinhvien;

* Hàm SUM

- Chức năng: Cho tổng giá trị trong cột

- Ví dụ: Hiển thị tổng học lực của cột học lực trong danh sách sinhvien SELECT SUM(HocLuc) TongHL

FROM sinhvien;

* Hàm COUNT

- Chức năng: Cho biết số phần tử ( hàng) trong cột

- Ví dụ: Đếm số bản ghi (hàng) của cột học lực trong danh sách sinhvien SELECT COUNT(HocLuc) AS SoSinhVien

Trang 20

WHERE (diem>=9) AND ( que = “Hà Nội‟);

- Ví dụ 2: Đƣa ra danh sách những sinh viên có quê = “Thái Bình” hoặc

“Thái Nguyên”

SELECT *

FROM sinhvien

WHERE (que = “Thái Bình”) OR (que = “Thái Nguyên”);

- Ví dụ 3: Đƣa ra danh sách những nhân viên có kết quả là 8,9,10

WHERE KetQua BETWEEN 8 and 10;

- Ví dụ 5: Đƣa ra danh sách những sinh viên có quê không phải là “Hà Nội”

SELECT *

FROM sinhvien

Trang 21

WHERE que NOT(SELECT que

FROM sinhvien

WHERE (que = ”Hà Nội”));

- Ví dụ 6: Hiển thị tất cả kết quả của sinh viên

SELECT ALL KetQua

SELECT < Danh sách Tên_bang.Tên_cột>

FROM <Danh sách Tên_bảng>

WHERE <Điều kiện nối bảng>;

- Có thể đặt tên các cột trong kết quả các truy vấn bằng cách đặt tên mới vào sau cột được chọn ngăn cách bởi từ khoá AS, tương tự ta có thể đặt tên mới cho các bảng

Ví dụ: Hiển thị danh sách sinh viên bao gồm họ đệm, tên, kết quả từ bảng sinhviên và bảng sv_dt:

SELECT sinhvien.HoDem AS Ho, sinhvien.Ten AS Ten, sv_dt.KetQua AS

KQ

FROM sinhvien AS sv, sv_dt AS sd

WHERE (sv.MaSV = sd.MaSV);

Truy vấn sử dụng lượng từ DISTINCT/ ALL

* Để tránh tình trạng đưa ra các bộ (hàng/bản ghi) trùng lặp trong các kết quả truy vấn thì SQL có lượng từ DISTINCT

Ví dụ: Hiển thị các mã đề tài được sinh viên đăng ký trong bảng đề tài SELECT DISTINCT MaDT

Trang 22

SELECT ALL MaDT

FROM sv_dtai;`

Chú ý: Ngầm định (nếu không viết Distinct/All) thì máy hiểu là All

g Truy vấn sử dụng mệnh đề GROUP BY

- Để hiển thị các bản ghi theo nhóm ta dùng mệnh đề GROUP BY

- Ví dụ: Hiển thị bảng đề tài theo nhóm mã đề tài

- Ví dụ: Đếm xem có bao nhiêu đề tài đã đƣợc sinh viên đăng ký tham gia SELECT MaDT

- Trong lệnh SELECT có thể đƣợc lồng nhiều mức

- Ví dụ1: Hiển thị sinh viên có học lực cao nhất

Trang 23

Bài 1: Trình bày cú pháp và chức năng của câu lệnh SQL

Bài 2: QUẢN LÝ THI TỐT NGHIỆP PTCS

Một phòng giáo dục huyện muốn lập một hệ thống thông tin để quản lý việc làm thi tốt nghiệp phổ thông cơ sở Công việc làm thi được tổ chức như sau:

Lãnh đạo phòng giáo dục thành lập nhiều hội đồng thi (mỗi hội đồng thi gồm một trường hoặc một số trường gần nhau) Mỗi hội đồng thi có một mã số duy nhất (MAHĐT), một mã số hội đồng thi xác định tên hội đồng thi(TENHĐT), họ tên chủ tịch hội đồng(TENCT), địa chỉ (ĐCHĐT),điện thoại(ĐTHĐT)

Mỗi hội đồng thi được bố trí cho một số phòng thi, mỗi phòng thi có một

số hiệu phòng(SOPT) duy nhất, một phòng thi xác định địa chỉ phòng thi (ĐCPT) Số hiệu phòng thi được đánh số khác nhau ở tất cả các hội đồng thi Giáo viên của các trường trực thuộc phòng được điều động đến các hội đồng để coi thi, mỗi trường có thể có hoặc không có thí sinh dự thi, mỗi trường

có một mã trường duy nhất (MATR), mỗi mã trường xác định một tên trường(TENTR),địa chỉ (ĐCTR), loại hình đào tạo (LHĐT) (Công lập, chuyên, bán công, dân lập, nội trú,…) Giáo viên của một trường có thể làm việc tại nhiều hội đồng thi Một giáo viên có một mã giáo viên(MAGV), một mã giáo

Trang 24

viên xác định tên giáo viên (TENGV), chuyên môn giảng dạy (CHUYENMON), chức danh trong hội đồng thi(CHUCDANH)

Các thí sinh dự thi có một số báo danh duy nhất(SOBD), mỗi số báo danh xác định tên thí sinh(TENTS), ngày sinh (NGSINH), giới tính (PHAI), mỗi thí sinh được xếp thi tại một phòng thi nhất định cho tất cả các môn, mỗi thí sinh có thể có chứng chỉ nghề (CCNGHE) hoặc không (thuộc tính CCNGHE kiểu chuỗi, CCNGHE=”x” nếu thí sinh có chứng chỉ nghề và CCNGHE bằng rỗng nếu thí sinh không có chứng chỉ nghề).Thí sinh của cùng một trường chỉ dự thi tại một hội đồng thi

Mỗi môn thi có một mã môn thi duy nhất(MAMT), mỗi mã môn thi xác định tên môn thi(TENMT) Giả sử toàn bộ các thí sinh đều thi chung một số môn do sở giáo dục quy định Mỗi môn thi được tổ chức trong một buổi của một ngày nào đó

Ứng với mỗi môn thi một thí sinh có một điểm thi duy nhất(ĐIEMTHI) Dựa vào phân tích ở trên, giả sử ta có lược đồ CSDL sau:

Q7: KQ(SOBD,MAMT,ĐIEMTHI)

Yêu cầu:

a) Hãy xác định khóa cho từng lược đồ quan hệ

b) Tìm tất cả các ràng buộc toàn vẹn có trong CSDL trên

c) Dựa vào lược đồ CSDL đã thành lập, hãy thực hiện các câu hỏi sau đây bằng ngôn ngữ đại số quan hệ

Bài 3: Danh sách các thí sinh thi tại phòng thi có số hiệu phòng thi (SOPT)

là “100” Yêu cầu các thông tin:SOBD,TENTS,NGSINH,TENTR

Bài 4: Kết quả của môn thi có mã môn thi (MAMT) là “T” của tất cả các thí sinh có mã trường(MATR) là “NTMK”, kết quả được sắp theo chiều giảm dần của điểm thi(ĐIEMTHI) Yêu cầu các thông tin:SOBD,TENTS, ĐIEMTHI

Trang 25

Bài 5: Kết quả thi của một học sinh có SOBD là MK01 Yêu cầu : TENMT,ĐIEMTHI

Bài 6: Tổng số thí sinh có chứng chỉ nghề(CCNGHE) của mỗi trường, thông tin cần được sắp theo chiều tăng dần của TENTR Yêu cầu các thông tin: MATR, TENTR, SOLUONGCC

Trang 26

Chương 6

Lý thuyết thiết kế cơ sở dữ liệu 6.1 Phụ thuộc hàm

6.1.1 Khái niệm phụ thuộc hàm

Phụ thuộc hàm (functional dependancy) là một công cụ dùng để biểu diễn một cách hình thức các ràng buộc toàn vẹn Phương pháp biểu diễn này có rất nhiều ưu điểm, và đây là một công cực kỳ quan trọng, gắn chặt với lý thuyết thiết

kế cơ sở dữ liệu

Trong chương này chúng ta sẽ tìm hiểu về lý thuyết thiết kế cơ sở dữliệu quan hệ, mà bắt đầu là phụ thuộc hàm và một sốứng dụng trong việc giải quyết các bài toán như: tìm khoá, tìm phủ tối thiểu, xác định dạng chuẩn Trong chương tới chúng ta sẽ tiếp tục tìm hiểu về cách thức chuẩn hoá một cơ sở dữ liệu

6.1.2 Định nghĩa phụ thuộc hàm

Cho quan hệ phanCong sau:

phanCong (PHICONG, MAYBAY, NGAYKH, GIOKH)

+ Mỗi máy bay có một giờ khởi hành duy nhất

+ Nếu biết phi công, biết ngày giờ khởi hành thì biết được máy bay do phi công ấy lái

+ Nếu biết máy bay, biết ngày khởi hành thì biết phi công lái chuyến bay

Trang 27

Các ràng buộc này là các ví dụ về phụ thuộc hàm và đƣợc phát biểu lại nhƣ sau:

+ MAYBAY xác định GIOKH

+ {PHICONG,NGAYKH,GIOKH} xác định MABAY

+ {MAYBAY,NGAYKH} xác định PHICONG

hay

+ GIOKH phụ thuộc hàm vào MAYBAY

+ MABAY phụ thuộc hàm vào {PHICONG,NGAYKH,GIOKH}

+ PHICONG phụ thuộc hàm vào {MAYBAY,NGAYKH}

Q(A1,A2,…,An) là lƣợc đồ quan hệ

X, Y là hai tập con của Q+

={A1,A2,…,An}.r là quan hệ trên Q t1,t2 là hai bộ

bất kỳ của r X Y (t 1 X = t 2 X t 1 Y = t 2 Y)

(Ta nói X xác định Y hay Y phụ thuộc hàm vào X (X functional determines Y,Y functional dependent on X )

Tính chất:

+ Phụ thuộc hàm X  đúng với mọi quan hệ r

+ Phụ thuộc hàm  Y chỉ đúng trên quan hệ r có cùng giá trị trên Y

Trang 28

6.1.3 Phụ thuộc hàm hiển nhiên

Hệ qu : Nếu X Y thì X Y

Chứng minh:

Giả sử t1.X = t2.X do X  Y nên t1.Y = t2.Y theo định nghĩa suy ra X  Y Trong trường hợp này X  Y được gọi là phụ thuộc hàm hiển nhiên

Ví dụ phụ thuộc hàm X  X là phụ thuộc hàm hiển nhiên

Vậy với r là quan hệ bất kỳ, F là tập phụ thuộc hàm thỏa trên r, ta luôn có

F  {các phụ thuộc hàm hiển nhiên}

6.1.4 Thuật toán Satifies

Cho quan hệ r và X, Y là hai tập con của Q+ Thuật toán SATIFIES sẽ trả

về trị true nếu X  Y ngược lại là false

SATIFIES

Vào: quan hệ r và hai tập con X,Y

Ra: true nếu X  Y, ngược lại là false

Trang 30

Lược đồ quan hệ Phancong(PHICONG,MAYBAY,NGAYKH,GIOKH)có tập thuộc tính Phancong+={PHICONG,MAYBAY,NGAYKH,GIOKH} và tất cả các tập con có thể có của Phancong+

được cho bởi bảng sau:

 {PHICONG} {MAYBAY} {NGAYKH} {GIOKH}

{PHICONG,MAYBAY}

{PHICONG,NGAYKH}

{PHICONG,GIOKH}

{MAYBAY,NGAYKH}

{MAYBAY,GIOKH}

{PHICONG,MAYBAY,NGAYKH}

{PHICONG,MAYBAY,GIOKH}

{NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH}

{MAYBAY,NGAYKH,GIOKH}

{PHICONG,MAYBAY,NGAYKH,GIOKH}

Số tập con có thể có của Q+

= {A1,A2, ,An} là 2n

6.1.6 Hệ luật dẫn Armstrong

Người ta thường dùng F để chỉ tập các phụ thuộc hàm của lược đồ quan hệ

Q Ta có thể đánh số các phụ thuộc hàm của F là f1, f2, , fm Quy ước rằng chỉ cần mô tả các phụ thuộc hàm không hiển nhiên trong tập F (các phụ thuộc hàm hiển nhiên được ngầm hiểu là đã có trong F)

6.1.6.1 Phụ thuộc hàm được suy diễn logic từ F

Nói rằng phụ thuộc hàm X Y được suy diễn logic từ F nếu một quan hệ

r thỏa mãn tất c các phụ thuộc hàm của F thì cũng thỏa phụ thuộc hàm X Y

Ký hiệu F= X Y

Bao đóng của F ký hiệu F+

là tập tất cả các phụ thuộc hàm được suy diễn logic từ F

Các tính chất của tập F+

1.Tính ph n xạ: Với mọi tập phụ thuộc hàm F +

ta luôn luôn có F F + 2.Tính đơn điệu: Nếu F G thì F + G +

3.Tính lũy đẳng: Với mọi tập phụ thuộc hàm F ta luôn luôn có (F +

) + = F +

Trang 31

Gọi G là tập tất cả các phụ thuộc hàm có thể có của r, phần phụ của F ký hiệu F-

 r thỏa tất cả phụ thuộc hàm của F vì F  G

 r thỏa phụ thuộc hàm X  Y (2) vì X  YF+

(1) và (2)  X  Y  G+  F+ G+

F  F+ (tính phản xạ)  F+ (F+

)+ (1) Nếu X  Y  (F+

)+ (2) X  Y  F+

thật vậy: (3) Giả sử r thỏa tất cả các phụ thuộc hàm của F (4)

 r thỏa tất cả các phụ thuộc hàm của F+

Với X,Y,Z,W là tập con của Q+ r là quan hệ bất kỳ của Q Ta có 6 luật dẫn sau:

1 Luật phản xạ (reflexive rule):

Trang 32

6 Luật bắc cầu giả (pseudo transitive rule):

Cho X  Y, YZ  W  XZ  W

Hệ tiên đề Armstrong (Armstrong‟s Axioms) gồm 3 luật: (1), (2) và (5) Chứng minh

Với t1,t2 là hai bộ bất kỳ của quan hệ r

Luật phản xạ: Ta có (t1.X = t2.X  t1.X = t2.X) theo định nghĩa suy ra X  X Luật thêm vào: giả sử có t1.XZ = t2.XZ (1)

Luật phân rã: gỉa sử có: t1.X = t2.X (1)

t1.YZ = t2.YZ (do X  YZ)

Trang 33

Ví dụ: Cho F = {AB  C,C  B,BC  A} thì có F0  F1  F2 sao cho C

X + = A i với X A i là phụ thuộc hàm được suy diễn từ F nhờ hệ tiên đề Armstrong

Trang 34

Nếu X,Y là các tập con của tập thuộc tính Q+

Thuật toán tìm bao đóng

Tính liên tiếp tập các tập thuộc tính X0,X1,X2, theo phương pháp sau: Bước 1: X0 = X

Bước 2: Lần lượt xét các phụ thuộc hàm của F

Nếu YZ có Y  Xi thì Xi+1 = Xi Z

Loại phụ thuộc hàm Y  Z khỏi F

Bước 3: Nếu ở bước 2 không tính được Xi+1 thì Xi chính là bao đóng của X Ngược lại lặp lại bước 2

Ví dụ 1:

Cho lược đồ quan hệ Q(ABCDEGH) và tập phụ thuộc hàm F

Trang 35

f4 không thỏa, f5 không xét vì đã thỏa

Lập lại bước 2: f2,f3 không xét vì đã thỏa, f1,f4 không thỏa,f5 không xét vì

đã thỏa.Trong bước này X3 không thay đổi => X+=X3={ACDEH} là bao đóng của X

Trang 36

Thuật toán tìm bao đóng cho kết quả Xi = X+

Bước qui nạp: Giả sử có X  Xi- 1 (1) ta phải chứng minh X  Xi

Theo thuật toán tìm bao đóng thì fj = Xj  Y j để Xi- 1 X j và Xi = Xi- 1  Y j

 Xi- 1  Yj (2).(1)và (2)  X  Yj (3)

(1) và (3)  X Xi- 1Yj = Xi  X  Xi

Vậy Xi  X+

2 Ta chứng minh A  X+ A  Xi để kết luận Xi X+

A  X+ nên có một phụ thuộc hàm X  A Theo thuật toán tìm bao đóng thì X  Xi A Xi

= (X – A)+  A theo qui nạp

Bước cơ sở: X0 = X, (X- A)0 = X - A  X0 =(X - A)0 A đúng

Bước qui nạp: giả sử ta có Xi- 1 =(X - A)i- 1 A Bao đóng Xi được hình thành do có fj = Xj  Yj để:

Xi- 1 Xj và Xi= Xi- 1 Yj = (X - A)i- 1 A  Yj (1)

Sự hình thành Xi luôn kéo theo sự hình thành (X- A)i vì:

Trang 37

Xi- 1 = (X - A)i- 1 A  Xj do Xj không chứa A nên:

(X - A)i- 1 Xj vậy (X - A)i= (X - A)i- 1 Yj (2)

Thật vậy giả sử Q(A1,A2, ,An) là lƣợc đồ quan hệ, ai,bi là các giá trị khác nhau trên miền giá trị Ai r là quan hệ trên Q có hai bộ t và t‟đƣợc xác định nhƣ sau:

t=(a1,a2, ,an)

Vậy quan hệ r có t.X = t‟.X nhƣng t.Y  t‟.Y (t.Y gồm các giá trị ai còn t‟.Y phải có ít nhất một bi nếu không Y  X+X  Y đƣợc suy dẫn từ hệ luật dẫn Armstrong ) Nhƣ vậy r không thỏa phụ thuộc hàm X  Y

Bây giờ ta chứng minh quan hệ r thỏa mọi phụ thuộc hàm trong F Gọi W

b

a A

t

i

i i

i

A '.

Trang 38

Nếu W  X+ t.W  t‟.W  mệnh đề (t.W = t‟.W  t.Z = t‟.Z)đúng Nếu W  X+ t.Z = t‟.Z = bộ các ai

 mệnh đề (t.W = t‟.W  t.Z = t‟.Z)đúng

Hệ qu :

ao đóng của tập thuộc tính X đối với F là:

X+ =  Ai với X  Ai là phụ thuộc hàm được suy diễn logic từ F

Bài toán thành viên

Nói rằng X  Y là thành viên của F nếu X  Y  F+

Một vấn đề quan trọng khi nghiên cứu lý thuyết CSDL là khi cho trước tập các phụ thuộc hàm F và một phụ thuộc hàm X  Y, làm thế nào để biết X

 Y có thuộc F+

hay không bài toán này được gọi là bài toán thành viên Để trả lời câu hỏi này ta có thể tính F+ rồi xác định xem X  Y có thuộc F+

hay không Việc tính F+

là một công việc đòi hỏi thời gian và công sức Tuy nhiên, thay vì tính F+ chúng ta có thể dùng thuật toán sau để xác định X  Y có là thành viên của F hay không Thuật toán này sử dụng tính chất vừa chứng minh trên

Thuật toán xác định f = XY có là thành viên của F hay không

ước 1: tính X +

ước 2: so sánh X +

với Y nếu X + Y thì ta khẳng định X Y là thành viên của F

THUẬT TOÁN TÌM F +

Thuật toán cơ bản

Để tính bao đóng F+ của tập các phụ thuộc hàm F ta thực hiện như sau: Bước 1: Tìm tất cả tập con của Q+

Bước 2: Tìm tất cả các phụ thuộc hàm có thể có của Q

Bước 3: Tìm bao đóng của tất cả tập con của Q

Trang 39

Bước 4: Dựa vào bao đóng của tất cả các tập con đã tìm để xác định phụ thuộc hàm nào thuộc F+

Bước 4: F = {AB  C,C  B} suy ra:

F+= {ABC, ABAC, ABBC, ABABC, CB, CBC, ACB, ACAB, ACBC,ACABC}

Trang 40

Thuật toán cải tiến

Dựa vào thuật toán trên, ta nhận thấy có thể tính F +

theo các bước sau: ước 1: Tìm tất c tập con của Q +

ước 2: Tìm bao đóng của tất c tập con của Q +

ước 3: Dựa vào bao đóng của các tập con đã tìm để suy ra các phụ thuộc hàm thuộc F +

Ví dụ bao đóng A+ = A chỉ gồm các phụ thuộc hàm hiển nhiên

bao đóng {AB}+ = ABC cho các phụ thuộc hàm không hiển nhiên sau ABC,ABAC,ABBC,ABABC

(Tìm tất cả các tập con của {ABC} rồi bỏ các tập con của {AB})

Các tập con của {ABC} là: ,

Thuật toán xác định F và G có tương đương không

ước 1: Với mỗi phụ thuộc hàm XY của F ta xác định xem XY có là thành viên của G không

ước 2: Với mỗi phụ thuộc hàm XY của G ta xác định xem XY có là thành viên của F không

Nếu c hai bước trên đều đúng thì F G

Ví dụ 1: Cho lược đồ quan hệ Q(ABCDE) hai tập phụ thuộc hàm:

F={ABC,AD,CDE} và G = {ABCE,AABD,CDE}

a) F có tương đương với G không?

b) F có tương đương với G‟={ABCDE} không?

Ngày đăng: 23/03/2022, 09:34

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Nguyễn Tuệ. Giáo trình nhập môn hệ cơ sở dữ liệu. Nhà xuất bản giáo dục, năm 2007 Khác
2. Phạm Đức Nhiệm. Giáo trình cơ sở dữ liệu quan hệ. Nhà xuất bản Hà Nội, năm 2012 Khác
3. Tô Văn Nam. Giáo trình cơ sở dữ liệu. Nhà xuất bản giáo dục, năm 2009 Khác
4. Đỗ Trung Tuấn. Cơ sở dữ liệu. Nhà xuất bản giáo dục, năm 2009 Khác
5. Nguyễn Xuân Huy, Lê Hoài Bắc. Bài tập cơ sở dữ liệu. Nhà xuất bản thống kê, năm 2009 Khác
6. Trần Đức Quang, Hồ Thuần, Cơ sở dữ liệu và cơ sở tri thức tâp1, tập 2, NXB Thống kê, 2003 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

w