Eu diria isso em primeiro lugar:seja consistente.
Eu acho que você está quase lá com as convenções que você delineou em sua pergunta. Porém, 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 tem colunas foo_id
e another_foo_id
ambos referenciam o foo
tabela foo_id
coluna. Você pode querer considerar como lidar com isso. Este é um pouco de um caso de canto embora! Ponto 4 - Semelhante ao ponto 3. Você pode querer 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ê quiser 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 de banco de dados que você queira realizar. Por exemplo, você pode querer apenas chamar um índice
foo_bar_idx1
ou foo_idx1
- totalmente até você, mas vale a pena considerar. Nomes de colunas singulares x plurais
Pode ser uma boa ideia abordar a questão espinhosa do plural versus único nos nomes das colunas, bem como nos nomes das tabelas. Esse assunto geralmente causa grandes debates na comunidade DB. Eu ficaria com formas singulares para nomes de tabelas e colunas. Lá. Eu disse isso.
O principal aqui é, claro, a consistência!