For any possible solution using Active Directory and Exchange see my publish below.

We wish to produce a training database in SQL which we are able to use for the internal training periods in our employees. Regrettably I have no experience of database design and was without an opportunity to buy and browse an effective book relating to this subject.

I've just began to produce a database after reading through a couple of lessons on the internet and would love you to examine my design and supply me with a few feedback basically have began pretty much correct.

The courses table will store our courses using their duration, capacity along with a small description of what you should start learning on this program. Working out session table will be employed to link a training course having a specific training along with a date once the training is going to be done. The trainers are co-workers who supply the internal courses.

The attendance table stores working out session id and when an worker attended the session or maybe he couldn't.

Please find below our database diagram:

alt text

Afterwards we'd like to keep the task position a program is pertinent for. For instance our network introduction course is pertinent for an amount 1 Experts, an amount 2 Experts and Team Leaders. Our ITIL course is pertinent just for a team leader.

How does one store these details? Can you make use of a separate table using the positions and employ a many to a lot of relationship with this?

Thank you,


The dwelling appears fine. I'd suggest adding yet another foreign key relationship, though: Attendance.EmployeeID should reference the Worker table.

Attendance does not need its very own primary key. The mixture of worker and session distinctively identifies it (confirmed worker can't attend confirmed session more often than once, would they?). You need to most likely make use of the two ID posts for individuals like a composite primary key.

Do courses genuinely have a capacity, or perhaps is it a session with a capacity?

What is the UpdateTime column for?

A little simplified, doesn't take into account enrolment, but will let you with ideas.

alt text