James Hay
James Hay

Reputation: 7325

Database design for opt-in emails

I have a table of users in SQL Server with all the contact details, personal details etc. When each user signs up to my website they will be given the option to opt-in to 5 different types of emails like:

etc etc. I am trying to decide the best way to store this information in a database. My current thinking is to have a seperate table with 5 columns (one for each opt-in) and the value being a bool/bit value.

Since the information wont be required regularly, it will only be required when we want to send mail to user. Are there any better ways / best practices for doing something like this?

Upvotes: 1

Views: 835

Answers (1)

Stuart Ainsworth
Stuart Ainsworth

Reputation: 12940

The problem with your proposed design is that it becomes difficult to add new email types in the future; you only have 5 now, but what happens when you add a sixth or seventh?.

Instead, I would propose something like:

User Table:
UserID (Primary Key)
User Attributes

EmailTemplate Table
EmailTemplateID (Primary key)
Email Template Attributes

UserEmailTemplates
UserID
EmailTemplateID

You can easily add new templates, and associate them with users.

Upvotes: 1

Related Questions