| Applies to |
| Microsoft Office Access 2003 |
Whether you're an experienced recruiter or a novice about to start your first recruiting assignment, this article will help you design a solution to effectively track open positions, résumés, and candidates. The solution described in this article is to design and create an Access database with forms and reports that simplify the organizing and tracking of data.
If you're not familiar with Access, you're probably wondering how it can help you do your job better. Here are three major needs you may have that Access can help with:
- You deal with large amounts of data You need to track job openings, résumés, and candidates; for each of these entities, you need to store lots of details. For example, for each job opening you need to store details such as location, designation, department, hiring manager, description, required skills, and so on. Storing the data as a simple list of columns and rows in a spreadsheet would make it tedious to view, update, and filter the information.
- You want to query your data for specific information For example, you want to see open positions that haven't been filled in over three months. Or, you want to see all the positions for which a particular candidate has submitted his or her résumé.

Using Access, you can build great queries with little effort. Once built, you can run a query with a single mouse click, and get the information you want in just a few seconds.
- You want to print reports You want to send details of positions filled in the last three months to your supervisor. Or, you want to send details of résumés received for each job opening to the corresponding hiring managers. Use Access if you don't want to build these reports manually each time you need them; instead, you can design reports, specify the layout and printing details, and print them as often as you or anyone else wants.
If you're not familiar with designing or creating databases, you should learn a little about how to do this efficiently so that you can avoid duplication of data. This is known as "normalizing." Normalizing data is necessary for creating a usable and reliable database, much in the same way that creating a blueprint is vital for the construction of a building. The objective behind normalizing data is to identify what data to store and the best way to store it, so that you and your users can get the information you want quickly and efficiently.
To learn the basics of normalization, or for a quick refresher, see the article Database Normalization Basics, on the Microsoft Product Support Web site. It is strongly recommended that you read it thoroughly to familiarize yourself with the concept of normalization before you continue.
Let's get started with designing our solution.
Step 1: Identify users
The first step in designing a database solution is to identify its users. List all the people who use your organization's current set of tools and those who could benefit from a more efficient solution.

