Ajuda: Como posso armazenar no banco de dados a forma como o usuário prefere ser contatado?

Boa tarde, pessoal! Tudo bem? Estou com uma dúvida sobre como poderia armazenar a forma como um usuário prefere ser contatado. São 3 opções de forma de contato: Telefone, WhatsApp e E-mail. No formulário é permitido escolher mais de uma opção. Qual seria a melhor forma de armazenar essas informações?

Estou trabalhando com Laravel e utilizando MySQL como banco de dados. Eu deveria criar uma coluna do tipo booleano para cada opção na tabela do usuário? Ou deveria criar apenas uma coluna e salvar como JSON? Ou então deveria criar mais duas tabelas no banco, uma com os métodos de contato e criar uma tabela relacional entre usuario e método de contato e trabalhar com chaves estrangeiras?

Agradeço desde já! :smile:

Boa tarde, Vitor! Bem e aí? Cara, considerando que

é permitido escolher mais de uma opção

Eu recomendaria você criar uma tabela a mais, por exemplo InfoContato que teria o id do usuário (ou qualquer outro tipo de identificador único que você esteja usando) e uma coluna para o contato, que seria um texto (varchar no caso do MySQL). E aí, se quisesse ter uma forma "preferida", essa tabela poderia ter mais uma coluna, booleana, para indicar qual delas é a preferida (lembrando que teria que sempre manter atualizado para não ter mais de uma preferida ao mesmo tempo)

Isso porque guardar mais de uma informação na mesma coluna não é uma boa ideia, primeiro pela própria teoria de banco de dados (caso queira ir mais a fundo, o nome do tópico é "normalização de bancos de dados"), mas também porque você teria que manipular esse valor toda vez que fosse salvar, ler ou editar.

Bom dia! Tudo bem sim! Valeu pela dica cara, tava vendo mais sobre normalização de banco de dados e pensando sobre como eu iria manipular essas informações e acredito que essa seja a forma mais viável, ainda mais levando em conta os relacionamentos do Laravel. Valeu!! :punch:

Você pode fazer algo parecido com bitwise. Como são só 3 opções, você nem precisa fazer um bitwise propriamente dito, e talvez já ajude. Por exemplo:

Telefone: 001 Whatsapp: 010 E-mail: 100

Qualquer combinação desses 3 vai estar entre 000 e 111, dai, você salva no banco de dados o valor decimal do resultado.

A melhor forma seria relacionar com uma outra tabela(Tipo de notificação). Dessa maneira fica facil adicionar ou remover uma nova forma.