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 Di l mt min.
Tch -cc ca n min D1 x D2 x x Dn l tp
tt c n-b (tuple), mi b l mt tp hp ca n
gi tr (v1, v2, , vn) vi vi Di | 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 = {A1, A2, , An} Tp cc thuc tnh
r(R) Quan h trn tp thuc tnh ca R
r(A1, A2, , An) Quan h trn tp thuc tnh
{A1, A2, , An}

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.
Bin quan h
(Tn bng)

Thuc tnh (Ct)


Tiu

A1

An

Gi tr

Thn

Bn ghi (Hng)

Quan h

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:
t1 = (Gip, T)
t2 = (t, Su)

t11 = (Gip, Tut)


t13 = (Bnh, T)

t60 = (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:
t1 = (1984, Gip, T)
t2 = (1985, t, Su)

t60 = (2043, Qu, Hi)


t61 = (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 r, lun
tn ti mt thuc tnh A 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; A1=v1, A2 = v2, , An = vn)

Php xa (delete):
DEL (r; K1 = k1, K2 = k2, , Km = km)

Php chnh sa (change):


CH (r; K1 = k1, K2 = k2, , Km = km; X1 = v1, X2 = v2, ,
Xn = vn)
Ai Thuc tnh ca r
Ki Kha ca r
Xi Thuc tnh khng kha ca r
vi 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 r1 v r2, k hiu l r1 r2, l tp

tt c cc b thuc r1 hoc r2 hoc thuc c


hai quan h, ngha l:

r1 r2 t | t r1 t r2
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 r1 v r2, k hiu l r1 r2, l

tp tt c cc b thuc c hai quan h,


ngha l:

r1 r2 t | t r1 t r2
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 r1 v r2, k hiu l r1 r2, l tp tt

c cc b thuc r1 nhng khng thuc r2,


ngha l:

r1 r2 t | t r1 t r2
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 r1(A1,,An) v r2(B1,,Bm), k
hiu l r1 r2, l tp tt c (n+m)-b, mi b c n
thuc tnh thuc r1 v m thuc tnh thuc r2, ngha
l:

r1 r2 t | t = (a1,,an,b1,,bn) (a1,,an) r1 (b1,,bn) r2


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 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 F(r), l tp cc b
ca r tha mn F, ngha l:
F(r) t | t r F(t) true
F l mt biu thc gm cc ton t logic

(AND), (OR), (NOT)

v cc ton t so snh , , , , , .
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 (Join): Php kt ni hai quan h r1 v r2, k hiu


l r1 r2, 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:

r1 r2 t | t r1 r2 F(t(Ar1), t(Br2)) 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


r1(A1,,An) v r2(B1,,Bm) vi (n > m r2 ), k
hiu l r1 r2, l tp tt c (nm)-b {t | t u r1},
c th coi php chia l nghch o ca php tch cc, ngha l:

r 1 r2 r3 r1

r3 r2

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


Match

No match

Kind of match

Pattern

(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

SELECT Ho & " " & Ten


AS HoTen FROM
tblNhanVien WHERE
Ten LIKE "????"

HoTen

ng Th Thanh Tuyn
ng Th T Trm

Trn Thu Thy


Nguyn Hong Long
H Hi Hng
ng Th T Trm
Nguyn Vn Hnh

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
SELECT Ho & " " & Ten AS HoTen, TenPhongBan FROM
tblNhanVien INNER JOIN tblPhongBan
ON tblNhanVien.MaPhongBan = tblPhongBan.MaPhongBan
ORDER BY TenPhongBan DESC, Ten, Ho
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

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

Ngay

HeSo
Luong

MaNhan
Vien

MaChuc
Vu

01/01/2000

1.92

01/06/2003

2.45

01/01/2006

2.89

01/01/2009

3.33

01/01/2010

01/01/2010

3.33

01/01/2010

2.45

01/01/2010

3.67

01/01/2010

4.15

01/01/2010

2.89

01/01/2010

3.33

01/01/2010

3.67

01/01/2007

2.67

01/01/2007

01/01/2007

2.15

01/01/2007

2.33

01/01/2007

3.89

01/01/2007

2.45

01/01/2007

01/01/2007

3.33

Ma
Chuc
Vu

TenChucVu

HeSo

Gim c

Ph gim c

Trng phng

Ph trng phng

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

1.5

0.5

MaNhan
Vien

TongHeSo

3.33

3.83

3.45

3.67

5.65

3.89

4.33

3.67

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)
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 )

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

Chng 3. Thit k CSDL

Ph thuc hm (FD)
Cho lc quan h R(A1, A2, , An)
X, Y hai tp con ca R+ = {A1, A2, , An}
r quan h trn R
t1, t2 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 t1.X = t2.X t1.Y = t2.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


{AB,BC,AC}

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

Kha chnh (Primary Key): L mt kha c la chn mt cch ty

Kha ngoi (Foreign Key): L ct dng cha d liu dng cho

mt siu kha), nhng khng th thu li thnh mt siu kha khc.

t tp cc kha ng vin, v c s dng trong cc ch mc ca


bng .

vic lin kt vi cc bng khc trong CSDL.

Chng 3. Thit k CSDL

Chun ha d liu
Loi b nhng
ph thuc hm
khng y

Dng chun 1
(1NF)

Cc thuc tnh
ca quan h
u l thuc
tnh nguyn t

Loi b nhng
ph thuc hm
bc cu

Dng chun 2
(2NF)

Cc thuc tnh khng


kha ca quan h ph
thuc hm y vo
kha chnh

Dng chun 3
(3NF)

Cc thuc tnh khng kha


ca quan h khng ph
thuc hm bc cu vo kha
chnh

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:


Hc k
M mn
SHSV

H tn

Ngy sinh

Mn

1
ET001

ET002

Ton

Lp trnh

S HT
Ln thi
0001

Nguyn Thnh An

L1

L2

L1

L2

6/25/1991

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

You might also like