P. 1
CƠ SỞ DỮ LIỆU.

CƠ SỞ DỮ LIỆU.

|Views: 9|Likes:
Được xuất bản bởiVu Hung Cuong
csdl
csdl

More info:

Published by: Vu Hung Cuong on Apr 04, 2013
Bản quyền:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

11/02/2014

pdf

text

original

CƠ SỞ DỮ LIỆU

Vũ Song Tùng
Khoa Điện tử - Viễn Thông
ĐHBK – Hà Nội
Chương 1. Các khái niệm cơ bản
• Cơ sở dữ liệu (CSDL): Tập hợp các dữ liệu của
một hệ thống thông tin, được lưu trữ theo một
cung cách nhất định để có thể xử lý bằng máy
tính điện tử.
– MS Access, SQL server, MySQL, Oracle
• Hệ quản trị (HQT) CSDL: Tập hợp các chương
trình, thuật toán để thao tác trên CSDL.
• Kiến trúc của CSDL:
Gồm 3 mức: vật lý (physical), khái niệm (logical)
và khung nhìn (view)
Chương 1. Các khái niệm cơ bản
Khung nhìn
Khái niệm
Vật lý
Chương 1. Các khái niệm cơ bản
• Quan hệ (Relation): Tập con của tích Đề-các
của các miền.
• Miền (domain): Tập các giá trị.
– Gọi D
i
là một miền.
– Tích Đề-các của n miền D
1
x D
2
x … x D
n
là tập
tất cả n-bộ (tuple), mỗi bộ là một tập hợp của n
giá trị (v
1
, v
2
, …, v
n
) với v
i
e D
i
| i = 1…n
Chương 1. Các khái niệm cơ bản
VD:
• Miền THIÊN CAN (10 giá trị): Giáp, Ất,
Bính, Đinh, Mậu, Kỷ, Canh, Tân, Nhâm, Quý
• Miền ĐỊA CHI (12 giá trị): Tý, Sửu, Dần,
Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuất,
Hợi
• Tích Đề-các của THIÊN CAN x ĐỊA CHI là
120 bộ:
{ (Giáp, Tý), (Giáp, Sửu), …, (Quý, Hợi) }
Chương 1. Các khái niệm cơ bản
• Một số ký hiệu:
• R = {A
1
, A
2
, …, A
n
} – Tập các thuộc tính
• r(R) – Quan hệ trên tập thuộc tính của R
• r(A
1
, A
2
, …, A
n
) – Quan hệ trên tập thuộc tính
{A
1
, A
2
, …, A
n
}
Chương 1. Các khái niệm cơ bản
• Nếu biểu diễn quan hệ dưới dạng bảng thì mỗi hàng
là một bộ và mỗi cột là một thuộc tính của quan hệ.
A
1
… A
n
Giá trị
Thuộc tính (Cột) Biến quan hệ
(Tên bảng)
r
Tiêu đề
Thân
Quan hệ
Bản ghi (Hàng)
Chương 1. Các khái niệm cơ bản
VD:
• nếu R = { THIÊN CAN, ĐỊA CHI }
• thì quan hệ tuổi(R) là tập hợp của 60 trong 120
bộ của tích Đề-các THIÊN CAN x ĐỊA CHI:
t
1
= (Giáp, Tý)
t
2
= (Ất, Sửu)

t
11
= (Giáp, Tuất)
t
13
= (Bính, Tý)

t
60
= (Quý, Hợi)
Chương 1. Các khái niệm cơ bản
VD:
• Quan hệ năm_tuổi(NĂM, THIÊN CAN, ĐỊA CHI) là
một tập vô hạn các bộ:
t
1
= (1984, Giáp, Tý)
t
2
= (1985, Ất, Sửu)

