You are on page 1of 41

C S D LIU

V Song Tng
Khoa in t - Vin Thng
HBK H Ni
Chng 1. Cc khi nim c bn
C s d liu (CSDL): Tp hp cc d liu ca
mt h thng thng tin, c lu tr theo mt
cung cch nht nh c th x l bng my
tnh in t.
MS Access, SQL server, MySQL, Oracle
H qun tr (HQT) CSDL: Tp hp cc chng
trnh, thut ton thao tc trn CSDL.
Kin trc ca CSDL:
Gm 3 mc: vt l (physical), khi nim (logical)
v khung nhn (view)
Chng 1. Cc khi nim c bn
Khung nhn
Khi nim
Vt l
Chng 1. Cc khi nim c bn
Quan h (Relation): Tp con ca tch -cc
ca cc min.
Min (domain): Tp cc gi tr.
Gi D
i
l mt min.
Tch -cc ca n min D
1
x D
2
x x D
n
l tp
tt c n-b (tuple), mi b l mt tp hp ca n
gi tr (v
1
, v
2
, , v
n
) vi v
i
e D
i
| i = 1n
Chng 1. Cc khi nim c bn
VD:
Min THIN CAN (10 gi tr): Gip, t,
Bnh, inh, Mu, K, Canh, Tn, Nhm, Qu
Min A CHI (12 gi tr): T, Su, Dn,
Mo, Thn, T, Ng, Mi, Thn, Du, Tut,
Hi
Tch -cc ca THIN CAN x A CHI l
120 b:
{ (Gip, T), (Gip, Su), , (Qu, Hi) }
Chng 1. Cc khi nim c bn
Mt s k hiu:
R = {A
1
, A
2
, , A
n
} Tp cc thuc tnh
r(R) Quan h trn tp thuc tnh ca R
r(A
1
, A
2
, , A
n
) Quan h trn tp thuc tnh
{A
1
, A
2
, , A
n
}
Chng 1. Cc khi nim c bn
Nu biu din quan h di dng bng th mi hng
l mt b v mi ct l mt thuc tnh ca quan h.
A
1
A
n
Gi tr
Thuc tnh (Ct) Bin quan h
(Tn bng)
r
Tiu
Thn
Quan h
Bn ghi (Hng)
Chng 1. Cc khi nim c bn
VD:
nu R = { THIN CAN, A CHI }
th quan h tui(R) l tp hp ca 60 trong 120
b ca tch -cc THIN CAN x A CHI:
t
1
= (Gip, T)
t
2
= (t, Su)

t
11
= (Gip, Tut)
t
13
= (Bnh, T)

t
60
= (Qu, Hi)
Chng 1. Cc khi nim c bn
VD:
Quan h nm_tui(NM, THIN CAN, A CHI) l
mt tp v hn cc b:
t
1
= (1984, Gip, T)
t
2
= (1985, t, Su)

