Firstly, a great question. It's great what you think and ask about it, instead of charging ahead and doing something that will quickly break down in the real world. Of course, if this is your first database, you are likely to get it the way you usually study. We all wrote some kind of scary spaghetti code, but the difference between a professional and an amateur learns from pain and invests in making the best decision next time.
There is no single simple answer to your question, while others have made important points. I would add the following: pick up a short book on normalization (I had good results with the series O'Reilly's Nutshell). This may seem like a big topic, but the point is simple: any specific information is stored only once. This saves space, but, more importantly, means that you never had, say, a username stored inconsistently in different tables.
Try to think about the big picture: not only what you need now, but also what you may need in the future, for example, the CC field, which Kate indicated. There can be several recipients in an email, therefore instead of To and CC should be fields in the EMails table, a reliable design will have an EMailDestinations table with the fields EMailID , Destination and DestinationType . This is already an example of a more extensible design: with this model you can start tracking BCC with just another DestinationType . But then perhaps this is over designing for your project, if you can be sure that there is only one destination for email. It is important to consider all the possibilities, even if in the end you get a simple design that meets your needs.
Good luck Feel free to come back to SO with questions in the future. If you have a clear and specific question, you will usually receive an answer VERY quickly.
user565869
source share