Há muito tempo temos padrões de codificação para nosso código .Net e parece haver várias fontes respeitáveis de idéias sobre como aplicá-las e que evoluem com o tempo.
Eu gostaria de poder reunir alguns padrões para o SQL que são escritos para uso por nossos produtos, mas parece não haver recursos disponíveis no consenso sobre o que determina o SQL bem escrito?
coding-standards
sql-server
Rowland Shaw
fonte
fonte
Respostas:
Na minha experiência, as principais coisas que eu procuraria seriam:
Nomeação de tabela e coluna - verifique se você usa ID, Referência ou Número para colunas do tipo ID, singular ou plural para nomes (plurais são comuns para nomes de tabela - por exemplo, THINGS, singular para nomes de coluna - por exemplo, THING_ID). Para mim, as coisas mais importantes aqui são a consistência, que evita que as pessoas percam tempo (por exemplo, você não encontra erros de digitação em que alguém colocou THING como um nome de tabela porque você sabe intuitivamente que os nomes das tabelas nunca são singulares).
Todas as criações devem incluir uma gota (condicional ao objeto existente) como parte de seu arquivo. Você também pode querer incluir permissões de concessão, até você.
As seleções, atualizações, inserções e exclusões devem ter um nome de coluna, um nome de tabela e um cláusula where / order by cláusula por linha, para que possam ser comentados facilmente um de cada vez durante a depuração.
Prefixo para tipos de objetos, especialmente onde eles podem ser confundidos (portanto, v é a visualização mais importante). Não tenho certeza se ele ainda se aplica, mas costumava ser ineficiente para procedimentos armazenados diferentes dos procedimentos do sistema iniciarem sp_. Provavelmente, a melhor prática para diferenciá-los de qualquer maneira usp_ foi o que eu usei mais recentemente.
Um padrão indicando como o nome de um gatilho deve incluir se é para atualização / inserção / exclusão e a tabela à qual ele se aplica. Não tenho um padrão preferido, mas essas informações são críticas e devem ser fáceis de encontrar.
Padrão para propriedade de objetos em versões anteriores do SQL Server ou no esquema em que ele deve existir para 2005 e versões posteriores. É sua decisão o que é, mas você nunca deve adivinhar quem é o dono de algo / onde ele mora) e, sempre que possível, o esquema / proprietário deve ser incluído nos scripts CREATE para minimizar a possibilidade de criação incorreta.
Um indicador de que qualquer pessoa que use SELECT * será obrigada a beber um litro de sua própria urina.
A menos que haja uma razão realmente boa (que não inclua preguiça de sua parte), tenha, imponha e mantenha relações de chave primária / chave estrangeira desde o início. Afinal, é um banco de dados relacional, não um arquivo simples, e os registros órfãos tornarão sua vida de suporte um inferno em algum momento. Além disso, esteja ciente de que, se você não fizer isso agora, posso prometer que nunca conseguirá implementá-lo após o evento, porque é 10 vezes o trabalho depois que você tiver dados (o que será um pouco estragado porque você nunca aplicou os relacionamentos corretamente).
Tenho certeza de que perdi algo, mas para mim são eles que realmente oferecem benefícios reais em um número decente de situações.
Mas, como em todos os padrões, menos é mais. Quanto mais longos os seus padrões de codificação, menor a probabilidade de as pessoas os lerem e usarem. Depois que você passar por algumas páginas bem espaçadas, comece a tentar descartar as coisas que realmente não fazem diferença prática no mundo real, porque você está apenas reduzindo a chance de as pessoas fazerem isso.
EDIT: duas correções - incluindo esquemas na seção de propriedade, removendo uma dica incorreta sobre a contagem (*) - veja os comentários abaixo.
fonte
Isso porque não há consenso. Apenas como exemplo, eu teria respostas diferentes para pelo menos metade dos itens da lista de Jon Hopkins e, com base na quantidade de detalhes em sua lista, é um palpite seguro de que ambos trabalhamos com bancos de dados para viver.
Dito isto, um padrão de codificação ainda é uma coisa boa a se ter, e um padrão que todos na equipe compreendem e concordam é uma coisa melhor, porque esse padrão provavelmente será seguido.
fonte
Além da resposta de Jon Hopkins ...
Objetos internos e externos separados
Para objetos internos, torne-os explícitos se "não padrão"
Use esquemas para simplificar nomeação + permissões. Exemplos:
fonte