Em nosso grupo de desenvolvimento, temos um intenso debate sobre a convenção de nomenclatura para chaves primárias e estrangeiras. Existem basicamente duas escolas de pensamento em nosso grupo:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
ou
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
Prefiro não duplicar o nome da tabela em nenhuma das colunas (portanto, prefiro a opção 1 acima). Conceitualmente, é consistente com muitas das práticas recomendadas em outras linguagens, onde você não usa o nome do objeto em seus nomes de propriedade. Eu acho que nomear a chave estrangeira EmployeeID
(ouEmployee_ID
pode ser melhor) informa ao leitor que é a ID
coluna da Employee
Tabela.
Alguns outros preferem a opção 2, onde você nomeia a chave primária prefixada com o nome da tabela para que o nome da coluna seja o mesmo em todo o banco de dados. Eu entendo esse ponto, mas agora você não pode distinguir visualmente uma chave primária de uma chave estrangeira.
Além disso, acho que é redundante ter o nome da tabela no nome da coluna, porque se você pensar na tabela como uma entidade e uma coluna como uma propriedade ou atributo dessa entidade, você pensa nela como o atributo ID do Employee
, não o EmployeeID
atributo de um funcionário. Eu não pergunto ao meu colega de trabalho o que é PersonAge
ouPersonGender
é é. Eu pergunto a ele qual é a sua idade.
Então, como eu disse, é um debate intenso e continuamos e continuamos sobre isso. Estou interessado em obter algumas novas perspectivas.