In an e-commerce web site.
It has customers table holding the registered customers information, name, address, phone numbers etc. (usually, you need to use the real name)
Customers could be set to "not activated". But customes account cannot be deleted by the customer himself.
It also has newsletter subscribers talbe, you don't have to be a customer to be a newsletter subscribers. You can just offer the email address and name (nick name is OK) to subscribe newsletter. Newsletter subscriber could be deleted from the table by newsletter subscriber himself if he unsubscribes it online.
So you can see that customers and newsletter subscribers are different in many ways.
Here is the question: How do you handle the situation that when end user to register as customer and at the same time, you want to recommend him to register for newsletter too?
1) just use a check box, if the customer check the newsletter box, meaning he will like to receive the newsletter too. When we send out the newsletter, we send out to the newsletter subscribers and also send the newsletter to the customers checked with newsletter.
But then, we have to consider if his email already register in the newletter subscriber list (so he will not receive 2 copies of the newsletter). if it has, then which record we use to send out the newsletter (he may use the nick name in the newsletter subscribers)? When the cutomer (also checked with newsletter) also try to register separately later on with the newsletter subscriber information, then what? accept it in newsletter subscribers table and uncheck the newsletter flag in the customer table ...
The situations/questions could be endless... And several sitautions we may have to ask the end user further questions to make the decisions.
It doesn't make the programming, the end user, the merchant life easier.
2) Just use a link, refer the end user to the newsletter subscribers page when they finish register as customer, ask them to register for newsletter subscribers if they want to receive the newsletter too. (the information will be very simple, we can grab name and email from the customer database and prefill in for him but he can change it, and just one click will add him to the newsletter subscribers, we can skip the email activation process.)
So the newsletter subscribers and customers tables are separated totally. Disadvantages are the end use may not want to bother register twice with the same site, one for customer, one for newsletter, and deal with two accounts at one site later on such as unsubcribe the newsletter etc., edit the customer account information etc.
3) the alternative, when an end user register to be a customer, if he also check the newsletter box, we will add him to the newsletter subscribers too automatically(if he is alerady in the newsletter subscribers before, then we will do nothing.). After that, he will still have to deal with the newsletter subscriber account and customer account differently.
I have been used all these three approaches before. Both have advantages and disadvantages. Trying to set up to use one approach for the simliar cases for the future projects. What is your experience?
Thanks!