Isso efetivamente criará um conjunto de resultados muito parecido com a sua primeira opção, com muitos campos nulos.
Portanto, a ideia básica aqui é que uma mensagem potencialmente tem um e-mail . Dependendo de você definir ou não Email.message como UNIQUE , você pode verificar se há no máximo um e-mail correspondente a uma mensagem. Esta configuração (como todas as alternativas que você propôs) permite que uma única mensagem tenha múltiplos transportes diferentes, o que é realmente concebível no mundo real.
se você quiser adicionar novos tipos de transporte sem alterar as tabelas existentes (não é algo que você deseja fazer em um banco de dados enorme)
(mais de 3) Você pode consultar todas as mensagens em uma consulta, assim você pode obter todas as mensagens para um destinatário específico, assim:
No entanto, se você estiver usando um ORM, poderá usar o poder para realizar consultas como essa. Eu não tenho nenhuma experiência prática com c #, mas do meu entendimento como um estranho, Linq se presta bem a acessando bancos de dados relacionais para o que eles são , em vez de tentar encaixar a semântica de objetos em registros (o que sempre faz você atingir uma parede muito espessa em algum ponto da estrada).
Reduzindo os ciclos de dependência e reduzindo o acoplamento Qual é a vantagem do método 'SwingUtilities.invokeLater ()'?