1
0
Fork 0
mirror of https://github.com/treffynnon/sqlstyle.guide.git synced 2025-03-09 12:49:51 -05:00

optimizing translation

This commit is contained in:
Unknown 2017-04-18 14:52:19 -03:00
parent 6b4e37f430
commit e88a310d57

View file

@ -10,7 +10,7 @@ alterações ou correções de bugs, por favor abra uma [issue][issue] ou faça
Estas diretrizes foram desenhadas em conformidade com o livro Estas diretrizes foram desenhadas em conformidade com o livro
[SQL Programming Style][celko] de Joe Celko, para serem adotadas mais facilmente [SQL Programming Style][celko] de Joe Celko, para serem adotadas mais facilmente
por equipes que já leram o livro. Em relação ao livro, este guia é um pouco mais por equipes que já leram o livro. Em relação ao livro, este guia é um pouco mais
opiniativo em algumas áreas, enquanto em outras, é mais relaxado. É certamente opiniativo em algumas áreas e mais tranquilo em outras. Certamente é
mais sucinto que [o livro de Celko][celko], que contém anedotas e racicínios por mais sucinto que [o livro de Celko][celko], que contém anedotas e racicínios por
trás de cada regra. trás de cada regra.
@ -31,10 +31,10 @@ Baseado no trabalho em [http://www.sqlstyle.guide][sqlstyleguide].
a legibilidade do código. a legibilidade do código.
* Armazene informações de data e hora compatíveis com [ISO-8601][iso-8601] * Armazene informações de data e hora compatíveis com [ISO-8601][iso-8601]
(`YYYY-MM-DD HH:MM:SS.SSSSS`). (`YYYY-MM-DD HH:MM:SS.SSSSS`).
* Por questões de portabilidade, tente utilizar apenas funções SQL padrão ao * Por questões de portabilidade, tente utilizar apenas funções SQL padrão no lugar
invés de funções específicas de servidores SQL de outros fornecedores. de funções específicas de servidores SQL de fornecedores.
* Mantenha o código sucinto e desprovido de SQL redundante—como adição de aspas * Mantenha o código sucinto e desprovido de SQL redundante—como adição de aspas
e parênteses desencessários, ou cláusulas WHERE que podem ser derivadas. e parênteses desnecessários, ou cláusulas WHERE que podem ser derivadas.
* Inclua comentários no código SQL quando necessário. Utilize o estilo C abrindo * Inclua comentários no código SQL quando necessário. Utilize o estilo C abrindo
com `/*` e fechando com `*/` onde possível. Onde não for, preceda os com `/*` e fechando com `*/` onde possível. Onde não for, preceda os
comentários com `--` e termine com uma nova linha. comentários com `--` e termine com uma nova linha.
@ -55,7 +55,7 @@ UPDATE file_system
### Evite ### Evite
* CamelCase—difícil de se analisar rapidamente. * CamelCase—difícil de se analisar rapidamente.
* Prefixos descritivos ou notação Húngara como `sp_` ou `tbl`. * Prefixos descritivos ou notação húngara como `sp_` ou `tbl`.
* Plurais—utilize termos coletivos onde possível. Por exemplo, * Plurais—utilize termos coletivos onde possível. Por exemplo,
`pessoal` ao invés de `funcionários` ou `pessoa` no lugar de `indivíduos`. `pessoal` ao invés de `funcionários` ou `pessoa` no lugar de `indivíduos`.
* Identificadores entre aspas—caso necessário, utilize as aspas duplas SQL92 * Identificadores entre aspas—caso necessário, utilize as aspas duplas SQL92
@ -69,7 +69,7 @@ UPDATE file_system
### Geral ### Geral
* Tenha certeza que o nome é único e não é uma [palavra-chave reservada][reserved-keywords]. * Tenha certeza que o nome é único e não é uma [palavra-chave reservada][reserved-keywords].
* Matenha o tamanho máximo de 30 bytes—na prática isso são * Matenha o tamanho máximo em 30 bytes—na prática isso são
30 caracateres, a não ser que esteja utilizando um conjunto de 30 caracateres, a não ser que esteja utilizando um conjunto de
caracateres multi-byte. caracateres multi-byte.
* Nomes devem começar com uma letra e não devem terminar com underscore. * Nomes devem começar com uma letra e não devem terminar com underscore.
@ -78,8 +78,8 @@ UPDATE file_system
se ler. se ler.
* Utilize underscores onde você normalemnte incluiria um espaço * Utilize underscores onde você normalemnte incluiria um espaço
(primeiro nome se torna `primeiro_nome`). (primeiro nome se torna `primeiro_nome`).
* Evite abreviações. Se precisar utilizá-las, tenha certeza de que elas * Evite abreviações. Se precisar utilizá-las, tenha certeza de que serão
serão amplamente compreendidas. amplamente compreendidas.
```sql ```sql
SELECT first_name SELECT first_name
@ -88,13 +88,13 @@ SELECT first_name
### Tabelas ### Tabelas
* Utilize um nome coletivo ou de forma menos ideal, plurais. Por exemplo, * Utilize um nome coletivo ou menos idealmente, plurais. Por exemplo,
(em ordem de preferência) `pessoal` e `empregados`. (em ordem de preferência) `pessoal` e `empregados`.
* Não utilize prefixos com `tbl` ou qualquer outro prefixo descritivo ou notação * Não utilize prefixos com `tbl` ou qualquer outro prefixo descritivo ou notação
húngara. húngara.
* Nunca dê a uma tabela o mesmo nome de uma das suas colunas e vice versa. * Nunca dê a uma tabela o mesmo nome de uma das suas colunas e vice versa.
* Evite, quando possível, concatenar dois nomes de tabelas para criar o nome de * Evite quando possível concatenar dois nomes de tabelas para criar o nome de
uma tabela de relacionamento. Ao invés de utilizar `mecanicos_de_carro`, uma tabela de relacionamento. No lugar de `mecanicos_de_carro`,
prefira `servicos`. prefira `servicos`.
### Colunas ### Colunas
@ -102,8 +102,8 @@ SELECT first_name
* Sempre utilize nomes no singular. * Sempre utilize nomes no singular.
* Quando possível, evite usar apenas `id` como identificador primário da tabela. * Quando possível, evite usar apenas `id` como identificador primário da tabela.
* Não adicione uma coluna como o mesmo nome da tabela e vice versa. * Não adicione uma coluna como o mesmo nome da tabela e vice versa.
* Sempre utilize caixa baixa, exceto onde capitalização fizer sentido, como * Sempre utilize caixa baixa, exceto onde capitalização fizer sentido (como
em nomes próprios. em nomes próprios).
### Aliasing ou correlações ### Aliasing ou correlações
@ -158,11 +158,11 @@ onde for apropriado.
Sempre utilize caixa alta para [palavras-chave reservadas][reserved-keywords], Sempre utilize caixa alta para [palavras-chave reservadas][reserved-keywords],
como `SELECT` e `WHERE`. como `SELECT` e `WHERE`.
É melhor evitar palavras-chave reservadas abreviadas; utilize suas variações com É melhor evitar palavras-chave abreviadas; utilize suas variações por extenso
nome completo (use `ABSOLUTE` ao invés de `ABS`). (use `ABSOLUTE` ao invés de `ABS`).
Não utilize palavras-chave de um fornecedor específico de banco de dados Não utilize palavras-chave de um fornecedor específico de banco de dados. Onde for
onde for possível utilizar palavras-chave ANSI SQL que tenham a mesma função. possível, utilize palavras-chave reservadas ANSI SQL que tenham a mesma função.
Isso ajuda na portabilidade do código. Isso ajuda na portabilidade do código.
```sql ```sql
@ -173,16 +173,15 @@ SELECT model_num
### Espaços em branco ### Espaços em branco
Para tornar o código mais fácil de ler, é importante que o cumprimento correto Para tornar o código mais fácil de ler, é importante o uso correto do espaçamento.
de espaçamento esteja sendo utilizado. Não coloque código ou remova espaços Não insira código ou remova espaços em linguagem natural.
naturais da linguagem.
#### Espaços #### Espaços
Espaços devem ser utilizados para alinhar o código, de forma que as palavras-chave Espaços devem ser utilizados para alinhar o código, de forma que as palavras-chave
terminem sempre no mesmo limite de caracteres. Isso forma um rio tipográfico, fiquem sempre no mesmo limite. Isso forma um rio tipográfico, tornando fácil visualizar
tornando fácil bater olho, visualizar o código e separar as palavras-chave dos o código e separar as palavras-chave dos detalhes de implementação.
detalhes de implementação. Rios são [ruins na tipografia][rivers], mas úteis aqui. Rios são [ruins na tipografia][rivers], mas úteis aqui.
```sql ```sql
(SELECT f.species_name, (SELECT f.species_name,
@ -204,15 +203,15 @@ detalhes de implementação. Rios são [ruins na tipografia][rivers], mas úteis
GROUP BY b.species_name, b.observation_date) GROUP BY b.species_name, b.observation_date)
``` ```
Note que o `SELECT`, `FROM`, etc. estão todos a direita, alinhados, enquanto Note que o `SELECT`, `FROM`, etc. estão todos alinhados à direita, enquanto
os nomes das colunas em si e os detalhes específicos de implementação estão os nomes das colunas em si e os detalhes de implementação estão alinhados à
alinhados à esquerda. esquerda.
Sempre inclua espaços: Sempre inclua espaços:
* antes de depois do símbolo igual (`=`) * antes e depois do símbolo igual (`=`)
* depois de vírgulas (`,`) * depois de vírgulas (`,`)
* ao redor de apóstrofes (`'`) caso não estejam entre parênteses, com uma vírgula * ao redor de apóstrofes (`'`) caso não estejam entre parênteses ou com uma vírgula
ou ponto e vírgula. ou ponto e vírgula.
```sql ```sql
@ -227,15 +226,15 @@ SELECT a.title, a.release_date, a.recording_date
Sempre inclua novas linhas/espaço vertical: Sempre inclua novas linhas/espaço vertical:
* antes de `AND` ou `OR` * antes de `AND` ou `OR`
* depois de vírgulas, separando as queries para uma leitura mais fácil * depois de vírgulas, separando as queries para facilitar a leitura
* depois de cada definição de palavras-chave * depois de cada definição de palavras-chave
* depois de um ponto, quando seperando múltiplas colunas em grupos lógicos * depois de um ponto, quando seperando múltiplas colunas em grupos lógicos
* para separar código em seções relacionadas, o que ajuda na legibilidade de * para separar código em seções relacionadas, o que ajuda na legibilidade de
grandes pedaços de código. grandes pedaços de código.
Manter todas as palavras-chave alinhadas ao lado direito e os valores alinhados Manter todas as palavras-chave alinhadas à direita e os valores alinhados
ao lado esquerdo, cria uma lacuna no meio da query. Isso torna muito mais fácil à esqueda cria uma lacuna no meio da query. Isso torna a análise da definição
e rápido a análise da definição da query. da query mais fácil e rápida.
```sql ```sql
INSERT INTO albums (title, release_date, recording_date) INSERT INTO albums (title, release_date, recording_date)
@ -259,13 +258,13 @@ SELECT a.title,
### Indentação ### Indentação
Para garantir que o SQL fique legível, é importante que padrões de indentação Para garantir que o SQL seja legível, é importante que padrões de indentação
sejam seguidos. sejam seguidos.
#### Joins #### Joins
Joins devem ser indentados do outro lado do rio e agrupados com uma nova linha Joins devem ser indentados do outro lado do rio tipográfico e agrupados
quando necessário. com uma nova linha quando necessário.
```sql ```sql
SELECT r.last_name SELECT r.last_name
@ -281,10 +280,10 @@ SELECT r.last_name
#### Subqueries #### Subqueries
Subqueries também devem ser alinhadas do lado direito do rio e então seguir o Subqueries também devem ser alinhadas à direita do rio e seguir o mesmo estilo
mesmo estilo de qualquer outra query. As vezes faz sentido ter o parêntese de de qualquer outra query. As vezes faz sentido ter o parêntese de fechamento em
fechamento em uma nova linha na mesma posição que o parêntese de abertura foi uma nova linha na mesma posição que o parêntese de abertura foi definido—isso é
definido—isso é especialmente importante onde você tem subqueries aninhadas. especialmente importante onde você tem subqueries aninhadas.
```sql ```sql
SELECT r.last_name, SELECT r.last_name,
@ -307,9 +306,9 @@ SELECT r.last_name,
* Onde um valor precisa ser interpretado antes de ser retornado pelo banco de * Onde um valor precisa ser interpretado antes de ser retornado pelo banco de
dados, use a expressão `CASE`. Cláusulas `CASE` podem ser aninhadas para formar dados, use a expressão `CASE`. Cláusulas `CASE` podem ser aninhadas para formar
estruturas lógicas mais complexas. estruturas lógicas mais complexas.
* Evite o uso de cláusulas `UNION` e tabelas temporários quando possível. Se * Evite o uso de cláusulas `UNION` e tabelas temporárias quando possível. Se
o schema pode ser otimizado, removendo a dependência desses recursos, então o schema pode ser otimizado removendo a dependência desses recursos, é melhor
é provável que essa otimização deve ser feita. otimizar.
```sql ```sql
SELECT CASE postcode SELECT CASE postcode
@ -324,19 +323,19 @@ SELECT CASE postcode
## Sintaxe Create ## Sintaxe Create
Enquanto declarando informação do schema, é importante manter código legível Enquanto declarando informação do schema, é importante manter um código humanamente
por humanos. Para facilitar isso, tenha certeza que as definições das colunas legível. Para garantir isso, assegure-se de que as definições das colunas estejam
estão ordenadas e agrupadas onde fizer sentido. ordenadas e agrupadas onde fizer sentido.
Indente definições de coluna com quatro (4) espaços dentro da definição `CREATE`. Indente definições de coluna com quatro (4) espaços dentro da definição `CREATE`.
### Escolhendo tipos de dados ### Escolhendo tipos de dados
* Onde possível, não utilize tipos de dados específicos de certos tipos de banco * Onde possível, não utilize tipos de dados específicos de fornecedores de banco
de dados—eles não são portáteis e podem não estar disponíveis em versões antigas de dados—esses formatos geralmente não são portáteis e podem estar indisponíveis
do mesmo banco de dados. em versões antigas do banco de dados do mesmo fornecedor.
* Apenas utilize os tipos `REAL` ou `FLOAT` onde é estritamente necessário para * Utilize os tipos `REAL` ou `FLOAT` apenas onde o uso de pontos flutuantes for
utilizar pontos flutuantes, do contrário prefira sempre `NUMERIC` e `DECIMAL`. estritamente necessário, do contrário prefira sempre `NUMERIC` e `DECIMAL`.
Erros de ponto flutuante são um transtorno! Erros de ponto flutuante são um transtorno!
### Especificando valores padrão ### Especificando valores padrão