Database Design – Storing Shipping Details in Orders Table

database-designrelational-theory

Have orders table and among columns the following: shipping type, shipping service provider, delivery type and shipping address. Let me explain what these are.

User can choose between two shipping types: pick it yourself and use postal service.

If user goes for pick it yourself all other shipping fields are NULL. If he wants to use provider, then he has to specify which one (shipping service provider), does he want goods to be delivered at local postal office or at his home (delivery type) and shipping address.

This table looks good to me as it is, don't think it violates any of the first three normal forms, but want to check am I missing something? That is, should I introduce new table, shipping details for example, and why?

Best Answer

I would only introduce a shipping details table if you have a high number of orders going to the same place. This would save on space as the address wouldn't be repeated multiple times.

But you might want to do something like that if you have users with multiple different shipping destinations that they use.