Aqui está como eu faço:
- Os nomes das tabelas são minúsculas, as utilizações sublinhados para separar palavras, e são singular (por exemplo
foo
,foo_bar
, etc. - Geralmente (nem sempre) tenho um PK de incremento automático. I usar a seguinte convenção:
tablename_id
(por exemplofoo_id
,foo_bar_id
, etc.). - Quando uma tabela contém uma coluna que é uma chave estrangeira, apenas copio o nome da coluna dessa chave de qualquer tabela da qual ela veio. Por exemplo, digamos que a tabela
foo_bar
tenha o FKfoo_id
(ondefoo_id
está o PK defoo
). - Ao definir FKs para impor a integridade referencial, eu uso o seguinte:
tablename_fk_columnname
(por exemplo, avançar o exemplo 3, seriafoo_bar_foo_id
). Como essa é uma combinação de nome de tabela / nome de coluna, é garantido que seja exclusivo no banco de dados. - Eu ordeno as colunas assim: PKs, FKs e o restante das colunas alfabeticamente
Existe uma maneira melhor e mais padrão de fazer isso?
mysql
naming-conventions
mysql-workbench
StackOverflowNewbie
fonte
fonte
id_tableB
=> oh não coluna diferente de nomeid
, a consistência deid_tableB
=>id_tableB
apenas parece mais puro ... ou como OP faz isso:foo_id
=>foo_id
em vez defoo_id
=>id
Respostas:
Eu diria que em primeiro lugar: seja consistente.
Acho que você está quase lá com as convenções descritas na sua pergunta. Alguns comentários:
Os pontos 1 e 2 são bons, eu acho.
Ponto 3 - infelizmente isso nem sempre é possível. Pense em como você lidaria com uma única tabela
foo_bar
que possui colunasfoo_id
eanother_foo_id
ambas referenciam a coluna dafoo
tabelafoo_id
. Você pode considerar como lidar com isso. Este é um caso de esquina!Ponto 4 - Semelhante ao ponto 3. Você pode introduzir um número no final do nome da chave estrangeira para ter mais de uma coluna de referência.
Ponto 5 - eu evitaria isso. Ele fornece pouco e se tornará uma dor de cabeça quando você desejar adicionar ou remover colunas de uma tabela posteriormente.
Alguns outros pontos são:
Convenções de nomenclatura de índice
Você pode querer introduzir uma convenção de nomenclatura para índices - isso será uma grande ajuda para qualquer trabalho de metadados do banco de dados que você queira executar. Por exemplo, você pode querer chamar um índice
foo_bar_idx1
oufoo_idx1
- totalmente com você, mas vale a pena considerar.Nomes de colunas singulares vs plurais
Pode ser uma boa idéia abordar a questão espinhosa do plural vs único nos nomes de suas colunas, bem como no (s) nome (s) de sua tabela. Esse assunto geralmente causa grandes debates na comunidade do DB. Eu ficaria com formas singulares para nomes de tabelas e colunas. Lá. Eu já disse isso.
O principal aqui é, obviamente, consistência!
fonte
documenttype
oudocument_type
. Eu preferiria o último, mas na maioria das vezes tenho um relacionamento de muitos para muitos e preciso de uma tabela parecidadocument_document_type
. Alguma sugestão de como lidar com isso?Consistência é a chave para qualquer padrão de nomenclatura. Contanto que seja lógico e consistente, você estará 99% lá.
O padrão em si é uma preferência muito pessoal - portanto, se você gosta do seu padrão, execute-o.
Para responder sua pergunta completamente - não, o MySQL não possui uma convenção / padrão de nomenclatura preferido, portanto, fazer o seu próprio é bom (e o seu parece lógico).
fonte
O MySQL tem uma breve descrição de suas regras mais ou menos estritas:
https://dev.mysql.com/doc/internals/en/coding-style.html
Estilo de codificação mais comum para MySQL por Simon Holywell:
http://www.sqlstyle.guide/
Veja também esta pergunta: Existem diretrizes de estilo de codificação publicadas para SQL?
fonte
Felizmente, os desenvolvedores de PHP não são "fanáticos pelo caso Camel", como algumas comunidades de desenvolvimento que eu conheço.
Suas convenções parecem boas.
Contanto que sejam a) simples eb) consistentes - não vejo problemas :)
PS: Pessoalmente, acho que 5) é um exagero ...
fonte
Resposta Simples: NÃO
Bem, pelo menos uma convenção de nomenclatura, como tal, incentivada pelo Oracle ou pela comunidade, não, no entanto, basicamente você deve estar ciente de seguir as regras e os limites para identificadores, como indicado na documentação do MySQL: https://dev.mysql.com /doc/refman/8.0/en/identifiers.html
Sobre a convenção de nomenclatura que você segue, acho que está ok, apenas o número 5 é um pouco desnecessário, acho que a maioria das ferramentas visuais para gerenciar bancos de dados oferece uma opção para classificar nomes de colunas (eu uso o DBeaver e ele possui), então se o proponente estiver tendo uma boa apresentação visual da sua mesa, você pode usar esta opção que mencionei.
Por experiência pessoal, eu recomendaria o seguinte:
lower_case_table_names
servidor não está configurado corretamente e o servidor começa a gerar erros simplesmente ignorando o padrão camelCase ou PascalCase (problema de diferenciação de maiúsculas e minúsculas).E o nome "Plural vs Singular"? Bem, essa é mais uma situação de preferências pessoais. No meu caso, tento usar nomes plurais para tabelas porque acho que uma tabela como uma coleção de elementos ou um pacote contém elementos; portanto, um nome plural faz sentido para mim; e nomes singulares para colunas porque vejo colunas como atributos que descrevem singularmente esses elementos da tabela.
fonte