45. Diseño de la bbdd de un blog

En este capítulo, aprenderás a diseñar una base de datos sólida y escalable para tu blog administrable. Comenzaremos por comprender los conceptos fundamentales de la base de datos, como tablas, campos y relaciones. Luego, te guiaremos a través del proceso de diseño de una estructura de base de datos eficiente y fácil de mantener para tu blog. Aprenderás a crear tablas, establecer relaciones y configurar claves foráneas para garantizar que tu base de datos sea coherente y segura. También te mostraremos cómo utilizar herramientas populares como PHPMyAdmin para simplificar el proceso de diseño y gestión de la base de datos. ¡Aprovecha este capítulo para construir una base de datos sólida para tu blog!


3 comentarios

Inicia sesión para comentar

Comentarios:

  • Walter

    Walter hace 1 año

  • Walter

    Walter hace 1 año

    ? Proyecto Blog

     

    ? Creamos un nuevo proyecto Laravel con Jetstream usando Livewire y sin Teams.

     

    laravel new blog --jet
    cd blog
    npm install

     

    ? Configuramos el archivo .env

     

    DB_HOST=127.0.0.1

     

    ? Creamos la base de datos blog

     

    ? Corremos las migraciones y el segundo comando de npm

     

    php artisan migrate
    npm run dev

     

    ? Creamos las tablas comenzando por las entidades fuertes

     

    php artisan make:model Category -m

     

    Completamos los campos en el método up de la migración

     

    $table->string('name');
    $table->string('slug');

     

    php artisan make:model Post -m

     

    Completamos los campos en el método up de la migración

     

    $table->string('name');
    $table->string('slug');
    
    $table->text('extract');
    $table->longText('body');
    
    $table->enum('status', [1, 2])->default(1);
    
    $table->unsignedBigInteger('user_id');
    $table->unsignedBigInteger('category_id');
    
    $table->foreign('user_id')->references('id')->on('users')
    	->onDelete('cascade');
    $table->foreign('category_id')->references('id')->on('categories')
    	->onDelete('cascade');

     

    php artisan make:model Tag -m

     

    Completamos los campos en el método up de la migración

     

    $table->string('name');
    $table->string('slug');

     

    ? Creamos la tabla intermedia post_tag

     

    php artisan make:migration create_post_tag_table

     

    Completamos los campos en el método up de la migración

     

    $table->unsignedBigInteger('post_id');
    $table->unsignedBigInteger('tag_id');
    
    $table->foreign('post_id')->references('id')->on('posts')
    	->onDelete('cascade');
    $table->foreign('tag_id')->references('id')->on('tags')
    	->onDelete('cascade');

     

    ? Creamos la tabla images

     

    php artisan make:model Image -m

     

    Completamos los campos en el método up de la migración

     

    $table->string('url');
    $table->unsignedBigInteger('imageable_id');
    $table->string('imageable_type');

     

    php artisan migrate

     

    ? Relaciones a nivel de modelo

     

    Comenzamos con los modelos User, Category y Post.

     

    ? Relación uno a muchos entre los modelos User y Category con la tabla Post.

     

    Agregamos lo siguiente en los modelos de User y Category:

     

    public function posts() {
    	return $this->hasMany(Post::class);
    }

     

    En el modelo Post definimos la relación uno a muchos inversa:

     

    public function user() {
    	return $this->belongsTo(User::class);
    }
    
    public function category() {
    	return $this->belongsTo(Category::class);
    }

     

    También en el modelo Post agregamos la relación muchos a muchos:

     

    public function tags() {
    	return $this->belongsToMany(Tag::class);
    }

     

    En el modelo Tag definimos la relación muchos a muchos:

     

    public function posts() {
    	return $this->belongsToMany(Post::class);
    }

     

    ? Relación polimórfica en el modelo Image

     

    public function imageable() {
    	return $this->morphTo();
    }

     

    Seguimos con el modelo Post con la relación uno a uno polimórfica:

     

    public function image() {
    	return $this->morphOne(Image::class, 'imageable');
    }

     

  • Melvin Arnoldo Cardona Cota

    Melvin Arnoldo Cardona Cota hace 1 año

    consulta. se dice que la relacion posts con images es una relacion polimorfica uno a uno.  pero  en el ejemplo no eliminamos la columna id de la tabla images y tampoco creamos la llave primaria compuesta. cosas que se hicieron en  el ejemplo del video  relacion polimorfica uno a uno. gracias

    • Miguel Chuil hace 4 meses

      Es correcto