Pretty Code Blog

Just another weblog about development

19  06 2009

Nomes de tabelas no plural ou singular?

Definir o nome de uma tabela de banco de dados é algo muito simples, mas que pode virar um bicho de sete cabeças. Quais relacionamentos representa? De que forma será utilizada? Por humano ou só por máquina??

Dentre as dúvidas, uma que me pegou nessa semana é a utilização de singular ou plural. Por exemplo, uma tabela para cadastro de pessoas… Você nomeia “Pessoa” ou “Pessoas”???

Como a tabela representa um grupo de dados em que cada linha será uma pessoa, nada mais justo que nomear “Pessoas”. Mas… Se você for utilizar a tabela em um banco de dados relacional em que cada tabela será convertida na classe do seu objeto, não faz sentido você ter uma classe “Pessoas”. Afinal, o objeto é uma instância de UMA pessoa. O plural seria uma coleção de pessoas, ou ainda, o conjunto de todas as pessoas do sistema. Chegamos novamente na tabela em plural.

Eu sempre utilizei classes no singular e tabelas no plural, pelo motivo explicado acima. Mas ontem tiveram que sair renomeando tabelas do plural para o singular pois elas são utilizadas por um framework (symphony) que adota como nome das classes dos objetos relacionais o nome da própria tabela. Ou seja, ele gerou todas as classes no plural.

Pode não parecer um grande problema, mas não faz sentido você fazer um new Pessoas() para instanciar um único elemento. Pela semântica isso não é correto, e como a qualidade de código é uma das premissas a ser buscada e seguida… Lá vamos nós trocar nomes das tabelas… E atualizar todos os arquivos que utilizam esse nome…

E você? Como utiliza o nome de suas tabelas?


2 Responses to “Nomes de tabelas no plural ou singular?”

  1. Bom dia caro colega.

    Me deparei estes dias com o mesmo empasse. Porém concluí o seguinte.

    Nomes de tabelas devem ser no plural pois as mesmas armazenam conjuntos de registros ao qual chamamos de tuplas.
    Nomes de classes devem ser no plural pois as mesmas nos retornam coleções de entidades. A sua classe Pessoa certamente não foi feita para retornar uma unica entidade e sim coleções provenientes dos registros da tabela pessoas.
    Enquanto o objeto instanciado na classe esse sim deve ser no singular uma vez que conterá a entidade Pessoa que certamente foi carregada através de seu método acessor.
    Ex.

    Pessoas objPessoa = new Pessoas();
    objPessoa.LoadByID(12);

    No mais, um forte abraço.

    [Responder]

  2. Salve amiga,

    Eu acho mais fácil e prático deixar tudo no singular. Concordo com relação a classe no singular, afinal a classe é a definição de como será um objeto criado a partir dela. Se ela retornar uma coleção, quem retorna é o objeto e não a classe.

    Quanto as tabelas, pelo menos pra mim, é mais cômodo deixar no singular, ainda mais se for usar o português para nomeá-las. A leitura dos modelos fica muito mais fácil quando está no singular do que no plural. Afinal, é de conhecimento comum de que uma tabela tem uma coleção de informações, não necessitando que seu nome indique esse fato.

    O último argumento para deixar tudo no singular é o que todo gerente de projeto gosta: economiza tempo! ;-)

    um super abraço.

    [Responder]

Leave a Reply

CAPTCHA Image

« »