Cada software se crea para un propósito dentro de un área de conocimiento. Por ejemplo:
💰 Un sistema contable sigue reglas financieras.
🎬 Una plataforma de series organiza contenido en "temporadas" y "episodios".
Este concepto aplica a cualquier dominio: reservas de vuelos, hoteles o compraventa de autos.
En esta lección, veremos qué son las entidades de un dominio, cómo se relacionan y la importancia de la ontología del dominio.
Entidades y relaciones en un sistema
Para programar una aplicación, no solo es necesario saber escribir código, sino también comprender el área en la que operará el software. No siempre es necesario ser un experto en el tema, pero sí entender los conceptos principales.
Veamos un ejemplo concreto: una plataforma de aprendizaje en línea como Códica. Para entender su funcionamiento, identificamos algunos conceptos clave:
- Curso
- Lección
- Carrera
- Test
- Revisión de código
- Proyecto
- Estudiante
- Suscripción
Estos elementos son entidades, y todas ellas están programadas en el código. Pero además de existir por separado, estas entidades tienen relaciones entre sí.
⏬ Por ejemplo:
- Un curso está compuesto por muchas lecciones, pero cada lección pertenece a un solo curso. Esta es una relación uno a muchos (one-to-many o o2m).
- Un usuario puede inscribirse en varios cursos, y un curso tiene muchos estudiantes inscritos. Esto es una relación muchos a muchos (many-to-many o m2m).
- Cada estudiante tiene una única suscripción activa, y cada suscripción pertenece a un solo estudiante. Esta es una relación uno a uno (one-to-one o o2o).
Ilustración de relaciones en una base de datos
🚗💰 Veamos un ejemplo con la venta de autos:
Cada entidad en la imagen representa un objeto del mundo real, y las líneas muestran cómo se conectan entre sí.
Escoger las relaciones adecuadas
A veces, el programador tiene que decidir qué tipo de relación usar. Entre más compleja sea la relación, más difícil será programarla y mantenerla. En términos generales, las relaciones en orden de menor a mayor complejidad son:
- Uno a uno (o2o)
- Uno a muchos (o2m)
- Muchos a muchos (m2m)
Si un programador no comprende bien la estructura del dominio, puede elegir relaciones incorrectas.
🛂 Por ejemplo, pensemos en una relación entre un usuario y su pasaporte. A primera vista, parecería que un usuario tiene un único pasaporte (o2o). Sin embargo, en algunos países, las personas pueden tener varios pasaportes a la vez o renovarlos si caducan. En este caso, la relación correcta sería uno a muchos (o2m).
El objetivo de un programador no es modelar toda la realidad, sino enfocarse en lo que es relevante para el negocio. Para esto, es útil trabajar con expertos en el área.
Ontología de un dominio
Por ejemplo, en contabilidad, los expertos son los contadores; en educación, los profesores.
En la práctica, los programadores trabajan con expertos o analistas de negocio para definir claramente los términos y relaciones dentro del sistema. Así, construyen un modelo que representa la información de manera formal.
Un método común para modelar entidades y relaciones es el uso de diagramas ER(Entidad-Relación):
Estos diagramas ayudan a diseñar la base de datos y sirven como referencia para la arquitectura del software. Dependiendo del lenguaje de programación, las entidades pueden implementarse como clases, estructuras o incluso como diccionarios (arrays asociativos).
Resumen
- Un software se diseña para un área de conocimiento específica, llamada dominio.
- Las entidades tienen relaciones, que pueden ser uno a uno (o2o), uno a muchos (o2m) o muchos a muchos (m2m).
- La ontología del dominio describe los elementos y sus interacciones en un sistema.
En la siguiente lección, exploraremos más casos prácticos y modelaremos sistemas reales para afianzar estos conceptos.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.