Đang tải... (xem toàn văn)
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 4Giá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 5LỚI GIỚITHIỆU 3 sr
LỜI GIỚI THIỆU
Trongthờiđaithòng tin bùngnổ như ngảy nay.cợ sà 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 6THƯ 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 7MỤ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 83.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 9MỤ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 10a- 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 11MỤ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 128.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 13Chươ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 cơ 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 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 1411Chương1: Làm quen với cơ>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
Có 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 15Hì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 16Chươ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 17Chươ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 1816 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 19Chươ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 20Chương1:LAm quen với cơ 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 21Chươ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 23Chươ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 Cò 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 25Chươ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 cá 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 26i£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 27Chương 1: 14»m quen vó> ẹo sớ dữliệu
Trang 2826Chươ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 29Chương I: lAmq ^n vóicơsơ 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 302ft Chương li IJun Ijuvilvớicơ tò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 31Chươ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 33Chươ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 35Chươ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ỉ
Websitecóthể 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 36cá 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 37Chưở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 38E 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 39Chưở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 40Chươ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