t
60
= (2043, Qu, Hi)
t
61
= (2044, Gip, T)
Chng 1. Cc khi nim c bn
Kha (Key):
Kha ca quan h r(R) l tp con K _ R
sao cho, vi hai b bt k t1, t2 e r, lun
tn ti mt thuc tnh A e K m t1(A)
t2(A) hay t1(K) t2(K)
Chng 1. Cc khi nim c bn
VD:
Kha ca quan h tui(THIN CAN, A CHI)
l tp hp ca c 2 thuc tnh
Kha ca quan h nm_tui(NM, THIN
CAN, A CHI) c th l {NM}, {NM,
THIN CAN}, {NM, A CHI} hoc tp hp
ca c 3 thuc tnh
Chng 1. Cc khi nim c bn
Cc php ton cp nht d liu
Php chn (insert):
INSERT (r; A
1
=v
1
, A
2
= v
2
, , A
n
= v
n
)
Php xa (delete):
DEL (r; K
1
= k
1
, K
2
= k
2
, , K
m
= k
m
)
Php chnh sa (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
Thuc tnh ca r
K
i
Kha ca r
X
i
Thuc tnh khng kha ca r
v
i
gi tr trong min ca thuc tnh i ca r
Chng 2. Ngn ng SQL
SQL
Ngn ng truy vn c cu trc (Structured
Query Language)
C th chia lm 2 loi
Ngn ng nh ngha d liu DDL (Data
Definition Language)
Ngn ng thao tc d liu (Data Manipulation
Language)


Chng 2. Ngn ng SQL
i s quan h
a. Php hp (Union): Php hp ca hai quan
h kh hp r
1
v r
2
, k hiu l r
1
r
2
, l tp
tt c cc b thuc r
1
hoc r
2
hoc thuc c
hai quan h, ngha 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
Chng 2. Ngn ng SQL
i s quan h
b. Php giao (Intersection): Php giao ca hai
quan h kh hp r
1
v r
2
, k hiu l r
1
r
2
, l
tp tt c cc b thuc c hai quan h,
ngha l:
r
1
r
2
= { t | t e r
1
. t e r
2
}
SELECT * FROM tblSinhVien WHERE SHSV
IN (SELECT SHSV FROM tblThiLai)
Chng 2. Ngn ng SQL
i s quan h
c. Php tr (Minus): Php tr ca hai quan h
kh hp r
1
v r
2
, k hiu l r
1
r
2
, l tp tt
c cc b thuc r
1
nhng khng thuc r
2
,
ngha 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)
Chng 2. Ngn ng SQL
i s quan h
d. Tch -cc (Cartesian Product): Php tch -
cc ca hai quan h r
1
(A
1
,,A
n
) v r
2
(B
1
,,B
m
), k
hiu l r
1
r
2
, l tp tt c (n+m)-b, mi b c n
thuc tnh thuc r
1
v m thuc tnh thuc r
2
, ngha
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
Chng 2. Ngn ng SQL
i s quan h
e. Php chiu (Projection): Php chiu trn
tp thuc tnh X _ A ca quan h r(A), k
hiu l [
X
(r), l tp cc b ca r xc nh
trn X, ngha l:
[
X
(r) = { t[X] | t e r }
SELECT SHSV FROM tblSinhVien
Chng 2. Ngn ng SQL
i s quan h
f. Php chn (Selection): Php chn trn quan h r
vi biu thc chn F, k hiu l o
F
(r), l tp cc b
ca r tha mn F, ngha l:
o
F
(r) = { t | t e r . F(t) = true }
F l mt biu thc gm cc ton t logic . (AND), v (OR), (NOT)
v cc ton t so snh >, <, >, s, =, =.
SELECT SHSV, MaMon FROM tblDiem
WHERE (Diem < 5) OR (Diem IS NULL)
Chng 2. Ngn ng SQL
i s quan h
g. Php kt ni (J oin): Php kt ni hai quan h r
1
v r
2
, k hiu
l r
1
r
2
, l s kt ni hai quan h da trn tng quan no
gia cc thuc tnh ca hai quan h. C th coi php kt
ni l s kt hp ca php tch -cc v php chn, ngha 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
Chng 2. Ngn ng SQL
i s quan h
h. Php chia (Division): Php chia ca hai quan h
r
1
(A
1
,,A
n
) v r
2
(B
1
,,B
m
) vi (n > m . r2 = C), k
hiu l r
1
r
2
, l tp tt c (nm)-b {t | t u

e r1},
c th coi php chia l nghch o ca php tch -
cc, ngha l:
r
1
r
2
= r
3
r
1
_ r
3
r
2
Chng 2. Ngn ng SQL
Khi SELECT
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [,
[table.]field2 [AS alias2] [, ...]]}
FROM
tableexpression [, ...]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]

Chng 2. Ngn ng SQL
Khi SELECT

