Pergunta

Quais são os prós e contras do uso de aliases de tabela no SQL?Eu, pessoalmente, tentar evitá-los, como eu acho que eles tornar o código menos legível (especialmente quando a leitura através de grandes onde/e declarações), mas eu estaria interessado em ouvir qualquer contra-pontos para isso.Quando é geralmente uma boa idéia para usar aliases de tabela, e você tem alguma formatos preferidos?

Foi útil?

Solução

Tabela de aliases são um mal necessário quando se lida com altamente normalizada esquemas.Por exemplo, e eu não sou o arquiteto nesta DB para ter comigo, pode demorar de 7 junta-se a fim de obter uma limpeza completa e registro de trás, que inclui o nome da pessoa, endereço, número de telefone e empresa de afiliação.

Em vez de o um pouco o padrão de caractere único alias, eu tendem a favorecer palavra curta aliases para o exemplo acima do SQL acaba parecendo:

select person.FirstName
      ,person.LastName
      ,addr.StreetAddress
      ,addr.City
      ,addr.State
      ,addr.Zip
      ,phone.PhoneNumber
      ,company.CompanyName
from tblPeople person
left outer join tblAffiliations affl on affl.personID = person.personID
left outer join tblCompany company on company.companyID = affl.companyID

...etc

Outras dicas

Bem, há alguns casos em você deve os usa, como quando você precisa se juntar para a mesma tabela duas vezes em uma consulta.

Isso também depende do tempo que você tem únicos nomes de coluna em tabelas.Em nosso banco de dados legado nós tem de 3-carta de prefixos para todas as colunas, resultante de uma forma abreviada da tabela, simplesmente porque um antigo sistema de banco de dados éramos compatíveis com o não apoio aliases de tabela bem.

Se você tiver nomes de coluna que ocorrem em mais do que uma tabela, especificando o nome da tabela como parte da coluna de referência é uma obrigação, e, portanto, uma tabela de alias vai permitir que um menor de sintaxe.

Eu sou a única pessoa aqui que realmente odeia?

Geralmente, eu não usá-los, a menos que eu tenho que fazer.Eu realmente odeio ter que ler algo assim

select a.id, a.region, a.firstname, a.blah, b.yadda, b.huminahumina, c.crap
from table toys as a
inner join prices as b on a.blah = b.yadda
inner join customers as c on c.crap = something else
etc

Quando eu li SQL, eu gostaria de saber exatamente o que eu estou selecionando quando eu lê-lo;aliases, na verdade, confundir-me mais porque eu tenho que caminho através de linhas de colunas antes de eu realmente começar o nome da tabela, o que geralmente representa as informações sobre os dados que o alias não.Talvez, tudo bem se você fez os aliases, mas eu normalmente ler as perguntas no StackOverflow com o código que parece usar aliases para nenhuma boa razão.(Além disso, às vezes, alguém vai criar um alias em uma declaração e não apenas usá-lo.Por quê?)

Eu acho que aliases de tabela são usados tanto porque um monte de pessoas que são aversas a escrever.Eu não acho que é uma boa desculpa, embora.Que desculpa é a razão vamos acabar com a terrível de nomenclatura de variáveis, terrível função de siglas, códigos mal...eu iria ter tempo para escrever o nome completo.Eu sou uma rápida typer, embora, talvez por isso que tenha algo a ver com isso.(Talvez no futuro, quando eu tenho túnel do carpo, vou reconsiderar a minha opinião sobre aliases.:P ) eu particularmente odeio correr através de aliases de tabela em código PHP, onde eu acredito que não há absolutamente nenhuma razão para ter que fazer isso - você só tem que digitar uma vez!

Eu sempre uso coluna qualificadores em minhas declarações, mas não sou avesso a escrever muito, então terei prazer de escrever o nome completo várias vezes.(Concedido, eu faço o abuso do MySQL guia de conclusão.) A menos que seja uma situação onde eu tenho que usar um alias (como alguns descritos em outras respostas, eu encontrar a camada extra de abstração pesado e desnecessário.

Editar: (Mais de um ano depois) eu estou lidando com alguns procedimentos armazenados que usar aliases (eu não sabia escrevê-los e eu sou novo para este projecto), e eles são dolorosos.Eu acredito que a razão de eu não gostar de aliases é por causa de como eles são definidos.Você sabe como é geralmente uma boa prática para declarar variáveis no topo do seu âmbito de aplicação?(E, geralmente, no início de uma linha?) Aliases no SQL não seguir essa convenção, que me faz moer meus dentes.Assim, tenho que procurar o código inteiro para um único alias para descobrir onde ele é (e o que é frustrante é, eu tenho que ler a lógica antes de eu encontrar o alias de declaração).Se não fosse por isso, eu, honestamente, talvez como o sistema melhor.

Se eu escrever um procedimento armazenado que alguém vai ter que lidar com, eu estou colocando o meu alias definições em um bloco de comentário no início do arquivo, como uma referência.Eu sinceramente não entendo como vocês não enlouquecer sem ele.

Microsoft SQL da consulta, o optimizador de benefícios de utilizar totalmente qualificado nomes ou pseudônimos.

Pessoalmente eu prefiro aliases, e a menos que eu tenho um monte de tabelas, eles tendem a ser única letra queridos.

--seems pretty readable to me ;-)
select a.Text
from Question q
    inner join Answer a
        on a.QuestionId = q.QuestionId

