Pergunta

É a criação de tipos definidos pelo usuário em vez de usar os tipos existentes de boas práticas? Em meu lugar previews trabalho todos os tipos básicos foram pré-definidos, é melhor prática? quais as vantagens e quais desvantagem que tem.
Muito obrigado!

Foi útil?

Solução

No MS SQL Server - a idéia é grande. No entanto, há uma grande e a eles: você não pode mudá-los uma vez que está em uso, uma vez que não há nenhuma declaração ALTER TYPE ..... Isso pode ser um dos principais problemas.

Considere o seguinte: você tem um aplicativo de livraria que tem um tipo definido pelo usuário ISBN = VARCHAR (10) - funciona como um encanto. Agora, o comitê internacional decidiu increate campo ISBN 13 caracteres - infelizmente, não há nenhuma ALTER TYPE ISBNType..... então sua única opção é deixar cair basicamente todas as colunas desse tipo em toda a sua base de dados, em seguida, re-criar o tipo na sua nova forma, e recriar todas as colunas novamente.

A idéia é grande e eu gostaria de usá-lo -. Mas em seu estado atual, é ao lado de inutilizável, na minha opinião, o que é lamentável

Marc

Outras dicas

Um pouco tarde, mas .. meus 2 cts.

Os tipos definidos pelo usuário cumprir o papel de um domínio nos modelos conceituais e lógicos, por isso, se você deseja implementar o seu datamodel lógica no banco de dados físico, o uso de tipos definidos pelo usuário seria a melhor aproximação. Isto irá fornecer benefícios como o uso de um modelo gráfico que pode ser transferido para uma implementação automaticamente, melhor do que isso poderia ser feito sem o uso de UDTs.

Usando domínios torna possível detectar tentativas para armazenar um código postal em um campo SSN e tê-los apanhado pelo banco de dados em tempo de execução (ou mesmo tempo de compilação). Isso permitirá que você para impor regras de negócio da empresa de largura, onde devem ser aplicadas: no ponto onde os dados atinge o armazenamento. Em qualquer outro lugar é uma cortesia para o usuário, mas isso é onde eles absolutamente tem que ser aplicada para ter certeza ninguém vai ao seu redor.

Além disso, UDTs como definidos no ANSI SQL: 1999 métodos de encapsular, e pode ser subtipadas. Isso significa que certas mudanças em regras de negócios que lidam com restrições podem ser alterados no banco de dados, sem nunca ter que tocar uma implementação.

No entanto ... UDTs como actualmente implementados deixam muito a desejar. Eu nem tenho certeza implementos SQL Server o padrão como descrito, ainda menos certeza sobre Oracle. E mesmo se o fizerem, as desvantagens do uso de UDTs se tornará óbvio de imediato que você use ferramentas de BI, ferramentas ETL ou outras ferramentas, em vez de mente simples: eles não costumam entender UDTs e até mesmo se o fizerem, eles não serão capaz de usá-los porque a base de maioria-se sobre os tipos básicos (int, char e data / hora).

Quanto às ferramentas de relatórios, vamos considerar um UDT que tem uma combinação de campos. Agora, como é que um ETL-ferramenta de banco de dados independente de ser capaz de compreender o tipo? Teria de ser capaz de compreender a estrutura, a fim de exibi-lo, ou usá-lo para os cálculos. E que para cada banco de dados suportado - uma tarefa difícil. E desde usos Noone UDTs, eles não vão fazer isso. É um círculo vicioso, mas ainda temos que viver com ela.

Além disso, o apoio UDT na maioria dos bancos de dados não é tão quente também. Alterar tipos pode ser bastante difícil. Embora a sintaxe deve ser o mesmo em todos os lugares, a sua administração é indefinido no SQL: 1999 e, portanto, diferente em todos os lugares. Tente alterar o proprietário de um UDT no sql server para um exemplo. Que costumava ser muito difícil -. Não tenho certeza sobre o SQL Server 2016, mas dado que UDTs não se parecem com uma área de foco, eu não estou esperando grandes melhorias nessa área

Por fim, se você adicionar o código realmente complexo para UDTs, você topar com o velho problema que você está programando em um ambiente que tem uma falta de boas opções de depuração. Isso também não ajuda.

Assim: se você tem controle total sobre o seu banco de dados e toda a interação passa por seu software, UDTs pode ser extremamente útil. Se não, eles podem ser uma enorme dor no pescoço. Qual deles é o caso em seu cenário, é algo que só você pode dizer.

Como frescos estão definidos pelo usuário tipos de dados em MS SQL Server?

Pessoalmente, eu não usá-los, mas eu os vi. Um problema é que o código do cliente reconhece o tipo de base só, IIRC, para o MS SQL Server, pelo menos. E portabilidade / comportamentos entre versões.

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