Buenas prácticas de nombramiento en JavaScript y bases de datos

Clase 30 de 36Curso de NestJS: Persistencia de Datos con TypeORM

Resumen

¿Cómo mantener las buenas prácticas en el nombramiento de bases de datos y código?

El correcto nombramiento de las variables y tablas es fundamental para mantener la coherencia, comprensión y eficacia en la programación y administración de bases de datos. Muchas veces subestimado, el naming es clave para el trabajo colaborativo y la futura escalabilidad del sistema.

¿Cuál es la diferencia entre el naming en JavaScript y bases de datos?

  • JavaScript: Las variables en JavaScript suelen nombrarse mediante la convención CamelCase, donde cada nueva palabra inicia con mayúscula (por ejemplo, ProductId).
  • Bases de datos: Aquí las buenas prácticas dictan que no se usen caracteres especiales, incluyendo mayúsculas, para evitar problemas de compatibilidad y facilitar el trabajo en equipo. Un ejemplo sería usar created_at en lugar de CreatedAt.

¿Cómo podemos garantizar buenas prácticas en bases de datos?

  • Nombres en minúsculas con guiones bajos: Usar una convención consistente como el uso de underscores (_) para separar palabras en nombres de columnas y tablas como product_id.
  • Tablas en plural: Es común nombrar tablas en plural, como Products, en vez de Product, para expresar que contienen múltiples registros de dicha entidad.
  • Evitar caracteres especiales: Mantener nombres simples y claros para facilitar futuras consultas y mantenimiento.

¿Cómo personalizar las relaciones de tablas usando TimeWareM?

TimeWareM nos permite personalizar el nombramiento de tablas y columnas mediante el uso de decoradores en entidades de TypeScript:

@Entity('Products')
export class Product {
    @PrimaryGeneratedColumn()
    product_id: number;

    @Column({ name: 'created_at' })
    createdAt: Date;
}
  • Relaciones uno a uno: Utilizar @JoinColumn para especificar el nombre de la clave foránea, como customer_id.
  • Relaciones uno a muchos: Se puede añadir el decorador @JoinColumn para establecer claramente el nombre de la columna que lleva la relación.
  • Relaciones muchos a muchos: Nos permite también determinar el nombre de las tablas ternarias generadas automáticamente, utilizando @JoinTable y especificando nombres para las columnas con @JoinColumn e @InverseJoinColumn.

¿Cuáles son los cuidados a tener al modificar el naming en bases de datos productivas?

  • Planificación desde el diseño: Pensar en los nombres y normas a usar desde el diseño inicial del sistema evita problemas y migraciones complicadas más adelante.
  • Migraciones cuidadosas: Cambiar el nombre de tablas o columnas en un ambiente productivo puede conllevar riesgos de pérdida de datos. Es vital coordinar con el equipo de base de datos y aplicar las migraciones con scripts SQL de ser necesario.

¿Qué hacer si la base de datos ya está en producción?

  • Evaluar riesgos: La modificación del naming en producción requiere un análisis detallado sobre el impacto, especialmente en la integridad de datos y el funcionamiento del sistema.
  • Consultar con expertos: Es crucial contar con un especialista en bases de datos para determinar la mejor estrategia y reducir riesgos durante las migraciones.

Este tema no solo trata de normas estéticas, sino que impacta en la eficacia, escalabilidad y sostenibilidad del proyecto. Por lo tanto, es vital adoptarlas desde el inicio para facilitar la comunicación entre equipos y evitar futuros errores. Sigue aprendiendo y mejorando tus prácticas para desarrollar sistemas robustos y bien organizados.