Há também um limite prático de quanto tempo uma seqüência de caracteres Sql podem ser executados - aliases de fazer este limite mais fácil evitar.

Bom

Como já foi mencionado várias vezes antes, é uma boa prática de prefixo todos nomes de coluna para ver facilmente que a coluna pertence ao qual tabela e aliases são mais curtos do que o total de nomes de tabela para que a consulta seja mais fácil de ler e compreender, portanto.Se você usar uma boa aliasing esquema de curso.

E se você criar ou leia o código de uma aplicação, que utiliza armazenados externamente ou gerados dinamicamente nomes de tabela e, em seguida, sem aliases é realmente difícil de dizer ao primeiro olhar, que todos aqueles "%s"es ou outros marcadores de posição de repousar.Não é um caso extremo, por exemplo, muitas aplicações web permite personalizar o nome da tabela de prefixo no momento da instalação.

Se eu escrever uma consulta para mim mesmo (digitando no editor e não através de um designer) eu sempre uso de aliases para o nome da tabela, apenas assim eu só tenho que digitar todo o nome da tabela de uma só vez.

Eu realmente odeio ler consultas geradas por um designer com o nome da tabela completa como um prefixo para cada nome de coluna.

Suponho que a única coisa que realmente fala contra eles é o excesso de abstração.Se você vai ter uma boa idéia do que o alias refere-se a (boa nomenclatura ajuda;'a', 'b', 'c' pode ser bastante problemático, especialmente quando você está lendo a declaração de meses ou anos mais tarde), não vejo nada de errado com aliasing.

Como outros têm dito, associações exigir eles se você estiver usando a mesma tabela (ou visão) várias vezes, mas mesmo fora essa situação, um alias pode servir para esclarecer uma fonte de dados do propósito em um determinado contexto.No alias do nome, tente responder por você está acessando dados em particular, não o que os dados são.

Eu AMO aliases!!!!Eu fiz alguns testes usando vs.não, e tenho visto alguns processamento de ganhos.Meu palpite é o de processamento de ganhos mais elevados, quando você está lidando com conjuntos de dados maiores e complexas consultas aninhadas do que sem.Se eu sou capaz de testar isso, eu vou deixar você saber.

Você precisa deles, se você está indo juntar uma tabela a ela mesma, ou se você usar a coluna novamente em uma subconsulta...

Aliases são grandes, se você considerar que a minha organização tem uma mesa de nomes como:SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub-Sub-Parágrafo...Minha equipe utiliza um padrão bastante definido de abreviaturas, de modo a adivinhação é minimizado.Nós vamos ter de dizer ProgramInformationDataPoint reduzido para pidp, e os envios apenas para o sub.

O bom é que uma vez que você passa dessa maneira e as pessoas concordam com ele, faz com que aqueles que HAYUGE arquivos apenas um pouco menor e mais fácil de gerenciar.Pelo menos para mim, menos caracteres para transmitir a mesma informação parece ir um pouco mais fácil no meu cérebro.

Eu gosto de longa explícita nomes de tabela (não é incomum para ser mais do que 100 caracteres) porque eu uso muitas tabelas e, se os nomes não são explícitas, eu poderia ficar confuso quanto ao que cada tabela armazena.

Então, quando eu escrever uma consulta, que tendem a usar mais curto aliases que fazem sentido no âmbito da consulta e que torna o código muito mais legível.

Eu sempre uso de aliases na minha consulta, e é parte do código de guia em minha empresa.Primeiro de tudo você precisa de apelidos ou nomes de tabela quando há colunas com nomes idênticos a junção de tabelas.Na minha opinião os aliases melhorar a legibilidade em consultas complexas e me permitem ver rapidamente a localização de cada uma das colunas.Nós até mesmo usar aliases de tabela única de consultas, porque a experiência tem mostrado que a única consultas de tabela não ficar tabela única por muito tempo.

IMHO, não importa realmente com a tabela curta de nomes que façam sentido, que eu tenho na ocasião, trabalhou em bancos de dados onde o nome da tabela poderia ser algo como VWRECOFLY ou alguma outra seqüência aleatória (ditada pela política da empresa) que realmente representa os usuários, então, nesse caso eu encontrar aliases realmente ajudar a tornar o código MUITO mais legível.(os usuários.nome de usuário faz muito mais sentido, então, VWRECOFLY.nome de usuário)

Eu sempre uso de aliases, uma vez que, para obter bom desempenho em MSSQL você precisa prefixar com o esquema em todos os momentos.Então, você vai ver um monte de

Selecione Pessoa.Nome A partir de
dbo.Pessoa Como Pessoa

Eu sempre uso de aliases ao escrever consultas.Geralmente eu tentar abreviar o nome da tabela para 1 ou 2 representante de letras.Assim, os Usuários se torna u e debtor_transactions torna-se dt etc...

Ele salva a escrever e ainda carrega algum significado.

Os nomes mais curtos se torna mais legível para mim também.

Se você não usar um alias, é um erro no seu código apenas esperando para acontecer.

SELECT Description -- actually in a
 FROM
 table_a a,
 table_b b
 WHERE
 a.ID = b.ID

O que acontece quando você faz uma coisa pequena, como adicionar uma coluna chamada Descrição para Table_B.Isso mesmo, você obterá um erro.A adição de uma coluna não precisa quebrar nada.Eu nunca vejo a escrever bom código, erro de código livre, como um mal necessário.

Aliases são necessários ao associar tabelas com colunas que têm nomes idênticos.

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