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 librestoy 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)] nullableAquí 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?