onceitos derivados - considerações sobre design de banco de dad

Tenho um conceito principal - mensagem de correio e dois conceitos derivados:

emails gerados por modelo emails de forma livre

Estou pensando em criar três tabelas para armazenar os dados e preciso de suas opiniões sobre esse assunto (se é ruim, se é bom, como pode ser melhorado e assim por diante):

MailMessagesEu não fiz]identity (incremento automático) PKToAddress [varchar (300)]IsTemplateBased [bit]TemplateId [int] anulável FKMailBodyId [int] anulável FK (TemplateId deve ser nulo e MailBodyId deve ser não nulo ou vice-versa)StatusId [tinyint] FK MailParamsMailMessageId [int] PFKParamNumber [tinyint] Valor [nvarchar (4000)] MailBodyMailMessageId [int] PFKFromUsername [varchar (30)]FromDomainId [tinyint] FKPlainTextContent [nvarchar (max)]HtmlContent [nvarchar (max)] anulável

Algumas explicações estão em ordem aqui:

Gostaria de um design o mais normalizado possível coluna de bit IsTemplateBased (booleano) pode ser omitida e a natureza da mensagem de email pode ser deduzida de TemplateId e / ou MailBodyId (por exemplo: se TemplateId não for nulo, será baseado em modelo), mas acho que essa desnormalização (? ) pode ser útil para o desempenho A razão por trás de ter duas colunas (FromUsername e FromDomainId) é impor regras de sanidade de email - não considero que uma única coluna (FromAddress) seja apropriada

Tendo dito tudo isso, quais são suas opiniões, queridos leitores?

questionAnswers(3)

yourAnswerToTheQuestion