Perhaps I'm thinking of this in the wrong way, perhaps this is merely my inexperience showing, but I'm stuck.
I'm working on the most complex database I've ever designed, and while it's not a HUGE database, it certainly has the capability of growing to that point. The key problem at this moment is: entering new data. First, an overview...
I am putting this together for a home renovation company that generates their own customer leads with teams who go door to door. When we have a lead, several things happen at once:
- We have a first contact with a new customer
- We get the customer's contact information along with contact preferences (who to talk to, what the best time to call is, etc.)
- We get the customer's residential address
- (Internally) We have the start of a new "job" that will get more information added to the database at a future date.
- Certain automatic scheduled events (like the date and approx. time of the next phone call, when the lead goes dead, etc.) are generated
For the most part, the design of the database is pretty...not easy, but clear how it needs to happen:
- Employees need their own table so their data can be separately tracked (who contacted the customer when, etc.)
- Customers need their own table because duh
- The property needs its own table because several different jobs can be done on a property and the property can be owned by several different people over the course of it's "life"
- The jobs log needs its own table because the jobs are not tracked by contact, they're tracked by work completed
- The contact log needs its own table because the customer can be contacted multiple times before a job is even started, multiple times during the course of a job, and multiple times after the job is done
- Buncha supporting tables full of lists that don't change much but when they need to be changed it needs to be done easily in a way that allows the changes to be accessed throughout the database
At this point, I need to create a form that allows for entering data for the following:
- Contact Log Table
- Which employee made the initial contact
- What the date of that contact was
- What office the employee works at (and therefor what office the job is done from)
- Customer Table
- Primary contact first and last name
- Secondary contact first and last name
- Phone #
- Contact preferences
- Property table
- Full address (incl. house #, street name, etc.)
I'm basing this all on the Contact Log, since this is the first contact the company has with the customer, and each entry on this form also needs to generate a new Job ID
While the form certainly could be broken up into discrete forms that all create records in their respective tables, the data all still needs to be tied together as appropriate.
- Contact log needs
- The employee who made the contact
- The date of the contact
- The associated job ID
- The name of the customer
- The customer table needs
- Customer name(s)
- Customer phone #
- Customer contact prefs
- The property table needs
- The property address
- Customer that lives there (Stored here in case we do a property search and find that the property is not owned by the resident, yes, this is important)
- The job log needs
- The customer ID (based on the primary key of the Customer table)
- The property ID (based on the primary key of the Property table)
- The "class" of job (windows, siding, kitchen, etc.)
I can create a form off the Contact log and then add subforms, but then the data either isn't recorded or throws out multiple errors when the data entry happens. I'd do a query, but I need to enter data, not create it. :/
Like I said, I may simply be showing my ignorance, but I need help.