predicate
Mt trong cc tin t: ALL, DISTINCT, DISTINCTROW, hoc TOP.
Dng tin t ch ra s lng bn ghi c chn. Mc nh l ALL.
*
Ly tt c cc trng ca bng (hoc cc bng).
table
Tn ca bng cha trng c chn.
field1, field2
Tn ca trng c chn. Trong trng hp cc trng c lit
k r th th t cc ct s l th t cc trng trong danh sch.
alias1, alias2
Tn hnh thc. Dng lm tiu ca mt ct trong table.
tableexpression
Tn bng d liu
externaldatabase
Tn ca CSDL cha table. Dng trong trng hp cn ly d liu t
CSDL khc
Chng 2. Ngn ng SQL
Khi SELECT cc hng
123 S nguyn
123.5 S thc
abc hoc abc Xu k t
#5/19/2010# Ngy thng
Chng 2. Ngn ng SQL
Mnh WHERE
Cc biu thc vi cc ton t so snh
S dng cc ton t logic AND, OR ni cc biu
thc
S dng ton t NOT ph nh mt biu thc
SELECT * FROM
tblPhongBan
WHERE
((MaPhongBan=1)
OR
(MaPhongBan=2))
MaPhongBan TenPhongBan
1 Phng hnh chnh
2 Phng ti v
Chng 2. Ngn ng SQL
Mnh WHERE ton t LIKE
S dng cho cc hng xu k t cng quy cch
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
Chng 2. Ngn ng SQL
Mnh WHERE ton t LIKE

SELECT Ho & " " & Ten
AS HoTen FROM
tblNhanVien WHERE
Ho LIKE "*Th*"
HoTen
ng Th Thanh Tuyn
ng Th T Trm
HoTen
Trn Thu Thy
Nguyn Hong Long
H Hi Hng
ng Th T Trm
Nguyn Vn Hnh
SELECT Ho & " " & Ten
AS HoTen FROM
tblNhanVien WHERE
Ten LIKE "????"
Chng 2. Ngn ng SQL
Ton t JOIN
Dng ni hai bng d liu
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 "<>."
Chng 2. Ngn ng SQL
Ton t JOIN
HoTen TenPhongBan
Nguyn Hong Long Phng ti v
V T Nam Phng ti v
Trn Thu Thy Phng ti v
ng Th T Trm Phng kinh doanh
Nguyn c Ln Phng hnh chnh
Hong Thanh T Phng hnh chnh
ng Th Thanh Tuyn Phng hnh chnh
Nguyn Vn Hnh Kho
H Hi Hng Kho
SELECT Ho & " " & Ten AS HoTen, TenPhongBan FROM
tblNhanVien INNER JOIN tblPhongBan
ON tblNhanVien.MaPhongBan = tblPhongBan.MaPhongBan
ORDER BY TenPhongBan DESC, Ten, Ho
Chng 2. Ngn ng SQL
Hm MIN, MAX, COUNT v SUM
Cc hm dng tnh gi tr nh nht, ln nht, m
s lng v tng ca mt thuc tnh trong mt bng
d liu
V d:
MIN(HeSoLuong) Gi tr nh nht ca HeSoLuong
SUM(HeSoLuong * 650000) Tng lng phi tr
SELECT COUNT(*) FROM tblNhanVien m s nhn vin
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 Gim c 1.5
2 Ph gim c 1
3 Trng phng 1
4 Ph trng phng 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
Chng 2. Ngn ng SQL
Bi tp:
To bng LuongNhanVien(MaPhongBan, HoTen, LuongNhan)
HoTen h tn nhn vin
LuongNhan = TongHeSo * 650000
To bng LuongPhong(TenPhongBan, TongLuong)
TongLuong Tng lng ca nhn vin trong tng phng ban

Chng 2. Ngn ng SQL
Bi tp: Cho lc CSDL
KhachHang(MaKH, HoTen, DiaChi)
ThueBao(MaKH, SoMay, NgayDK)
BangCuoc(MaKC, TenKC, Cuoc)
CuocGoi(SoMay, ThoiDiem, MaKC, ThoiGian)
Yu cu:
V s thc th lin kt
Lit k chi tit ca tng cuc gi (bao gm c s tin phi tr)
Lit k tng s tin ca tng my theo tng loi khong cch
Lit tng s cuc gi v tng s tin phi tr ca tng my
Lit k tng s tin ca tng khch hng
Cc bng k ch ly s liu ca cc cuc gi thc hin trong thng 3 nm 2010
Ch thch: MaKH M khch hng, NgayDK Ngy ng k, MaKC M khong cch,
TenKC Tn gi khong cch (Ni ht, ng di, quc t )
Chng 3. Thit k CSDL
Ph thuc hm (FD)
Cho lc quan h R(A
1
, A
2
, , A
n
)
X, Y hai tp con ca R
+
= {A
1
, A
2
, , A
n
}
r quan h trn R
t
1
, t
2
hai b bt k ca r

