Al trabajar en equipos colaborativos ya sea como freelance con desarrolladores de LATAM, India, USA, he incluso viendo cursos y contenido en internet la mayoría de developers ya sea un back-end, suelen tener un conocimiento bastante limitado sobre el diseño de una base de datos relacional suelen usar a lo mucho 1 o 2 tablas he incluso no dominan bien una tecnología (ya sea un ORM como eloquent etc) y tienen la suerte de encontrar un empleo, pero eso ya lo dejamos en manos de los reclutadores elegir el mejor candidato para una empresa o mas bien el peor candidato lo cual es lo mas común y hacer perder dinero a las empresas con personal que no esta capacitado que solo va aprendiendo sobre la marcha, veamos la siguiente estructura de una tabla base usando Laravel framework y las migraciones.
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('role');
$table->string('product');
$table->rememberToken();
$table->timestamps();
});
En el ejemplo anterior tenemos la migración base con la estructura inicial que plantea el framework, en este ejemplo hemos añadido 2 nuevos campos que son role y product, y a la hora de insertar elementos seria algo como Admin y Trapeadores de tipo string pero esto no es funcional y a la hora que crezca la aplicación será bastante mediocre obtener campos relevantes.
Mejorando la Estructura de Tablas:
En el ejemplo anterior removimos el campo product, ya que un producto puede tener muchos elementos ya sea un nombre, descripción etc, y tener todos estos campos en una sola tabla es un diseño que deja mucho que desear
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->unsignedInteger('role_id');
$table->rememberToken();
$table->timestamps();
});
Creando Nuevas Tablas:
Hemos creado una nueva tabla, donde podemos agregar el numero de elementos que se asocie a product
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('product_name',255)->nullable();
$table->string('description',255)->nullable();
$table->unsignedInteger('price_id');
$table->timestamps();
});
Tabla Pivot:
Ahora hemos creado una tabla pivot aplicando la relación muchos a muchos, la forma de extraer data lo puedes encontrar en la documentación de laravel
Schema::create('users_products', function (Blueprint $table) {
$table->id();
$table->unsignedInteger('user_id');
$table->unsignedInteger('product_id');
$table->timestamps();
});
Igualmente podemos crear una tabla para roles, precios y seguir la misma lógica según los requisitos de nuestra aplicación, si recuerdan al principio usamos campos string pero las buenas practica incluye usar enteros para los campos que vamos a relacionar, pero si solo deseas crear aplicaciones básicas tipo CRUD y cosas por el estilo puedes continuar trabajando con 1 sola tabla con información redundante
Nota: Gracias por leer esta articulo, en mi blog puedes encontrar mas artículos sobre un laravel developer y subscribirte al canal de youtube para no perderte mas opciones en plataformas