Apuntes de la clase
Naming o Nombramiento de variables en BD
-
El naming es una buena practica.
-
Nombre de una variable tiene que ser representativa
-
Tiene que ser escrita en camelCase para JavaScript
-
En BD una buena práctica es no tener caracteres especiales como la mayúscula.
- Debido que si se hace consultas directa a la BD habría que escapar caracteres especiales.
-
En BD debe ser separadas con _. (snake_case)
-
Nombre de la tabla debe ser en plural.
//products/entities/product.entity.ts @Entity({ name: 'products'}) // Nombre de la tabla @Index(['price', 'stock']) export class Product{ .... @CreateDateColumn({ name: 'created_at', // nombre de la columna en la BD type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP', }) createdAt: Date; // Nombre de la variable en el codigo @UpdateDateColumn({ name: 'update_at', type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP', }) updateAt: Date; ... }
-
En los casos de relaciones OneToOne se hace la modificación en la tabla que tenga el decorator @JoinColumn.
//users/entities/user.entity @OneToOne(() => Customer, (customer) => customer.user, { nullable: true }) @JoinColumn({ name: 'customer_id' }) customer: Customer;
-
En una relación ManyToOne se hace la modificación en quien lleve este decorator.
- Se agrega el decorator @JoinColumn
//products/entities/product.entity.ts @ManyToOne(() => Brand, (brand) => brand.products) @JoinColumn({ name: 'brand_id' }) brand: Brand;
-
En las tablas muchos a muchos que es manejada por TypeORM se modifica en la entidad que tenga el decorator @JoinTable
- Recuerda que en este caso se crea una tabla ternaria.
//products/entities/product.entity.ts @ManyToMany(() => Category, (category) => category.products) @JoinTable({ name: 'products_categories', //nombre de la tabla que tambien puede ser products_has_categories joinColumn: { name: 'product_id', // Relación con la entidad donde estas situado. }, inverseJoinColumn: { name: 'category_id', // Relación con la otra entidad. }, }) categories: Category[];
-
Correr migraciones.
- Debes ser precavido los nombres deben ser ideado desde el diseño.
- Cuando se cambia el nombre de una tabla, crea una nueva tabla no migra los datos.
- Se puede perder datos. Evitar usarlo luego que la BD este en producción.
- Cuando eliminas toda la BD para volverla crear, sin estar en producción, tienes la opción de eliminar las migraciones anteriores, y crear una nueva como estructura inicial.
- En caso de vaciar y volver a crear las tablas en la BD ejecuta
npm run migrations:drop npm run migrations:generate -- init npm run migrations:run
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.