Cơ sở dữ liệu giáo trình nhập môn

192 0 0
Cơ sở dữ liệu giáo trình nhập môn

Đ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

Chung có thế là mẠtmôt íone-one.hoác mứt-nhiéu onc-many hay nhiíu-mởt tùy thuộcvào hướngmA bạn dang nhìn Vâô quan hộ, thám chícổthếlaquanhệ Một môiquanhẻmôt dôì mõt một-một chínhxác ke:

Trang 1

)ại sỏ quan hô

ưoc đó giao dịch, bảo mật

Trang 4

Giáo trinh nhập mồn Cớ sở dữ liệu

(TỦ SÁCH DỄ HỌC)

NHÀ XUẤT BẢN LAO ĐỘNG-XẢHỘI

Ngô Hóa Bnh 4 - Minh Khai II* 34 Trứng IM NÓI Tel (04) e 246 913 - Fax: (04) 6 246 915

Bitn tứp BAN BIENTÁPGIAOTRINH DAYNGHỀ

Bừabàn in:NGỌCAN

Thực hten liủn doanh: CongtyTNHHMinh Khai S.G

E-tnail mk.book#nunhkhaicom.vn- Website: www.tninhkhaicom.vn

o Cty phết hình each Khánh Hóa

>Nhô sa ch Ponagar 73 ThốngNhấtNhaTrang Khánh HòaIn1 000cuốn khá 16 X 24 em, tại Xí nghiệpin Machincv

SỐ 21Bùi Thị Xuân Quân 1, Thànhphố Hổ Chí Minh

Sỏđàng ký kế hoach xuấtbàn: 204-2008/CXB/21 -68/LƯXH

In xong vô nộp lưuchtếuQuý II nâm 2008

Trang 5

LỚI GIỚITHIỆU 3 sr

LỜI GIỚI THIỆU

Trongthờiđaithòng tin bùngnổ như ngảy nay.cợ dữ Ỉ1ỘU (CSDL)

ngàycàngđóng vai tròquan trọng trong cuộc sóngMột quyến danhbadiện

thoai, danh mục khách hAng hay hangtrômđịa chí email.Web site mà bạnphái nhđdéu cán đếnCSDL dể lưu trửvà truy xuất.Giáo trinh nháp môn

CSDL này 8Ồ cung cấpchoban mốt cái nhin tổng quát vẻ cơ sđ dở liệu lố gì,

nó dược ứng dung nhu thfi nào trong cuộc sông

Giao trinh tãp trung vàocáhai nội dung lý thuyet lản thực tiro Bansẻ tiếp cận rac nội dung như

Giao trinh này thich hơp cho câcban muôn cố thèm kiếnthúc vé còng

Qghộ thông tin lản các ban đang học chuyên ngành vổtin hocBan sẻ có

đượcmột nén tảng vởngchíc đế tư minh xây dựng,phântích,thiếtkế các

hê thóng phin mém tữ nhỏđến lớn Thongqua giáotrinh này ban cổ thí

lưa chon chomình nhừng hệ quẩn trị casỏ dư liệuthích hợpnhu MS Access

Foxprohay Oracle SQL Server.hiéu dươccú pháp SQL mà các hệ quản tnnãy cung cốp dỗ truy xuất và lưutrữdữ liệu được tô't hơn

Chucban có mộtbortckhởiđáu đáy thủvị

MiLPVB

Trang 6

THƯ NGỎ

THƯ NGỎ

Kinh thưa quỷ Bạn đọc gánxaĩ

Trưdc hết, Ban xuất bản xin bày tổ lông biết ơn và niếmvmh hạnh

dươc dông đàoBandọcnhiệttinh ùng hộ tù sách MK.PUB.

Trongthơigianquachúng tôirát VUIvàcảm ơn eâc Bạn dã gửi

e-inail dóng góp nhiéuý kiến quỷ báu cho tùsách.

Muc liêuvâ phương châm phục vụ củachúng tôi là:

•Laodộng khoa học nghiêm túc.

• Chít lượng và ngồy càng chát lượng hơn.•Tátcảvi Ban doc.

Trong quá trinhsử dụngsách, nếu quý Bạnphát hiệnthếy bít kỷ sai

sótnâo (dù nhỏ) xin đánhdíu,ghi chú nhận xét ý kiến của Ban rabên canhrói gửi cuốn sách này cho chúng tôi theođìa chỉ:

E-mail mk bỡồk^nưnhkhai.com.vn hoặc mk pub&rninhkhai.com.vn

Chúng cỗi XIU hoàn lại cước phi bưudiệnvà gưi trả lạiBan cuốnsáchcung tên Ngoàira chúng tỏi còn gửi tẠng Ban motcuốn sách khác trong tủ sách MK.PƯB Bạn có thé chọn cuốn sách nàytheodanh mọc thích hợp sề gửitơiBạn

Vớimụcđích ngày càng nảngcao chát lương tủ sốch MKPUB chúng

tồi rất mong nhãn dươc sựhơp tácnhiệttinh của quý Bạn dọc gấu xa

"MK.PƯBcùng Bạn doc đóng hành" đ4Ỉnảng cao chát lượng sốchMộtlán nửa chúng tối xinchân thanh cảm ơn

MỈCPUB

Trang 7

MỤCLỤC3 BT

MỤC LỤC

Chương I: LÀMQUEN VỚI cơ sởDỮ LIỆU - -.‘l!

1 Cơ sđ dừliêulagi 11

2 Thưc thế và quan hộ 12

3 Bang dư lidu(Tables) 14

4 Côt (Column) hoôcthuôc únh(Attribute) lõ5 Hàng(Row) ban ghi (Record), bộ dư liệu(Tuples) 15

10 ĩ.Chu Ai (String)Lá sổ(Number) 23

10 2.Kifu nj?àv thang (thơi gian)và tiịn tf 23

lũ.3 Các kiỉư dứ liệu phưc hợp .24

10 4.Dư lièu "nhạycảm" 26

11 Kích thước cộtdừ liệu (Held size) 27

12 Tèo cột dử liệu 27

13Đinhdang và kiếmtratính hợp lộ cua dừ liệu 27

Chương 2: CHUẨN HÓA cơ sở DỮ LIÊU 29

1 Phu thuộc hàm 30

2.Khốa và phu thuộc hàm 31

3.Cđc dang chuẩnhóa dử liệu 32

3 1 Chuẩn hóa dang 1(JNF) 33

3.2 Chuẩnhóa dang2 (2NF) 34

33.Chuẩnhỏa dang 3Í3NF) — 35

3.4 Quanhẻ dừ liệu 37

3.5.Chuẩn hổadạng 4 (4NF) 39

Trang 8

3.6 Điiukiện Sũ khởp LIKE 49

4 Lệnh chèn dữ liệu INSERT INTO 50

5 Lệnhcáp nhốt đùliệu UPDATE 51

6 Lệnhxâa dữliệu DELETE 52

7 Kiểm tra những ký nâng SQL vừnhoc cùabạn 53

16.SQL DROP xóabảng,chi mục vàcơ sờdữ liệu 71

17 SQLthay dổi cấu trúc bảng - 72

Trang 9

MỤC LỤC 7ST

18 Hàm SQL 73

19 SQL GROUP BYvà HAVING 74

20 SQLvà lênh SELECTINTO 76

21SQL CREATE VIEW lènh tạo khung nhằn (View) eua dữliệu 77

22SQL tham khao nhanh 79

23 Kiếm tra nhanh 81

Chương 4:cơ SỞDỨ LIỆU ACCESS - - - 87

1.Tạo cơsỏ dữliệu(Database) 88

J.i Cơsứdừliệu tutao 88

ĩ 2Tợo cơ sờdừ liệutửTemplate 90

Chương 5: LẬP TRÌNH KỂT NỔÌ cơsởdứLIỆU 87

1.Các hệ ngón ngủquán tri cơ sở dữ liộu thế hộ 4 97

2.Cơ dứ liệu trong những ng&n ngư lập trinhkhác 98

Cursors 99

3 Câc hâmAPIgiao tiếpcơsởdừ liệu 99

4 Liênkítdữ liộu VƠI thỉnh phần trực quau 101

6.Sừdụng báng tính Spreadsheet 102

6.Sửdung ngỏungữ lặp trinhWeb PHP VÀ cơ sơ da liệu MySQL 102

7 SQL Embeded 104

8.Ưu diẻtn cùa cbuán API 106

9 ODBC •Open Database Connectivity 106

10 Sũ dung SQLBindCul(ODBC) 107

11 JDBC.10912 DB1/DBD 110

13 ADO và ASP 110

14 Nhung vần dẻ vétinhhièu quâ IllChương 6: METADATA, BẲO MẬT VÁ QUÀN TRỊ(DBA) -113

1 METADATA (Siêu da liệu) 113

2 Baomật (Security) - 116

ã Bảo vỉ mức DBMS 118

4 Bảovệ mức Dgưừi đùng Han chêSQL - 118

Trang 10

a- 8 _MỤCLỤC

5 Nhà quántrịcơ dữ liệu í DBA DatabaseAdministrator! 119

Chương7:PHĂNTÍCH THIET kềcơsởdửliệu 121

1.Chu trinh eõng của phin tíchcơ *ddơ liệu 122

2 Mô hinh cơsổdử liộu ba mức 124

