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.
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.