t
60
= (2043, Quý, Hợi)
t
61
= (2044, Giáp, Tý)
Chương 1. Các khái niệm cơ bản
• Khóa (Key):
Khóa của quan hệ r(R) là tập con K _ R
sao cho, với hai bộ bất kỳ t1, t2 e r, luôn
tồn tại một thuộc tính A e K mà t1(A) ≠
t2(A) hay t1(K) ≠ t2(K)
Chương 1. Các khái niệm cơ bản
VD:
– Khóa của quan hệ tuổi(THIÊN CAN, ĐỊA CHI)
là tập hợp của cả 2 thuộc tính
– Khóa của quan hệ năm_tuổi(NĂM, THIÊN
CAN, ĐỊA CHI) có thể là {NĂM}, {NĂM,
THIÊN CAN}, {NĂM, ĐỊA CHI} hoặc tập hợp
của cả 3 thuộc tính
Chương 1. Các khái niệm cơ bản
• Các phép toán cập nhật dữ liệu
– Phép chèn (insert):
• INSERT (r; A
1
=v
1
, A
2
= v
2
, …, A
n
= v
n
)
– Phép xóa (delete):
• DEL (r; K
1
= k
1
, K
2
= k
2
, …, K
m
= k
m
)
– Phép chỉnh sửa (change):
• CH (r; K
1
= k
1
, K
2
= k
2
, …, K
m
= k
m
; X
1
= v
1
, X
2
= v
2
, …,
X
n
= v
n
)

A
i
– Thuộc tính của r
K
i
– Khóa của r
X
i
– Thuộc tính không khóa của r
v
i
– giá trị trong miền của thuộc tính i của r
Chương 2. Ngôn ngữ SQL
• SQL
Ngôn ngữ truy vấn có cấu trúc (Structured
Query Language)
• Có thể chia làm 2 loại
– Ngôn ngữ định nghĩa dữ liệu DDL (Data
Definition Language)
– Ngôn ngữ thao tác dữ liệu (Data Manipulation
Language)


Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
a. Phép hợp (Union): Phép hợp của hai quan
hệ khả hợp r
1
và r
2
, ký hiệu là r
1
r
2
, là tập
tất cả các bộ thuộc r
1
hoặc r
2
hoặc thuộc cả
hai quan hệ, nghĩa là:
r
1
r
2
= { t | t e r
1
v t e r
2
}
SELECT *, 1 AS LanThi FROM tblDiem
UNION
SELECT *, 2 AS LanThi FROM tblThiLai
Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
b. Phép giao (Intersection): Phép giao của hai
quan hệ khả hợp r
1
và r
2
, ký hiệu là r
1
· r
2
, là
tập tất cả các bộ thuộc cả hai quan hệ,
nghĩa là:
r
1
· r
2
= { t | t e r
1
. t e r
2
}
SELECT * FROM tblSinhVien WHERE SHSV
IN (SELECT SHSV FROM tblThiLai)
Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
c. Phép trừ (Minus): Phép trừ của hai quan hệ
khả hợp r
1
và r
2
, ký hiệu là r
1
– r
2
, là tập tất
cả các bộ thuộc r
1
nhưng không thuộc r
2
,
nghĩa là:
r
1
– r
2
= { t | t e r
1
. t e r
2
}
SELECT * FROM tblSinhVien WHERE NOT SHSV
IN (SELECT SHSV FROM tblThiLai)
Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
d. Tích Đề-các (Cartesian Product): Phép tích Đề-
các của hai quan hệ r
1
(A
1
,…,A
n
) và r
2
(B
1
,…,B
m
), ký
hiệu là r
1
× r
2
, là tập tất cả (n+m)-bộ, mỗi bộ có n
thuộc tính thuộc r
1
và m thuộc tính thuộc r
2
, nghĩa
là:
r
1
× r
2
= {t | t = (a
1
,…,a
n
,b
1
,…,b
n
) . (a
1
,…,a
n
) e r
1
. (b
1
,…,b
n
) e r
2
}
SELECT SHSV, MaMon FROM tblSinhVien, tblMonHoc
Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
e. Phép chiếu (Projection): Phép chiếu trên
tập thuộc tính X _ A của quan hệ r(A), ký
hiệu là [
X
(r), là tập các bộ của r xác định
trên X, nghĩa là:
[
X
(r) = { t[X] | t e r }
SELECT SHSV FROM tblSinhVien
Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
f. Phép chọn (Selection): Phép chọn trên quan hệ r
với biểu thức chọn F, ký hiệu là o
F
(r), là tập các bộ
của r thỏa mãn F, nghĩa là:
o
F
(r) = { t | t e r . F(t) = true }
F là một biểu thức gồm các toán tử logic . (AND), v (OR), ÷ (NOT)
và các toán tử so sánh >, <, >, s, =, =.
SELECT SHSV, MaMon FROM tblDiem
WHERE (Diem < 5) OR (Diem IS NULL)
Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
g. Phép kết nối (J oin): Phép kết nối hai quan hệ r
1
và r
2
, ký hiệu
là r
1
 r
2
, là sự kết nối hai quan hệ dựa trên tương quan nào
đó giữa các thuộc tính của hai quan hệ. Có thể coi phép kết
nối là sự kết hợp của phép tích Đề-các và phép chọn, nghĩa là:
r
1
 r
2
= {t | t e r
1
× r
2
. F(t(Aer
1
), t(Ber
2
)) = true}
F
SELECT Ho, Ten, TenMon, Diem FROM
tblSinhVien, tblDiem, tblMonHoc
WHERE
tblSinhVien.SHSV = tblDiem.SHSV AND
tblMonHoc.MaMon = tblDiem.MaMon
SELECT Ho, Ten, TenMon, Diem FROM
(tblSinhVien INNER JOIN tblDiem ON
tblSinhVien.SHSV = tblDiem.SHSV)
INNER JOIN tblMonHoc ON
tblDiem.MaMon = tblMonHoc.MaMon
Chương 2. Ngôn ngữ SQL
• Đại số quan hệ
h. Phép chia (Division): Phép chia của hai quan hệ
r
1
(A
1
,…,A
n
) và r
2
(B
1
,…,B
m
) với (n > m . r2 = C), ký
hiệu là r
1
÷ r
2
, là tập tất cả (n÷m)-bộ {t | t · ¬u

e r1},
có thể coi phép chia là nghịch đảo của phép tích Đề-
các, nghĩa là:
r
1
÷ r
2
= r
3
¬ r
1
_ r
3
× r
2
Chương 2. Ngôn ngữ SQL
• Khối SELECT
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [,
[table.]field2 [AS alias2] [, ...]]}
FROM
tableexpression [, ...]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]