3.Mò hinh hỗa quanhệ thưc thê’ịER • Entity Relationship!125

4 1 Bỉéu dièn cápđộ quan hf 127

4 2.Thay thí nhữngmÀi quan hệ tam phản 129

4 3.Quanhf chính yếu 129

4 4 Quan hê tuy chon 130

5 Tập hợp Lhực thé 131

6 Dư thửaquanhộ 132

7 Chia cảt quan hẻ u;m 133

8 Xây dựng mỏ hình ER 133

Chương &XÁY DỰNG MÔ HỈNH QUAN HỆ THựCTHE -135

1 Mô hình quánlýCõng ty ván tai xe Bu» 135

1.1 Xác đinh thựcthỉ 136

1.2 Xácđinh các mồỉ quan hê 136

1.3 Vẽlược dồ ER — 137

1.4 Xácđịnhthuộctinh 137

2 Cácván đe phát sinh VỚI mô hinh ER 137

3 Mở rộngmỏ hình ER(EERhay Enhanced ER) 138

3 1 Chuyên biệthóa 139

3 2Tổngquát hóa 140

Chương 9: ÁNH XẠ MỎ HĨNH THựC THỂER 141

1 Quan hê là gi? — 141

2 Khóangoại(ForeignKey) 142

3.Chuẩn bi ánh xamò hlnh ER 142

Trang 11

MỤC LỤC

3.1 Anh xạ mồi quanhệ iitn hit1:1 142

3.2.Ánh xạ môt quan hị hinhítIm 147

3.3 Ánh xạ quanhi n:m 148

4. Tôm lưạc — 148

s.Anh xa BR mả rộng 149

5.ỉ Ảnhxạnhững mốiquan hị songsong 149

5 2 Ảnh xa l.m trong mòi quanhi hỉn kit lòng 149

5 3 Ánh xa lớp cha superclass vá lápcon subclass 150

Chương 10: ĐẠI sổ QUAN HỆ 153

! Đại số quanhệlàgi9 153

2 ThuẠt nga 154

3 Toán từgh: (write) 154

4 Các toán lủ inch rútdư liêu 155

4.1 Quan hị lựachọnSELECT ■■ 155

4.2.Quanhẹ chiếu PROJECT 155

10 Các vídụvé Dại Bô quan hộ 180

10.1 Toán tiỉđổi tin 162

lơ 2 Toán tứ dẩnxuất 162

103.Tương đương 163

11 So sânh Dại sô' quan hệ và SQL .164

Chương 11: TRANH CHAP VÀ QUÀN LÝ GIAO DỊCH -185

1.Giao dịch (Transaction) 165

2.Lịch biíu chocác giao dịch 166

3.Cập nhậtmấtmát dữ liệu - 167

4.Phu thuộc không xác nhận1685 Sự máu thuán không tương thich (Inconsistency) 168

Trang 12

8.4.Gỉải quy ft deadlock - 173

8 5 Các phương pháp tươngthíchca sở dư liệu khác 173

9 Khói phuc (Recovery) 174

9.1.Khôi phục tù carfilethò (dump) 174

9.2.Khôi phục dưa váocác filelag củagiao dịch 175

9.3 Tri hoãncập nhật 175

9.4 Cápnhật tức thời •••••177

10 Rollback (Quay ngược) 178

Chương12: LÝ THUYẾTCẢIDẬT VÀ XÂY DựNG hệ DBMS 179

1.Các thành phán lõi - 179

2 Đĩa vầ Id ức bõ nhở 182

3 Tổ ehửc chi mục 182

3.1.Hash table — 183

3.2 CAynhị phan(BinaryTree) 185

3.3.Chi phi dànhchimục oà truy cáp trên chímục ĩêb

Trang 13

Chương1:Làm quen VỚIcơ sở dữliệuH M’

Chương 1:

LÀM QUEN VỚI Cơ SỞ DỮ LIỆU

Các ván dỉ chinh 9ẻđượcdẻ cip.

s Các kháiniệm bàn vi thành phản cơsở dứ hiu

DO hiốunhưng nguyônlýcùa cơ sở dữ Iiộu trong giáo trinh uùy.trướchết chúng ta cắn hiếu qua một vài khái niệm và thuật ngứ tinhợc bán

Điẻuđáutiênnhát Cơ sỡ dữliệu làgì?

Dơn giản cơ sà dữliệulà một câu trúc hay một bộ khung biểu diỉnnhửngthộng tin liẻn quanvới nhau Phán mốmdùng quânlývồ xử lý thông

tincủacàu trúc thông tin nayđược gọila he DBMS iHệ thống Quân lyCơ 50dùliẻu - DataBaseManagement System* Cơ sódu liêu lã mot thành

Bạn cóthé nghi và hình dung đơn gián cơ sở du liệu làmột danh sáchthông tin Như trang mèn giámđiện thoai chànghan môi tranglà mỏtdanh sách chưa các mục thông tin - gốm ten, dịa chi sô diện thoại- tho tàvế người thuề bao diện thoại trong một vùng nàođổ (thòngtinmỏtàdỏì

tượng I Tátcáthông tincủa người thué baodung chungmột mâu ’Câutrue).Theo thuật ngửcùa cơ aởdừ héu.cáctrang mèngiám tương đươngvói mộtbảng(table; du lieu mAtrong dôthùng tin mòi ngươi thuê bao đươ€dạidienhay biểu diẻnbời một bản ghi (record) haybancó thế goilà "mẩu tin*.

Trang 14

11Chương1: Làm quen với >d dữ hệu

Thông tin bàn ghi môLổ véQguời thuẻ baochửa ba IQMC tto, dia chỉvà»ò

điện thoại Các bản ghi dươc sáp xếp theo thứ tựabc và đươc goilà khóa

dung đẻ*tâm kiếmkhicần

C4c hlnh ánh vídụ khác vồcơ»d dử hộu côn có thếla danh Rách

kháchhang, danh mục hay danh sách sinh vién danh sáchhànghóa.và

ngaycả nội dungmộttrang Web củng có the xemlà một cơ sơdừ liộuNói dung danh Aâchcờ the biếu diên trongthưctế làvôhạn

Đancổ thí lập mô hình vãthiét ké một cơ sđ dừ bệu dếcátgiư bất cư

nhưng gidạidiện chothòng tíncồ cAu trúc.

2 THựC THỂ VÀ QUAN HỆ

Nến tang cơ bản nhất mA chúngtaco thê mõ hình hóadó là những

thụcthế (Entity) vò các mối quan hệ (Relation)

Thực thề' la nhưng đói tương trong the giới thực mà chủng to cátgio

thông tin của chúng bén trong cơ sơ dửiiéu V1 du chung ta có thẻ' chọn cấtgiữthòng tinvé nhan vien va các phồng ban mà nhản viên dô làm viộc

Trong '.rương hơpDày. nhổn nín chínhlàmótthưc the vàphnng han la một thựcthểkhÀc

Quan hộ lâ những mô) liênkết gidH cếc thực(hêUiVƠInhau Vi dụ, một nhan viên thi tam việcchơmõtphóng ban. Lám việcCho chinh là ĨDỖJ quan hộ giữa thực thổ nhõn ụiẠn VỂ thực thế phồng ban

nhiêu mốiquan he theo cấp do khác nhau Chung có thế là

mẠtmôt íone-one).hoác mứt-nhiéu (onc-many) hay nhiíu-mởt (tùy thuộc

vào hướngmA bạn dang nhìn Vâô quan hộ), thám chícổthếlaquanhệ

Một môiquanhẻmôt dôì mõt (một-một) chínhxác ke: nôìhaithơc

thế vó)nhauNhu bản than các nhãn viên trong mộttốchiâe công tycómỏì

quan hệ một-một Vơi vị tri làm viec của mìnhơxtmuiéc tại). QuanhẻLàm

ban cổ thế cổ nhiíu nhản Viên lam viéc Và mộtnhônviên lồm việc thường chi cho một phòng banHai mõi quanhệ này đượcbỉếudiẻnnhư trong hỉnh

1-1

Trang 15

Hình 1-1: Cúc mói quan hị

Chu ýràng biếu diềnthực thể vàcácmôi quan hệ cũng như loại quan

henaolàphuthuộc vào môitrường cùng những quy tắccông việc(busmessrule) mà bạn đang hươngđếnviệcmổ hình hóa chúng Ví dụ.

trongmột sd công ty các nhản viên có thẻ lâmviệc cùng lúc cho nhiềuphong ban Trong trường hợp dó.quan he Lam việc •Chosẻ trđ thành mỏi

nầodó chia sẻ chung nơilàm Việc VỚI nhản viênkhac thi môi quan hệlảm

việc tai khổngcòn là một dối một nửa nià sề trỏ thànhmột.Dhiẽu

Chú ý ring sau nảy bạn sè thây chúng takhôngthếbiểudiên quan hệ

nhitu nhiếutrue tiếp txong môt lươcđôquan hệ (Schema) CO ư dữbệu, vl hai báng không thếiA con của nhau Thay vào đổ.chúngta sè đâtkhóa ngoai trên mộc bảng trunggian kết hợpkhdc.Khichúng ta tiếp cận đến

Trang 16

Chương 1:Làm quen VÓI CƯ 5Ò dù bệu

cáchthiẻtkế CƯ SƯdữ liệu,ban sé gâp tinh huỏng này Không cú hai hè

