Designing a Database for an Online Job Portal

Across the globe, the job portal site is a well-known feature of the Internet landscape. Big players like Indeed and Monster have turned job hunting and recruiting into a veritable online industry. Let’s dive into the elementary features leveraged by job portals and build a data model that can support them.

People love saving time by using technological innovations; the online job portal is another version of working smarter, not harder. Job seekers and companies alike realize the value in taking their search online: they get a better reach at higher speeds and lower costs.

The job portal industry is quite stabilized now, at least in respect to traffic volumes. Job hunters are using these portals to find positions in many industries, moving beyond IT to sectors like engineering, sales, manufacturing, and financial services. However, they are getting tough competition from social media and professional networking sites like LinkedIn. But there are still opportunities to explore, such as expanding their penetration to rural areas and smaller cities.

So as we said, we’re going to explore this topic from a database design perspective. Let’s start with enumerating the fundamental expectations for a job portal.

What Do People Expect From an Online Job Portal?

Both employers and job seekers expect the following functionalities from an online job site:

Building the Data Model

After considering the above requirements, I came up with three broad functional categories:

  1. Managing Users – How the portal manages users, i.e. job seekers, HR personnel, and independent or consulting recruiters. (For the purpose of this model, individual HR representatives and independent or consulting recruiters are treated as companies, at least in terms of how they use the portal.)
  2. Building Profiles – How the portal allows job seekers and organizations to create profiles and resumes.
  3. Posting and Looking Up Jobs – How the portal facilitates the process of posting, searching, and applying for jobs.

Let’s look at each of these areas separately.

1. Managing Users

User Management

There are primarily two types of online job portal users: individual job seekers and HR recruiters (or independent recruitment consultants). Let’s create a table named user_type to store these records. To start, it will have two records – one for job seekers and another for recruiters. (We can always create additional record types as needed.)

Users are required to register before they can use the portal. The user_account table stores their basic account details. I earlier considered naming this table “user”, but since user is a system-defined keyword in almost all databases, I prefer to stick with “user_account”.

The user_account table has the following columns:

We’ll create one more table, user_log , that stores a record of users’ last login date and their last job application date. There are a lot of features which can be built from this knowledge. For example, we can use this information to answer the question Is user X actively looking for a job? If so, they can be offered a product for creating an effective resume. Users who aren’t actively looking for a job would not receive such an offer.

2. Building Profiles

We can further divide this section into two areas: company or organizational profiles, and job seeker profiles.

Company Profiles

Company Profile

Usually HR teams build company profiles by entering details about their organization and images of their offices, buildings, etc. Their main objective is to attract good talent. When recruiters register with the portal, they too can build profiles of their companies (or their personal brand, if they are independent) by providing some basic details like how long they’ve been in business, their location, and their main business stream (e.g. manufacturing, IT services, financial, etc).

The portal allows HR and consulting recruiters to upload as many images as they like (as opposed to job seekers, who can only upload one). Therefore, we’ve created the company_image table to store multiple images for each recruiter account. The company_id column in this table is a foreign key that refers to the unique identifier used in the company table.

In the company table, we have the following columns:

Finally, the business_stream table has just two attributes, an id that is the primary key for this table, and a description of the company’s main business stream (business_stream_name).

Job Seeker Profiles

Job seeker profile builder

This is the most critical section of a job portal. Unless a portal captures as many details as possible from job seekers, it is difficult for recruiters to shortlist the profiles or candidates.

The seeker_profile table holds additional details that were not captured during the registration process. It contains these fields:

The education_detail table stores each job seeker’s educational history, as provided by them. It has a composite primary key made up of the user_account_id, certificate_degree_name and major columns. This ensures that users enter only one record for each degree or certificate. The table contains these attributes:

The experience_detail table keeps records of users’ past and current professional experience. It contains the following important columns:

Job seekers can possess multiple skills. To keep records of all of these skill sets, we’ll create the table seeker_skill_set . The columns are:

Finally, the skill_set table contains descriptions of all the skills referred to in the above table’s skill_set_id attribute. It contains only two columns, a skill_set_name and its related id.

3. Posting and Looking Up Jobs

Job post management

This is the main USP (Unique Selling Point) of a job portal. Only registered recruiters are allowed to post a job on the portal and only registered job seekers are allowed to apply to them.

The job_post table is the main table in this subject area. As you might guess, it holds details about job posts. All the other tables in this section are created around it and linked with it.

The job_post_skill_set table stores details about the skill sets required for a job. The table structure is identical to the seeker_skill_set table.

And the last table in this section, the job_post_activity table, holds details about which job seekers apply for a job and when.

What Would You Add to this Online Job Portal Data Model?

Today’s online job portals do more than provide a platform to post and apply for jobs. They often include other professional services like:

If we wanted to build these features into our system, what additional changes would we need to make? Can you think of any other must-haves in a job portal?

Please let us know your views in the comments section.

Subscribe to our newsletter Join our weekly newsletter to be notified about the latest posts. Subscribe