In this article, let's assume this database is meant for recruiters such as you, hiring managers who have open positions on their teams, and employees looking to move to a different job within the organization.
Note Let's leave out external candidates and interviewers to keep this design task simple. After designing and creating this database, you could extend it to include external candidates, interviewers, the personnel department, and so on.
Step 2: Identify user needs
The next step is to identify what information your users need, when and how often they need it, and in what format it should appear. It will help to look first at how these users currently meet their needs, and to find out what is not working well. For example, the hiring managers don't want to wait until Friday to see the new résumés. So, one of the requirements of the new solution is for hiring managers to be able to print résumés received for job openings in their group on a daily basis.
Tip A good way to make sure you identify all user needs, and the right format for each, is to create sample forms and reports and to discuss and test them with potential users. You use a form to enter data, and a report to view data. Discuss the sample data, the amount of detail, the way the data is laid out, the frequency of use, and the delivery techniques. These mockups will later help you design your forms and reports when you are creating the database.
Here are some sample needs for each database user category:
| User category |
Sample needs |
| Hiring managers |
Detailed résumés, including candidates' prior work experience and educational background
Reports comparing candidates who have applied for a specific position
|
| Candidates |
Detailed information about job openings Searches for jobs that match needs and skills
|
| Recruiters |
Lists of recently posted open positions Detailed résumés
Searches for candidates who meet the requirements of a specific job opening
|
Step 3: Identify the data that you need to store or retrieve
If you created sample reports and forms, list the data items in each, and then apply the first three rules of normalization (known as first normal form, second normal form, and third normal form) to arrive at data structures that avoid redundancy and inconsistency.
For example, here's what the résumé data looks like before it is normalized, and then how it looks after you apply the first, second, and third normal forms:
Résumé data before normalizing
A sample résumé contains the following items:
Note Some groups, such as the Skill matrix and Internal job history, could have multiple entries. For example, a candidate could have multiple skills, a level for each skill, and so on, or may have had different job titles or managers.
- Objective
- Job applied for
- Employee ID
- First name
- Last name
- Hire date
- Contact e-mail address
- E-mail type
- Contact phone number
- Phone number type
- Home page URL
- Contact address
- City
- State/Province
- Postal code
- Country/region
- Preferred title
- Preferred category
- Preferred product
- Travel days per month
- Relocation preference
- Preferred location
- Availability date
- Skill matrix (multiple entries)
- Skill
- Skill level
- Last used
- Years of experience
- Current position
- Manager's employee ID
- Title
- Category
- Product
- Level
- Location
- Internal job history (multiple entries)
- Manager's employee ID
- Title
- Category
- Product
- Start date
- End date
- Responsibilities
- Prior job experience (multiple entries)
- Previous employer
- Title
- Start date
- End date
- Responsibilities
- Reasons for leaving
- Education details (multiple entries)
- School/Institution
- Degree/Certification
- Major
- Minor
- Date of completion
- Notes
Résumé data in first normal form (after separating repeating groups and adding a primary key)
After removing repeating entries, such as the details in the Skill matrix section, the previous list can be split into the following groups: Résumé, Skill matrix, Internal job history, Prior job experience, and Education details.
Résumé
Skill matrix
- Employee ID (primary key)
- Skill
- Skill level
- Last used
- Years of experience
Internal job history
- Employee ID (primary key)
- Manager's employee ID
- Title
- Category
- Product
- Start rate
- End rate
- Responsibilities
Prior job experience
- Employee ID (primary key)
- Previous employer
- Title
- Start date
- End date
- Responsibilities
- Reasons for leaving
Education details
- Employee ID (primary key)
- School/Institution
- Degree/Certification
- Major
- Minor
- Date of completion
Résumé data in second normal form (after eliminating items that apply to multiple records and adding foreign keys)
Employee's name, hire date, contact information, current job details, preferences, and availability date could apply to multiple résumés, so move them to a separate list (Candidate).
Résumé
Candidate
- Candidate ID
- Employee ID (foreign key)
- First name
- Last name
- Hire date
- Contact e-mail address
- E-mail type
- Contact phone number
- Phone number type
- Home page URL
- Contact address
- City
- State/Province
- Postal code
- Country/region
- Preferred title
- Preferred category
- Preferred product
- Travel days per month
- Relocation preference
- Preferred location
- Availability date
- Manager's employee ID
- Title
- Category
- Product
- Level
- Location
The Skill matrix, Internal job history, Prior job experience, and Education details groups, as listed previously, are already in second normal form, so they need not undergo any changes.
Résumé in third normal form (after eliminating items that do not depend on the primary key)
In the Candidate group, there are a few items that depend on Employee ID, and not on Candidate ID, so move the items that depend on Employee ID to a separate list (Employee).
Candidate
- Candidate ID
- Employee ID
- Contact e-mail address
- E-mail type
- Contact phone number
- Phone number type
- Home page URL
- Contact address
- City
- State/Province
- Postal code
- Country/region
- Preferred title
- Preferred category
- Preferred product
- Travel days per month
- Relocation preference
- Preferred location
- Availability date
Employee
- Employee ID
- First name
- Last name
- Hire date
- Manager's employee ID
- Title
- Category
- Product
- Level
- Location
All the other structures are already in third normal form, so they need not undergo any changes.
Step 4: Identify the data that is already available
After optimizing the data structures, see if one or more groups (or tables) already exist in another data source, such as a database owned by another team in the organization. For example, an employee's job history and current position details might be in a database owned by the personnel department. Find out if you can simply share or link to their data to eliminate redundancy within your organization, and reduce work for yourself!
Step 5: Identify the relationships between the tables, so that you can generate reports, queries, and other information.
When you create the database, the complete résumé and candidate details that a hiring manager is interested in will come from more than one table — objective and job applied for from the Résumé table, candidate's contact information and preferences from the Candidate table, skills and education details from the Skill matrix and Education details tables, and so on. Before generating a list of résumés for a hiring manager, these tables must be joined in a meaningful way so that all relevant information about a specific candidate (or employee) can be brought together. Identify tables that must be related, and the fields that you will use to establish the relationship. For example, Résumé and Candidate tables can be related using the common field Candidates ID. The Candidate and Skill matrix tables can be related using the common field Employee ID.
Step 6: Finalize the design of your forms, reports, and queries
If you have sample forms and reports, use them to finalize the forms and reports that you need to create in the database. Choose the layout of the data fields, identify the underlying tables, pick a theme, and so on. For example, the data that a candidate enters in the Résumé form will be stored in the Résumé and Candidate tables. The data in the report on the number of positions filled during the past week will come from the Jobs table. Make sure you design all the forms that users will need to input data, the printed reports, and the queries.
You are now ready to create a database, and add the tables, queries, forms, and reports to it. For more information on how to create a database, search Access Help.
If you want more information on designing Access databases, see the article Where to find information about designing a database in Access, on the Microsoft Product Support site.