I am designing a complaints module. The complaints can come from people who are not customers. Namely, people who did not become a customer but are complaining that the sales reps are too aggressive. Complaints can also come from existing customers.
Currently I have 4 tables involved:
- Customer_Id (Nullable)
- Contact_Id (Nullable)
I don't like the nullable columns on Complaint Reporter. When the complaint comes from an existing customer, I leave the Contact_Id null because every Customer has a Contact_Id. When the complaint comes from a non-customer, I leave Customer_Id Null.
Is there a better design to support this situation that won't require nullable columns?
I suppose I could get rid of ComplaintReporter table and add its columns directly to complaint which will make the diagram look less funky, but I'm still left with nullable columns.