Chương 2. Ngôn ngữ SQL
• Khối SELECT

predicate
Một trong các tiền tố: ALL, DISTINCT, DISTINCTROW, hoặc TOP.
Dùng tiền tố để chỉ ra số lượng bản ghi được chọn. Mặc định là ALL.
*
Lấy tất cả các trường của bảng (hoặc các bảng).
table
Tên của bảng chứa trường được chọn.
field1, field2
Tên của trường được chọn. Trong trường hợp các trường được liệt
kê rõ thì thứ tự các cột sẽ là thứ tự các trường trong danh sách.
alias1, alias2
Tên hình thức. Dùng làm tiêu đề của một cột trong table.
tableexpression
Tên bảng dữ liệu
externaldatabase
Tên của CSDL chứa table. Dùng trong trường hợp cần lấy dữ liệu từ
CSDL khác
Chương 2. Ngôn ngữ SQL
• Khối SELECT – các hằng
123 Số nguyên
123.5 Số thực
„abc‟ hoặc “abc” Xâu ký tự
#5/19/2010# Ngày tháng
Chương 2. Ngôn ngữ SQL
• Mệnh đề WHERE
– Các biểu thức với các toán tử so sánh
– Sử dụng các toán tử logic AND, OR để nối các biểu
thức
– Sử dụng toán tử NOT để phủ định một biểu thức
SELECT * FROM
tblPhongBan
WHERE
((MaPhongBan=1)
OR
(MaPhongBan=2))
MaPhongBan TenPhongBan
1 Phòng hành chính
2 Phòng tài vụ
Chương 2. Ngôn ngữ SQL
• Mệnh đề WHERE – toán tử LIKE
– Sử dụng cho các hằng xâu ký tự cùng quy cách
Kind of match Pattern
Match No match
(returns True) (returns False)
Multiple characters a*a aa, aBa, aBBBa aBC
*ab* abc, AABB, Xab aZb, bac
Special character a[*]a a*a aaa
Multiple characters ab* abcdefg, abc cab, aab
Single character a?a aaa, a3a, aBa aBBBa
Single digit a#a a0a, a1a, a2a aaa, a10a
Range of characters [a-z] f, p, j 2, &
Outside a range [!a-z] 9, &, % b, a
Not a digit [!0-9] A, a, &, ~ 0, 1, 9
Combined a[!b-m]# An9, az0, a99 abc, aj0
Chương 2. Ngôn ngữ SQL
• Mệnh đề WHERE – toán tử LIKE

