Pesistencia - code-mirror-arsw/code_mirror_front GitHub Wiki

🗃️ Diseño de Base de Datos

El sistema está desarrollado bajo una arquitectura de microservicios, lo que implica que cada servicio posee y gestiona su propia base de datos de forma completamente aislada. Como consecuencia:

  • No existen relaciones directas (claves foráneas) entre entidades de distintos microservicios.
  • Las relaciones entre entidades que pertenecen a diferentes dominios se gestionan de forma lógica desde la capa de negocio (Backend).
  • Este enfoque mejora la escalabilidad, autonomía y mantenibilidad de cada servicio, alineándose con las buenas prácticas de sistemas distribuidos.

Cada microservicio contiene su propio conjunto de tablas internas, y solo aquellas colecciones embebidas o relaciones internas (como listas de participantes) se representan con claves foráneas dentro del mismo servicio.


✅ Ejemplo de Relaciones

Servicio Entidades Relaciones internas
user_service user, public_profile 1 : 1 entre usuario y perfil público
offer_service job_offers, job_offer_participants 1 : N entre ofertas y participantes
interview_service interviews, interview_participants 1 : N entre entrevistas y sus participantes

⚠️ Las referencias como offerId, userId o adminEmail en servicios cruzados se manejan como texto plano (UUID o email), y cualquier validación o combinación entre ellos se resuelve desde el Backend, nunca a nivel de base de datos.


📌 Siguiente Paso

En el siguiente apartado se presenta el diagrama lógico de bases de datos, separado por microservicio, donde se pueden visualizar las tablas y sus relaciones internas, sin comprometer el aislamiento entre servicios.

diagrama de base de datos

image