"Evite redundância" é importante para mim.
Desejo armazenar os dados de entrada para gerenciamento de configuração em um banco de dados relacional.
Meus dados de entrada:
- Nome do Projeto
- linux_user
- db_user
- db_name
Em 95% de todos os casos, todos os atributos são iguais:
- project_name: foo
- linux_user: foo
- db_user: foo
- db_name: foo
Se eu armazenasse esses dados em YAML, poderia usar variáveis para evitar a repetição.
AFAIK isso não funciona em bancos de dados relacionais.
Eu poderia armazenar isso no banco de dados, mas AFAIK preciso avaliar sozinho:
- project_name: foo
- linux_user: {project_name}
- db_user: {project_name}
- db_name: {project_name}
Como posso evitar redundância se armazenar isso em um banco de dados relacional? Infelizmente esses valores nem sempre são iguais, apenas na maioria dos casos.
Eu uso o PostgreSQL
Não há nenhuma maneira interna de fazer isso no SQL. Se o padrão for sempre o
project_name
, provavelmente permitiria nulos nas outras colunas e criaria uma exibição que usassecoalesce()
para retornar um valor padrão:Outra opção seria uma declaração de caso complicada para cada coluna:
Você pode ocultar a
case
instrução em uma função ou usar uma função de retorno de conjunto e SQL dinâmico, para não precisar codificar cada nome de coluna e possível variável.Se você só precisa ter certeza de ter um valor padrão ao criar as linhas, apenas substituí-lo em um gatilho durante a inserção também pode ser uma opção. Dessa forma, não há necessidade de exibição.