How to Create a Client Database with Multiple Services in Microsoft Access
Question details
The user wants to design a relational database that links clients to multiple service codes, including specific allowed hours and personal details.

- Product
- Microsoft Access
- Device & OS
- not provided
- Scenario
- Designing a new relational database to manage client profiles and the multiple distinct services they receive.
- Observed behavior
- Needs to establish a functional many-to-many relationship between clients and services, ensuring data like 'Hours Allowed' is accurately tracked per client-service pair.
Map out the specific fields you need for your clients and services on a piece of paper or a simple spreadsheet before creating the tables in Access.
Create Core Tables and a Junction Table
Set up three separate tables to establish a many-to-many relationship between your clients and the services provided.
In relational databases like Microsoft Access, you cannot directly link multiple clients to multiple services within a single table without causing severe data duplication. The correct approach is to use a third table, known as a junction table, to bridge the two main tables.
Go to the 'Create' tab and click 'Table Design'. Create fields for client information such as ClientID (set as AutoNumber and Primary Key), Client Name, Date of Birth, Social Security Number, and Address. Save the table as 'Clients'.
Create another table in Design View. Add fields for ServiceID (AutoNumber and Primary Key), Service Code, and Service Description. Save this table as 'Services'.
Create a third table. Add a ClientID field (Number type) and a ServiceID field (Number type). These will act as foreign keys. Add an additional field for 'HoursAllowed' (Number type). You can set both ClientID and ServiceID together as a composite Primary Key. Save the table as 'ClientServices'.

Define Table Relationships
Link the primary keys of the Clients and Services tables to the foreign keys in your junction table.
Build Forms to Display Associated Data
Create user-friendly forms to view a client and their assigned services on the same screen.
Manage Your Data Easily with WPS Office
While Microsoft Access is built for complex relational databases, WPS Office offers a free, lightweight, and highly compatible alternative for everyday data management. Use WPS Spreadsheet to easily track client lists, service logs, and schedules in a flat table format with a familiar interface.
- 1. Download WPS Office: Visit the official WPS website to download the free installation package for your operating system.
- 2. Open WPS Spreadsheet: Launch the application and select a blank workbook to start building your client tracking sheet.
- 3. Organize Your Data: Set up columns for Client Name, Service Code, and Allowed Hours to track your records easily using filters and pivot tables.

Frequently Asked Questions
What is a junction table in Microsoft Access?
A junction table is a database table that bridges two other tables together to create a many-to-many relationship. It holds the primary keys from both tables as foreign keys, allowing a single client to have multiple services, and a single service to be linked to multiple clients.
Why should I use an AutoNumber for primary keys?
An AutoNumber automatically generates a unique sequential identifier for every new record. This ensures that no two records share the same Primary Key, eliminating data conflicts and making it reliable for linking tables.
How can I easily enter data into a junction table?
The most efficient way to enter data into a junction table is by creating a main Form based on your Clients table, and inserting a Subform based on your ClientServices junction table. By changing the ServiceID field in the Subform to a Combo Box, you can select services from a dropdown menu for that specific client.
What is referential integrity and why enable it?
Referential integrity is a database rule that ensures relationships between records remain valid. By enforcing it, Access prevents you from accidentally deleting a client or a service if there are still matching records tied to them in the junction table.




