Construyendo Platziblog en Firestore

Clase 55 de 67Curso de Fundamentos de Bases de Datos 2019

Resumen

¿Cómo crear colecciones en Firestore?

En esta clase, exploramos cómo transformar estructuras de bases de datos relacionales de SQL en Firestore, un sistema de base de datos no relacional. La transición requiere entender cómo estructurar y manejar los datos con colecciones de nivel superior (top-level collections), documentos, y referencias. A continuación, detallamos los pasos para recrear una base de datos en Firestore aprovechando sus capacidades.

¿Cómo definir colecciones de nivel superior?

Las colecciones de nivel superior son fundamentales en Firestore, ya que funcionan como contenedores que alojan documentos. En el ejemplo del curso, se definieron varias colecciones importantes:

  1. Categorías:

    • Crea una colección llamada Categorías.
    • Añade documentos individuales, cada uno representando una categoría con un campo simple para el nombre, por ejemplo: Deportes, Ciencia, Espectáculos.
    Categorías
    ├── Documento 1: {nombre: "Deportes"}
    ├── Documento 2: {nombre: "Ciencia"}
    └── Documento 3: {nombre: "Espectáculos"}
    
  2. Usuarios:

    • Define la colección Usuarios donde cada documento representa un usuario con campos como Login, Password, Nickname, y Email.
    Usuarios
    └── Documento 1: {
          Login: "Israel",
          Password: "contraseña_segura",
          Nickname: "Israel",
          Email: "Israel@PlatziBlog.com"
        }
    
  3. Blog Posts:

    • Crea la colección Posts para almacenar las publicaciones del blog con campos como Título, Fecha de Publicación, Contenido, y Status.
    Posts
    ├── Documento 1: {
          Título: "Nuevo Teléfono Móvil",
          Fecha de Publicación: "2030-04-05",
          Contenido: "Lorem Ipsum...",
          Status: true
        }
    ├── Documento 2: {
          Título: "Evento de Tecnología",
          Fecha de Publicación: "2025-05-04",
          Contenido: "Prueba de Texto...",
          Status: true
        }
    

¿Cómo relacionar documentos en Firestore?

Para relacionar documentos en Firestore, utilizamos referencias. Esto permite vincular, por ejemplo, un Post con un Usuario y una Categoría.

  • Relación Usuario-Post:

    • Agrega un campo Autor en tus documentos de Posts y utiliza el tipo de dato reference para enlazar al documento correspondiente del usuario.
    Posts
    ├── Documento 1: {..., Autor: referencia_a_usuario_1}
    
  • Relación Categoría-Post:

    • Similarmente, para las categorías, crea un campo Categoría en Posts que apunte a la categoría relacionada.
    Posts
    ├── Documento 1: {..., Categoría: referencia_a_categoría_1}
    

¿Cómo crear subcolecciones?

Las subcolecciones permiten organizar datos relacionados dentro de un mismo documento. En el ejemplo, se mostró cómo agregar etiquetas a cada publicación:

  • Subcolecciones de Etiquetas:

    • Dentro de cada Post, crea subcolecciones como Etiquetas que almacenen documentos con el campo Nombre Etiqueta.
    Posts
    ├── Documento 1: {
           ...,
           Etiquetas: {
              Documento 1: {Nombre Etiqueta: "Teléfonos Móviles"},
              Documento 2: {Nombre Etiqueta: "Eventos"}
           }
         }
    

¿Qué pasos debo seguir para practicar?

La práctica es esencial para dominar Firestore. Intenta replicar esta estructura con tu propio proyecto:

  1. Transformar entidades de SQL a Firestore: Considere cómo sus tablas y sus relaciones pueden convertirse en documentos y referencias.

  2. Practicar las relaciones y la organización de subcolecciones: Familiarízate con las ventajas que ofrece la NoSQL al manejar datos anidados y relaciones no tradicionales.

  3. Explorar otras bases de datos NoSQL: Extiende tu conocimiento a bases de datos similares como MongoDB, que también emplean documentos.

Esta práctica no solo refuerza tu comprensión de Firestore, sino que también te prepara para trabajar con diferentes tipos de bases de datos, cada vez más comunes en el desarrollo profesional. ¡Explora, experimenta y comparte tus resultados con otros para seguir aprendiendo!