X xc nh Y (hay Y ph thuc hm vo X) khi
v ch khi mi gi tr X ch xc nh mt gi tr Y

X Y t
1
.X = t
2
.X t
1
.Y = t
2
.Y
Chng 3. Thit k CSDL
H tin AMSTRONG

Cho lc quan h R(U)
X, Y, Z cc tp con ca U
XY hp ca X v Y (X Y)

Phn x (reflexivity)
nu X _ Y, th X Y
Tng trng (augmentation)
nu X Y, th XZ YZ vi Z
Bc cu (transitivity)
nu X Y v Y Z, th X Z

Chng 3. Thit k CSDL
H tin AMSTRONG Cc mnh

Hp (union)
nu X Y v X Z, th X YZ
Phn r (decomposition)
nu X YZ, th X Y v X Z
Bc cu gi (pseudo transitivity)
nu A B v BC D, th AC D

Chng 3. Thit k CSDL
H tin AMSTRONG ng dng

Loi b tha ph thuc hm
{ A B , B C , A C }

Loi b tha thuc tnh
{ A B , B C , A CD }
{ A B , B C , AC D }
Chng 3. Thit k CSDL
Kha

Siu kha (Super Key): L mt hay mt tp cc ct (thuc tnh) xc
nh duy nht mt hng trong bng;
SK l siu kha ca R khi vi mi t1, t2 thuc bt k th hin r ca
R ta lun c t1[SK] t2[SK].

Kha ng vin (Candidate Key): Mt tp con ca siu kha (cng l
mt siu kha), nhng khng th thu li thnh mt siu kha khc.

Kha chnh (Primary Key): L mt kha c la chn mt cch ty
t tp cc kha ng vin, v c s dng trong cc ch mc ca
bng .

Kha ngoi (Foreign Key): L ct dng cha d liu dng cho
vic lin kt vi cc bng khc trong CSDL.

Chng 3. Thit k CSDL
Chun ha d liu
Dng chun 1
(1NF)
Dng chun 2
(2NF)
Dng chun 3
(3NF)
Cc thuc tnh
ca quan h
u l thuc
tnh nguyn t
Cc thuc tnh khng
kha ca quan h ph
thuc hm y vo
kha chnh
Cc thuc tnh khng kha
ca quan h khng ph
thuc hm bc cu vo kha
chnh
Loi b nhng
ph thuc hm
khng y

Loi b nhng
ph thuc hm
bc cu
Chng 3. Thit k CSDL
Chun ha d liu
LngNhnVin(MNhnVin, HTn, Ngy, HSLng, LngThng)
NhnVin(MNhnVin, HTn)
LngNhnVin(MNhnVin, Ngy, HSLng, LngThng)

NhnVin(MNhnVin, HTn)
LngNhnVin(MNhnVin, Ngy, HSLng)

Chng 3. Thit k CSDL
Chun ha d liu Bi tp
Cho bng d liu v im thi ca sinh vin nh sau:
Gi thit:
Mt mn hc c th c sp xp nhiu hc k
i vi mi mn hc, sinh vin c th c thi t 1 n 4 ln. Sau ln 1, im thi
c lu vo ct L2
Yu cu:
Chun ha d liu im sinh vin
Tnh im trung bnh ln 1 v ln cao nht ca sinh vin theo tng hc k
SHSV H tn Ngy sinh
Hc k 1 2

M mn ET001 ET002
Mn Ton Lp trnh
S HT 6 4
Ln thi L1 L2 L1 L2
0001 Nguyn Thnh An 6/25/1991

You might also like