Tenho lido algumas perguntas / respostas no StackOverflow tentando encontrar a 'melhor', ou devo dizer, a forma mais aceita de nomear tabelas em um banco de dados.
A maioria dos desenvolvedores tende a nomear as tabelas de acordo com a linguagem que requer o banco de dados (JAVA, .NET, PHP, etc). No entanto, sinto que isso não está certo.
A forma como tenho nomeado tabelas até agora está fazendo algo como:
doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents
As coisas que estou preocupado são:
- Legibilidade
- Identificação rápida do módulo de origem da mesa (médicos || pacientes)
- Fácil de entender, para evitar confusões.
Eu gostaria de ler qualquer opinião sobre as convenções de nomenclatura. Obrigado.
database
database-design
MarioRicalde
fonte
fonte
Normalmente, uso PascalCase e as entidades são singulares:
Ele imita as convenções de nomenclatura para classes em meu aplicativo, mantendo tudo muito organizado, limpo, consistente e fácil de entender para todos.
fonte
Suporta a natureza insensível a maiúsculas e minúsculas
Underscores_Scheme
. O software moderno, entretanto, suporta qualquer tipo de esquema de nomenclatura. No entanto às vezes alguns bugs desagradáveis, erros ou fator humano podem levar aUPPERCASINGEVERYTHING
que aqueles que selecionaram ambosPascal_Case
eUnderscore_Case
esquema vivam com todos os seus nervos em bom estado.fonte
Uma agregação da maioria dos itens acima:
Depois, você pode traduzir facilmente (até mesmo automaticamente) nomes entre ambientes.
Mas eu acrescentaria outra consideração: você pode descobrir que existem outros fatores quando você muda de uma classe em seu aplicativo para uma tabela em seu banco de dados: o objeto de banco de dados tem visualizações, gatilhos, procs armazenados, índices, restrições, etc - que também precisa de nomes. Então, por exemplo, você pode se ver acessando apenas tabelas por meio de visualizações que normalmente são apenas um simples "selecionar * de foo". Eles podem ser identificados como o nome da tabela com apenas um sufixo '_v' ou você pode colocá-los em um esquema diferente. O objetivo dessa camada de abstração simples é que ela pode ser expandida quando necessário para permitir alterações em um ambiente para evitar impacto no outro. Isso não quebraria as sugestões de nomenclatura acima - apenas mais algumas coisas a serem consideradas.
fonte
Eu uso sublinhados. Eu fiz um projeto Oracle há alguns anos, e parecia que a Oracle forçava todos os meus nomes de objeto para maiúsculas, o que meio que estraga qualquer esquema de caixa. Não sou realmente um cara da Oracle, então talvez houvesse uma maneira de contornar isso que eu não sabia, mas me fez usar sublinhados e nunca mais voltei.
fonte
Como a questão não é específica para uma plataforma ou mecanismo de banco de dados em particular, devo dizer que, para obter o máximo de portabilidade, você deve sempre usar nomes de tabelas em letras minúsculas.
/ [a-z _] [a-z0-9 _] * / é realmente o único padrão de nomes que se traduz perfeitamente entre diferentes plataformas. Alfa-numérico minúsculo + sublinhado sempre funcionam de forma consistente.
Conforme mencionado em outro lugar, os nomes das relações (tabelas) devem ser singulares: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html
fonte
Eu tendo a concordar com as pessoas que dizem que depende das convenções da linguagem que você está usando (por exemplo, PascalCase para C # e snake_case para Ruby).
Mas nunca camelCase.
fonte
Depois de ler muitas outras opiniões, acho muito importante usar as convenções de nomenclatura da linguagem. A consistência é mais importante do que as convenções de nomenclatura apenas se você (e será) o único desenvolvedor do aplicativo. Se você deseja legibilidade (o que é de grande importância), é melhor usar as convenções de nomenclatura para cada idioma. No MySQL, por exemplo, não sugiro o uso de CamelCase, pois nem todas as plataformas diferenciam maiúsculas de minúsculas. Portanto, aqui o sublinhado fica melhor.
fonte
camelCase
paracamelcase
. Portanto, ter um caso de cobra é muito melhor. Também sobreModern software however supports any kind of naming scheme
você não tem qualquer garantia de que yop escreverá o código para a última versão do software. Especialmente para a atualização da versão do banco de dados, não é trivial quando você pensa sobre os custos de regressão.Estes são meus cinco centavos. Cheguei à conclusão de que, se bancos de dados de fornecedores diferentes são usados para um projeto, existem duas melhores maneiras:
O motivo é que alguns bancos de dados converterão todos os caracteres em maiúsculas e alguns em minúsculas. Então, se você tem
myTable
vai se tornarMYTABLE
oumytable
quando vai trabalhar com DB.fonte
Infelizmente, não há uma "melhor" resposta para essa pergunta. Como @David afirmou, a consistência é muito mais importante do que a convenção de nomenclatura.
fonte
há uma grande variabilidade em como separar palavras, então você terá que escolher o que quiser mais; mas, ao mesmo tempo, parece que há quase um consenso de que o nome da tabela deve ser singular.
fonte
As convenções de nomenclatura existem no escopo de um idioma, e idiomas diferentes têm convenções de nomenclatura diferentes.
SQL não diferencia maiúsculas de minúsculas por padrão; então, snake_case é uma convenção amplamente usada. SQL também oferece suporte a identificadores delimitados; então, caso misto em uma opção, como camelCase (Java, onde campos == colunas) ou PascalCase (C #, onde tabelas == classes e colunas == campos). Se o seu mecanismo de banco de dados não suporta o padrão SQL, esse é o problema. Você pode decidir conviver com isso ou escolher outro motor. (E por que C # tinha que ser diferente é um ponto de agravamento para aqueles de nós que codificam em ambos.)
Se você pretende usar apenas um idioma em seus serviços e aplicativos, use as convenções desse idioma em todas as camadas. Caso contrário, use as convenções mais amplamente usadas do idioma no domínio em que esse idioma é usado.
fonte