El dominio, el codominio y la imagen permiten describir de dónde salen los elementos de una relación, hacia dónde pueden ir y cuáles valores efectivamente aparecen relacionados.
Una relación conecta elementos mediante pares ordenados. Para analizarla correctamente, necesitamos distinguir tres conjuntos asociados: dominio, codominio e imagen.
Estos conceptos son fundamentales para estudiar funciones, consultas, permisos, relaciones entre entidades y transformaciones de datos.
Si una relación R va de un conjunto A a un conjunto B, entonces R es un subconjunto de A × B.
El conjunto A funciona como conjunto de partida y B como conjunto de llegada posible.
El dominio de una relación es el conjunto de primeros componentes que aparecen en los pares de la relación.
El dominio indica qué elementos de partida participan efectivamente en la relación.
El codominio es el conjunto de llegada definido para la relación. Contiene los valores posibles hacia los cuales puede relacionarse un elemento del dominio.
El codominio puede contener elementos que no aparecen en ningún par de la relación.
La imagen de una relación es el conjunto de segundos componentes que aparecen efectivamente en los pares de la relación.
En este ejemplo, publicar pertenece al codominio, pero no pertenece a la imagen porque ningún usuario está relacionado con ese permiso.
El codominio define los valores posibles. La imagen contiene los valores que realmente aparecen.
| Concepto | Pregunta que responde | Ejemplo |
|---|---|---|
| Dominio | ¿Qué elementos de partida aparecen? | {Ana, Luis} |
| Codominio | ¿Qué valores de llegada están permitidos? | {leer, editar, publicar} |
| Imagen | ¿Qué valores de llegada se usan realmente? | {leer, editar} |
La imagen siempre está contenida dentro del codominio.
Esto ocurre porque todo segundo componente de un par debe pertenecer al conjunto de llegada definido.
Consideremos una relación entre números.
El elemento 4 de A no aparece como primer componente. Los valores 8 y 10 del codominio no aparecen en la imagen.
Una relación tiene dominio completo respecto de A cuando todos los elementos de A aparecen como primeros componentes.
Esta idea será importante cuando estudiemos funciones.
La imagen coincide con el codominio cuando todos los elementos del codominio aparecen como segundos componentes en la relación.
En funciones, esta idea se relaciona con la sobreyectividad.
Una tabla permite visualizar dominio e imagen a partir de sus columnas.
| Usuario | Permiso |
|---|---|
| Ana | leer |
| Luis | leer |
| Luis | editar |
La primera columna permite obtener el dominio. La segunda columna permite obtener la imagen.
Si una relación se representa como arreglo de pares, el dominio y la imagen se pueden obtener tomando primeras y segundas posiciones.
const relacion = [
["Ana", "leer"],
["Luis", "leer"],
["Luis", "editar"]
];
const dominio = new Set(relacion.map(([origen]) => origen));
const imagen = new Set(relacion.map(([, destino]) => destino));
console.log([...dominio]);
console.log([...imagen]);
Usamos Set para evitar elementos repetidos.
Podemos verificar qué elementos del codominio no aparecen en la imagen.
const relacion = [
["Ana", "leer"],
["Luis", "leer"],
["Luis", "editar"]
];
const imagen = new Set(relacion.map(([, destino]) => destino));
const codominio = new Set(["leer", "editar", "publicar"]);
const noUsados = [...codominio].filter(valor => !imagen.has(valor));
console.log(noUsados);
El resultado muestra valores permitidos por el codominio que no aparecen efectivamente en la relación.
| Área | Dominio | Imagen |
|---|---|---|
| Permisos | Usuarios con permisos asignados | Permisos usados |
| Bases de datos | Registros relacionados desde una tabla | Registros alcanzados en otra tabla |
| Grafos | Nodos con aristas salientes | Nodos alcanzados por aristas |
| Funciones | Entradas utilizadas | Salidas generadas |
Dominio, codominio e imagen describen distintas partes de una relación. Diferenciarlos permite analizar con precisión qué elementos participan, qué valores son posibles y cuáles se usan realmente.
En el próximo tema estudiaremos las propiedades de las relaciones.