thốngnàũ giong nhau tuyệtđốivếquan hệ và thựcthế

3 BẢNG DỬ LIỆU (TABLES)

MS Access, SQL Sarver Oracle MySQL la nhưnghỹthống quán lý

CƯ sờ dử liệu quan hẻ (RDBMS • RelationDatabase ManagementSystem)hỗ trự xâydung môhìnhdữ liệu chưa tAp hơp nhưng mối quanhệ lán nhau Thuột ngữ•■quail hè" trong ngđ cảnh này khôngcòn là quanhêqua lai dạng'thánbàng quyến thuộe"mAIA quan hê chung vđi nhau qua báng dử hệu côn XOIlá table. Chuỹràng thuẠt ngữ bàng dữ liẻu "table" vá "quan hộ" hay■■relation"cổ cung nghia nhưnhauTuy nhiẻntrong giAo trinhnảy chúng

ta sẽ sứ dung tên gotbanghaytablethay cho ■‘quanhệ"vi có thé' ban sênhám vớiquanhệ dọng nôì kết hai thựe thẻ' vđi nhau

Neu bạndá từng sứdụng một bang tinhcùa Excel chÁng han thìmổt

bàng tinh (Sheet) cũngchinh là mộtbảngdữ liệu Mõt bâng dừ liệumàu dơn

gian dược minh hoa như trong hĩnh 1-2.

Bâng nhân viên Employee cat giơ thông tin nhàn viộn như má số

nhán viên IDs, tên,cổngviệcvà phóng ban ma inổi nhán vien lâm viẠc

Nhu bạncố thể thấy, bảng nây cất giữdữ liệuhay thống tin cùa bôn nhản

viêntrongmộtcông ty.

Trang 17

Chương 1: Làm quen vơicơ sỏ dữ liộu

4 CỘT (COLUMN) HOẶC THUỘC TÍNH (ATTRIBUTE)

Mòtbangdửlieu dưoc bieu diên bờimot hữậc nhiều cột mòt cột(Column) hay còn got1Á chuộc tính(Attribute) mô tã một máu thông tin

nôo dố cùadửliêu lưu trong bảng Thuậtngữcót (column)và thuộc tinh(attribute!được «ư dụng thay thô làn nhau và đéuco cùng ỷ nghía, nhưng

* dươr <nì dung nhiêu hơn khi làm việc trèn cáutrúcvẠtlýcủabâng,

thuỏctinh thưởngdùng đê mó tà và biốu dién thựcthé cùa thế giới thực mã

bàng dừ hẠu đíing mo hình hóa

Trong Hình 1*maban cố thể thâymối nhàn viên có mót mảsổ employerĩD một tên một Cổng việc, vòmót miì Bốphòngbandepartment!D Đô cOng chínhlà các cột của bảng nhần vièn mang tến

Employee ídôi khi chúng còn dươc gọiláthuộctinhcùa bảng nhãn viên

Employee cũng khổng

sai)-5 HÀNG (ROW), BẢN GHI (RECORD), BỘ DỮ LIỆU (TUPLES)

Chung ta hãy xem ỉai bang nhân viên Employee MỎI hãng trong

bângđại diệnmộtban ghi (hay mâu tin) chỡtừng nhan vien BạnCô the nghe tẻn gọi cua chung như hàng,bản ghi.mẩu tin hoâc bòdữỉiẽu dẻu như

nhau ca MỎI hống hay dồng trongbâng chứa câcgiátri cua cáccột trong

6 KHÓA

Khoa lâ mộtkhái niệm rất quan trong trong viêc thiết kếvàxáy dưng

00 sở dữ lièu Có 5 loại khóa cơ bàn.•Siêu khôa (Super Keya).

•Khóaữngviên(Candidate Keys)•Khóachinh (Primary Keys),•Khóa ngoại (Foreign Keys)

• Khoa noi chung 'Keys)

Ghi chú:0 đáy chùng ta chưa di sáu txằo cách siìdung chùng, ban sẽ

Trang 18

16 Cbưctag 1;Làm quen với co sớ dừ liệuSiêukhĩalà một (hốc nhiẻu) cột dược dùng dế xác dinh và nhảndạngramộtdồng trong bảng Một khơa nổichung (Key) ỉâthành phản tồithiểu của Siêu khĩa Vỉ du hâvxem bảng nhân viên.

Chúngtacơ thế sửdụng cột employeelD và tén Name đê cùngkết

hơp xác dinh và nhản rabết kỳ dịng hay hàngdử liồu nàotrong bảng

Chang ta cúng cĩthếsữđụng tạphợp của tất cácâccộtnhư sau đế dùng lam

khĩa nhận dạng;

(empỉoyeelD,name Jơb, departmentlD).

Chúng chinh là nhửngStèukhĩa Tuynhièn chúng ta khổngcán tết câ các

cộtđĩ đỉ xácđịnh haydùng đơ nhện dạng ra mộtdịng trong bàng Chúng

ta chỉ cán duy nhất (ví dụ) employecID Đây làthành phán tối thiỗu hay

nhị nhết cùa Siếu khĩa Cĩthế nơi nĩ la t$p hợp nhị nhất của các cột cĩ thX

SŨ đung đế xácđinh ra một dịng dù liẻu trong bảng vâ như vây employee!D

là một khĩa

Nào hây xemlại bảng nhản viẻn lÁn nua Chúngta cĩ thế xácđịnh

mộc nhản Viên bời tồn (name) hoặcbởimãsỏ nhân vièn employeelDCá hai cột nốy dẻu cứ thếdùng lịm khoa.Chúngtagọichunglà những khĩaưng viên (Candidate key) vi chúng sè là nhửtig ứngcửviên để tadùngchonkhoa chinh(Primary key; sau này.

Khổa chinh(PrimaryKey)la một cộthoặctập hợp nhiếucộtmà chúng ta sỗ sử dungdế xácđinhhõcnhândangramộtdịng dữ bộu lừ mộtbàng Trong trường bợp này chúng ta sỗ chon employeelD làm khốachinh.

Điéunày sè tốthơnlàchọn cơt Name làm khĩa chỉnh, đơn giảnlàcĩ thế cĩ hai người trùng tân VỚI nhau.

Khĩangoai(Foreign Keys) làcOt chửa dừ liệudai diẻn cho viỄc liên

kết giứũ cic bÀngVí dụ, nếu nhìn lại Hình 1-2, bạn se thây cột

department!!) gxử mâ sơ' phịng ban.Dãy chinh là một kháangoạitip bợp

đày đủ thững tinvầ mối phịng ban sè đượcgiư trong một bảng riêng biệt

VỚI departmentlD lakhĩa chinhcủabảng <16.

7 PHỤ THUỘC HÀM

Thuậtngủ phụ thuộc hâm này ban sè it nghenổidẽnhơncácthuât

ngừ được di cập trên dây nhưng bạncủng cán hiếu nĩ áỂ nám được quế tnnhchuán hĩa màchúng ta sê tiếp cán trong phán sau.

Nếucĩmộtphọ thuộc hàm gỉữâ cột Avàcột R trong mộtbâng dữ liệu

chotrudc.chúng ta cổ thê viết A ->B nghĩa là nếu cd giá trìcùacột Ata

Trang 19

Chương I: jjàm quen vdicơ sờ dử liêu 17

sêxdcđinhđượcKiáIn cùa cột B Vídụ trong bảngnhânVien, nếu banbiết

được thông tin cộtemployeelD se ta rột XAC d|nh rn cột tén name (cũngnhư

tátca cáccột kháccua bàng>bay nổiCítchkhacemployealD -> Name

8 LƯỢC ĐỔ

Thuảt ngù lươc dó (Schema) hoộclươc đô cơ sớ dữ hộuđơn giàn cò

MiglìÍH là râutrúrhoAc thiếtkế của cơ sờdử liệu - nóchi là bộkhung của Cflsudư li cư và không có bát kỹ dữ bêu nào trongdó.Chúng ta có thê môtàlượcđổcho một báng đơn theo cách sau:

Báng employee<employee!D name, job.department! D)

9 NHỮNG NGUYÊN LÝ THIẾT KẾ cơ sở DỬ LIỆU

• ơạt kẻ hoach• Suy nghi crươc.

Có lẻ điếu quan trọng nhất khi bạn bÁLđáu bát tay vâo thiếtkế hay

xây dưng mổt ca 8Ở dừ liệu là cán suy nghi cản thán tâtcà nhùng giminh

sẽ phái làmViêcmô hinh hởa và xâydựng một cơ Ế.iY dừ liệuhoàn toàn cổ

the đúclậpvới cAc hê quan tridừ liêu, thâm chibancồ thế xảy dựng mổhlnh dư liêu mà không cán tiếp cặnvói máy tinh Hảysuy nghi nhửngkiếuthõng tmma han rnuốn thẻ hiện vã nhưngloại cáu hôi hay truy vàn mà bansẻ muôn cơsớ dứ héucủabantrá lội Hai cáu hồi chính cu thể nhưaau:

• Thông tinnảo cân cất gilt kXííMÌỈĨMcvỊ^chúng ta cán cat

giử thốngũn của chúng'! rp iPvĩẽ\!

• Những câu hỏi nao machung u muon càũaỉíliêu trả lời sau khiđa códừ liệu?

