En nuestro grupo de desarrollo, tenemos un intenso debate sobre la convención de nomenclatura de claves primarias y externas. Básicamente, hay dos escuelas de pensamiento en nuestro grupo:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
o
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
Prefiero no duplicar el nombre de la tabla en ninguna de las columnas (así que prefiero la opción 1 anterior). Conceptualmente, es consistente con muchas de las prácticas recomendadas en otros lenguajes, donde no se usa el nombre del objeto en sus nombres de propiedad. Creo que nombrar la clave externa EmployeeID(o Employee_IDpodría ser mejor) le dice al lector que es la IDcolumna de la EmployeeTabla.
Algunos otros prefieren la opción 2, en la que se nombra la clave principal con el prefijo del nombre de la tabla para que el nombre de la columna sea el mismo en toda la base de datos. Veo ese punto, pero ahora no puede distinguir visualmente una clave primaria de una clave externa.
Además, creo que es redundante tener el nombre de la tabla en el nombre de la columna, porque si piensa en la tabla como una entidad y una columna como una propiedad o atributo de esa entidad, piensa en ella como el atributo de ID del Employee, no el EmployeeIDatributo de un empleado. No voy a preguntarle a mi compañero de trabajo qué es PersonAgeo qué PersonGenderes. Le pregunto cuál es su edad.
Entonces, como dije, es un debate furioso y seguimos y seguimos al respecto. Estoy interesado en obtener nuevas perspectivas.