Let's consider customer contacts as you have them. Is a customer contact an attribute of a customer? Stuff like this can be tricky, and the answer can be yes or no (it may depend on your business case). If there can be more than one and you start laying them out in fields (as you have), you are not really following normalization rules. Rather, a spreadsheet mentality is creeping in and you should forget what you know about spreadsheets when it comes to db design. To put it simply, spreadsheet data is laid out in columns, db data goes in rows.
IMHO, the answer in your case would be "no". Unless you know you are never going to accommodate a customer who insists on identifying 2 contacts when you only have 1 contact field, then go ahead and put in one contact field. But you have 2. You should
never have to add or remove fields to/from a table
for an attribute of the same type, so what if someone demands 3? Are you going to annoy them by saying they can only have 2 because that is how you set it up? Generally speaking, I would not have 2 fields in the same table for one attribute type. Rather, I would have tblContacts with the CompanyID (or whatever tblCustomers field uniquely identifies a company) repeated for each record that a contact has been identified for a company. Then I can have as many contacts for a company as that company likes, and with queries I link the contact info to the customer by CustID. My tblContacts might look like this:
CustID |
FName |
Lname |
ContactPhone |
ContactCell |
22 |
BOB |
SMITH |
|
|
22 |
BOB |
SMITH |
|
|
22 |
BOB |
SMITH |
|
|
28 |
MARY |
JONES |
|
|
So are all of those fields in "Schedule table" (not a good name for reasons mentioned) attributes of the Schedule? Only you know for sure at this point. I do wonder about quantity backorder field - if this is calculated, generally it should not be stored,
especially if it is subject to change.