Khi hátđAu trá lời chonhưng câu hỏinay bạn cán phái luôn nhớcácquy tác hoat độngcua thè giơi thưc mà minh dang muốn mõ hĩnh hóa, càcmòi liên kèt giứa thựcthê và dừ liệu Mộc chutrinh thiết ketiêubièudươc xaclậpnhư sau:

Xác đinh dứ liệuĩhu Jfi^u dứ liệuChưấn hóa các hàngỉ xảy dung khóa

-k Tốt ưu hóa /lập lai

Chúng ta hàyquay lai vãnđ* quản lý dư liệudanhbạ điénthoại.Rât

dơn gián, tât cả nhưng gibancánlâ tan (Name) Bố diện thoai (Phon#

Trang 20

Chương1:LAm quen với sở dử liệu

Number) và địa chỉ (Address) Bit dáu bàngcáchta sê xáy dưng mộtbảngda liêubao gồm 3 trương th ông tin tèn dịa €hỉ vA sổ' đtịnthoai Và’như vây chúng tacócấu trúc sau:

Gia nhưdi khá cu the Tuy nhién.chung ta cần một tiện ích Intén (Name) cóthế sáp xếp theo thứtự,bạn có thây đúngnhưvậykhổng9 Vđmg.đũng vậy nhưng bạn muônsáp xép thứ tựdanhba theo tẻn hay theo họ? Đế trả lờn.cách dơn giảr và dí hiếunhít lÀ Uchtên tổng quát :Name) ra lần)haiphân (hay cột)lầHọ (Initial) va Ténchính«.Last Name)Tương tự nhưcấy cho thông tinvédin chí Một đ|achichung chungnhưAddresscố thí lã đAdủnhưngtacắn chi tiết hỏathổng tin địa chi đế sau này dề timkiếm,vé nguyên tácđìa chi cóthểdược cu thẻ hóa thành:

Cdchtdtnhátdẻ’ xem công việc thiết kế coxd dừ liêu lam vièc như thế nâo ìà kiím tra nổ vđimộtvai dửliệu mầu dướiđây lft một sổ dòng dữ liệu

mà bụu cóthể hình dung:1 -L

H

-oyTApotes100 MogalongDrEtna4992122Both vkxk2/53 AliceLebanon5O5OOI1Mike R Sưlryon9 Jay Lebanon4393892Barry J Ardorscn 71 WoMy i?d Hanover2298310

Bâygiờ nếu sáp xếp dư liộu trong bảng lại bạn se dược danh sếchthống Ún sau

Barry J.Anderson71Wally Rd Hanover2298310Beth York 2/53 Alice Lebanon5O5OOII

Trang 21

ChươngI: Làm quen vói cơsở dữ liệu

toy ĩ Apples100Meọalong Dr Etna4992122Miko RSulHvan9 JoyLebanon4Ô93892

Ngay ụptức, ban cố thế tháy xuãit hiên điềurtùnh khôngmỏngmuôn

Ban muốn danh sáchtrong báng đượcsáp Xftp '.heochứ tu abc cùalèn CUỐI

chú không phái họđat ở phía trước,chinhxác sáp theo tên CUÔÌ phai là:

Barry J Anderson71Wa* Rd Hanover2298310Joy I Apples100Megalong DrEtna4992122w R Sullivan9 Jay Lebanon4Ô9389?Beth York 2/53 ASce Lebanon5050011

Chung tagiòiquyèt như thế nào?Có 2 cách, thú uhât bau vẩncó thè

giữ nguyềnnội dung cùa cõt Name nhưng kin trich nltdư liệu ban SỂ sờdụng một 8Ố hàm xửlýchuỗi đạc bièt dê phan tách tôn vàho.MU đómới

sáp x*p (Cáchnày ban sẽ tiếp cận khichúngla học »ẻ ngổn ngư truy van

dử liêu SQL) Cáchthư hai don giảnhơnlà bạncú thé thiết kế lúcíu trúc

của bểng dừ liệu bàng cách táchcõt tên ra làm 3phin Tfcn (FirstName) Họ < Last Name) và chitiết nùn ’.àtênlốt theo ho(Middle name) Búy giờ là câu trúc bông cua chúngta sè baogồm các cột