SELECT Ho & " " & Ten
AS HoTen FROM
tblNhanVien WHERE
Ho LIKE "*Thị*"
HoTen
Đặng Thị Thanh Tuyền
Đặng Thị Tố Trâm
HoTen
Trần Thu Thủy
Nguyễn Hoàng Long
Hà Hải Hưng
Đặng Thị Tố Trâm
Nguyễn Văn Hạnh
SELECT Ho & " " & Ten
AS HoTen FROM
tblNhanVien WHERE
Ten LIKE "????"
Chương 2. Ngôn ngữ SQL
• Toán tử JOIN
Dùng để nối hai bảng dữ liệu
table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
Part Description
table1,
table2
The names of the tables from which records are combined.
field1, field2
The names of the fields that are joined. If they are not numeric, the fields
must be of the same data type (data type: The characteristic of a field that
determines what type of data it can hold. Data types include Boolean,
Integer, Long, Currency, Single, Double, Date, String, and Variant
(default).) and contain the same kind of data, but they do not have to have
the same name.
compopr Any relational comparison operator: "=," "<," ">," "<=," ">=," or "<>."
Chương 2. Ngôn ngữ SQL
• Toán tử JOIN
HoTen TenPhongBan
Nguyễn Hoàng Long Phòng tài vụ
Vũ Tú Nam Phòng tài vụ
Trần Thu Thủy Phòng tài vụ
Đặng Thị Tố Trâm Phòng kinh doanh
Nguyễn Đức Lân Phòng hành chính
Hoàng Thanh Tú Phòng hành chính
Đặng Thị Thanh Tuyền Phòng hành chính
Nguyễn Văn Hạnh Kho
Hà Hải Hưng Kho
SELECT Ho & " " & Ten AS HoTen, TenPhongBan FROM
tblNhanVien INNER JOIN tblPhongBan
ON tblNhanVien.MaPhongBan = tblPhongBan.MaPhongBan
ORDER BY TenPhongBan DESC, Ten, Ho
Chương 2. Ngôn ngữ SQL
• Hàm MIN, MAX, COUNT và SUM
– Các hàm dùng để tính giá trị nhỏ nhất, lớn nhất, đếm
số lượng và tổng của một thuộc tính trong một bảng
dữ liệu
– Ví dụ:
• MIN(HeSoLuong) – Giá trị nhỏ nhất của HeSoLuong
• SUM(HeSoLuong * 650000) – Tổng lương phải trả
• SELECT COUNT(*) FROM tblNhanVien – Đếm số nhân viên
MaNhan
Vien
TongHeSo
1 3.33
2 4
3 3.83
4 3.45
5 3.67
6 5.65
7 3.89
8 4.33
9 3.67
MaNhan
Vien
MaChuc
Vu
6 1
2 2
8 3
7 3
4 3
3 4
Ma
Chuc
Vu
TenChucVu HeSo
1 Giám đốc 1.5
2 Phó giám đốc 1
3 Trưởng phòng 1
4 Phó trưởng phòng 0.5
MaNhan
Vien
Ngay
HeSo
Luong
1 01/01/2000 1.92
1 01/06/2003 2.45
1 01/01/2006 2.89
1 01/01/2009 3.33
2 01/01/2010 3
3 01/01/2010 3.33
4 01/01/2010 2.45
5 01/01/2010 3.67
6 01/01/2010 4.15
7 01/01/2010 2.89
8 01/01/2010 3.33
9 01/01/2010 3.67
2 01/01/2007 2.67
3 01/01/2007 3
4 01/01/2007 2.15
5 01/01/2007 2.33
6 01/01/2007 3.89
7 01/01/2007 2.45
8 01/01/2007 3
9 01/01/2007 3.33
SELECT MaNhanVien,
ROUND(Sum(HeSo), 2) AS TongHeSo
FROM
(
SELECT MaNhanVien,
MAX(HeSoLuong) AS HeSo FROM
tblHeSoLuong
GROUP BY MaNhanVien
UNION
SELECT MaNhanVien, HeSo FROM
tblChucVuNhanVien INNER JOIN
tblChucVu
ON tblChucVuNhanVien.MaChucVu =
tblChucVu.MaChucVu
)
GROUP BY MaNhanVien
Chương 2. Ngôn ngữ SQL
• Bài tập:
– Tạo bảng LuongNhanVien(MaPhongBan, HoTen, LuongNhan)
• HoTen – họ tên nhân viên
• LuongNhan = TongHeSo * 650000
– Tạo bảng LuongPhong(TenPhongBan, TongLuong)
• TongLuong – Tổng lương của nhân viên trong từng phòng ban

Chương 2. Ngôn ngữ SQL
• Bài tập: Cho lược đồ CSDL
KhachHang(MaKH, HoTen, DiaChi)
ThueBao(MaKH, SoMay, NgayDK)
BangCuoc(MaKC, TenKC, Cuoc)
CuocGoi(SoMay, ThoiDiem, MaKC, ThoiGian)
• Yêu cầu:
– Vẽ sơ đồ thực thể liên kết
– Liệt kê chi tiết của từng cuộc gọi (bao gồm cả số tiền phải trả)
– Liệt kê tổng số tiền của từng máy theo từng loại khoảng cách
– Liệt tổng số cuộc gọi và tổng số tiền phải trả của từng máy
– Liệt kê tổng số tiền của từng khách hàng
Các bảng kê chỉ lấy số liệu của các cuộc gọi thực hiện trong tháng 3 năm 2010
Chú thích: MaKH – Mã khách hàng, NgayDK – Ngày đăng ký, MaKC – Mã khoảng cách,
TenKC – Tên gọi khoảng cách (Nội hạt, đường dài, quốc tế …)
Chương 3. Thiết kế CSDL
• Phụ thuộc hàm (FD)
Cho lược đồ quan hệ R(A
1
, A
2
, … , A
n
)
X, Y – hai tập con của R
+
= {A
1
, A
2
, … , A
n
}
r – quan hệ trên R
t
1
, t
2
– hai bộ bất kỳ của r

X xác định Y (hay Y phụ thuộc hàm vào X) khi
và chỉ khi mỗi giá trị X chỉ xác định một giá trị Y

X ÷ Y · t
1
.X = t
2
.X ¬ t
1
.Y = t
2
.Y
Chương 3. Thiết kế CSDL
• Hệ tiên đề AMSTRONG

Cho lược đồ quan hệ R(U)
X, Y, Z – các tập con của U
XY – hợp của X và Y (X Y)

– Phản xạ (reflexivity)
nếu X _ Y, thì X ÷ Y
– Tăng trưởng (augmentation)
nếu X ÷ Y, thì XZ ÷ YZ với ¬Z
– Bắc cầu (transitivity)
nếu X ÷ Y và Y ÷ Z, thì X ÷ Z

Chương 3. Thiết kế CSDL
• Hệ tiên đề AMSTRONG – Các mệnh đề

– Hợp (union)
nếu X ÷ Y và X ÷ Z, thì X ÷ YZ
– Phân rã (decomposition)
nếu X ÷ YZ, thì X ÷ Y và X ÷ Z
– Bắc cầu giả (pseudo transitivity)
nếu A ÷ B và BC ÷ D, thì AC ÷ D

Chương 3. Thiết kế CSDL
• Hệ tiên đề AMSTRONG – Ứng dụng

– Loại bỏ thừa phụ thuộc hàm
• { A ÷ B , B ÷ C , A ÷ C }

– Loại bỏ thừa thuộc tính
• { A ÷ B , B ÷ C , A ÷ CD }
• { A ÷ B , B ÷ C , AC ÷ D }
Chương 3. Thiết kế CSDL
• Khóa

– Siêu khóa (Super Key): Là một hay một tập các cột (thuộc tính) xác
định duy nhất một hàng trong bảng;
SK là siêu khóa của R khi với mọi t1, t2 thuộc bất kỳ thể hiện r của
R ta luôn có t1[SK] ≠ t2[SK].

– Khóa ứng viên (Candidate Key): Một tập con của siêu khóa (cũng là
một siêu khóa), nhưng không thể thu lại thành một siêu khóa khác.

– Khóa chính (Primary Key): Là một khóa được lựa chọn một cách tùy
ý từ tập các khóa ứng viên, và được sử dụng trong các chỉ mục của
bảng đó.

– Khóa ngoại (Foreign Key): Là cột dùng để chứa dữ liệu dùng cho
việc liên kết với các bảng khác trong CSDL.

Chương 3. Thiết kế CSDL
• Chuẩn hóa dữ liệu
Dạng chuẩn 1
(1NF)
Dạng chuẩn 2
(2NF)
Dạng chuẩn 3
(3NF)
Các thuộc tính
của quan hệ
đều là thuộc
tính nguyên tố
Các thuộc tính không
khóa của quan hệ phụ
thuộc hàm đầy đủ vào
khóa chính
Các thuộc tính không khóa
của quan hệ không phụ
thuộc hàm bắc cầu vào khóa
chính
Loại bỏ những
phụ thuộc hàm
không đầy đủ

Loại bỏ những
phụ thuộc hàm
bắc cầu
Chương 3. Thiết kế CSDL
• Chuẩn hóa dữ liệu
LươngNhânViên(MãNhânViên, HọTên, Ngày, HệSốLương, LươngTháng)
NhânViên(MãNhânViên, HọTên)
LươngNhânViên(MãNhânViên, Ngày, HệSốLương, LươngTháng)

NhânViên(MãNhânViên, HọTên)
LươngNhânViên(MãNhânViên, Ngày, HệSốLương)

Chương 3. Thiết kế CSDL
• Chuẩn hóa dữ liệu – Bài tập
Cho bảng dữ liệu về điểm thi của sinh viên như sau:
Giả thiết:
• Một môn học có thể được sắp xếp ở nhiều học kỳ
• Đối với mỗi môn học, sinh viên có thể được thi từ 1 đến 4 lần. Sau lần 1, điểm thi
được lưu vào cột L2
Yêu cầu:
• Chuẩn hóa dữ liệu điểm sinh viên
• Tính điểm trung bình lần 1 và lần cao nhất của sinh viên theo từng học kỳ
SHSV Họ tên Ngày sinh
Học kỳ 1 2

Mã môn ET001 … ET002 …
Môn Toán … Lập trình …
Số HT 6 … 4 …
Lần thi L1 L2 … L1 L2 …
0001 Nguyễn Thành An 6/25/1991

You're Reading a Free Preview

Tải về
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->