LẬP TRÌNH TRỰC QUAN - PHẦN II VISUAL BASIC - BÀI 21 pptx

12 239 0
LẬP TRÌNH TRỰC QUAN - PHẦN II VISUAL BASIC - BÀI 21 pptx

Đ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

Lập trình trực quan BÀI 21 CƠ SỞ DỮ LIỆU (DATABASE) 21.1 Table, Record Field Nói đến sở liệu, ta nghĩ đến SQLServer, Access hay Oracle v.v., nơi chứa nhiều liệu để ta lưu trữ hay lấy chúng cách tiện lợi nhanh chóng Hầu hết chương trình ta viết có truy cập sở liệu, ta dùng cơng cụ để làm việc với nhiều liệu tập trung vào việc lập trình phần giao diện với người dùng (người sử dụng) Do ta cần có kiến thức kiến trúc sở liệu để hiểu lý tạo ta thiết kế hay truy cập theo cách định Ta dùng Access Database biblio.mdb, nằm C:\Program Files\Microsoft Visual Studio\VB98\biblio.mdb để minh họa ý niệm cần biết sở liệu Trong database có tables: Authors (tác giả), Publishers (nhà xuất bản), Titles (đề mục) Title Author Table Authors chứa nhiều records Mỗi ghi table Authors chứa fields: Au_ID, Author Year Born (năm sanh) Ta trình bày Table Authors dạng spreadsheet sau: 190 Lập trình trực quan Vì field records hiển thị cột spreadsheet, nên ta nói đến field column (cột) Và data record chiếm row (dịng) spreadsheet, nên có ta nói đến ghi row Thật tình mà nói, ta khơng cần phải có computer để lưu trữ hay làm việc với table Authors Ta dùng hộp card, card ta ghi chi tiết Au_ID, Author Year Born Author Như card tương đương với ghi nguyên hộp tương đương với Table Authors Ta card hộp theo thứ tự số Au_ID để truy cập ghi nhanh chóng biết Au_ID Chỉ khổ nỗi, muốn biết có tác giả, số 300 card hộp, già 50 tuổi phải vài phút trả lời Database computer nhanh hệ thống tay (Manual) chỗ 21.2 Primary Key Index Để tránh trùng hợp, thường thường có field ghi, ví dụ Au_ID Table Authors, dành để chứa trị số độc đáo (unique) Tức Table Authors có ghi với field Au_ID có trị số mà thơi Ta gọi Primary Key 191 Lập trình trực quan Không phải lúc ta muốn truy cập ghi Author dựa vào Au_ID Nhiều ta muốn dùng tên Author để truy cập, ta cần phải sort sẵn records theo thứ tự alphabet Ta hợp nhiều fields lại để sort records Thật ra, records khơng cần phải dời để nằm vị trí thứ tự Ta cần nhớ vị trí đâu table đủ Cái field hay tập hợp nhiều fields (ví dụ surname firstname ) để dùng vào việc sorting gọi Index (ngón tay chỉ) Một Table có hay nhiều Index Mỗi Index table nhỏ pointers, chứa vị trí records Table Authors Nó giống mục lục index cuối sách chứa trang số để ta đến phần ta muốn tìm sách Khi thiết kế Table ta định Datatype field để kiểm tra data cho vào có hợp lệ hay không Các Datatypes thông dụng Number, String (để chứa Text), Boolean (Yes/No), Currency (để chứa trị số tiền) Date (để chứa date/time) Datatype Number lại gồm có nhiều loại datatypes số Integer, Long (integer chiếm 32 bits), Single, Double, v.v Dưới Datatypes fields ghi Author: 192 Lập trình trực quan Có loại Datatype đặc biệt tên AutoNumber Thật Long trị số phát sinh tự động ta thêm ghi vào Table Ta khơng làm phải chấp nhận số 21.3 Relationship Foreign Key Bây giờ, chạy Microsoft Access để quan sát database biblio.mdb, dùng Menu Command Tools | Relationships sau để xem liên hệ (relationships) tables 193 Lập trình trực quan Access hiển thị giao thoại Relationships, table có chứa tên fields Mỗi table lại có hay hai sợi dây nối qua tables klhác Mỗi sợi dây mối liên hệ (relationship), nối field table với field có tên table Ví dụ hai tables Publishers Titles có mối liên hệ dựa field PubID (Publisher IDentification - số lý lịch nhà xuất bản) Hơn nữa, để ý thấy đầu dây phía table Publishers có số 1, cịn đầu dây bên phía table Titles có dấu vơ cực (∞) Ta gọi mối liên hệ (1-∞ ) one-to-many, ý nói nhà xuất phát hành nhiều đề mục sách/CD Tương tự vậy, mối liên hệ one-to-many table Authors Title Author, ta thấy tác giả (bên đầu có số 1) sáng tác nhiều tác phẩm đại diện ghi Title Author Trong hai tables Titles Title Author, ta có mối liên one-to-one, tức tương ứng với ghi Title có ghi Title Author Câu hỏi đặt mối liên hệ one-to-many có quan trọng Tưởng tượng ta làm việc với table Titles (tạm gọi Tác phẩm), nhiều ta muốn biết chi tiết nhà xuất tác phẩm Thật ta chứa chi tiết nhà xuất tác phẩm table Titles Tuy nhiên, làm có điểm bất lợi records tác phẩm có nhà xuất chứa liệu giống Mỗi lần muốn sửa đổi chi tiết nhà xuất ta phải sửa chúng ghi Title thuộc nhà xuất Vì muốn chứa chi tiết nhà xuất chỗ nhất, tránh lập lại, nên ta chứa chúng table riêng, tức table Publishers 194 Lập trình trực quan Nếu giả sử ta bắt đầu thiết kế database với Table Titles, định tách chi tiết nhà xuất để vào table mới, tên Publishers, kỹ thuật gọi normalization Nói cách khác, normalization thiết kế tables database để loại mảnh kiện (không phải Key) xuất chỗ Trong mối liên hệ one-to-many tables Publishers Titles, field PubID Primary Key table Publishers Trong table Titles, field PubID gọi Foreign Key, có nghĩa Primary Key table lạ (foreign) Hay nói cách khác, làm việc với table Titles, lúc cần chi tiết nhà xuất bản, ta lấy chìa khóa lạ (Foreign Key) dùng làm Primary Key Table Publishers để truy cập ghi ta muốn Để ý Table Titles có Primary Key ISBN 21.4 Relational Database Một database có nhiều tables hổ trợ liên hệ, one-to-many, gọi Relational Database Khi thiết kế database, ta tìm cách đặt liệu từ giới thật bên vào tables Ta định chọn cột (columns/fields) nào, chọn Primary Key, Index thiết lập mối liên hệ, tức đặt Foreign Key đâu 21.5 Các lợi ích Trong số lợi ích thiết kế Relational Database có: - Sửa đổi kiện, cho vào records hay delete (gạch bỏ) records có sẵn hiệu (nhanh) - Truy cập kiện, làm báo cáo (Reports) hiệu Vì kiện đặt thứ tự có quy củ nên ta tin cậy tính tình database Vì hầu hết kiện nằm database, thay 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 cấu trúc tables 195 Lập trình trực quan 21.6 Integrity Rules (các quy luật liêm chính) Integrity Rules dùng để nói qui luật cần phải tuân theo làm việc với database để đảm bảo database tốt Có hai loại quy luật: luật tổng quát (General Integrity Rules) luật riêng cho database (Database-Specific Integrity Rules) Các luật riêng thường tùy thuộc vào quy luật mậu dịch (Business Rules) 21.6.1 General Integrity Rules Có hai quy luật liêm liên hệ hồn tồn vào database: Entity (bản thể) Integrity Rule Referential (chỉ đến) Integrity Rule Entity Integrity Rule nói Primary Key khơng thể thiếu được, tức khơng thể có trị số NULL Quy luật xác nhận Primary Key đưa đến row độc đáo table, nên dĩ nhiên phải có trị số đàng hồng Lưu ý Primary Key Composite Key, tức tập hợp số keys (columns/fields), nên định khơng có key số columns NULL Referential Integrity Rule nói database khơng thể chứa Foreign Key mà khơng có Primary Key tương ứng table khác Điều hàm ý rằng: - Ta thêm Row vào Table với trị số Foreign Key Row khơng tìm thấy danh sách Primary Key table bên phía one (1) mà liên hệ - Nếu có thay đổi trị số Primary Key Row hay xóa Row table bên phía one (1) ta khơng thể để records table bên phía many (∞) chứa rows trở thành mồ cơi (orphans) Nói chung, có ba tùy chọn (options) ta chọn thay đổi trị số Primary Key Row hay xóa Row table bên phía one (1): - Disallow (khơng cho làm): Hồn tồn khơng cho phép chuyện xảy - Cascade (ảnh hưởng dây chuyền): Nếu trị số Primary Key bị thay đổi trị số Foreign Key tương ứng records table bên phía many (∞) thay đổi theo Nếu Row chứa Primary Key bị deleted records tương ứng table bên phía many (∞) bị deleted theo 196 Lập trình trực quan - Nullify (cho thành NULL): Nếu Row chứa Primary Key bị deleted trị số Foreign Key tương ứng records table bên phía many (∞) đổi thành NULL, để hàm ý đừng có tìm thêm chi tiết đâu 21.6.2 Database-Specific Integrity Rules Những quy luật liêm khác khơng phải Entity Integrity Rule hay Referential Integrity Rule gọi Database-Specific Integrity Rules Những quy luật dựa vào loại database tùy thuộc vào quy luật mậu dịch (Business Rules) ta dùng cho database, ví dụ ghi tiền lương cơng nhân phải có field Số Thuế (Tax Number) sở Thuế Vụ phát hành cho công dân Lưu ý quy luật quan trọng khơng quy luật tổng qt liêm Nếu ta không áp dụng DatabaseSpecific Integrity Rules nghiêm chỉnh database bị hư khơng cịn dùng 21.7 Microsoft Access Database Management System (MSAccess DBMS) Microsoft Access Database Management System gồm có Database Engine công cụ chung để cung cấp cho người sử dụng môi trường làm việc thân thiện với database, Database Design (thiết kế tables mối liên hệ), Data entry báo cáo (reports) Kèm theo với Visual Basic 6.0 ta mua copy Database Engine MSAccess Tên Jet Database Engine, lõi MSAccess DBMS Các chương trình VB6 truy cập database qua Jet Database Engine Nếu computer có cài sẵn MSAccess, dùng để thiết kế tables database hay cho data vào tables 21.8 Properties Required Allow Zero Length Khi thiết kế table field, lưu ý property Required property Allow Zero Length Text Nếu property Required field Yes ta khơng thể update (viết) ghi với field có trị số NULL Nếu Text field có property Allow Zero Length No thì ta khơng thể update ghi field chứa empty string 197 Lập trình trực quan Khi ta tạo ghi lần đầu, khơng cho trị số field, field có trị số NULL Thường thường, Visual Basic 6.0 khơng thích NULL value nên ta phải thử field với Function IsNULL() để đảm bảo khơng có trị số NULL trước làm việc với Nếu IsNULL trả trị số False ta làm việc với field Nhớ trị số NULL dùng expression, chương trình không cho Error, kết NULL 21.9 Làm việc với versions khác Nếu máy chạy MSAccess2002 làm việc với Access database file version 97, 2000 2002 Nếu cần phải convert từ version qua version khác, dùng Access DBMS Menu Command Tools | Database Utilities | Convert Database | To Access 2002 File Format Nếu muốn giữ nguyên version, convert database qua File Format 2002 để sửa đổi, sau convert trở lại File Format cũ Access database file lớn lên nhanh, records bị deleted nằm nguyên, nên tuần nên nhớ nén lại để bỏ hết records bị deleted cách dùng 198 Lập trình trực quan Access DBMS Menu Command Tools | Database Utilities | Compact and Repair Database hay dùng function DBEngine.CompactDatabase VB6 21.10 Dùng Query để viết SQL Một cách để truy cập database dùng ngôn ngữ Structured Query Language (SQL) theo chuẩn ISO/IEC phát hành năm 1992, gọi tắt SQL92 Tất database thông dụng hỗ trợ SQL, nhiều chúng cho thêm nhiều chức hay không nằm chuẩn Các lệnh SQL thông dụng SELECT, UPDATE, INSERT DELETE Ta dùng phương tiện thiết kế Query MSAccess để viết SQL Sau thiết kế Query cách drag drop fields, dùng Menu Command View | View SQL sau: Tiếp theo SQL statement Query bên mà copy để paste vào code VB6: 199 Lập trình trực quan 21.11 Dùng Link Table để làm việc trực tiếp với database loại khác Ta dùng database loại khác, DBase, trực tiếp VB6 dùng Access database bình thường Muốn thiết lập móc nối ấy, dùng Menu Command File | Get External Data | Link Tables chọn loại DBase file table mà muốn dùng để nhét vào Access database mở: 21.12 Database Server số khái niệm Dù Jet Database Engine relational database tốt hiệu năng, thuộc loại File Based database, tức thụ động, khơng chạy phải tùy thuộc vào chương trình dùng File Based database khơng thích hợp với ứng dụng có nhiều người dùng lúc 200 Lập trình trực quan Trong đó, Database Server SQLServer chạy riêng để phục vụ chương trình khách (client) cần Database Server thich hợp cho ứng dụng có nhiều người sử dụng có chịu trách nhiệm truy cập liệu cho clients Nó chứa nhiều routines địa phương, gọi Stored Procedures, để thực công tác client yêu cầu hiệu Database Server thường có cách đối phó hữu hiệu có cố phần cứng đĩa hư hay cúp điện Ngoài ra, Database Server có sẵn phương tiện an ninh backup Nó có thêm chức để dùng cho mạng Ngày ta thâu thập liệu nhiều hình thức Email, Word documents, Speadsheet Khơng thiết liệu luôn chứa dạng table records không thiết liệu luôn lưu trữ database đàng hoàng Dù vậy, chúng xem database mắt chương trình ứng dụng Do đó, ta dùng từ Data Store (kho liệu) thay cho database để nói đến nơi chứa liệu Và chương trình sử dụng liệu, ta nói đến Data Source (nguồn liệu) thay database Khi lập trình VB6 để truy cập database, ta nhìn database cách trừu tượng, tức dầu Access, DBase, SQLServer hay Oracle ta xem Nếu có thay đổi loại database bên dưới, cách lập trình ta khơng thay đổi Trong tương lai, XML file xem database nho nhỏ Nó đứng một table trích từ database huy XML chuẩn mà ta dùng để import/export liệu với tất loại database hỗ trợ XML Ta trao đổi liệu mạng Intenet dạng XML Ngồi ra, thay làm việc trực tiếp với database lớn, ta trích vài tables từ database thành XML file Kế ta lập trình với XML file kết thúc trộn (merge/reconcile) tập tin XML với database lớn Nếu phần lớn chương trình áp dụng thiết kế để làm việc cách này, tương lai ta không cần Database Server thật mạnh 201 ... VB6: 199 Lập trình trực quan 21. 11 Dùng Link Table để làm việc trực tiếp với database loại khác Ta dùng database loại khác, DBase, trực tiếp VB6 dùng Access database bình thường Muốn thiết lập móc... hết kiện nằm database, thay 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 cấu trúc tables 195 Lập trình trực quan 21. 6 Integrity Rules (các quy luật... thể update ghi field chứa empty string 197 Lập trình trực quan Khi ta tạo ghi lần đầu, khơng cho trị số field, field có trị số NULL Thường thường, Visual Basic 6.0 khơng thích NULL value nên ta

Ngày đăng: 24/07/2014, 16:21

Từ khóa liên quan

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

Tài liệu liên quan