Executando verificação de segurança...
1

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á! 😄

Carregando publicação patrocinada...
2

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.

1

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!! 👊

1

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.

1