Hi All,

I am designing a course booking database for a colleague who has a training company. I am unsure if I have the correct table structure. I originally had a more complex structure but came across the structure below in a book. I was concerned that it seemed too simplified but at the same time was unsure how I should model it. Are there any problems anyone can see with the simplified design below.

I originally had separate tables for ‘location’, ‘delegate’, ‘price’ and I also had ‘booking’, ‘booking line’ and a ‘period booked’ table. The problem was I did not know which table I would link up to course (booking line or period booked).

The requirements need to take into account course transfers, course cancellations, adding new locations, courses etc. The price of a course is negotiable so a course will not have a fixed price.

I also need to cater for a callback facility (marketing purposes). I have not included this below as I am sure that I can model that ok, i.e. one company has many contacts, each contact may have many callbacks and each contact may have many reminders. That would involve a CONTACT, CALL BACK and REMINDER table.

My aim is to prototype this in MS Access, present it to my colleague and then implement in SQL Server 2000. He has two separate offices at the moment and I want to use ASP as the front end to SQL Server.

As the underlying table structure is important to get right I would appreciate any comments anyone would have.

---Booking Table---
bookingRef -pk
*companyId - fk
dateBooked
owner

---Company Table---
companyId - pk
name
add1
add2
add3
add4
county
postCode
telNo
ownerId


---Course Table---
courseCode - pk
courseTitle
courseDuration
courseCost


---Course Run Table---
courseCode - pk
courseRunNo - pk
courseRunDate
location
placesBooked

---Delegate Booking Table---
courseCode - pk
courseRunNo - pk
delegateName -pk
*bookingRef - fk

Many thanks for any help,

Mark