Capitulo 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).

11173 visitas

Descarga el código del proyecto

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

Comprar

¡Qué aprenderás?

Download PDF
tooltip bs-tooltip-top bs-tooltip-end bs-tooltip-bottom bs-tooltip-start show fade tooltip-inner

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú