3 4
Designing a database for a client—especially if the database is large or complex-is a whole different ball game from creating a simple database for yourself. Your development experience will go more smoothly—and your customers are more likely to get the databases they want—if you think about three important considerations up front:
The sections that follow provide more detail on each of these design techniques for large and complicated databases.
If you have a large database project that's not well defined, you can help clarify the client's expectations and test your preliminary database design by creating forms that let the users get a feel for how the database works, without actually writing the code and creating the tables that will ultimately be needed. To do this, create a set of unbound forms as an interface prototype and then demonstrate the prototype to the database users so that they can comment on the form design and functionality before you create the tables, queries, and bound forms. Creating a prototype is a good way to clarify exactly what data needs to be stored in what table and can save you a good deal of time in the long run.
See Chapter 5, "Creating Forms for Entering, Editing, and Viewing Data," for more details on creating forms.
It's easier to change table and field structure in Access than in some older databases. In Access, you can add or delete a field or change a field's data type if necessary. However, it's still preferable to get the table and field structure finalized as much as possible before you begin working on queries, forms, and reports, because changes to table structure generally require changes to queries, forms, and reports that are bound to the tables.
Here are some suggestions for user feedback you might want to gather using dummy forms:
Answering these questions will help you set up your tables and fields properly in the first place, minimizing time-consuming modifications later in the development process.
For a small database, especially a single-user database, an all-Access database is fine, but if you're developing a database intended for use by a small workgroup, you can use SQL Server 2000 Desktop Engine (the successor to Microsoft Data Engine [MSDE]) as a data storage back end, linked to a front-end Access project. For more information about Access projects, see Chapter 19, "Creating Access Projects." SQL Server 2000 Desktop Engine uses the same data engine as SQL Server, so a single Access project can be linked to either back end, but there are some differences between the two. Apart from some highly technical differences, these are the two main differences:
In general terms, SQL Server 2000 Desktop Engine has the basic data engine features of SQL Server 2000, but it lacks a user interface, management tools, analysis capabilities, merge replication support, client access licenses, developer libraries, and SQL Server Books Online. It also limits database size and user workload.
SQL Server 2000 Desktop Engine is an excellent choice if you think that at some point in the future your database will need to be moved to full SQL Server—you can develop the Access project with a SQL Server 2000 Desktop Engine back end and then upsize it to SQL Server when necessary, using the Upsizing Wizard. (See Appendix E, "Upsizing to SQL Server," for more information about using the Upsizing Wizard.)
Even if you don't need to convert your Access database to a project and give it a SQL Server 2000 Desktop Engine (or SQL Server) back end, you can still split the database into a front end (containing the interface objects) and a back end (containing only the data tables). If you're creating a database for a client, this is generally a good idea, because splitting a database into a front end and a back end makes it easier to swap in a modified interface, without disturbing data entered or modified by the client-all you have to do is send the client a new front-end database.
If tables, forms, reports, and other database objects are all in the same database and you send the client an updated database, their newly entered data will be lost. See Chapter 15, "Using Add-Ins to Expand Access Functionality," for more details on using the Database Splitter utility, which automates the process of splitting a database into a front end and a back end.
If you have Microsoft Office XP Developer, you can create a distributed version of your Access application, which can be run by users who don't have Access installed. (See Appendix B, "Distributing Access Applications," for more details on preparing a distributed application.) This isn't always the best option, however (and if you don't have the Developer edition of Office XP, it isn't an option at all). If your clients want to modify the database themselves, and all potential users have Access installed, it will save time to just prepare an Access database. Additionally, if you need to be able to make modifications to the database on line, this can be done only if the regular version of Access is installed at the client's location.
tip - Package your application using the Packaging Wizard