Capítulo 2 del Módulo 1 Cimientos del Proyecto Web

Diseño de la Base de Datos y Relaciones

Diseño de la Base de Datos y Relación entre Entidades | Una base de datos bien diseñada es esencial para cualquier aplicación web: Permite una gestión fácil y estructurada de los contenidos.Mejora el rendimiento.

Una base de datos bien diseñada es esencial para cualquier aplicación web:

  • Permite una gestión fácil y estructurada de los contenidos.
  • Mejora el rendimiento y la escalabilidad.
  • Aporta las bases para aplicar correctamente técnicas de optimización SEO.

El sitio web que construiremos será totalmente administrable y adaptado a distintos tipos de negocios.

Nombre de la Base de Datos

  • Nombre elegido: empresa_web

Razones:

  • Representa una estructura adaptable a distintas empresas o negocios (restaurantes, cafeterías, despachos de abogados, talleres mecánicos, etc.).
  • Cumple buenas prácticas: nombre corto, descriptivo, en minúsculas y sin caracteres especiales.
  • Facilita la organización en entornos locales (como XAMPP) o futuros servidores.

Ejemplo futuro:
Si el estudiante adapta el sitio para un restaurante, podría usar restaurante_web.

¿Por qué usamos MySQL?

Motivos principales:

  • Compatibilidad completa con Laravel y XAMPP.
  • Amplio soporte en la industria y en servicios de hosting.
  • Facilidad de uso para bases de datos relacionales.
  • Alta disponibilidad y rendimiento excelente en proyectos de tamaño pequeño y mediano.
  • Soporte para relaciones y claves foráneas, fundamentales en nuestra estructura.

Notas importantes:

  • Laravel utiliza Eloquent ORM para trabajar de forma nativa con MySQL, lo que facilita la creación y manejo de datos.
  • Amplia documentación disponible en caso de necesitar ayuda.

Estructura Simplificada de Tablas

🔹 Tabla: users

  • ¿Qué guarda?
    Usuarios del sistema.

  • Campos principales:

    • id: Identificador único.
    • name: Nombre completo.
    • email: Correo electrónico.
    • password: Contraseña cifrada.
    • role_id: Relación con la tabla roles.
    • timestamps: Fechas de creación y actualización.
  • Relación: Cada usuario pertenece a un rol.


🔹 Tabla: roles

  • ¿Qué guarda?
    Tipos de usuario: Admin y Editor.

  • Campos principales:

    • id: Identificador único.
    • name: Nombre del rol (admin/editor).
    • description: Descripción del rol.
  • Relación: Un rol puede estar asignado a varios usuarios.


🔹 Tabla: categories

  • ¿Qué guarda?
    Categorías de servicios y publicaciones.

  • Campos principales:

    • id: Identificador único.
    • name: Nombre de la categoría.
    • slug: URL amigable (SEO).
    • description: Breve descripción.
    • meta_title: Título SEO.
    • meta_description: Descripción SEO.
    • timestamps: Fechas de creación y actualización.
  • Relación: Una categoría puede tener muchos servicios o muchos posts.


🔹 Tabla: services

  • ¿Qué guarda?
    Servicios o productos ofrecidos por la empresa.

  • Campos principales:

    • id: Identificador único.
    • title: Nombre del servicio.
    • slug: URL amigable (SEO).
    • description: Detalle del servicio.
    • price: Precio.
    • image_url: Imagen representativa.
    • category_id: Categoría relacionada.
    • meta_title: Título SEO.
    • meta_description: Descripción SEO.
    • timestamps: Fechas de creación y actualización.
  • Relación: Un servicio pertenece a una categoría.


🔹 Tabla: posts

  • ¿Qué guarda?
    Publicaciones del blog de la empresa.

  • Campos principales:

    • id: Identificador único.
    • title: Título del post.
    • slug: URL amigable (SEO).
    • content: Contenido del artículo.
    • image_url: Imagen destacada.
    • category_id: Categoría relacionada.
    • meta_title: Título SEO.
    • meta_description: Descripción SEO.
    • timestamps: Fechas de creación y actualización.
  • Relación: Un post pertenece a una categoría.


🔹 Tabla: subscribers

  • ¿Qué guarda?
    Correos de personas que desean recibir novedades.

  • Campos principales:

    • id: Identificador único.
    • email: Correo del suscriptor.
    • created_at: Fecha de registro.

🔹 Tabla: contacts

  • ¿Qué guarda?
    Mensajes enviados desde el formulario de contacto.

  • Campos principales:

    • id: Identificador único.
    • name: Nombre de quien envía.
    • email: Correo de quien envía.
    • message: Mensaje enviado.
    • created_at: Fecha de envío.

 

🔗 Relaciones Entre Tablas (Base de Datos)

🔹 Principales Relaciones

  • users ➔ roles

    • Cada usuario pertenece a un rol.
    • Ejemplo: Juan Pérez (user) ➔ Rol: Admin.
  • services ➔ categories

    • Cada servicio pertenece a una categoría.
    • Ejemplo: "Desarrollo Web" ➔ Categoría: Servicios Tecnológicos.
  • posts ➔ categories

    • Cada publicación del blog pertenece a una categoría.
    • Ejemplo: "Consejos de Marketing" ➔ Categoría: Marketing.

📈 Relaciones Opcionales

  • users ➔ posts (extensible)

    • Un usuario podría ser el autor de un post en el blog (opcional en el curso básico).


🛠️ Notas Importantes

  • Integridad referencial: Siempre usaremos claves foráneas (foreign keys) para garantizar que los datos estén correctamente conectados.
  • SEO desde la base de datos: Cada servicio y publicación tendrá campos específicos para optimizar el posicionamiento (slug, SEO title, SEO description).

11,743 visitas

Capítulo 3 – Mockups e Identidad Visual »

Descarga el código del proyecto

Descarga el código fuente del proyecto adquiriendo el curso completo

Comprar