Conceptos derivados - consideraciones de diseño de base de datos

Tengo un concepto principal: mensaje de correo y dos conceptos derivados:

correos electrónicos generados por plantillas correos electrónicos de forma libre

stoy pensando en crear tres tablas para contener los datos y necesito sus opiniones sobre este asunt (si es malo, si es bueno, cómo se puede mejorar, etc.):

MailMessagesYo dint]identity (autoincrement) PKToAddress [varchar (300)]IsTemplateBased [bit]TemplateId [int] nullable FKMailBodyId [int] nullable FK (TemplateId debe ser nulo y MailBodyId debe ser no nulo o viceversa)StatusId [tinyint] FK MailParamsMailMessageId [int] PFKParamNumber [tinyint]Value [nvarchar (4000)] MailBodyMailMessageId [int] PFKFromUsername [varchar (30)]FromDomainId [tinyint] FKPlainTextContent [nvarchar (max)]HtmlContent [nvarchar (max)] nullable

Aquí hay algunas explicaciones:

Me gustaría un diseño lo más normalizado posible La columna de bit IsTemplateBased (booleano) se puede omitir y la naturaleza del mensaje de correo se puede inferir de TemplateId y / o MailBodyId (es decir: si TemplateId no es nulo, entonces está basado en plantillas) pero creo que esta desnormalización (? ) podría ser útil para el rendimientoLa razón detrás de tener dos columnas (FromUsername y FromDomainId) es hacer cumplir las reglas de sanidad del correo electrónico: no considero que sea apropiado tener una sola columna (FromAddress)

Habiendo dicho todo esto, ¿cuáles son sus opiniones, queridos lectores?

Respuestas a la pregunta(3)

Su respuesta a la pregunta