Una relación binaria describe vínculos entre dos elementos. Es una herramienta central para modelar permisos, conexiones, comparaciones, dependencias y transiciones dentro de sistemas informáticos.
Una relación binaria permite decir cuándo un elemento está relacionado con otro. Se llama binaria porque cada vínculo se expresa mediante dos componentes: un primer elemento y un segundo elemento.
En programación, esta idea aparece cuando conectamos usuarios con permisos, productos con categorías, nodos con vecinos, tareas con dependencias o estados con transiciones.
Dados dos conjuntos A y B, una relación binaria R de A en B es un subconjunto del producto cartesiano A × B.
Esto significa que cada elemento de R es un par ordenado (a, b), donde a pertenece a A y b pertenece a B.
Supongamos que tenemos un conjunto de personas y un conjunto de lenguajes de programación. Podemos definir una relación que indique qué lenguaje conoce cada persona.
La relación R es un subconjunto de Personas × Lenguajes. No incluye todas las combinaciones posibles, solo las que representan conocimiento real.
Si el par (a, b) pertenece a la relación R, podemos escribir:
También puede leerse como: a está relacionado con b. Si el par no pertenece a la relación, entonces esos elementos no están vinculados bajo esa regla.
Una relación binaria también puede definirse sobre un único conjunto. En ese caso, la relación es un subconjunto de A × A.
Este tipo de relación es muy común cuando comparamos elementos del mismo conjunto, como números, nodos, estados o tareas.
| Relación | Conjuntos involucrados | Ejemplo de par |
|---|---|---|
| Usuario tiene permiso | Usuarios × Permisos | (Ana, editar) |
| Ciudad conecta con ciudad | Ciudades × Ciudades | (Córdoba, Rosario) |
| Tarea depende de tarea | Tareas × Tareas | (Interfaz, API) |
| Producto pertenece a categoría | Productos × Categorías | (teclado, periféricos) |
| Estado pasa a estado | Estados × Estados | (pendiente, aprobado) |
Una forma simple de representar una relación binaria en JavaScript es usar una lista de pares ordenados.
const conoceLenguaje = [
["Ana", "JavaScript"],
["Luis", "Python"],
["Marta", "JavaScript"]
];
console.log(conoceLenguaje);
Cada arreglo interno representa un par ordenado. El primer elemento pertenece al conjunto de personas y el segundo al conjunto de lenguajes.
Una operación frecuente es verificar si cierto par pertenece a la relación.
const permisos = [
["Ana", "leer"],
["Ana", "editar"],
["Luis", "leer"]
];
function pertenece(relacion, a, b) {
return relacion.some(([x, y]) => x === a && y === b);
}
console.log(pertenece(permisos, "Ana", "editar"));
console.log(pertenece(permisos, "Luis", "editar"));
El resultado indica si el vínculo existe dentro de la relación.
Además de listar pares, una relación binaria puede definirse mediante una regla. Por ejemplo, en los números enteros podemos decir que a está relacionado con b si a divide a b.
Con el conjunto {1, 2, 3, 4, 6}, algunos pares de esta relación son (1, 4), (2, 4), (3, 6) y (6, 6).
const numeros = [1, 2, 3, 4, 6];
const divideA = numeros.flatMap(a =>
numeros
.filter(b => b % a === 0)
.map(b => [a, b])
);
console.log(divideA);
En un par ordenado, la posición importa. Por eso una relación binaria puede tener dirección. Si (A, B) pertenece a una relación, no necesariamente pertenece (B, A).
Que archivo.js dependa de utils.js no significa que utils.js dependa de archivo.js. Esta diferencia es importante al modelar grafos dirigidos, dependencias y flujos de trabajo.
Una relación binaria puede representarse de varias maneras. Cada representación resalta un aspecto distinto de la relación.
| Representación | Qué muestra | Cuándo conviene |
|---|---|---|
| Pares ordenados | Los vínculos explícitos. | Cuando la relación tiene pocos pares o se consulta por pertenencia. |
| Matriz | Presencia o ausencia de vínculo entre elementos. | Cuando se necesitan cálculos o recorridos sistemáticos. |
| Grafo dirigido | Nodos conectados por flechas. | Cuando interesa visualizar caminos, dependencias o transiciones. |
| Tabla | Filas de datos relacionados. | Cuando se trabaja con bases de datos o reportes. |
El concepto de relación binaria permite formalizar vínculos entre elementos y convertirlos en estructuras que un programa puede consultar o procesar. Es una de las bases de las matemáticas discretas aplicadas a la informática.
En el próximo tema estudiaremos dominio, codominio e imagen de una relación, conceptos que ayudan a describir con precisión qué elementos participan en una relación.