I have been googling for hours on this, what I am trying to do is
build a application with the following criterias
Employees
Company
Business Hours
Shifts
This will allow one user to create a business account with the ability
to add other employees to the account, the one user will first create
the businesses general business hours by selecting open and close
hours for Sunday - Saturday. Then once the first user adds other
employees to the business account, that user will be able to edit each
employees shifts. The one user will be able to manage each of the
employees entire day by 15 minute increments, this is going to be used
for a calendering system.
So lets say…
Company A hours are 9am-5pm Mon-Fri
Employee 1 hours are 11am-3pm Mon-Thurs
Employee 2 hours are 9am-5pm Tues-Fri
Employee 3 comes in at 9am but has to leave at 11am but comes back at
11:45am-5pm Mon-Fri
and each employee needs to be able to have there lunch break blacked
out whether that is a 15 min lunch or 60 min lunch
Now the question is how would I go about designing the database
(MongoDB) structure and models. I could build this out but I want to
use the best practice from the start of the project since this will
need to be scalable to hundreds of companies and thousands of
employees. Everything that I have read leads no where. My thinking on
this(I come from PHP background)
Companies
company_id
name
address
…
…
Employees
employee_id
company_id
name
…
…
Hours (Just for the business hours)
hour_id
business_id
either do a hours field that holds a array OR something like the
following
sun_open = 9:00:00
sun_close = 17:00:00
mon_open …
…
sat_close …
Shifts
shift_id
shift_name
employee_id
day
month
year
start_time
end_time
THEN HERE IS WHERE I AM STUCK - Going back to Employee 3’s
requirements:
Employee 3 comes in at 9am but has to leave at 11am but comes back at
11:45am-5pm Mon-Fri
How can I store it in the database for the 11am to 11:45 off period as
well as a lunch break for each employee. I dont want to create
seperate columns for each of the 15 min increments for each day. And I
dont want millions of records in the database, also once the shifts
are set they need to be able to be changed still be 15 min increments.
Hopefully that is the best explanation for this problem any help would
be appreciated!!! Thanks for your time in advance, I really do
appreciate it!