23. Dominio, codominio e imagen de una relación

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.

23.1 Introducción

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.

23.2 Relación entre dos conjuntos

Si una relación R va de un conjunto A a un conjunto B, entonces R es un subconjunto de A × B.

R ⊆ A × B

El conjunto A funciona como conjunto de partida y B como conjunto de llegada posible.

23.3 Qué es el dominio

El dominio de una relación es el conjunto de primeros componentes que aparecen en los pares de la relación.

R = {(Ana, leer), (Luis, leer), (Luis, editar)} Dominio(R) = {Ana, Luis}

El dominio indica qué elementos de partida participan efectivamente en la relación.

23.4 Qué es el codominio

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.

Usuarios = {Ana, Luis} Permisos = {leer, editar, publicar} R ⊆ Usuarios × Permisos Codominio(R) = Permisos

El codominio puede contener elementos que no aparecen en ningún par de la relación.

23.5 Qué es la imagen

La imagen de una relación es el conjunto de segundos componentes que aparecen efectivamente en los pares de la relación.

R = {(Ana, leer), (Luis, leer), (Luis, editar)} Imagen(R) = {leer, editar}

En este ejemplo, publicar pertenece al codominio, pero no pertenece a la imagen porque ningún usuario está relacionado con ese permiso.

23.6 Diferencia entre codominio e imagen

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}

23.7 La imagen es subconjunto del codominio

La imagen siempre está contenida dentro del codominio.

Imagen(R) ⊆ Codominio(R)

Esto ocurre porque todo segundo componente de un par debe pertenecer al conjunto de llegada definido.

23.8 Ejemplo numérico

Consideremos una relación entre números.

A = {1, 2, 3, 4} B = {2, 4, 6, 8, 10} R = {(1, 2), (2, 4), (3, 6)}
Dominio(R) = {1, 2, 3} Codominio(R) = {2, 4, 6, 8, 10} Imagen(R) = {2, 4, 6}

El elemento 4 de A no aparece como primer componente. Los valores 8 y 10 del codominio no aparecen en la imagen.

23.9 Dominio completo

Una relación tiene dominio completo respecto de A cuando todos los elementos de A aparecen como primeros componentes.

A = {1, 2, 3} R = {(1, a), (2, b), (3, b)} Dominio(R) = A

Esta idea será importante cuando estudiemos funciones.

23.10 Imagen completa respecto del codominio

La imagen coincide con el codominio cuando todos los elementos del codominio aparecen como segundos componentes en la relación.

B = {a, b} R = {(1, a), (2, b), (3, b)} Imagen(R) = B

En funciones, esta idea se relaciona con la sobreyectividad.

23.11 Representación con tabla

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.

23.12 Calcular dominio e imagen en JavaScript

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.

23.13 Comparar imagen y codominio en JavaScript

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.

23.14 Aplicaciones prácticas

Á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

23.15 Errores frecuentes

  • Confundir dominio con el primer conjunto completo A.
  • Confundir codominio con imagen.
  • Olvidar que el codominio puede contener valores no usados.
  • Contar elementos repetidos al calcular dominio o imagen.
  • Invertir origen y destino al leer pares ordenados.

23.16 Qué debes recordar de este tema

  • El dominio contiene los primeros componentes que aparecen en la relación.
  • El codominio es el conjunto de llegada definido.
  • La imagen contiene los segundos componentes que aparecen efectivamente.
  • La imagen siempre es subconjunto del codominio.
  • Dominio e imagen se calculan desde los pares de la relación.
  • En JavaScript, map y Set permiten obtener dominio e imagen sin repetidos.

23.17 Conclusión

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.