100 SQLs erradas ao ano e um único caractere

(Last Updated On: 6 de abril de 2017)

Quer armazenar seus LIVRO no banco? Ou quer buscar um PRODUTOS no banco?

Minha orelha já dói e a sua?

Quando juntamos um monte de livro… temos livros, portanto tabelas levam o nome no plural:

create table Livros (...);

Quando colocamos um livro entre os que já existem, colocamos um livro nos… livros. Removemos um livro dentre os… livros:

insert into Livros values (1010, 'Swift');
delete from Livros where id = 1010;

Fica um padrão pra todo mundo na empresa, e não fica aquele sofrimento para relembrar… nesse projeto foi singular ou plural?

Regra geral, nome da tabela vai no plural.

Desafio para a próxima: qual a ordem dos meus usuarios?

select nome from Usuarios;

E que tal começar aprender sobre banco de dados hoje mesmo? Gostou? Então dê uma olhada nos nossos cursos de SQL e NoSQL

Fique por dentro

Tech Education Leader no Alura

  • Alexandre o Guma

    Bom artigo Guilherme!
    Para nomes compostos como: Categorias de Produto, formas de pagamento, motivos de cancelamento, a definição das tabelas ficaria: categorias_produtos, formas_pagamentos, motivos_cancelamentos?

    Outra hipótese para a tabela ‘Tipos de Pão’, seria ‘tipos_paes’? Neste caso o plural da palavra muda um pouco a pronuncia e escrita.

    Você usa a regra de plural em todos os casos?

    Abraço.

    • Guilherme Silveira

      Olá Alexandre, costumo ir pela abordagem categorias_de_produto, formas_de_pagamento etc. Isto é, o primeiro no plural (pois temos vários).

      []

      • Alexandre o Guma

        Legal Guilherme. Você então usa os artigos também né? Por exemplo categorias_de_produto ao invés de categorias_produto, neste caso existe o artigo ‘de’ separando as duas palavras. Para nome de Classes, você usa a mesa abordagem? Por exemplo: CategoriasDeProduto, FormasDePagamento.

  • Jaciel Dias

    Ótima dica!
    E para os atributos da tabela Guilherme, seria interessante utilizar um prefixo, para a tabela PRODUTOS por exemplo: produto_id, produto_descrição, produto_preco e etc?

    • Alexandre o Guma

      @jacieldias:disqus eu costumo não utilizar prefixo pelo fato de que se a tabela é de produto, qual é o sentido você colocar produto_id, produto_preco? O nome da tabela já diz o que ela guarda. Diferente se o ID da tabela for chave estrangeira em outra tabela, aí sim faz sentido você colocar produto_id ou id_produto. A desvantagem desse modelo que te falei é que torna-se necessário em alguns casos colocar alias para algumas colunas. Por exemplo a tabela PRODUTO tem o ID da tabela TIPO_PRODUTO como chave estrangeira. Tanto a tabela PRODUTO como a tabela TIPO_PRODUTO tem a coluna NOME, então no caso de um select com inner join de PRODUTO com TIPO_PRODUTO você tem que fazer um alias na coluna NOME para não se confundir e não ter problema ao manipular esse dado por exemplo com um PHP ou outra linguagem. Neste caso então eu defino alias para uma das colunas ou para as duas. Outra prática que já vi e achei estranho é prefixo de tipo de dado. Digamos que a coluna armazena texto (varchar), aí é definido que se for texto tem q ter o prefixo c, se for number ai usa n, então ficaria c_nome, n_idade, etc… Não é mais facil o cara dar um desc na tabela e ver exatamente o tipo de dado? É isso aí

  • ooredroxoo

    Em relação ao desafio da Ordem dos usuários vale lembrar que o modelo relacional não possui ordem e que a ordenação é um plus de programas DBMS incluído no SQL.

Próximo ArtigoDefinindo a dimensão ideal para o layout do meu site