« Home « Kết quả tìm kiếm

Chương Mười Ba - Cơ sở dữ liệu (Database)


Tóm tắt Xem thử

- Ch ươ ng M ườ i Ba - C s d li u (Database) ơ ở ữ ệ.
- Nói đ n c s d li u, ta l p t c nghĩ đ n SQLServer, Access hay Oracle .v.v., nh ng n i ch a r t ế ơ ở ữ ệ ậ ứ ế ữ ơ ứ ấ nhi u d li u đ ta có th l u tr hay l y chúng ra m t cách ti n l i và nhanh chóng.
- H u h t các ề ữ ệ ể ể ư ữ ấ ộ ệ ợ ầ ế ch ươ ng trình ta vi t đ u có truy c p c s d li u, và ta dùng nó nh m t công c đ làm vi c v i ế ề ậ ơ ở ữ ệ ư ộ ụ ể ệ ớ r t nhi u d li u trong khi t p trung vào vi c l p trình ph n giao di n v i ng ấ ề ữ ệ ậ ệ ậ ầ ệ ớ ườ i dùng (users)..
- Do đó ta c n có m t ki n th c căn b n v ki n trúc c a c s d li u đ hi u lý do t o sao ta ầ ộ ế ứ ả ề ế ủ ơ ở ữ ệ ể ể ạ thi t k hay truy c p nó theo nh ng cách nh t đ nh.
- Table Authors ch a nhi u ứ ề records.
- M i record trong table Authors ch a 3 ỗ ứ fields: Au_ID, Author và Year Born (năm sanh).
- Ta có th trình bày Table Authors d ể ướ ạ i d ng m t spreadsheet nh sau: ộ ư.
- Vì cùng m t field c a các records hi n th trong cùng m t c t c a spreadsheet, nên ta cũng nói đ n ộ ủ ể ị ộ ộ ủ ế m t field nh m t ộ ư ộ column (c t).
- Th t tình mà nói, ta không c n ph i có m t computer đ l u tr hay làm vi c v i m t table nh ậ ầ ả ộ ể ư ữ ệ ớ ộ ư Authors n y.
- Ta đã có th dùng m t h p c t, trên m i c t ta ghi các chi ti t Au_ID, Author và Year ầ ể ộ ộ ạ ỗ ạ ế.
- Nh th m i t m c t t ủ ộ ư ế ỗ ấ ạ ươ ng đ ươ ng v i m t record và nguyên cái h p là ớ ộ ộ t ươ ng đ ươ ng v i Table Authors.
- Ta s s p các c t trong h p theo th t c a s Au_ID đ có th truy c p record nhanh chóng khi ẽ ắ ạ ộ ứ ự ủ ố ể ể ậ bi t Au_ID.
- Ch kh m t n i, n u mu n bi t có bao nhiêu tác gi , trong s 300 c t trong h p, già ế ỉ ổ ộ ỗ ế ố ế ả ố ạ ộ h n 50 tu i thì ph i m t vài phút m i có th tr l i đ ơ ổ ả ấ ớ ể ả ờ ượ c.
- Database trong computer nhanh h n m t ơ ộ h th ng b ng tay (Manual) là ch đó.
- Primary Key và Index.
- Đ tránh s trùng h p, th ể ự ợ ườ ng th ườ ng có m t field c a record, thí d nh Au_ID trong Table ộ ủ ụ ư Authors, đ ượ c dành ra đ ch a m t tr s đ c đáo (unique).
- T c là trong Table Authors ch có m t ể ứ ộ ị ố ộ ứ ỉ ộ record v i field Au_ID có tr s y mà thôi.
- Ta g i nó là ớ ị ố ấ ọ Primary Key..
- Nhi u khi ta mu n ả ố ậ ộ ự ề ố dùng chính tên c a Author đ truy c p, do đó ta cũng c n ph i sort s n các records theo th t ủ ể ậ ầ ả ẵ ứ ự alphabet.
- Ta cũng có th h p nhi u fields l i đ sort các records.
- Th t ra, chính các records không ể ợ ề ạ ể ậ c n ph i đ ầ ả ượ c d i đi đ n m đúng v trí th t .
- Ta ch c n nh v trí c a nó đâu trong table là đ ờ ể ằ ị ứ ự ỉ ầ ớ ị ủ ở ủ r i.
- M t Table có th có m t hay nhi u Index.
- M i Index s là m t ỉ ộ ể ộ ề ỗ ẽ ộ table nh c a nh ng ỏ ủ ữ pointers, ch a v trí c a các records trong Table Authors.
- Khi thi t k m t Table ta ch đ nh ế ế ộ ỉ ị Datatype c a m i field đ có th ki m tra data cho vào có h p ủ ỗ ể ể ể ợ l hay không.
- Th t ra nó là Long nh ng tr s đ ậ ư ị ố ượ c phát sinh t ự đ ng m i khi ta thêm m t record m i vào Table.
- Ta không làm gì h n là ph i ch p nh n con s y.
- Bây gi , n u b n đang ch y Microsoft Access đ quan sát database biblio.mdb, b n có th dùng ờ ế ạ ạ ể ạ ể Menu Command Tools | Relationships nh sau đ xem s liên h (relationships) gi a các tables.
- M i table l i ẽ ể ị ạ ỗ ứ ỗ ạ có m t hay hai s i dây n i qua các tables klhác.
- M i s i dây là m t m i liên h (relationship), nó ộ ợ ố ỗ ợ ộ ố ệ n i m t field trong m t table v i m t field có cùng tên trong table kia.
- là one-to-many, ý nói m t ộ nhà xu t b n có th phát hành ấ ả ể nhi u ề đ m c sách/CD.
- T ươ ng t nh v y, trong m i liên h one-to-many gi a table Authors và Title Author, ta th y m t ự ư ậ ố ệ ữ ấ ộ tác gi (bên đ u có con s 1) có th sáng tác nhi u tác ph m đ ả ầ ố ể ề ẩ ượ c đ i di n b i các record Title ạ ệ ở Author..
- Trong khi đó gi a hai tables Titles và Title Author, ta có m t m i liên hê ữ ộ ố one-to-one, t c là t ứ ươ ng ng v i m i record Title ch có m t record Title Author.
- T ưở ng t ượ ng khi ta làm vi c v i table Titles (t m g i là Tác ph m), nhi u khi ta mu n bi t chi ti t ệ ớ ạ ọ ẩ ề ố ế ế c a nhà xu t b n c a tác ph m y.
- Th t ra ta đã có th ch a chi ti t c a nhà xu t b n c a m i tác ủ ấ ả ủ ẩ ấ ậ ể ứ ế ủ ấ ả ủ ỗ ph m ngay trong table Titles.
- Tuy nhiên, làm nh th có đi m b t l i là records c a các tác ph m ẩ ư ế ể ấ ợ ủ ẩ có cùng nhà xu t b n s ch a nh ng d li u gi ng nhau.
- M i l n mu n s a đ i chi ti t c a m t ấ ả ẽ ứ ữ ữ ệ ố ỗ ầ ố ử ổ ế ủ ộ nhà xu t b n ta ph i s a chúng trong m i record Title thu c nhà xu t b n y.
- Vì mu n ch a chi ấ ả ả ử ỗ ộ ấ ả ấ ố ứ ti t c a m i nhà xu t b n m t ch duy nh t, tránh s l p l i, nên ta đã ch a chúng trong m t ế ủ ỗ ấ ả ở ộ ỗ ấ ự ậ ạ ứ ộ table riêng, t c là table Publishers.
- N u gi s ta b t đ u thi t k database v i Table Titles, r i quy t đ nh tách các chi ti t v nhà ế ả ử ắ ầ ế ế ớ ồ ế ị ế ề xu t b n đ vào m t table m i, tên Publishers, thì k thu t y đ ấ ả ể ộ ớ ỹ ậ ấ ượ c g i là ọ normalization.
- Trong m i liên h one-to-many gi a tables Publishers và Titles, field PubID là Primary Key trong ố ệ ữ table Publishers.
- Trong table Titles, field PubID đ ượ c g i là ọ Foreign Key, có nghĩa r ng đây là ằ Primary Key c a m t table l (foreign).
- Hay nói m t cách khác, trong khi làm vi c v i table Titles, ủ ộ ạ ộ ệ ớ lúc nào c n chi ti t m t nhà xu t b n, ta s l y chìa khóa l (Foreign Key) dùng làm Primary Key ầ ế ộ ấ ả ẽ ấ ạ c a Table Publishers đ truy c p record ta mu n.
- Đ ý là chính Table Titles có Primary Key ủ ể ậ ố ể ISBN c a nó.
- Khi thi t k m t database, ta s tìm cách s p đ t các d li u t th gi i th t bên ngoài ế ế ộ ẽ ắ ặ ữ ệ ừ ế ớ ậ vào trong các tables.
- Vì d ki n đ ữ ệ ượ ắ c s p đ t th t và có quy c nên ta có th tin c y tính tình c a database ặ ứ ự ủ ể ậ ủ (không có ba tr n, khi thì th n y, khi thì th khác - gi t gi t).
- Vì h u h t d ki n n m trong database, thay vì trong ch ầ ế ữ ệ ằ ươ ng trình ng d ng, nên database ứ ụ t có documentation (tài li u c t nghĩa).
- D s a đ i chính c u trúc c a các tables.
- Integrity Rules đ ượ c dùng đ nói v nh ng qui lu t c n ph i tuân theo trong khi làm vi c v i ể ề ữ ậ ầ ả ệ ớ database đ đ m b o là database còn t t.
- Có hai lo i quy lu t: lu t t ng quát (General Integrity ể ả ả ố ạ ậ ậ ổ Rules) và lu t riêng cho database (Database-Specific Integrity Rules).
- Các lu t riêng n y th ậ ậ ầ ườ ng tùy thu c vào các quy lu t v m u d ch (Business Rules).
- Có hai quy lu t liêm chính liên h hoàn toàn vào database: Entity (b n th ) Integrity Rule và ậ ệ ả ể Referential (ch đ n) Integrity Rule.
- Entity Integrity Rule nói r ng ằ Primary Key không th thi u đ ể ế ượ c, t c là không th có tr s ứ ể ị ố NULL.
- Quy lu t n y xác nh n là vì m i Primary Key đ a đ n m t row đ c đáo trong table, nên dĩ ậ ầ ậ ỗ ư ế ộ ộ nhiên nó ph i có m t tr s đàng hoàng.
- L u ý là Primary Key có th là m t ư ể ộ Composite Key, t c là t p h p c a m t s keys ứ ậ ợ ủ ộ ố (columns/fields), nên nh t đ nh không có key nào trong s các columns là NULL đ ấ ị ố ượ c..
- Referential Integrity Rule nói r ng database không th ch a m t Foreign Key mà không có ằ ể ứ ộ Primary Key t ươ ng ng c a nó trong m t table khác.
- Ta không th thêm m t Row vào trong m t Table v i tr s Foreign Key trong Row y không ể ộ ộ ớ ị ố ấ tìm th y trong danh sách Primary Key c a table bên phía ấ ủ one (1) mà nó liên h .
- N u có thay đ i tr s c a Primary Key c a m t Row hay delete m t Row trong table bên ế ổ ị ố ủ ủ ộ ộ phía one (1) thì ta không th đ các records trong table bên phía ể ể many.
- ch a nh ng rows tr ứ ữ ở thành m côi (orphans).
- Cascade ( nh h ả ưở ng dây chuy n): N u tr s Primary Key b thay đ i thì tr s Foreign Key ề ế ị ố ị ổ ị ố t ươ ng ng trong các records c a table bên phía ứ ủ many.
- N u Row ch a Primary Key b deleted thì các records t ế ứ ị ươ ng ng trong table bên phía ứ many.
- Nullify (cho thành NULL): N u Row ch a Primary Key b deleted thì tr s Foreign Key ế ứ ị ị ố t ươ ng ng trong các records c a table bên phía ứ ủ many.
- đ ượ c đ i thành NULL, đ hàm ý đ ng ổ ể ừ có đi tìm thêm chi ti t đâu c .
- Nh ng quy lu t liêm chính nào khác không ph i là Entity Integrity Rule hay Referential Integrity ữ ậ ả Rule thì đ ượ c g i là Database-Specific Integrity Rules.
- Nh ng quy lu t n y d a vào chính lo i ọ ữ ậ ầ ự ạ.
- database và nh t là tùy thu c vào các quy lu t v m u d ch (Business Rules) ta dùng cho database, ấ ộ ậ ề ậ ị thí d nh m i record v ti n l ụ ư ỗ ề ề ươ ng c a công nhân ph i có m t field S Thu (Tax Number) do s ủ ả ộ ố ế ở Thu V phát hành cho công dân.
- N u ta không áp d ng các Database-Specific Integrity Rules nghiêm ậ ổ ề ế ụ ch nh thì database có th b h và không còn dùng đ ỉ ể ị ư ượ c..
- Microsoft Access Database Management System g m có Database Engine và nh ng công c đi ồ ữ ụ chung đ cung c p cho users m t môi tr ể ấ ộ ườ ng làm vi c thân thi n v i database, nh Database ệ ệ ớ ư Design (thi t k các tables và m i liên h.
- Các ch ủ ươ ng trình VB6 có th truy c p database qua Jet ể ậ Database Engine..
- N u trên computer c a b n có cài s n MSAccess, thì b n có th dùng đó đ thi t k các tables c a ế ủ ạ ẵ ạ ể ể ế ế ủ database hay cho data vào các tables..
- N u property ế Required c a m t field là ủ ộ Yes thì ta không th update (vi t) m t record v i ể ế ộ ớ field y có tr s NULL.
- N u m t Text field có property ấ ị ố ế ộ Allow Zero Length là No thì thì ta không th update m t record khi field y ch a m t empty string.
- Th ườ ng th ườ ng, Visual Basic 6.0 không thích NULL value nên ta ph i th m t field v i ả ử ộ ớ Function IsNULL() đ đ m b o nó không có tr s NULL tr ể ả ả ị ố ướ c khi làm vi c v i nó.
- N u IsNULL tr v tr ệ ớ ế ả ề ị s False thì ta có th làm vi c v i field y.
- expression, ngay c khi ch ả ươ ng trình không cho Error, k t qu cũng là NULL.
- ế ả Làm vi c v i các versions khác nhau ệ ớ.
- N u máy b n đang ch y MSAccess2002 thì b n có th làm vi c v i Access database file version ế ạ ạ ạ ể ệ ớ 97, 2000 và 2002.
- N u c n ph i convert t version n y qua version khác, b n có th dùng Access ế ầ ả ừ ầ ạ ể DBMS Menu Command Tools | Database Utilities | Convert Database | To Access 2002 File Format.
- N u mu n gi nguyên version, b n có th convert database qua File Format 2002 đ s a ế ố ữ ạ ể ể ử đ i, r i sau đó convert tr l i File Format cũ.
- Access database file l n lên r t nhanh, vì các records đã b deleted v n còn n m nguyên, nên m i ớ ấ ị ẫ ằ ỗ tu n b n nên nh nén nó l i đ b h t các records đã b deleted b ng cách dùng Access DBMS ầ ạ ớ ạ ể ỏ ế ị ằ Menu Command Tools | Database Utilities | Compact and Repair Database.
- T t c m i database thông d ng đ u h tr ấ ả ọ ụ ề ỗ ợ SQL, m c d u nhi u khi chúng còn cho thêm nhi u ch c năng r t hay nh ng không n m trong ặ ầ ề ề ứ ấ ư ằ chu n.
- Ta có th dùng ể ph ươ ng ti n thi t k Query c a MSAccess đ vi t SQL.
- Sau khi thi t k Query b ng cách drag ệ ế ế ủ ể ế ế ế ằ drop các fields, b n có th dùng Menu Command ạ ể View | View SQL nh sau: ư.
- Ti p theo đây là SQL statement c a Query bên trên mà b n có th copy đ paste vào trong code ế ủ ạ ể ể VB6:.
- Dùng Link Table đ làm vi c tr c ti p v i database lo i khác ể ệ ự ế ớ ạ.
- Ta có th dùng m t database lo i khác, nh DBase, tr c ti p trong VB6 nh dùng m t Access ể ộ ạ ư ự ế ư ộ database bình th ườ ng.
- Dù Jet Database Engine là m t relational database r t t t và hi u năng, nó thu c lo i ộ ấ ố ệ ộ ạ File Based database, t c là nó th đ ng, không ch y m t mình nh ng ph i tùy thu c vào ch ứ ụ ộ ạ ộ ư ả ộ ươ ng trình dùng nó.
- File Based database không thích h p v i nh ng ng d ng có nhi u ng ợ ớ ữ ứ ụ ề ườ i dùng cùng m t lúc.
- ộ Trong khi đó, m t Database Server nh ộ ư SQLServer ch y riêng đ ph c v b t c ch ạ ể ụ ụ ấ ứ ươ ng trình khách (client) nào c n.
- Database Server thich h p cho các ng d ng có nhi u users vì ch có m t ầ ợ ứ ụ ề ỉ ộ mình nó ch u trách nhi m truy c p d li u cho m i clients.
- Nó có th ch a nhi u routines đ a ị ệ ậ ữ ệ ọ ể ứ ề ị ph ươ ng, g i là ọ Stored Procedures, đ th c hi n các công tác client yêu c u r t hi u năng.
- Ngoài ra, Database Server có s n các ph ệ ẵ ươ ng ti n v an ninh và backup.
- Không nh t thi t d li u luôn luôn đ ấ ế ữ ệ ượ c ch a d ứ ướ ạ i d ng table c a nh ng records và không nh t ủ ữ ấ thi t d li u luôn luôn đ ế ữ ệ ượ ư c l u tr trong m t database đàng hoàng.
- Dù v y, chúng v n đ ữ ộ ậ ẫ ượ c xem nh database d ư ướ i m t m t ch ắ ộ ươ ng trình ng d ng.
- Và đ i v i ch ế ể ế ơ ứ ữ ệ ố ớ ươ ng trình tiêu th d li u, ta nói ụ ữ ệ đ n ế Data Source (Ngu n d li u) thay vì database.
- Trong t ươ ng lai, m t ộ XML file cũng có th đ ể ượ c xem nh m t database nho nh .
- Nó có th đ ng ư ộ ỏ ể ứ m t mình hay là m t table trích ra t m t database chính huy.
- XML là m t chu n mà ta có th dùng ộ ộ ừ ộ ộ ẩ ể đ import/export d li u v i t t c m i lo i database h tr XML.
- Ta có th trao đ i d li u trên ể ữ ệ ớ ấ ả ọ ạ ỗ ợ ể ổ ữ ệ m ng Intenet d ạ ướ ạ i d ng XML.
- Ngoài ra, thay vì làm vi c tr c ti p v i m t database l n, ta có th ệ ự ế ớ ộ ớ ể trích ra vài tables t database y thành m t XML file.
- N u ph n l n các ch ế ẽ ớ ớ ế ầ ớ ươ ng trình áp d ng đ ụ ượ c thi t k đ làm vi c cách n y, thì trong t ế ế ể ệ ầ ươ ng lai ta không c n m t Database Server ầ ộ th t m nh

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt