Quando vou escrever um banco de dados geralmente ja se define a quantidade de colunas.Ex:
nome endereço telefone
e cada uma dessas colunas receberá em suas linhas os valores referente a nome endereço e telefone e as linhas vão surgindo à medida em que se precisa, ou seja, na coluna nome terão varias linhas de nomes.
A minha duvida é : E quando preciso que surjam colunas da mesma forma que surgem as linhas, ou seja, de acordo com a necessidade? digamos que o determinado objeto só precise de NOME ENDEREÇO TELEFONE e ja um outro objeto precise de NOME ENDEREÇO TELEFONE EMAIL da pra fazer o banco criar essa coluna extra por programação?
eu estou resolvendo isso fazendo a seguinte gambiarra, coloquei uma quantidade significatica de colunas vazias que podem ou não vir a ser usadas.
Para isso, você só precisa adicionar uma coluna na tabela, usando o comando ALTER TABLE. Dê uma olhadinha nisso, é perfeitamente normal. O único problema é que o banco tem que ser processado toda vez que você faz isso, mas é isso que se faz.
Já considerou o uso de um banco de dados não relacional, como o MongoDB, por exemplo?
A ideia de bancos NoSQL é flexibilizar e garantir que, caso o teu objeto precise ser persistido com nome, endereço e telefone, ele seja, da mesma maneira que ele possa ser persistido com mais atributos (como email, data de nascimento e profissão), sem que isso cause quaisquer problemas na consistência dos dados.
Além disso, nada impede que você crie uma tabela com todas as colunas preenchíveis e deixe algumas com valores vazios ao inserir, não é mesmo?
Isso que imaginei, crio um banco com uma quantidade de colunas que não serão usadas por exemplo 20 colunas e aqui e ali pode ser que se use 10 ou 15 mas que de modo geral a quantidade base é 3 sendo assim terem uma margem de 17 colunas que podem vir a ser usadas.Mas ai fica o receio dessas colunas vazias, é uma boa prática vai afetar de alguma forma meu programa? por isso resolvi vir aqui pra o que os mais experientes me dizem
No meu entendimento, isso é um procedimento técnico não homologado, vulgo, gambiarra.
Cara, não existe sistema no mundo em que a modelagem de banco de dados relacional siga estes padrões.
Invariavelmente, até para fins de tratamento de dados, você precisa ter as tabelas e colunas muito bem definidas. Em outras palavras: o que você busca não é tarefa de um banco de dados relacional.
Por isso sugeri o mongodb, nele você pode inserir os documentos da maneira que quiser, sem que ele reclame:
Sendo assim dou por encerrada a questão uma vez que existe essa questão de definição exata do tabela para trabalhar com bancos de dados relacionais.Eu já tinha lido a respeito dessa definição só que brasileiro inventa de tudo enquanto kkkk então quis saber se tinha uma adaptação tecnica mediante demanda (gambiarra).Quanto ao mongodb não tenho conhecimento mas ja estou indo procurar entender como funciona.Obrigado a todos que participaram.
Pensa da seguinte forma: um senhor vai a um escritório de engenharia civil. Fala que precisa construir um prédio, 12 andares.
Mas, ele quer que cada andar possua um número específico de colunas, podendo varias de 0 até 11 e que não haja repetição no número de colunas e nem uma sequência nesse número.
O que o engenheiro faz? Xinga o tal sujeito e diz que é impossível.
Tem-se a ideia distorcida de que se pode fazer tudo com sistemas. Ok, de certa maneira sim.
Porém e em geral, existem N soluções para o mesmo problema e quando não existe, pode-se, sim, buscar novas.
Agora, esta questão é trvial: modela-se o banco, cria-se a estrutura básica do projeto e pronto.