Pergunta

Meu DBA me disse para usar um SQL definida pelo usuário tipo de dados para representar endereços e, em seguida, usar uma única coluna do tipo novo em nossa tabela de usuários em vez de várias colunas de endereço.Eu nunca fiz isso antes e estou querendo saber se esta é uma abordagem comum.

Também, qual é o melhor lugar para obter informações sobre este - é o produto específico?

Foi útil?

Solução

Há uma série de outras questões ENTÃO, sobre como representar os endereços de um banco de dados.AFAICR, nenhum deles sugerem um tipo definido pelo usuário para o efeito.Eu não iria considerá-lo como uma abordagem comum;que não é para dizer que não é uma abordagem razoável.As principais dificuldades para decidir quais os métodos para proporcionar a manipular os dados de endereço - aqueles usados para a formatação de dados para aparecer em um envelope, ou em locais específicos em um formulário impresso, ou para atualizar os campos, de se preocupar com as diversas ramificações de endereços, e assim por diante.

A definição de tipos definidos pelo usuário é muito específico do produto.As formas de fazê-lo em Informix são diferentes das formas é feito em DB2 e Oracle, por exemplo.

Outras dicas

Até onde eu sei, pelo menos no mundo dos servidores SQL, a UDT não é muito usada.

O problema com a UDT é o fato de você não pode atualizá -los facilmente. Uma vez criado e usado em bancos de dados, eles são quase como o conjunto em pedra.

Não há comando "Criar ou alterar (UDT)" :-( Então, para mudar alguma coisa, você precisa fazer muito tempo - possivelmente copiando dados existentes, depois soltando muitas colunas de outras tabelas e depois soltar seu UDT, re. -Crie -o com a nova estrutura e reaplicando os dados e tudo mais.

Isso é muito aborrecido - e você sabe: aí vai Seja Mudança!

No momento, no SQL Server Land, o UDT é apenas uma boa ideia - mas muito mal implementada. Eu não recomendaria usá -los extensivamente.

Marc

Eu também prefiro evitar o uso de dados de dados definidos pelo usuário, pois sua definição e usabilidade tornarão seu código dependente de um banco de dados específico.

Em vez disso, se você estiver usando qualquer idioma orientado a objeto, crie um relacionamento de composição para definir endereços para um funcionário (por exemplo) e armazene os endereços em uma tabela separada.

Por exemplo. Tabela de funcionários e funcionários da tabela. Um funcionário pode ter vários endereços.

Datatype SQL definido pelo usuário para representar endereços

Os tipos definidos pelo usuário podem ser bastante úteis, mas um endereço de correspondência não salta como um desses casos (pelo menos para mim). O que é um endereço para você? É algo que você imprime em um envelope para enviar alguém? Nesse caso, o texto é tão bom quanto vai chegar. Se você precisa saber em que estado alguém está por razões legais, armazene isso separadamente e não é um problema.

Outras postagens aqui criticaram os UDTs, mas acho que eles têm alguns usos incríveis. O PostgreSQL teve a pesquisa completa de texto como um plug-in com base no UDTS por um longo tempo antes da pesquisa de texto completo ser realmente integrado ao produto principal. No momento, o PostGIS é um produto GIS de muito sucesso que é totalmente um plug -in baseado em UDTS (ele possui licença GPL, portanto, nunca será integrada ao núcleo).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top