Lấn nàynếu sápxếpdanh a(4chtheocột LastName bạn sè có kếtqui

theo thử tư ABC mong muốn;

AndersonBarryJ71Wally Rd Hanover22983'0ApplesJayT100 Megafong DrEtna4992122Sullivan

R9 JayLebanon4Ô93Ố92YorkBeth2/53 Alice Lebanon5050011

Trang 22

& ™ Chương 1: [^m quen VƠI cơ sỡ dữ liệu

Chua hết chúng ta con Cữ thể đi xa hơn nữa Báng dử liệu cóthế thâm

chicôn h.èuquá hơn nêu ban biết càchchi tiếtcáu trúc cùa nó sâu han nđa

Ví du nếuban muốndể dàng liệt kê ra chi nhữngngười nào sóngtại thành

phđ LôiChhordt,thithiỗt kẽ nảy sè không giúp dược bạn ngay lức ihớiItrirkhi có sựhồ trợ cũa câchâmxưlychuỗicùacốc hệ quản trị dữ lieu) Tuy

nhiên nếuchiu khổ lốn ít cíngsũc nùa, bancớ thốbỏ gảy cếu trúc cơ 5Ớ dư

h(ucátc6t Address thành2 cột: Street Itẽndường).city (thành phố)nhuđinệu trước dày Báy giờ cảu trúc bảngcũa chùng ta sẻ như sau

AndersonSorryJ71Wally RaHanover229B3I0Apple

SullivanMice1?.9 JayLebanon4893892YorkBern2/53 AliceLebanon5CSŨ011

Với cáu trúc này.ban cứ thớ sáp xếp Msở dữ 11ẬUcùa nunh theo thứ tự abc bâng tên ho hoàcsố điên thoai và ban cũng sècứ thế biết, hoôctruy limra nhanh chóng tất cángười nAo dó sống trong một thânh phố hay con

đươngbất kỹ

Hy vong VI dụtrơn có thể cho banthấy khi tạo ramộ"cơ sớ dữ liệu nào đổdii-uđẩu tiên chúng tacán làm làcó nhừngbưứcphântích vãlãpkế hoach truơc.

Bậncánxem xét cấcthõng tin minh muỏn cất giữ và nhửng cáchthức

mãnunh muốn truy timlậi thông tinđó.Côngviệc này khôngdồi hổi banphai tiếp xũc với bít kỳ chương trinh quảntri dữ liệu nàocàNókhống đòi hoibạnlàm việc trên máy tính màlàlàmviệc chi VỚI cây bút vàtỡ giây.

Cáchban xáy dưng câu trúc dừ hỳu sô ảnh hưởngđếntát cả nhữngtươngtác sau nay của ban vđi cơ sà dừ hỆu đố Nó cũng ư xác d|nhV1ẬC đưathòng tin VÀO cơsỏ dữ liéucódẻ dâng haykhôug, loai bỏdược dù liệu trúnglAp và bàođđm râng buộctoàn ven dú liệu; va sau cũng Việc trichrút thông

Trang 23

Chương I: Lãm quen VỚI cri sơ rtử ìiệu

tin can thiẻt rhotan cứ thó thực hiệnđơu gian hay sè trơ nén phúct^p Mó! câutrue M tớdưliệu không’ tốt sờ gây rốtnhiẻu khókhan khi tan muôn

trichrútlai thõng tin lưu trong đứ đẻ BÙ dụngBang dữ liêu trén cổ thế dược

rAtgiơ trong mót hãng dơn duy nhất (dổi khi thuồtngtì còn goila database

phang- flat database), nhưng sécó nhỉéu thdãn ỈỢI cũng như tiện dung hơnnêu tan tiếptục phân tích cấu trúcdưlieu vàtốchchúngrathành nhiéubang thay VI một bàng, chúng ta bát đâu tiếp cân vởiloai cơ sd dữliệuquanhệ tư đây Cơ Sỡ dư liộu quan hệ như bạn sê tiếp tucnghiên cúu trongphán dươi day cộthổ cung cip một sức mạnh vàtinhlinhhoat Vixr bẶctrong

Việc e*t giơ va trích rút thống tin.

Ban háy xem một VI dụ vé cơ sở dù liệu chứacácthõng I inđi A CD ddrti

đây đổ bát đáu mòt khainiệm ve cơ sơ dư liêuquanhệIRelational Database Kho khan vàtinh khôngdungdân thưởngphátsinh từcơBỚ dứ liệu phảng chi có inột bâng Cơ SỡdừliệuquanhệchinhlA một cừu canh cũngnhuhương di lamthaydổica thê giới!

Khi ban lán dáu tiẻn tổ chức dử liệu, filedư liệu dơn chicổ mòt bângỈỉicáu true dongiãn và dẻ hiéu nhât Chung được gụilã cơ sôdùliệu file đơn

chiêe (Single-database file hay fill!database I vì chi cómôi bảngdừliêu lưu

trên mộtfile Khi hủ dung láudài loaicơ sờ dử lìộu đơn phảng này sẽ gây

không itphiên phức viphíìi thực hiện nhiêu thao tác xử lỷ phức tap Cùngkhông phảicơsớdưliéu đơn sê không làm việc tốt nhưng trongnhiéu

trương hơp sứdung cơ sơ dữ liệu quan hè tổ chức lam nhiổu bàng srgiúpban giải quyêl nhiều vãndé dẻ dàng hơn Ví dụ nêu tan tạo ramot file dữ

liẻu dơn dê lưudanh sách cácđìa CDsnhacBan phai dat tảtca cácthông

tinchitìèt nhưthổng tin ca 81 tác giả vào trongmột bảng Và tiếp theo la

những thong tinnhưtơa (title!củaCD, l£n nhóm nhac, ban nhạc, nơi sảnxuất các ghi chú Khi đổ cấutrúc dửliêu của bancó thí nhưsau:

Trang 24

£& &Chưmng 1: Làm quen vởì C0 dơLẠu

Vđỉ mil CD CÙA ban nhạcBeatles mA ban sd hữu, ban sẻ phầi nháp

tất CẬ cúc thôngUn trôn’ Diỗunàycánghĩa ban sèphái nháp vào tât cà lèn

CÁC thanh viẻn cùabannhạc Beatles nhiều lẨn (tương i/ng VỜItừngCD)

Quà thitphiền phức!.

Khi tzfỡhơcthAnh nhiêu bảngdơ liệu mội chuyện sèdỉch|u hơn Nếubận sùdung cơ sd dữ hệuquan hỗ và tđ chức câu trúcdừ liệuthànhnhiều bảng, bạncô thểcất giữ thòng tin chi tiết củaCD(tén ngây th Ang.các bài háttrongmột bảng CD Table) và cấtgiư thống tinchitiếtvẻ ca 81 riêng

trong bàng Artist khácBảng CD củabện sẻ rỗcếu trúc nhưsau

Sau dó bạn hènkết hai bảng thống qua tén nghẻsi/hoâc lén ban

nhạc (ortĩSt.or-band.name), đố lầlýdo VI sao chúng ta gọicơsởdừ liệu

này làcơsờdù liêu quan hẽ - ban dinh nghla moi quanhệgiúacác bảngdóng vai trò là khốa ngoại (ForeignKey)vanhệp vèotển các ca sỉ cùa từng bannhac chi một lán duy nhat Mỗi khi ban thêm thống tincủa dĩa nhac

Beatles CDvào bộsơutệp của mình, ban chi cannháptánban nhạc Beatles trong cột dữ liêu artist vàcơsớ dơ liệu ạè truy tim chitiếtcủabannhac Beatles trỏng báng Artistgỉúp ban Nókhông chi giảm thiểu cóng sức nhâpliêu củaban ma còn bảo đảm sư toàn vẹn thong tinvA han chí khả nAng

nhệp vào dữ liệu thừacũng nhưkhông đúng

Đẽ tỉện hơn nữa bạn cóthểtiếp tục tao ra thêm bảng chứadanh mucbài hết Songsnhư cíu trúc sau

eđ.namesong.titte

Trang 25

Chương1:Lảm quen vđicơ sỏ dữliệuduration

trock.numberwriter

và liên két bàng này vđibâng CD dựa vảo cột cd.name đóng vaitrò khối

ngoai Tốt h<mnua bancú thế dùng CĐ ID lãm khóa chinh (Primary Key)chobảngCDvà CD.1D lam khóa ngoại chobâng Songs thay vì cd.namr, vinếu tinh y ban có thế nhàn ra 2 bộ sưu tậpkhác nhaucố thí cô2đìa CD

trùng tên Giờ dãy bill! đểeô thế lưuđay điì thông tín VẾbộSƯU tip CDcủa

Ban sè họccách thiết kê dữliêu tốthơntrong chương sau khi chúng

ta học vé quytrtnh chuán hóa dữ liệu Trong chươngmá d4u này côlé như

vậy 1Àđu

10 KIỂU Dữ LIỆU

Kiêu dữ liộu (Type) thế hiệntínhchất loai du liêumà ban moỏn lưu

như dữ liệu la số chuồi, ngày tháng

-ChuánSQL dinh nghía một sô' kiXu dừ liệuchuán và da sỗ cếcnhà cung cáp phán mÊm quántn cơ sà dơ bệu đếu hồ trơ nhữngkiểu dừ liệu này

trong sàn phẩm củanùnh.

10.1 Chuỗi (String) và Bổ (Number)

Nói chung kiểu sỗ dùng biểu diằn sô(nguyân thap phàn, ũén tệ) -

bạn chi cán lunchonmột phạm vi cán thiếtdửlớn đểchưn giá trìtói da có

thểcó cùa thòng tin dang nhámđến la du

Chuỗilàdạng dử hẻu vànbànhay kýtunhư DỘIdung mộtthống tin môtá hay tẻn ho tựa bAi hátVdichuồi đơn giânbạn chi cánxác dinh độ

dài tỏi da cảncó của nộidung nhậpvào Ví dụ như tèn thi chl dài tốida 20

ký tự,tựa bài hếtthì khống nên dàihơn 60 ký tư.

10.2 Kiểu ngày tháng (thời gian) và tiến tộ

Ngàythắngídate/time) là kiếu dứ liêudùngbiểu diẻnngày tháng và

thơi gian (gồm giờphútgiảy)Háu hếtcâche quin tn dư li$ư đAu hi trợkiểu ngày tháng thòng nhât theo chuẩnSQL Ví du bancô thế nhépvào

thông tin thể hiện ngày sinh cùa nhAỉi Vỉên, ngàynhậphàngvAokho, ngày

két thúc hợp đóng Trongthế giđìthục, bất kỳ thóng tingilưutrừ laidẻu

Trang 26

i£a 24 Chương1: Làm quynvơicơ dơliêu

Cô khâ nang hènquan đến mốcthời gian vồ Dgày tháng là kiêu dử liệu rồtcố ích đẻ' ban biếu diểnchúng

Kiều tiến tó thậtra chi là kiẻu sò thảp phAn thông thườngnhưng đòi

hỏi phaicódô chinh xác caoTrong CÁCchương trinh hỏnquan đến xừ lý sỏ'thập phồnthi công việc làm tronsô dỏx khidàndèn một SỈU* khá lớn VI dụ

néu kiêudừliệulưu trửtién bạnchigÀm 2 sổthạpphan(001ì.khi sỏ'Liềnthanh toán lềlẻ ở hang 3 hay 4 sổ ihảp phản <0.0001 chàng hạn> nỗu làm trònvhbỏđi phin dưcua hai sỏthậpphổn ruổi thìkhi sỏ’ tiến tổng cộngkhá lớnsè khiến ron nd'lầm trònmấLđi rết nhiẻu(như 50.000.000đX 0 0001 -5.000d>.

Chínhvi vậy kiỂu tỉén tê giúpbanthÀ hiệnsô lưutrư VỚI đô chinh xác rAt

10.3 Các kiểu dữ liệu phức hợp

Cuốicung, trongthế giới thưc cõ nhưng kiểu dưliệu phức hơpnhư sỏ điẻnthoai điachi,thông tin liên lac, mà sỏthê tin dung Những kiếudưliệunay xuất hiện rất nhiéu trong hàuhếtcúclượcdó cơ sỡ dữ liộu Thương nhữngmáu thõng tin này đượctó chức truynhãp tư nhiều bangChẨng han

trong môt hê thỏngthươngmai diện tủ eCommerce.cơ sờdửhộucũng mộtthôug tin liên lạc cd thẻ câ’t giữ và phàn loai khác nhau theo nhổm ngươi dùng, nhà cung cấp kho hang,hay nha quan trị admin

Thay vi lưu thành tửngbáng riêngđìa chi tương ứng người dung,nhà

rung Cáp, hơẠỡ nhá kho(dẵn đẻn láp lai rất nhiều nhưngcòtdia chỉ trang

toànbộ cơ sờ dử liệu) như trén chùngta có thẻ thiếtlãpmộtbang đơn duynhốtchứathông tinliên lạc và tạo mộtkhoangoại cho bâng.Sau dótháng

tin cùabảngsộ đượccác bâng khác tham chiêu đến thòngqua khoa ngoại

Điíu nay sé tạo nènhailợi ich tức thời:

• Dẻ dàng thay đổi nbơng thông tinchínhcua quan hè

♦ Dê dàng thay dổi nhưngkiểucảutrúc dừ liộuphức u>p sè xảy

ra trong tương lai

Dơán trươc tập những thuộc Unh haycỏt dừ liều nào (hinhthành néo

cấu t rúc phức hợp) se thay dổitrong tương lai kin thiếtkếcơ sỏ dư liệu đôi

khi lâ cảmộlnghê thuât Cấu trúcđịa chỉ Address cóthé dươc táchra chi

tiếtnhư sauDeportmentCcmpor.yMoiistop

Trang 27

Chương 1: 14»m quen vó> ẹo sớ dữliệu

Trang 28

26Chương1:Làm quen VỚI cơ BỞ dữ liêuChảng han ban cứ thể’ cô một tó điện thoai như 84-08-8501232-123-7 trong đó 84 là mA quốc gia (Việtnam).08là mA vùng (Thành phỗHCM) 8501232 là sỏ' diện thoại Côngty, 123 là sô' phòng kế toán,và cuôì cùng 7 1A

sỏ máy ngay bànlàm việc của bạn Ban có thểlưu sô nàythành một chuôi

nhưng cung có thếlưusô' này ta ch rơi rathành nhiắu cột.

10.4 Dữ liệu “nhạy cảm"

Bit kỳ dứ liệu “nhay dm*(sensitivedata)nèo lưutrong cơ sờ dữiiệu

đéucán phải được ma hóa Dừ liệunhạycảm1À nhưng dư liêu mang tínhriêng tưcao vídụnhư số tài khoán ngầnhàng,số thẻ tindụng,mật màtruy nháp hé thongNgaycả khỉ hệ thong CƯ sỏ dưliêu của ban dưoc xemỈA đámhaocơ chế bao một nhưng bạn cùng eín có cơ chế mA hổacho riêngmình Vi dụnổitiếngnhát vé quảnlý loại dưliệu này la hê thôngmãt kháu

CÙAhộdiếuhành Unix Nộidungmệtkhiuđược lưu ngay trong íilé vầnbánnhưng nội dung dã mỏ hóa khién cho dù cổ bạn mởfilevồdọcdượcnội

dung nểythicũng không hiếu được ý nghía của nó

Có nhiẻucách ma hóa nhưng nhìn chungla có hai hươngchính,mâ

hóa hai chiếu và mồ hõa dữ liệumột ch léo Một sốdừ liêu nhưsốthẻ tin dungcánma hóa theokiểu2 chiẻu tưc 1A có thế khối phục lạ: nồi dung từ

dửliêu mẩ hóa Mà hổa một chiểu là sừ dungnhừngthuẠttoán khiến dữ liệu

khôngthế giảima trở lại nội dungban đàudược Ví dụ như thong tin vế mAt

khâuthườngđươcmà hóa theokiểu mộc chiêu.

Tômlai mồi cột trong bảng dữ liệu sècómôt kiểu dừ liệu néngKiểu

dử liệu định nghlakiếu chổng tin mA cột có rhé cất giừPhAn lóncàccộtcókiểu dữlièu vân bản (text) Các cộtkiổu vãn bản Cố thế cất giữnhưngthõng

Un8Ô, chữ cái, cdcký tự đặcbiột hay thậm chí nội dung đáy dù của một Lài 11ỈU Nhữngkiểu dữ I1ẬU thòngdụng khác gổm cổ kiểu sô (côn goi lÀ number),

tién tệ (mộtdạng kiểu số có độ chính XÀC thẠpphầncao), kiíungàythAng/thời gian, và kiếu luân lý Boolean (còn gọila kiếư Yea/Nỡ), kiểu

memo (đế cát nội dungvân bén) và kiểu picture hay binary chứa dữ liệu nh| phấn (dữliệu dạng ư hóa như hình ảnh )

Không phải hộquân trịcơ sđ dữ liệu nào cùng hổ trợ đầy đủ nhữngkiêu dữliặu này Tuy nhiên bốn kiểu câu ưúc dữ liệu dơngiản vAn bản số

Boolean và ngày tháng thì hdu như luônluôn cô

Kiểu Boolean còn gọi 1A kiếulògíc có thểchưa giá trị 0hôẠc 1 hoậccập giá trĩnhưTiWFalse hay Yes/No Kiếu này hưu ích khi bạn muônbiếu

diên càcthông Un chỉcóhaitrạngthốinhưNam hay Nữ Được phép hay

Không

Trang 29

Chương I: lAmq ^n vóisơ dữ liệu ng-’

Chú ý chứngtasư dụng kiếu dữ liệu vAn ban đế biểu diến sỏ diên

thoại iAn mà vùng Tại sao khùng sứ dung kiếu dư liẻu sd? Vđi sỗ điện thoai cAu trà lời hi4nnhiễu la: sỏ điệnthoaithường chứa nhưng ký tựđạcbiệt như dầu ngỡAc hay dâu nốiV|du: (02) 478203021.Sử dungkiêu dử hệuvànộàũ chúng cacổ thế cho phép lưu những ký tựnây còn nếudungkiếu sô' thi

không thế Với trườnghơpma sô vùng, mũcdù thõng Únnáy chi chứa cúc con sổ, nhưng chúng ta cùng khóng xemchúng lề sỏmầ nên lưudạng van

bắn đơn giảnla VI chứng không dung dẻ demra únhtoán

11 KÍCH THƯỚC CỘT DỬ LIỆU (FIELD SIZE)

Diếu qimn trọng nhất khi dinh kíchthước cho cộtdủ liệu dó là xácdinh phỉim vi đủ lớn đếcóthé cất giử mọi trường hợp xíy ra của thòng tin

Ví dụ như trường tên Name và dia chỉAddress, co thẻ doán ra tỗn không

quá 50 kỷ tự còndia chi cử 100 chữ là tỏi đaTuynhiẽn sècónhữngtrương

hợp thétsư bạn không biết chác chần chiểu đà: cột dưliêu bao nhiêu là dửKhi gạp truừng hop này tốt nhất lể hẫy đế kíchthước cột dử liệu bằng vđi

sỗ tỏ'1 đa mAmột hệ quÀn trị dư liệucho phép (thường la 255 hoac 254 kýtụ) Một ư hỉ’ quản tri như SQLServerhay Oracle còn chophépbộnsừ

dung rầck*Ainhư NVARCHAR hay NTEXTkhôngcán chl dịnhkíchthưdcNội dung lưutru sè dượccđc hộ quâu trị dừ liệu tưđộng tùy chinh

12 TÊN CỘT DỮ LIỆU

Ban se thảy tèn các cộtdử 11ỘU thường dátghép hẻn VÓI nhaunhư

EirstName hay MeinberahipTypeĐAy ỉa điếu nèn làmTai sao khôngviết

thêm khoáng tráng dếchúng dộ đọc hon?

Mậc dầuhiện nay háu hết CÁCchương trinh quântrị ca sd dừhiu déu

cho phép bạn tao ra ten trường hay cột dữ liệu đươc phép cổ khoảng tráng

nhưngcồn rất nhiAu thư viện cùng nhưngổn ngủlap trinh chưahỏtrợ vièc

truy xuât Un cốt cổ khoảng tráng Do vậy tót nhất lâ dưng nên dùng trừ khibanbiếtrỗminh sẻsử dụng thư viện truy xuất hồ trơoơ chí dật tAn trườngCổ khoắng trAng.

13 ĐỊNH DẠNG VÀ KIEM TRA TÍNH HỘP lệCỦA DỮ LIỆU

Mò: sổdinh dang và quy tác kiếm ưa dữ liệu đưực cốc hệ quântrị ãp

dốt mộc dinh trên kiẻu dủ liệuma ban chon Ví dụ kiéu số thề khỏng điS?c

Trang 30

2ft Chương li IJun Ijuvilvớicơ dữ liệu

có nhửng ký lự chừcắi, chuỗ) nhập vào khổng vượt quđ kích thướcdinh

trước BÀngcâchnày dừ liệu của bạnđâmhảo tính đúngđán khi đưa vâo lưutrữ.Có nhiêu clip độ kiếmưa dữ liệu, một sỗ hệ quàntricho phép ban tạo ckcquy tác kiêm tra (Rule> ngay khi dưliệu dưavAo Một «ô'ứng dụngcứthètự kiêm tra va báo đâm dữ liệu dóng khuôn dangtrước khi dưa vàolưutrử trong các bang cùa Cỡ sơ dư liệu.

Trang 31

Chương2: ChuÀn hóa co 3Ó dù liéu28AS)

Chương 2:

CHUẨN HÓA Cơ SỞ DỬ LIỆU

Cac vándê chinh aẽ (tược dểcáp:

< Chuán hóa dạng 2 1SNFI

Một trong nhưngnhan tỏ quantrọng nhât trong thietkếcơ sđdử liệu lã VIộcđinhnghĩaNỗu cđu trúccác bảng cua bạn không được thiét lápđúng

hơộc hợplý thicổthể khiếnban nhức đáu khi xử lýva truy vấn dừ liệu từ

các bang Khi hièu rô vé các mốiquan hệdư liệuvồ quy tácchuỉn hỏa dữliệu, bạn sêthiết kế dừ liệu tốt hơn tạo cơsỏ cho viec chuẩn bị vố pháttriềuứng dụng tiẻp theo sau này

Một cơ sở dửliệu dươc thiếtkế rát lã cơ sớ dừ liệu han chẽ tôì đaviệcdư rhưa dừ lieu nhưngvản không làm mât đi bít kỹdử liệu nôôCo nghía

la chúng ta sưdungkhong gianlưu trừ trongcơsờ dư liêu ít nhátnhưngvànbaodám tâtcãmồi liên kèt cung VƠI nội đungdữ liệuHơn nửa chufin hốtì

lươcđó cơ 80 dư liêu sẻ tránh đươcnhữngdi thường trong thao tác chèn, cảp

nhỉl ho*c xóa dữ liệu sau nàyvàdođó bảodám tinh toàn vợn trangcơ sổ

dư lieu.

Chodò ban làm việcvới hê quan tri cơsờ dữ liệunào đi chàng nừa;t MySQL.SQL Server Access OracleI ban déu cán phải biết rộphương

pháp chuàn hóacácbângt rong hệthống cơ sở dừliệu quan hệ của mình Nósè giúpbạn cổdươc môtcơ sà dử lieu dé hiẻu dê truy nháp va mó rônghơn Trong mộtsô trường hop aocônlảm tông tócdô cua ứngdungkhítruy xuất

cơ sơ dữ liêu

Vé co bản.các quy tAcchuAn hóa buộc loại bó cácdư thừadữ liệuvà

nhưng quanhê phy thuộc máu thuân nhau giửa cac báng.Trongvi dụ sau

chungla sê khảosátcácbưức chuẩn hóa đẽ’tạo ra một cơsớdữ liệu hiộu quầvồ đáy dùchửc nàng

Trang 32

ẾỀễ 30 Chương 2: Chuẩnhóacơ sà dừ liệuChúng tôi sè trinhhâychitiết nhửng kiếu quan hệ mA CÁU truedữ liệu của bạn có thíSŨ dung

1 PHỤ THUỘC HÀM

Trưúc khi chúng ta bước vảoquá trình chuẩnhóa.bạn cần biẻtrằng chuđn hôa khang phaila dâc thù VƠI mốtkiếncơ lờ dif liệu nAo rổ Nhưngquy liechuấu Macdthế áp dụng chợ hâu hétcác hộ chốngquántri co sờ

dưMu như MySQL.SQL ServerOracle Access

Trưdc hết chúng ta quay lậi một chút ví phu thuộc hâm đAnêu

chương trươc, đây la yếu tốquan trọng nhát trông quá trinh xử lỹchuẩn hốa

Thuâtngũ “phụ thuộc hàm"tuy khổ hiếu nhưng nó lại dùng diên dat cho ỷ

tướng hếtsưc đơn giần

dưoi dây:

Dế minh họa, bạn hâyxemmộtbáng dư liệumẮu

Trong đó Name ỉà tèn nhân viên.Pay_Classla loại xác định gĩA

Chanh tơAn vồRatelàtỉgiá crtn thanhtoán

Định nghía: eột A phu thuộc hàm VAO cột B.nếu cómột giá tn bấtkỹ

của A ta sè xác định ra gỉátri duy nhất khác của cột B.

Trong vi dụ trên, trưởng Ratela phu thuôc hàm vào trường Pay_Class

Nối cách khác trường Pay _Classxác đ|uhRate ĐỂKÁCđịnh phụ thuộc hàm bạncồ thế nghi dơn gian như sau cho một giá tr| củacột A háy xác định già tri dơnduy nhíttươngứng của cộtB? NÁUB suy ra từA, ta nốiAIAphuthuộchàm xácđịnh tì VỚIbangdừ liệu trén chúng ta thèm vàocác cột như

Trang 33

Chương 2: Chudnhỏa cơ sd dử hậu31&’

Trong đổ Sales_K*pN umber làmồ số nhân viên banhang

Soc.Sec.no là sá bân hiểm an ninh xa hội (hay lé CMND) cùa nhân vita

bấn hâng Bây giỡ.hây xem bảngtréudẻ tim ra một sổ phuthuộchamkhác.Ban đa biết Pay.Class xác đinh Rate('hung ta củng có thể nóirângSales.Rep Numberxác dinh cộtName Một masốSalea_Rcp_Number cotương ứng duy nhát một gia trị Name duy nhất Nóhoàn toàn phù hợp VỚIdinh nghía củaphụ thuộc hàm Tuv nhién cột Name côthe’ dũng XÁC Ạnh

dược giá tn của cột náo khac hay khống7 Thoạt nhỈD ban có thế nốilà có.

tuynhiển sự thầt1Akhông Thưởng, ban có thénôi vđi tên Ward sè chi radưoc một giA tn tương ứng của cột Sale«_Rep_Number tuy nhiênnêu cómột Dgùừỉkhầctrùngtta Ward luôn thi sao? Khi do cùng một tênWard

ban xAc dinh hai giâ trị Sales^Rrp.N umber khacnhau Vá do đố Namekhông cò chứcVI Angdùng xác dinh dược cộtnAo CỂ.

2 KHÓA VÀ PHỤ THUỘC HÀM

Ban đâ biêtphuthuộchàmlà gi chúngtacó thế timhiAithém chi

tiết vé khôa (Keys) đađươc giới thiệu quaờchươngtrước Nêu ban da từng

lâm việc VỘI cácbịcơ sò dừ liệu, át hấn ban có lè dãbiết dến thuât ngữ khóa

chinh (Primary Key) Thế nhưng, hancổ thếđinh nghíaPrimary Key làgi không

Dinh nghĩaCột A la khốa chinh cho bàng T néu

cùngcó Thuộc tinh 1

Dẻ hiếu, nếu tất cả các trương haycộttrong môt bủng cơ sớ dử liệu

phu thuộc vaomátvàch< một cột (hay tap hợp còt i A trongbàng,thi A

chinh|A khóa cùa bảng

Đoi khi Thuộctinh2 trong dinh nghíatrên bị vi pham vA tốn tậi hai cột đểucổkhà nâng làm ứng cử viênchokhôa chinh Những khóa nàyđưoc

goilà khoa ứng viên hay Candidates KeyTừnhững khóa ưng viểnnAy, ta

chọnra một khóa lam khóa chính (Primary Key), cái cônlạigọilakhóa thay thế (Alternate Key) Vỉ du trong cung báng dừ liệu ồtrẽn

Name Sales, ữop NumberPay Class Rote

Trang 34

Èií> Chương 2: Chuânhóa Cữ sở dư liệu

Khóachinh cùa chung ta trong trườnghợpnay làmãsố nhân viẻn han

hàng SalesRop.Number nổ phũ hợpvới định nghía cùainột khóa chinh Tát câ CAC cộtkháctrong báng đẻu phụ thuòc vâo cộtSales Rep-Number,không gi phái bàD câi

Bấy giờ.đi xathỏmmotbước nừa giả thiếtrằng chung ta cố thêm sốan ninh xâ hội<hay sốCMND) cùa nhân viên

NameSales Rep Number Pay.ClassRateSoc Sec no.

GiđđÁy bạncốhai khóa ứng viAn Sâlea_Hep_ Number vàSỡ Sec no

v$y.chúngu phải quyét đinhlàsử dung cột náotrong hoi cột khóa ứngviên làm khốachinh, vìcáhai đểuxácđịnh tính duynhát?Tốtnhất la chọn Sales _Rep_Nunib<?r làm khớa chinhvinhiêulý do mà ban sõ thíy hiến

nhiêntrong cácbước vỉ chuẩn hóa mA chúng ta bát đáutiếp cận dưới đây

3 CÁC DẠNG CHUẨN HÓA DỬ LIỆU

Giásử chúng ta muốn tạo ra một bảng lưư thõng tin người dùng,và

muôn cất giư nhưng thõng tin như Name Company.CompanyAddress UBLi một sô địa chi liên lac khrt.’

ƯRLỉa địachi Web trên Internet, vi (tụ nhu http 7 ỉ UIUHVmycompany.com

ịminA, một công tycú thề sùdụng địa chỉ Webdìquàng bá htnh ánhcông tỵ

Ban cố thé bát đâubàng việc định nghĩa một câu trúc bảng như sau

Table- users

name company companyaddress urtlUrt2JoeA8CIWork Laneabc.com xyz.comJfll XY7I JobStreetabc.comxyz.com

Trang 35

Chương2:Chuẩn hóa cơ sò dừ liệu33a*Chúng ta nói báng nảy thưòcdạngdẨu tiên hay dạng 0(ZeroForm) vỉ nóchưaápdungquy tác chuẩn hóa não cả Lưuý urlì,arỉ2 làcác địa chỉ

Websitethể có cuamột công tyhay c4 nhân -Nẻu người dùng có thèmmột địa chi uri3 nửa thi sao? Bạn tao một cột ur!3 nửa chip Va nếu nhu CÀUcua ngườidũngmuốn taonđia chỉ url khắc thì có lè bạn phai liêntục chinh sủa bàng dư liêucúaminh dểchémcộtmđi Chưa kể trong cAc chương trinh

xớlý bộn cũng phài thay đõìmã cứngnhíc đế truy xuát đến cáccột Rô ràng

- chúng ta muíntạomột hé thông các bảng cổthé mđ rộng ra theo những yèu

CÂU pháttriínmđi Chúngta hãy xem quy tẤcchuẩnhóa dạng 1(First NormalForm) va áp dung quy tácnày cho bảng dơli(u trên như thế nào

3.1 Chuẩn hóa dang 1 (1NF)

Dạngchuản hứa 1, đổi khi còngọila 1NF theo tdn viếttát của nó

(First Normal Form), yẻu cáu thuộc tinh hoácgiá trị cộtphdiỉ à dơnnguyện

tính phaichứamột giá trị đơn duy nhát, uókhôngđược chứa một tip giá tri hay tập hợp câc giátntư nhưng dong dư liệu cuabảng khac

Quỵ tác dang chuđnhóa1:

1 Loạibổnhưngnhổmdơ liệu lạp lạitrong từng bâng nông lẻ.2 Tạoramột bàng riêngbiửt cho tập dử liẻu hènhẻ với nhau.3 Xác dinh khoa chinh chobảng

Xét laibàng dửliậu trước dây.quy tác chuăn hóa 1 bịVIphạm với hai thuộc tính uri 1 vâur!2 vi như bạn thảy chủng cốnhửngnhómdữliệulặp lại

chocũng một UnJoe Khi ápdungcácquy tác chuản hóa dang 1 ban fiè có dược báng biếnđôi sau

useridnamecompanycompany.addruss Uri

1JoeABC1 Work Laneobc.com1JoeABC1 Wcxk tanoxyz.com2JillXYZ1 Joo Shootatxr.com

2JillXYZ1Job Streetxyz.com

ở đây userIDlàkhỏachính,khổa này dược thiết lẠp lâmâsố duy

nhát danh cho tưng nhân viên urllVAurl2 dượcđưavểchí còn mộtcộtưrl.

Bây giờbáng của chúng ta dươc goilàtuảntheo dạng chuấn hốa l Chúng

ta dagiải quyếtvấn dẻ trũng lắp giữacác cột url khỉmỏrộng Tuy nhiên,hảy xem một vấn dêkhácchúng ta đà tựminh làm rác rồi thêm.

Trang 36

cá 34 Chương 2: Chuánhóacơ sàdữ liệuMỖI khi nhâp vàomộtmẩu ũn hay dòng mới cho mót url cùa người

dùng khểc vào bàngUsers,chúng ta tạo nénsưtrùng lốp tên rỗng ty

Company vft tền người dùng Name Khi danh sốch lưu trư lớndânlên dửliệungàycàng trờ nên dư thừavồ hày hinhdung nêu chúng tamuốn đổi tên cho Joe hayUnCompany nơi JoelỉUn việc ta phải đòi hailánNếusòdòng

trùngláplớnhơnthiviệc cập nhật dữ liệu thiếu có thể gây ra ván dỗ nghiêmtrọngvẻtính không dùng dáncủadừ liệu Chúng tahay ap dụng thtm một quy tác chuẩnhóa dạng2

3.2 Chuẩn hóa (lạng 2 (2NF)

Mộtlượcđổđược xem là tuân theo dạng chuẩn hóathửhai (2NF) nếu tấtcể các thuộc tinh hay cộtcủa nổ tkhông nàm trong bộ phàn của khóachỉnh)hoàn toàn phu thuộc hàm vồo khốa chinh,và lược đồdâ tu*ntheo dang chuẩn hoa 1trước đố Đ1A1 nAy eó nghía là gpNổcó nghía ràng mỏithuộc tính (hay cột) khòng khóa đéu phai làphụthuôc hàm vảotất cà các

bộ phân của khôa Nếu khoa chinh được tao ra bôi nhiÀu cột thi mồi cột

kháctrong bảng phài phuthuộcvàosự kết hợpcúa những cột cúa khóa chínhQuy tác ơđaylà:

1 Tao rabảng nêog biệt cho cấc tập hợp giá tritrùng láp nhiểu mâu

tin trên bảng chinh

2 Liền hệ bAng chínhvớibangnày bằng một khóa ngoai

Theo chuẩn hóa dang 2 chúng ta tâchcác giatrị url thành mộtbảngriêng biột sao cho cáthưthímnhiều địa chi uri khácmà khống trùngláp dư liệu Chúng tacùng sè sứ dụng giátn khoa chinhrua bảng han ddu dố

hènkétvái các cột khóa ngoại của bảng mái

Trang 37

Chưởng 2; C-huắnhổa casò dử liệu 35B*Chúng ta đâ tạo xong hai bàng nẻng biệtvổ khóa chínhtrong hảng

Users lausrrld.ket nốitới khóa ngoaitrong bảng urls, làrelUserld.Dang nây d*tét hơn Ban co thểthêm bao nhiéu thông un Uri eho UserID vào

bang Urls vân không có dử liệu nào dược thêm vào bảng Users vầ dọ đổ

.th^m Url mới cho User không làmtrung up dữ liệu

The nhưng diéu gi xây ra nếu ta muôn thẻmmột nhânviên(hoệc200.nhâu viên) mội của côug ty ABC vào bâng Users?

Như bạn thấymối nhân vièn thèm vàose làm trung lâpliu đìa chivâ

tồn còng ty Chúng ta cAn chuÀn hóa dửliệu theo một dang thứ 3 đế khácphúcđiếu này

3.3 Chuẩn hóa dạng 3 (3NF)

Dạng này yèucầuIoạibổCÀCcộtkhôngphụ thuộc vồokhóa Chung ca

phai loai bo tát cảcacphán phu thuộctác câu vàlượcđốphải à đang chuẩn

hốa thử hai trước dó Vậy phu thuộcbẩc cáu làgi?Hay lem ỉươeđổ MU'ưscrs tuscrỊDnamt company company address)

Lược dó này chửacác phụ thuộc hàm sau

company —> company ^address

Khoachínhlà userID, và tảt ca các cột khốc cùa bàng đẻu hoàntoànphụ thuộc vào khóa chinh.diếunay de thâyvì khóa chính chi cổmòt cộtTuy nhiên,ban cô thế thây:

userID—> name

userID — >company

use riD —>company address

và do:

company —>company ^address

nen bancố thế bắt CÂU như sau

phu thuộchamuserID—> companyđược gọilã phuthuộcham bâc cáu vi nócổ thí dùng làm bước trung gian đểUmra phụ thuộc company —>

Trang 38

E 3a Chương 2: Chuẩnhóa co sớ dữ liêu

Đểchuyểnvế dạng chuixi háa thử ba.chúngLacán loai bó phan phuthuộcbáccáu này Trường rén Company và đia chỉ còngty Company.Adrreas

cua chúng ta không hận quan Ri đỗn Ưserld vi vây chúng cản phải cú một bộkhóa Companyld khác Các bảng dược tách ra như sau

1 ABC1 Worktone

BAygiở chúng tadăcókhóa chinhCompanyld chobang Companies,khóa này sề lièn kết vơi khóa ngoaicung WnCompanylD trong bàngUsers.

Gtừ đẫy bạn cổthếchèn thêm20<Ị người dùng inới vào bíinR Users màchi

cánchén tên công ly “ABC vào bàng Companies một lĂn Bâng Usersvà

Urls cùa chúngta có thímỏrộngthêmbaonhiêu mđu tincũng được má

khống gây radư thừa dử hậuhoặc lầm phát sinh vấn dí khi cậpnhậtthông

tinvế công ty.

Da số chùng ta đỉudưng laiòdang chuắnhđathư ba nây và nó hẲu như thích hợp VỚI hấu hết các mô hình ứug dụngquản lý.Nhưng hãy xem lại dử liêu luutrong bảng Ưrls ban có phát hiện ra khả nâng dửliệu t»i

trũng IẨp haykhổng’Nèu càhai ngườiJoevàJill đẻu thích thamchiếudếncúng môt địa chi Ưri (abc com) thisao?

Trang 39

Chưởng 2: Chuãn hờa casớ dừ liệu37 iÊâi

ĐẬRĨãiquyếtvândênày chùn- to cÁn đến một dạng chiiÃn thứ 4

(4NF) Tuynhiên dangchuàn này liènquan dẻn một quanhệ khác, đở lã quan hộ nhiAu-nhiổu(many-many)

3.4 Quan hộ dữ liệu

Truớckhichúng ta dinh nghĩa và tiếp cận cách chuấnhoa thư 4 hồyxemlai baloai quan hè dữ liều cơ bàn:một mộc (one-one), một-uhiều(one-manyhay dôikin còn gọilà master/det-ail), vànhiểu-nhiẻu(many-many).Bạn hâyxemlạibảng người dùng Userstrongvi du dung 2JillXYZ1 JobStreet□be com2JilXY21 Job Streetxyzcom

Hãy hĩnh dung giả sử chúng tata ch cột url ra một bảng riêng biệt

MÒI khi nhẠp vao một dòng mớiưougbùng người dùng Userschúng ta lainhập một dòng thống tin tương ứng url vào báng urls.Khi dó bancó mối

quanhệmỏt mật: mồihàng trong bang Users có chínhxác một dòngtươngứng trong bàng urls

Bãygiờ hãy xembângtrongvidu cùa dang chuẩn hóa thư 2 Bàng

cùa chững ta cho phép mõt người dũngcô thế có nhiều địa chi url kết hợp

company companyaddress

ABCI Work lane

-XYZ I JobStreet

Trang 40

Chương 2: Chuân hoa Msơdứ liệu

nhu ban tháy UserID 1 cồthêcó 2 dia chírdUaerlD tương ưng Đay ta mỏi

quan hộ một - nhiêu,dạng chung và thường sữdụng nhít.D6i khidangnày

cùngoilà master detail lcha-com vìmỏt dòng thống Ún cùa bảng nàyliẻn

hệ VƠI nhiều dòng thỏng tincủa bảng khác như kiếuquan hẻ một cha cđ

nhiẻu con.

M<5i quan hộ nhiẻunhtéu(many-many) cóphán phức tập hơn Chúỳ trong vi dụdạng chuán hôa thư 3 trưđcđảy chúng ta cỗ một ngươidùng liên quan đén nhiêu ưrl» Nhu dădícôp chúngla muốn thay dối cấutrúc dí chophép nhiéu ngươi dùng được sứdung hay liftn kết đếnnhiều url khácnhau,

đây chinh)â lúc chúngta muôn tạo mót mốìquan hê nhiéu -nhiều.

Háy xem diếu chung ta muôn thựchiện trẻn câutrúc bàng trước khiđi vào chi (lết:

componylD company companyaddress

ABC 1 WorkLane

2 XYZ 1 JobStreet

Ngày đăng: 02/04/2024, 20:26

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan