Nhóm 12 Bài tập lớn môn Hệ Cơ Sở Dữ Liệu
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU.........................................................................................................4
Cơ sở dữ liệu là một tập hợp các dữ liệu về các đối tượng cần quản lý, được thiết kế để đáp
ứng nhu cầu thông tin của một tổ chức, được lưu trữ trên các thiết bị lưu trữ của máy tính và
được quản lý theo một cơ chế thống nhất của hệ quản trị cơ sở dữ liệu nhằm thực hiện ba
chức năng: mô tả dữ liệu, cập nhật dữ liệu, tìm kiếm dữ liệu. Cơ sở dữ liệu được ứng dụng
rộng rãi trong cuộc sống như ngân hàng, hàng không, đại học, các phương tiện giao thông,
bán hàng, ….................................................................................................................................4
Hệ quản trị cơ sở dữ liệu là một hệ thống phần mềm (các chương trình) cho phép người dùng
định nghĩa, tạo và duy trì cơ sở dữ liệu đồng thời cung cấp dịch vụ truy cấp đến cơ sở dữ liệu
này một cách có quản lý.Một số hệ quản trị cơ sở dữ liệu thông dụng: Microsofts Access,
Visual Foxpro, Microsoft SQL Server, MySQL, Oracle, …......................................................4
Hệ cơ sở dữ liệu là môn học giúp cho sinh viên có kiến thức về ngôn ngữ SQL và thực hiện
truy vấn thành thạo các câu lệnh trên CSDL. Bài tập Hệ CSDL giúp chúng ta tạo, xóa cơ sở
dữ liệu tạo các ràng buộc toàn vẹn các khóa chính và sao lưu , phục hồi cơ sở dữ liệu. Môn
học này cũng giúp các sinh viên thành thạo các thao tác như: tạo CSDL, tạo bảng, tạo các
ràng buộc cho bảng, các câu lệnh, các phép toán SQL giúp các sinh viên có cơ hội thực hành
và hoàn thiện hơn về kiến thức quản lý cơ sở dữ liệu trong môn hệ cơ sở dữ liệu...................4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT...........................................................................................5
1. CÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ.............................................................................5
.2 NGÔN NGỮ SQL...............................................................................................................9
.1.1 Cú pháp---------------------------------------------------------------------------------9
.1.2 Các phép toán--------------------------------------------------------------------------9
CHƯƠNG 3: BÀI TẬP ĐSQH VÀ SQL.................................................................................16
.1 LƯỢC ĐỒ CSDL QUAN HỆ..........................................................................................16
.1.1 Lược đồ và Tân từ (Relation Schema & Predicate)------------------------------16
CONSTRAINT FK_THIETKE_CGTRINH FOREIGN KEY (STT_CTR) REFERENCES
CGTRINH(STT_CTR) ON UPDATE CASCADE)............................................................18
.2 BÀI TẬP ĐSQH...............................................................................................................18
.2.1 Câu 1: Hãy cho biết tên và địa chỉ các công trình do chủ thầu Công ty xây dựng số
tham gia vào ngày 18/12/94.-------------------------------------------------------------21
3.7 Câu 7: Cho biết họ tên và năm sinh của các kiến trúc sư đã tốt nghiệp ở thành phố
Hồ Chí Minh và đã thiết kế ít nhất một công trình có kinh phí đầu tư trên 400 triệu
đồng. 21
3.8 Câu 8: Cho biết họ tên các kiến trúc sư vừa thiết kế các công trình do chủ thầu
Phòng dịch vụ Sở xây dựng thi công, vừa thiết kế các công trình do chủ thầu Lê Văn
Sơn thi công.-------------------------------------------------------------------------------21
3.9 Câu 9: Cho biết tên công trình có kinh phí cao nhất. ----------------------------22
3.10 Câu 10: Cho biết họ tên các công nhân có tham gia các công trình ở Cần Thơ,
nhưng không có tham gia công trình ở Vĩnh Long.-----------------------------------22
3.11 Câu 11: Cho biết tên của các chủ thầu đã thi công các công trình có kinh phí lớn
hơn tất cả các công trình do chủ thầu Phòng dịch vụ Sở xây dựng thi công.------22
3.12 Câu 12: Cho biết họ tên các kiến trúc sư có thù lao thiết kế cho một công trình nào
đó dưới giá trị trung bình thù lao thiết kế của một kiến trúc sư cho một công trình.22
3.13 Câu 13: Tìm tên và địa chỉ các chủ thầu đã trúng thầu ứng với công trình có kinh
phí thấp nhất.------------------------------------------------------------------------------23
3.14 Câu 14: Tìm họ tên và chuyên môn của các công nhân tham gia các công trình do
kiến trúc sư ‘Le Thanh Tung’ thiết kế.------------------------------------------------23
3.15 Câu 15: Tìm các cặp tên của chủ thầu có trúng thầu các công trình tại cùng một
thành phố.----------------------------------------------------------------------------------23
3.16 Câu 16: Tìm các cặp tên của các công nhân có làm việc chung với nhau trong ít
nhất là hai công trình.---------------------------------------------------------------------23
3.17 Câu 17: Tìm tổng kinh phí của tất cả các công trình theo từng chủ thầu.----24
3.18 Câu 18: Cho biết họ tên các kiến trúc sư có tổng thù lao thiết kế các công trình lớn
hơn 25 triệu.-------------------------------------------------------------------------------24
3.19 Câu 19: Cho biết số lượng các kiến trúc sư có tổng thù lao thiết kế các công trình
lớn hơn 25 triệu.---------------------------------------------------------------------------24
3.20 Câu 20: Tìm tổng số công nhân đã tham gia của mỗi công trình.-------------24
3.21 Câu 21: Tìm tên và địa chỉ công trình có tổng số công nhân tham gia nhiều nhất. 24
3.22 Câu 22: Cho biết tên các thành phố và kinh phí trung bình cho mỗi công trình của
dữ liệu trong môn hệ cơ sở dữ liệu.
Đại học Tin Học 5 Trang 3
Nhóm 12 Bài tập lớn môn Hệ Cơ Sở Dữ Liệu
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
1. CÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ
1.1 Định nghĩa Đại số quan hệ
- Đại số quan hệ là một bộ α = <M, P> trong đó:
M là tập các quan hệ cho trước.
P là tập các phép toán cơ bản sau đây:
1. Phép chọn (Selection) ( )
2. Phép chiếu (Projection) [ ]
3. Phép hợp (Union)
∪
hay +
4. Phép giao (Intersection)
∩
hay
5. Phép trừ (Subtraction) – hay \
6. Phép chia (Division) ÷ hay /
7. Phép kết nối tự nhiên (Natural Join) *
8. Phép tích Đề-các (Dacastersian) x
9. Phép θ kết nối (delta-join)
- Ví dụ : Cho lược đồ cơ sở dữ liệu như sau :
SV (MASV, HOTEN_SV, NAMS_SV, DCHI_SV, TENLOP)
MON (MAMH, TENMON, SO_TC, LOAI_MON)
GV (MAGV, HOTEN_GV, NAMS_GV, HOCVI)
HOC (MASV, MAMH, STT_HK, NKHOA, LANTHI, K_QUA)
DAY (MA_GV, MAMH, STT_HK, NKHOA)
1.1.1 Phép chọn (Selection) kí hiệu ( )
- Mục đích của phép chọn là xây dựng một tập con gồm các bộ của quan hệ đã cho,
101 Tran Van An 1990 Can Tho TH5
102 Le Thanh Ha 1991 Vinh Long XD5
103 Phan Thi Mo 1992 Can Tho DL5
Đại học Tin Học 5 Trang 4
R: Danh sách lớp:
S: Danh sách môn học:
Nhóm 12 Bài tập lớn môn Hệ Cơ Sở Dữ Liệu
( ' 5')
( )
TENLOP TH
SV
σ
=
1.1.2 Phép chiếu (Projection) kí hiệu [ ]
Định nghĩa:
Cho quan hệ R(
U
) và tập thuộc tính X
⊆
U
. Phép chiếu quan hệ R trên X cho
ta quan hệ P có tập thuộc tính là X và các bộ và các bộ là hạn chế trên X của các bộ
trong R.
P = R[X] = {t.X | t
∈
R }
Ví dụ: Tìm mã số, họ tên sinh viên có địa chỉ ‘Can Tho’.
SV
MASV HOTEN_SV NAMS_SV DCHI_SV TENLOP
TH333
TH555
MASV
101
102
MASV MAMH
101 TH333
101 TH555
102 TH333
102 TH555
R x S: Danh sách sinh viên để theo dõi:
GV.NAMS_GV < SV.MANS_SV
Nhóm 12 Bài tập lớn môn Hệ Cơ Sở Dữ Liệu
1.1.4 Phép θ - kết nối: kí hiệu
Định nghĩa:
Cho hai quan hệ R(U) và S(V). Gọi θ là một phép toán logic liên quan tới các
thuộc tính của U và V (thường thuộc trong các phép so sánh <, ≤, >, =, ≠). Phép θ
kết nối giữa quan hệ R với quan hệ S, là một quan hệ P với tập thuộc tính U
∪
V,
được định nghĩa như sau:
P = R S = { <u, v> | u
∈
R
∧
v
∈
S
∧
u [U] θ v [V] }
∧
u.X = v.X}
Ví dụ: Tìm tên các môn học có học trong học kỳ 1 năm học 2012 – 2013.
_ 1 '2012 2013'
: ( )
MAMH STT HK NKHOA
A HOC
π σ
= ∧ = −
Đại học Tin Học 5 Trang 6
MASV HOTEN_SV NAMS_SV
101 Trần Thu Thảo 1988
102 Nguyễn Thị Thu 1990
103 Phan Pham Chuc 1988
MAGV HOTEN_GV NAMS_GV MASV HOTEN_SV NAMS_SV
CTU554 Huỳnh Thị Thùy Linh 1989 101 Trần Thu Thảo 1988
CTU554 Huỳnh Thị Thùy Linh 1989 103 Phan Pham Chuc 1988
GV
SV
Nhóm 12 Bài tập lớn môn Hệ Cơ Sở Dữ Liệu
,
: ( )
MAMH TENMON
B MON
π
P = A*B
1.1.6 Phép chia ( Division): kí hiệu /
Định nghĩa:
Cho hai quan hệ R(U) và S(V) với U
⊃
∪
S = R + S = {t|t
∈
R
∨
t
∈
S}
Ví dụ: Liệt kê danh sách mã sinh viên và mã môn học.
( ) ( )
MASV MAMH
SV MON
π π
∪
1.1.8 Phép giao (Intersection): kí hiệu
∩
Định nghĩa:
Giao của hai quan hệ tương thích R(U) và S(V) là quan hệ P với tập thuộc tính U
và các bộ đồng thời có mặt trong hai quan hệ cho trước
P = P
∩
S = P . S = { t | t
∈
R
∧
t
∈
S}
Ví dụ: Tìm mã số của sinh viên vừa có học lớp TH5 vừa có học lớp DL5.
' 5' ' 5'
π σ
= ∧ = −
.2 NGÔN NGỮ SQL
.1.1 Cú pháp
Cú pháp của lệnh SQL được giới thiệu theo dạng mở rộng của ký hiệu BNF:
- Chữ hoa đại diện cho từ khóa.
- Chữ thường đại diện cho các từ của người dùng định nghĩa.
Đại học Tin Học 5 Trang 7
Nhóm 12 Bài tập lớn môn Hệ Cơ Sở Dữ Liệu
- Dấu | chỉ sự lựa chọn.
- Dấu { chỉ phần tử bắt buộc phải có.
- Dấu [ chỉ phần tử tùy chọn (không bắt buộc).
- Dấu … chỉ thành phần có thể lặp lại từ 0 đến nhiều lần.
.1.2 Các phép toán
Ví dụ : Cho lược đồ cơ sở dữ liệu như sau :
KTRUCSU(MA_KTS, HOTEN_KTS, NAMS_KTS, PHAI, NOI_TN,
DCHI_LL_KTS)
CHUTHAU(ID_THAU, TEN_THAU, TEL, DCHI_THAU)
CHUNHAN(ID_CHU, TEN_CHU, DCHI_CHU)
CONGNHAN(MA_CN, HOTEN_CN, NAMS_CN, NAM_VAO_N, CH_MON)
CGTRINH(STT_CTR, TEN_CTR, DCHI_CTR, TINH_THANH, KINH_PHI,
ID_CHU, ID_THAU, NGAY_BD)
THAMGIA(MA_CN, STT_CTR, NGAY_TGIA, SO_NGAY)
THIETKE(MA_KTS, STT_CTR, THU_LAO)
2.2.1 Truy vấn đơn giản:
- Truy vấn dữ liệu từ một bảng, có thể định thứ tự xuất hiện các cột:
SELECT [DISTINC | ALL]
{* | <tên cột 1> [,<tên cột 2>[, …] ] }
FROM <tên bảng>
Ví dụ: Tìm họ tên công nhân trong bảng công nhân:
+) Dạng 7: tìm kiếm theo trị thống NULL <cột> IS [NOT] NULL
2.2.4 Kết nối ngoại (outer join)
- Cho phép giữ lại những dòng không thỏa điều kiện kết nối.
- Có 3 loại kết nối:
FROM <bảng 1> LEFT JOIN <bảng 2> ON <điều kiện kết nối>
FROM <bảng 1> RIGHT JOIN <bảng 2> ON <điều kiện kết nối>
FROM <bảng 1> FULL JOIN <bảng 2> ON <điều kiện kết nối>
Ví dụ: Hãy liệt kê tên thầu, tên công trình, tỉnh thành kể cả những tên thầu có
tỉnh thành trùng với nhau:
SELECT TEN_THAU, TEN_CTR, TINH_THANH
FROM CHUTHAU A LEFT JOIN CGTRINH B
ON A.ID_THAU = B.ID_THAU
2.2.5 Các phép toán tập hợp
Phép hợp (UNION), giao (INTERSECT), trừ (DIFFERENCE hay EXPERT)
Định dạng chung của phép toán tập hợp:
<toán tử> [ALL] [CORRESPONDING [BY {cột 1 […] } ] ]
2.2.6 ĐỊNH NGHĨA BẢNG
2.2.6.1 Tạo bảng
Bước đầu tiên để tạo một CSDL là tạo bảng. Lệnh CREATE TABLE
dùng tạo bảng với cú pháp như sao:
CREATE TABLE<tên bảng>
(<tên cột 1><loại dữ liệu>[NOT NULL],
(<tên cột 2><loại dữ liệu>[NOT NULL],
Đại học Tin Học 5 Trang 9
Nhóm 12 Bài tập lớn môn Hệ Cơ Sở Dữ Liệu
...
(<tên cột n><loại dữ liệu>[NOT NULL])
Từ khóa NOT NULL co nghĩa là bắt buộc phải có giá trị trong cột này.
Ví dụ: Tạo bảng có tên là chủ nhân:
CREATE TABLE CHUNHAN(
ta sử từ khóa INTO<nơi kết xuất> để lưu kết quả câu hỏi.nếu không có INTO, kết quả
có thể in ra màn hình,máy in, tập tin...nơi kết xuất có thể là:
TABLE<tên của table>
DBF<tên của dbf>
ARRAY<tên bảng>
CURSOR<tên cursor>
Ví dụ: Lưu kết quả câu hỏi của bảng công nhân:
SELECT* INTO DBF TAM
FROM CONGNHAN
2.2.7.3 Sắp xếp kết quả
Đại học Tin Học 5 Trang 10