El dominio, el codominio y la imagen ayudan a describir qué elementos participan en una relación, desde dónde salen los vínculos y hacia qué elementos llegan realmente.
Cuando definimos una relación entre dos conjuntos, no alcanza con listar sus pares ordenados. También conviene identificar qué elementos pueden aparecer como origen, qué elementos pueden aparecer como destino y cuáles aparecen efectivamente relacionados.
Para eso usamos tres conceptos: dominio, codominio e imagen. Estos conceptos son útiles tanto en matemática como en programación, especialmente cuando validamos datos, permisos, estados o asociaciones.
Supongamos que tenemos una relación R de un conjunto A en un conjunto B. La relación está formada por pares ordenados (a, b), donde a pertenece a A y b pertenece a B.
Con esta información podemos distinguir dominio, codominio e imagen.
El dominio de una relación es el conjunto de elementos que aparecen como primer componente en algún par ordenado de la relación.
Aunque Marta pertenece al conjunto A, no aparece en ningún par de la relación. Por eso no forma parte del dominio efectivo de R.
El codominio es el conjunto de posibles valores de llegada. En una relación de A en B, el codominio es B.
El codominio incluye todos los destinos permitidos por la definición de la relación, aunque algunos no estén usados en los pares existentes.
La imagen de una relación es el conjunto de elementos del codominio que aparecen efectivamente como segundo componente en algún par ordenado.
El permiso eliminar pertenece al codominio, pero no pertenece a la imagen porque ningún usuario está relacionado con ese permiso.
| Concepto | Qué representa | En el ejemplo |
|---|---|---|
| Dominio | Elementos que aparecen como origen en la relación. | {Ana, Luis} |
| Codominio | Todos los destinos posibles definidos para la relación. | {leer, editar, eliminar} |
| Imagen | Destinos que aparecen realmente en los pares de la relación. | {leer, editar} |
Podemos calcular dominio e imagen recorriendo los pares de una relación. El codominio normalmente se conoce porque fue definido antes.
const usuarios = ["Ana", "Luis", "Marta"];
const permisos = ["leer", "editar", "eliminar"];
const relacion = [
["Ana", "leer"],
["Ana", "editar"],
["Luis", "leer"]
];
const dominio = new Set(relacion.map(([origen]) => origen));
const codominio = new Set(permisos);
const imagen = new Set(relacion.map(([, destino]) => destino));
console.log([...dominio]);
console.log([...codominio]);
console.log([...imagen]);
El uso de Set evita repeticiones y permite representar los conjuntos resultantes de manera directa.
Comparar el conjunto de partida con el dominio permite detectar elementos que no participan como origen. Comparar el codominio con la imagen permite detectar destinos que no reciben vínculos.
const usuarios = ["Ana", "Luis", "Marta"];
const permisos = ["leer", "editar", "eliminar"];
const relacion = [
["Ana", "leer"],
["Ana", "editar"],
["Luis", "leer"]
];
const dominio = new Set(relacion.map(([usuario]) => usuario));
const imagen = new Set(relacion.map(([, permiso]) => permiso));
const usuariosSinPermisos = usuarios.filter(usuario => !dominio.has(usuario));
const permisosNoAsignados = permisos.filter(permiso => !imagen.has(permiso));
console.log(usuariosSinPermisos);
console.log(permisosNoAsignados);
Este tipo de análisis es útil para auditorías, validaciones y detección de datos incompletos.
En una máquina de estados, una relación puede indicar transiciones válidas. El dominio contiene estados desde los cuales se puede salir. La imagen contiene estados a los que se puede llegar.
El estado pendiente pertenece al codominio, pero no a la imagen en esta relación, porque ninguna transición llega a pendiente.
| Situación | Dominio | Imagen |
|---|---|---|
| Usuarios y permisos | Usuarios con algún permiso asignado | Permisos usados realmente |
| Productos y categorías | Productos clasificados | Categorías utilizadas |
| Nodos y conexiones | Nodos con aristas salientes | Nodos con aristas entrantes |
| Estados y transiciones | Estados desde los que se puede avanzar | Estados alcanzables por transición |
Dominio, codominio e imagen permiten describir una relación con más precisión que una simple lista de pares. Estos conceptos ayudan a entender qué elementos participan, cuáles son destinos posibles y cuáles aparecen realmente conectados.
En el próximo tema veremos con más detalle la representación de relaciones mediante pares ordenados.