Trong các bài trước chúng ta đã xem qua về cấu trúc của Office 7.0, Word 7.0 và Excel 7.0 dành cho Windows 95. Trong phạm vi bài báo này chúng ta thử nghiên cứu về cấu trúc của Access 7.0. Cấu trúc MS Access bao gồm các phần sau: phần ứng dụng (Aplication layer), phần tập tin (File hay còn gọi như là Database container) và phần đối tượng (Database objects).
Phần ứng dụng lưu trữ các thành phần như menu, toolbar. Tại đây cũng lưu cơ chế xử lý dữ liệu của Microsoft được biết đến dưới tên gọi Microsoft Jet Database Engine (Jet Engine) và tất cả các phần bổ sung (Add-ins) viết bằng Visual Basic cho ứng dụng.
Phần tập tin chứa các đối tượng như table, query, form, report, macro và module. Phần đối tượng lưu chính bản thân các dữ liệu, các điều khiển OLE của người dùng, cũng như các thủ tục dùng để truy xuất dữ liệu.
Trong Access thành phần này được dùng để điều khiển giao diện người dùng, ngoài ra nó cũng cung cấp một môi trường làm việc cho Jet Engine, cơ chế xử lý dữ liệu nòng cốt của Access. Bên cạnh đó phần ứng dụng còn có bổn phận thực hiện các cuộc gọi đến những thư viện (library database), đó là các tập hợp những thủ tục và add-in được viết bằng Visual Basic chuyên cho một vài chức năng bổ sung nào đó.
Khi sử dụng Access theo nhóm, các cấu hình riêng cũng như những thông tin về bảo mật của người dùng được lưu trong một tập tin thông tin nhóm (workgroup information file). Dưới đây chúng ta sẽ tìm hiểu kỹ hơn về những phần nói trên.
Jet Database Engine cùng với Access hình thành một hệ thống quản lý cơ sở dữ liệu (CSDL) hoàn chỉnh. Microsoft Access là một thành phần của hệ thống này, chịu trách nhiệm về giao diện người dùng, cách người dùng xem, chỉnh sửa và xử lý các dữ liệu của mình thông qua các form, query, report, v.và. Jet Engine chịu trách nhiệm về truy xuất và lưu dữ liệu vào các CSDL của người dùng (user database) và của hệ thống (system database). Có thể nói Jet Engine là thành phần quản lý dữ liệu của tổng thể của cả hệ thống.
Đây là "điểm chứa" của giao diện người dùng, cũng như cho toàn bộ các mã của ứng dụng bao gồm các cấu hình ngầm định cho menus, toolbar, cho các đối tượng của CSDL, kể cả các thư viện đi theo với Access.
Các cấu hình ngầm định: Giao diện của Access có thể thay đổi thông qua mục Options trong menu tools. Một vài thông số được lưu trong các Registry của Windows 95 (hình 1), còn lại được lưu trong tập tin về thông tin nhóm của người dùng system.mdw.
Các thư viện: Những thư viện đi kèm với Access bao gồm các Wizard, Add-in cũng như tập tin system.mdw ngầm định
Jet Engine là một cơ chế xử lý có tính quan hệ điều khiển tất cả việc xử lý CSDL cho Access và cả cho Visual Basic. Với Acces, Jet Engine còn cung cấp các dữ liệu để kết nối với những ứng dụng khác, tức qua ODBC, Microsoft Open Database Connectivity. Jet Engine thực chất là một nhóm các thư viện kiên kết động *.DLL. Ta hãy cùng tìm hiểu về những thư viện này.
Thư viện MSJT3032.DLL là chương trình chính đảm nhận việc thực hiện các yêu cầu về dữ liệu. Khi gặp một yêu cầu về dữ liệu "chuẩn" được lưu dưới dạng thức .MDB (Microsoft Access Database), MSJT3032.DLL còn điều khiển cả quá trình đọc và ghi dữ liệu. Tuy nhiên khi gặp các dữ liệu "không chuẩn", như của Excel hay Foxpro, MSJT3032.DLL có bổn phận gọi ODBC32.DLL, thư viện điều khiển các kết nối với những CSDL không phải của Access hoặc gọi một trong các ISAM DLL ngoại trú. Chúng ta sẽ tìm hiểu sau về ISAM DLL, thư viện liên kết động với lối truy cập dữ liệu trực tiếp theo chỉ mục (DLL with Indexed Sequential Access Method).
Thư viện các đối tượng dùng cho việc truy cập dữ liệu (Data Access Ojects DLL) DAO32.DLL là một thành phần của Jet Engine. DAO tập hợp các công cụ giúp cho những nhà lập trình tiếp cận với Jet Engine, nhờ nó họ có thể tránh được các bước chi tiết của việc xử lý các quá trình đọc, ghi dữ liệu khi lập trình.
Jet Encine cung cấp một loạt các thư viện liên kết động (ISAM) có khả năng hiểu nhiều kiểu dữ liệu khác nhau. Những thư viện này có thể cài đặt riêng khi có nhu cầu. Bảng dưới cho thấy một số dạng thức được hổ trợ bởi ISAM:
Dạng thức ISAM | Hỗ trợ nhờ DLL |
Xbase (dBase và FoxPro) | Msxb3032.dll |
Paradox | Mspx3032.dll |
Lotus | Mslt3032.dll |
Microsoft Excel | Msxl3032.dll |
Text | Mstx3032.dll |
Chính các DLL này điều khiển mọi quá trình đọc, ghi những dữ liệu với dạng thức dBase, FoxPro, Paradox, Lotus, Microsoft Excel, hay dạng Text.
Thư viện là tập hợp các thủ tục mà Access dùng để thực hiện một số thao tác nhất định. Các thư viện chỉ chứa mã được viết bằng Visual Basic (cho ứng dụng) và được thực thi chỉ khi Access cần đến những thao tác đấy. Trong thư viện không chứa bất kỳ đối tượng nào của CSDL như table hay form. các thư viện này là những tập tin có phần mở rộng là .MDA. Trước khi sử dụng chúng ta phải chỉ đến chúng qua mục References trong menu Tools (khi ở trong cửa sổ Module). Nhờ những reference này, trong một CSDL hiện hành, chúng ta có thể gọi bằng mã (code) các thủ tục được viết trong các CSDL khác (hình 2).
Add-in là những chương trình được viết bằng Visual Basic dùng để bổ sung thêm một số chức năng đặc biệt cho Access. Các tập tin add-in, tương tự như library database, có phần mở rộng là .MDA. Chúng ta có thể thêm hoặc bớt các add-in bằng cách chọn Add-in Manager trong mục Add-ins trên menu Tools. Thông thường các add-in được dùng để tự động thực hiện các thao tác phức tạp hoặc có tính lặp lại. Trong Access có ba nhóm add-in, đó là wizard, builder và menu add-in. Hai nhóm đầu thay đổi tùy theo mục đích sử dụng (context specific) và được gọi trực tiếp trong ứng dụng khi người dùng muốn thực hiện một thao tác cụ thể nào đó, ví dụ như xây dựng một form, tạo bảng, hoặc tạo một query. Riêng menu add-in phải được gọi qua Add-in Manager trong menu Tools.
Wizard cho phép thực hiện nhiều thao tác nhanh và đơn giản, không cần nhiều kiến thức sâu về Access. Một wizard thông thường là một chuổi các hộp thoại hướng dẫn người dùng từng bước, từng bước thực hiện các yêu cầu hay thủ tục phức tạp. Hình thức hộp thoại của Wizard cho phép người dùng dễ dàng quyết định sự chọn lựa, và xác định được hướng tiếp theo để giải quyết vấn đề. Bên cạnh các wizard của Access chúng ta có thể tự viết các wizard theo ý riêng của mình. Access trực tiếp hổ trợ cho một số dạng wizard, ví dụ nếu Bạn viết một wizard để thực hiện thao tác tạo form, wizard của Bạn sẽ được hiện trên cùng một danh sách với các wizard của Microsoft Form Wizard. Acces 7.0 hổ trợ cho các dạng wizard sau:
Builder có thể hiểu nôm na như công cụ xây dựng dữ liệu. Builder đơn giản hơn wizard và thường được thể hiện dưới dạng một hộp thoại hay một bảng mẫu (form) đơn có chức năng dẫn dắt Bạn đi suốt quá trình thiết kế các biểu thức hay các thành phần dữ liệu đơn lẻ. Expression Builder là một ví dụ về loại Add-in này (hình 3).
Access 7.0 hổ trợ các dạng Builder sau:
Tương tự như Wizard, nếu bạn tạo Builder mới thuộc một trong các nhóm trên, tên của builder mới sẽ được thể hiện trên cùng một danh sách với các builder khác của Access.
Có thể nói menu add-ins là những ứng dụng nhỏ đi kèm theo Access để thực hiện một số các chức năng tổng thể, không có tính thay đổi theo ngữ cảnh như trường hợp của wizard và builder. Mỗi menu add-in thường thực hiện trên nhiều đối tượng hoặc trên chính bản thân Access. Access Documentor (hình 5) là một trong những ví dụ về menu add-ins (xem mục Analyze\Documentor trong menu Tools). Chúng ta có thể xem các menu add-in bằng cách chọn Add-ins trong menu Tools, gồm: Switchboard Manager, Add-ins Manager, Database Splitter, Linked Table Manager, Menu Builder (Hình 4).
Khi chúng ta sử dụng chức năng bảo mật nhóm hay cá thể trong Access, các thông tin về cá thể hoặc nhóm được lưu trong tập tin system.mdw, còn được gọi là workgroup information file, tập tin thông tin nhóm. Trong tập tin này còn chứa các thông số về tùy chọn của mỗi người dùng (như toolbar, option). Lưu ý tập tin system.mdw cần cho Access khi khởi động.
Những người dùng muốn làm việc chung trong nhóm để chia sẻ dữ liệu, cần sử dụng Workgroup Administrator, wrkgadm.exe, để xác định tập tin system.mdw nào trên mạng họ muốn dùng khi khởi động Access. System.mdw này cũng lưu các mật mã của mỗi người dùng khi đăng ký vào tài khoản. Trong trường hợp Bạn không thuộc một nhóm nào cả và do đó không xác định tập tin system.mdw nào, Access sẽ sử dụng system.mdw trên máy local với các cấu hình bảo mật ngầm định (xem trong registry Hkey_Local_Machine\Software\Microsoft\Access\7.0\Jet\3.0 \Engines\Jet, dòng giá trị cho SystemDB.
Trong Access dữ liệu được lưu trong các bảng của cùng một CSDL. Tuy nhiên chúng ta có thể thực hiện nối kết với nhiều nguồn dữ liệu ngoài như: dữ liệu từ bảng của một CSDL khác của Access, dữ liệu với các dạng thức khác (như Excel, Dbase, paradox, v.và) hay dữ liệu từ một nguồn ODBC như SQL Server. Những liêÔn kết này được lưu trong phần tập tin và chúng hoạt động như những bảng bình thường khác của CSDL.
Trong Access những dữ liệu nằm ngoài CSDL chính được truy cập thông qua các bảng dò tìm (lookup table) dưới sự chỉ đạo của các ISAM DLL (DLL with Indexed Sequential Access Method), là các thư viện liên kết động với lối truy cập dữ liệu trực tiếp theo chỉ mục. Với các thư viện có thể cài đặt được này (Instalable ISAM DLL), Access xử lý những dữ liệu "không Access" như những dữ liệu bình thường của nó. Duới đây là danh sách các loại dữ liệu Access có thể hổ trợ thông qua ISAM:
Ngoài ra Access còn có thể sử dụng dữ liệu từ các nguồn khác như:
Về chi tiết Access hổ trợ hai phương thức truy cập đến dữ liệu bên ngoài: liên kết đến bảng và mở bảng trực tiếp.
Phương pháp này thường được hay sử dụng nhất để truy cập đến dữ liệu bên ngoài. Bất kỳ thay đổi gì trong bảng đều ảnh hưởng ngay đến bảng được kết nối. Khi dùng các bảng liên kết Access tạo một biểu tượng trên cửa sổ CSDL, nhờ đó khi cần Bạn có thể truy xuất nhanh đến chúng. Ưu điểm của phương pháp liên kết bảng là dữ liệu luôn được cập nhật, các liên kết được duy trì không phụ thuộc dữ liệu lấy trực tiếp từ bảng hay yêu cầu. Nếu các bảng được chuyển qua SQL server, ứng dụng của Bạn vẫn có thể truy cập đến dữ liệu qua liên kết.
Khi làm việc với giao diện Access, Bạn không thể mở một bảng thuộc CSDL khác với CSDL hiện hành. Access chỉ cho phép mở bảng của một CSDL khác thông qua mã Visual Basic. Bằng cách này Bạn có thể truy cập đến dữ liệu bên ngoài, tuy nhiên thường người ta chỉ áp dụng phương pháp này cho những dữ liệu mà chỉ thỉnh thoảng mới cần đến. Hạn chế của phương pháp này là sự phụ thuộc ứng dụng của Bạn vào dữ liệu nguồn. Trong trường hợp bảng được chuyển qua SQL server, dữ liệu không còn là dữ liệu có thể truy cập trực tiếp theo chỉ mục nữa, và do đó ứng dụng sẽ gặp lỗi khi cố gắng mở bảng trực tiếp.
Access cho phép truy cập dữ liệu từ các nguồn hổ trợ ODBC. Chuẩn kết nối theo phương pháp mở ODBC thường được sử dụng khi kết nối với các hệ quản lý CSDL kiểu khách/chủ (client/server). Access 7.0 có sẵn các driver này cho SQL Server. Ngoài ra chuẩn ODBC còn cho phép kết nối đến các CSDL dạng non- server và đến các bảng tính (worksheet). Thêm vào đó, trong ứng dụng Access, Bạn còn có thể sử dụng các yêu cầu dạng SQL Pass-through (SPT) để truy xuất dữ liệu. Những yêu cầu này cho phép làm việc trực tiếp với bảng trên máy chủ mà không cần sử dụng đến các liên kết, hoặc chạy các thủ tục được lưu trên máy chủ. Điểm bất tiện của ứng dụng dùng SPT là tính không cơ động, ví dụ ứng dụng viết cho SQL server sẽ không chạy được khi cố kết nối vào server của Oracle. Nếu muốn tạo các yêu cầu SPT, Bạn chọn mục SQL Specific trên menu Query, sau đó chọn Pass-Through.
ứng dụng viết bằng Access có thể được lưu rời với các dữ liệu. Một ví dụ điển hình là hai CSDL Orders.mdb và Nwind.mdb có sẵn trong Access (nếu khi cài đặt Bạn có chọn cài phần Sample). Các form, query, report được lưu trong Orders.mdb, còn các bảng chứa dữ liệu cụ thể được lưu trong Nwind.mdb.
Đây là một phương pháp hay dùng khi phát triển các ứng dụng bằng Access, nó cho phép dễ dàng quản lý cả ứng dụng lẫn dữ liệu khi cần nâng cấp lên phiên bản mới, hoặc cho phép các người dùng với các phiên bản khác nhau của Access sử dụng chung dữ liệu.
Các đối tượng của CSDL (table, form, query, report, macro và module) được lưu trong phần tập tin, đây cũng chính là tập tin với phần mở rộng .mdb. Dưới đây chúng ta thử tìm hiểu thêm về những đối tượng này.
Bảng chính là chổ lưu trữ các dữ liệu của CSDL. Chúng ta có thể tạo riêng từng bảng cho từng chuyên mục cầạn lưu dữ liệu. Ví dụ bảng Company để lưu thông tin về các công ty, bảng Product để lưu thông tin về các sản phẩm, v.và. Dữ liệu của bảng có thể thay đổi theo hai cách: trực tiếp ngay trong bảng, thông qua biểu mẫu.
Thông thường chúng ta lấy dữ liệu từ CSDL theo các yêu cầu khác nhau, ở đây yêu cầu hiểu theo nghĩa đúng của nó. Còn trong Access Yêu cầu hay Query là một khái niệm. Những query này được Jet Engine xử lý. Dạng đơn giản nhất của query là Select Query, yêu cầu kiểu lựa chọn. Chúng ta tự xác định các tiêu chuẩn cần thiết và Access lựa ra cho chúng ta những dữ liệu đáp ứng các điều kiện này (hình 6). Các dữ liệu này được gọi là dữ liệạu động (dynaset) được thể hiện dưới dạng bảng. Như vậy, ở đây cần phân biệt hai loại "bảng": một là bảng Table chứa dữ liệu thật sự của CSDL và bảng Datasheet, chỉ là kiểu thể hiện động (dynamic view) của dữ liệu kết quả từ một query.
Khi Bạn mở một query dưới dạng datasheet view, một form hay một report trên nền query, Access sẽ tạo một tập hợp dữ liệu động dựa trên thông tin lưu trong CSDL, nhờ đó Bạn có thể thay đổi, thêm bớt chúng. Những thay đổi này sẽ có tác dụng với các bảng tương ứng.
Form là hình thức thường dùng nhất để nhập, trình bày và in ấn dữ liệu trong Access. Form có thể chứa số liệu, văn bản, hình ảnh, màu sắc, các điều khiển OLE, v.và (hình 7). Cách thể hiện của form được điều khiển bởi các form template, biểu mẫu khuôn.
Nếu Bạn quen với các điều khiển OLE của Visual Basic (VBX) thì sẽ dễ dàng nhận ra những điều khiển này trong Access, chúng có tên là OCX. Những OCX này được dùng để thêm các tính năng phụ vào form và được lưu thẳng trong form (hình . Access 7.0 có các điều khiển OLE đi kèm như sau: Calendar (msacal70.ocx) , Spin Box (spin32.ocx), Data Outline (msdbout.ocx), v.và . Để sử dụng các điều khiển OLE hãy chọn trên menu Insert\Custom Control điều khiển OLE Bạn cần, Access sẽ chèn điều khiển vào form. Trong trường hợp điều khiển chưa được khai báo Bạn hãy khai báo chúng bằng cách chọn Tools\ Custom Control, chọn tên của điều khiển và nhấn vào nút Register.
Báo cáo là hình thức trình bày dữ liệu theo ý muốn của người dùng trước khi in ra. Dữ liệu được lấy từ bảng hoặc các yêu cầu. Thông thường Bạn hay sử dụng yêu cầu để tổng hợp dữ liệu từ nhiều bảng khác nhau, để cho ra những báo cáo có tính thuyết phục. Cách định dạng và tổ chức của một báo cáo được các Report template điều khiển.
Macro là tập hợp những lệnh thường được dùng khi cần tự động hóa một hay nhiều thao tác liên tiếp. Trong Access Bạn có thể dùng macro để thực hiện thao tác trên form, query, report, trên các điều khiển.
Module trong Access là một tập hợp các khai báo (declaration), các câu lệnh (statement) hay các thủ tục (procedure). Bạn có thể lưu nhiều thủ tục liên quan trong cùng một module. CSDL của Acces có các dạng module như global, form và report (hình 9):
Global module mang tính toàn cục, có thể sử dụng mọi nơi trong CSDL. Những global module được nạp khi Bạn khởi động Access.
Form module liên kết với form cụ thể và được nạp mỗi khi Bạn mở form.
Tương tự form module, report module liên kết với report cụ thể và được nạp mỗi khi Bạn mở report.
Khi Bạn tạo một form hay report mà không dùng đến form, report wizard, Access sử dụng một template để thiết đặt các giá trị ngầm định ban đầu của form, report (kích thước, vị trí các thành phần, v.và). Template này có tên là Normal template. Bên cạnh đó Bạn cũng có thể sử dụng bất kỳ form hay report có sẵn nào như một template. Trong mục Options chúng ta có thể chọn template để dùng khi tạo form hay report, những thông số của template sẽ được lưu trong tập tin system.mdw và nó sẽ có tác dụng với bất kỳ CSDL nào mà Bạn mở hoặc tạo mới. Template có thể sao chép hoặc xuất (export) sang các CSDL khác.
Tóm lại form và report template xác định các chi tiết sau:
Các thành phần của Access được lưu cùng với phần ứng dụng, với add-in hoặc trong registry của Windows 95. Bảng dưới cho thấy các thành phần và vị trí của chúng:
Thành phần | Vị trí lưu |
Bảng (Table) | Trên đĩa trong tập tin CSDL (*.mdb) |
Yêu cầu (Query) | Trên đĩa trong tập tin CSDL (*.mdb) |
Biểu mẫu (Form) | Trên đĩa trong tập tin CSDL (*.mdb) |
Báo cáo (Report) | Trên đĩa trong tập tin CSDL (*.mdb) |
Macro | Trên đĩa trong tập tin CSDL (*.mdb) |
Module | Trên đĩa trong tập tin CSDL (*.mdb) |
Các điều khiển OLE | Trong các form hoặc report sử dụng những điều khiển này |
Mật mã của người dùng (User password) | Trong tập tin system.mdw |
Thông tin về quyền truy xuất đến dữ liệu của người dùng có bảo mật (Permissions for security accounts) | Trên đĩa trong tập tin CSDL (*.mdb) |
Cấu hình của toolbar | Trong tập tin system.mdw |
Cấu hình của menu | Trong tập tin system.mdw |
Các tùy chọn của người dùng trong mục Options trên menuTools<< | Trong registry của Windows 95 |
Cấu hình cho AutoCorrect | Trong registry của Windows 95 |
Tự điển người dùng | Trong tập tin Custom.dic |
Các kiểu định dạng tự động của AutoFormat | Trong AutoFormat Wizard |
Công cụ xây dựng biểu thức (Expression Builder) | Trong tập tin Utility.mda |
Công cụ AutoDialer | Trong tập tin Utility.mda |
Normal template cho form và report | Trong tập tin Utility.mda |
Công cụ Zoom Box | Trong tập tin Utility.mda |
Công cụ Save Output As | Trong tập tin Utility.mda |
Các cấu hình bảo mật được lưu ở nhiều nơi khác nhau tùy thuộc người dùng thiết lập cho CSDL của mình những chế độ bảo mật nào. Access cho phép sử dụng hai chế độ sau: bảo mật bằng mật mã, bảo mật bằng cách cấp quyền truy cập theo nhiều mức độ khác nhau.
Bảo mật bằng mật mã (Password Security) Phương pháp này cho phép truy cập hoàn toàn đến CSDL nếu Bạn biết mật mã của nó. Để thết lập mật mã Bạn vào menu Tools chọn mục Security. Mật mã này được lưu trong tập tin CSDL *.mdb
Cấp quyền truy cập theo mức độ (User-level Security) Phương pháp này cho phép Bạn dễ dàng thiết lập mức độ truy cập đến các đối tượng khác nhau của CSDL cho nhiều người dùng khác nhau. Những thông tin như tài khoản người dùng, mật mã kiểm tra, tên nhóm được lưu trong tập tin system.mdw. Nếu người dùng tách khỏi nhóm, thông tin về họ trong system.mdw sẽ bị xóa đi và do đó sẽ không còn quyền truy cập đến CSDL.
Các quyền thật sự trên những đối tượng khác nhau (form, table, query, v.và) được lưu trong bản thân CSDL. Chúng được liên kết đến từng đối tượng theo quy định của người quản lý CSDL (database security administrator). Bạn có thể gán quyền cho từng người dùng riêng biệt hoặc cho nhóm (hình 10).
Trong Access 7.0, Microsoft cung cấp cho những nhà quản lý CSDL một công cụ rất hữu ích: database replication, có thể hiểu như công cụ tạo bản sao CSDL cho những mạng làm việc theo mô hình phân tán. Với công cụ này, người quản lý có thể tạo những bản sao của CSDL hiện hành, cho phép nhiều người dùng cùng một lúc làm việc với CSDL. Trên thực tế mỗi người làm việc với bản sao CSDL (replica) của mình, các replica này có thể nằm trên các máy khác nhau, trong những văn phòng khác nhau và thậm chí tại những nước khác nhau mà vẫn duy trì được sự đồng bộ trong dữ liệu. Việc đồng bộ dữ liệu giữa các replica có thể thực hiện theo lịch sắp xếp của người dùng theo lệnh qua mạng hoặc modem.
Xét theo một góc độ lý tuởng, các người dùng trong một công ty đều muốn có khả năng truy xuất đến một CSDL trung tâm, ai cũng muốn sử dụng những dữ liệu mới nhất, hoàn thiện nhất trên đó. Tất cả người dùng khi đó có nhu cầu kết nối với máy chủ 24 tiếng mỗi ngày, 7 ngày mỗi tuần. Và công ty khi ấy cần có một hệ thống mạng hoàn chỉnh với đầy đủ chức năng bảo vệ và tự khắc phục mọi sự cố không những cho trung tâm mà còn phải cho tất cả các chi nhánh của nó. Thế nhưng đâu phải lúc nào chúng ta cũng có điều kiện tạo nên những điều "lý tuởng", trên thực tế nhân viên trong công ty có thể công tác ở xa nhiều hơn tại văn phòng, hệ thống mạng có thể không cho phép cùng lúc kết nối toàn bộ các chi nhánh, hay không đủ khả năng làm việc ở mức độ "căng thẳng" như vậy, CSDL trung tâm có thể hư hỏng, máy chủ có thể gặp trục trặc vì virus, hoặc vì khả năng tài chính không đủ để trang bị một "siêu hệ thống" như ý muốn nói trên, v.v. Để góp phần đạt được sự đồng bộ hóa dữ liệu cho một thực tế dữ liệu "trung tâm hóa" và người dùng "phân tán", Microsoft Jet Engine cung cấp cho chúng ta những công cụ với ít nhất 6 ưu điểm như sau:
Có tất cả bốn công cụ giúp Bạn thực hiện việc đồng bộ hóa dữ liệu.
Briefcase replication Windows 95 cho phép sử dụng chức năng đồng bộ hóa dữ liệu khi người dùng kéo và thả các tập tin vào biểu tượng Briefcase trên desktop. Khi tập tin là một CSDL của Access nó sẽ được chuyển sang dạng replica, tức bản sao của CSDL, còn bản gốc được gọi với tên là Design Master thì vẫn còn nguyên ở chổ cũ. Người dùng có thể mang bản sao này trên Laptop đi khắp nơi tùy theo nhu cầu công việc, rồi sau đó họ sẽ đồng bộ hóa những thay đổi trong bản sao này với bản gốc. Ngược lại những thay đổi về dữ liệu trên bản gốc trong thời gian họ đi vắng cũng sẽ được cập nhật đồng thời khi họ vào briefcase.
Như vậy những người dùng khác cũng có khả năng đồng bộ hóa dữ liệu thông qua briefcase. Quá trình đồng bộ hóa dữ liệu có thể tiến hành theo nhiều hướng: từ bản sao lên bản gốc (nếu Bạn được cấp quyền), từ bản gốc lên bản sao hoặc từ cả hai phía (hình 11). CSDL sau khi chuyển sang dạng replica thường có kích thước lớn hơn so với dạng thường vì Access đưa thêm vào các đối tượng những trường bổ sung để phân biệt đối tượng nào trong CSDL là replicated hay local, v.v.
Đồng bộ hóa dữ liệu trong Access for Windows 95. Để đồng bộ dữ liệu trong Aceess 7.0 Bạn có thể chọn trực tiếp mục Replication trên menu Tools. Lần đầu tiên Bạn cần tạo bản sao với "Create Replicaà", sau đó có thể cập nhật dữ liệu với các bản sao khác trong Replica Set với "Synchronize Nowà", giải quyết các xung đột nếu có giữa các bản sao với "Resolve Conflictsà", hoặc tạo Design Master mới từ một replica với "Recover Design Master". Ơở đây chúng ta cần phân biệt sự khác nhau giữa từ "bản sao", "bản copy" thông thường (tức khi Bạn làm một bản lưu dự phòng với thao tác copy hay backup bình thường trên đĩa) với từ "bản sao", "replica" của Access với khả năng đồng bộ hóa dữ liệu giữa chúng. Access for Windows 95 còn hổ trợ việc đồng bộ hóa dữ liệu khi chạy trên nền Windows NT 3.51.
Replication Manager. Trong trường hợp cần quản lý số lượng lớn các replica, hổ trợ cho người dùng laptop tức những người không phải luôn luôn nối với máy chủ, tạo replica từ nhiều CSDL khác nhau, thiết lập thời gian biểu cho việc đồng bộ hóa dữ liệu, để theo dõi và can thiệp kịp thời khi có sự cố, Bạn có thể dùng công cụ Replication Manager trong Access Developer Toolkit. Công cụ này cho phép chuyển đổi CSDL thành Design Master, tạo các replica mới, theo dõi quan hệ giữa các replica (hình 12), thiết lập thuộc tính hoặc thời gian đồng bộ dữ liệu giữa replica với Design Master (hình 13), v.v...
Đồng bộ dữ liệu qua lập trình DAO. Hầu hết chức năng đồng bộ dữ liệu qua briefcase đều có thể sử dụng thông qua lập trình DAO - data access object. Nếu các nhà cung cấp phần mềm thiết kế các chương trình quản lý CSDL cho Bạn có đi kèm công cụ đồng bộ dữ liệu, hẳn họ đã sử dụng chức năng lập trình thông qua DAO để bổ sung những tính năng này vào ứng dụng của họ. Bạn có thể tìm hiểu thêm về DAO qua các tài liệu về xây dựng ứng dụng với Access for Windows 95.
Để sử dụng có hiệu quả việc đồng bộ hóa dữ liệu của một CSDL Bạn cần am hiểu về kiến trúc cũng như cách hoạt động của mỗi thành phần trong quá trình đồng bộ. Cơ chế đồng bộ trong Jet Engine bao gồm bốn thành phần chính như sau:
Có hai dạng xung đột trong việc đồng bộ hóa CSDL: các xung đột phát sinh khi các replica trong CSDL được bắt đầu đồng bộ gọi là xung đột đồng bộ (replication conflict), xung đột phát sinh khi nhiều người dùng đồng thời muốn thay đổi sửa chửa cùng một record trong CSDL được gọi là xung đột chế độ bảo vệ (locking conflict). Ta hãy cùng xem xét các trường hợp này.
Trong quá trình thiết lập replica, ví dụ khi Bạn kéo CSDL có sẵn và thả vào Windows 95 briefcase, Jet Engine sẽ yêu cầu một hệ thống chỉ mục thống nhất toàn cục từ phía hệ điều hành (Globally Unique ID, GUID) liên kết với từng dòng dữ liệu trong Design Master (hình 14). Các chỉ mục GUID này sẽ được chép cho từng replica trong CSDL. Nếu có sự thay đổi về dữ liệu trong Design Master hoặc trong một replica nào đó thì chỉ mục sẽ nhảy thêm một giá trị, và khi ấy Access dễ dàng kiểm tra dòng nào có sự thay đổi bằng cách so sánh giá trị chỉ mục của mỗi dòng, xác định nội dung thay đổi và sau đó cập nhật cho các replica còn lại.
Nếu cùng lúc trong hai replica có sự thay đổi trên cùng một dòng thì Access sẽ chọn dựa trên nguyên tắc sau:
Chọn replica có giá trị chỉ mục dòng bị thay đổi cao hơn. Bởi vì mỗi khi dòng có sự thay đổi chỉ mục của nó sẽ nhảy như đã nêu ở trên.
Nếu hai dòng có cũng giá trị chỉ mục Access sẽ chọn ngẫu nhiên, bởi vì theo logic đồng bộ Access không thể xác định dữ liệu trong dòng nào sẽ là dữ liệu đúng. Trong trường hợp này người dùng có dữ liệu bị "từ chối" sẽ được Access thông báo thông qua Conflict Wizard, và họ có phương án chọn lựa: chấp nhận thay đổi hay không chấp nhận.
Một khi thuộc tính record được đặt là không bảo vệ hay không khóa (No Locks) sẽ có khả năng xảy ra xung đột khi nhiều người dùng cùng chỉnh sửa và lưu một record. Trong trường hợp này có thể khắc phục bằng cách thiết lập các chế độ khóa record khác nhau như khóa toàn bộ các record, khóa các record đang được hiệu chỉnh trong mục Options trên menu Tools, chọn tab Advanced (hình 15). Chế độ No Locks cho phép nhiều người cùng chỉnh sửa một record, nhưng record sẽ bị khóa ngay tại thời điểm nó chuẩn bị được lưu, do đó dẫn đến thông báo xung đột.
Khi hai người cùng lưu record, Access sẽ gởi một thông báo cho người thứ hai (tức người bị trễ hơn). Người này có thể loại bỏ những thay đổi của họ trên record, copy nó vào clipboard hay chấp nhận thay đổi từ phía người đầu tiên. Bằng cách này họ có thể sau đó ghi đè những thay đổi của mình lên những thay đổi của người khác.
Bên cạnh những điều đã nêu ở trên có thể nhận thấy một điểm như sau: hầu hết những hệ dùng để thiết kế các ứng dụng quản lý CSDL, bao gồm cả dBASE và Paradox, đều lưu những thành phần của CSDL như bảng, báo cáo hoặc biểu mẫu dưới dạng những tập tin riêng biệt. Một ứng dụng hoàn chỉnh có thể chứa đến hàng trăm tập tin lẻ như vậy. Trong Access thì trái lại, tất cả các tập hợp của bảng, biểu mẫu, báo cáo, macro hay các module đều được lưu trong cùng một tập tin .MDB. Và chúng ta có thể đặt cho chúng những tên dài, dễ hiểu như Sale Report For Current Month hay Productõs Inventory Report mà không sợ bị hạn chế bởi giới hạn tên 8.3 của DOS. Tuy vậy Bạn vẫn có thể làm việc với các đối tượng được lưu trữ trong các CSDL khác nhau, ví dụ như Bạn có thể lưu bảng trong một CSDL và các biểu mẫu hay báo cáo trong một CSDL khác.