Módulo 09: Relaciones ternarias y n-arias

Objetivos del módulo

  • Definir con precisión las relaciones de grado 3 (ternarias) y de grado n (n-arias) y su significado como subconjunto de un producto cartesiano
  • Saber decidir cuándo un hecho del mundo real es realmente ternario: cuando involucra simultáneamente a las tres entidades y no puede descomponerse
  • Representar ternarias y n-arias en la notación de Chen extendida del curso, con papeles, atributos y diagramas de ocurrencias
  • Calcular las cardinalidades de una ternaria paso a paso con el método de fijar pares de ocurrencias y leer correctamente cada extremo
  • Reconocer los cuatro tipos de ternarias según sus máximas (1:1:1, 1:1:N, 1:N:M y N:M:P) con ejemplos reales y tablas de tuplas
  • Entender los problemas de interpretación de las cardinalidades mínimas en las ternarias y aplicar el criterio del curso
  • Demostrar con ocurrencias por qué una ternaria no equivale, en general, a tres binarias, y reconocer los casos en que sí se puede descomponer
  • Comparar la ternaria con sus alternativas: binaria + agregación y convertir el hecho en entidad
  • Simplificar relaciones de grado 4 o superior, como los horarios
  • Relacionar las cardinalidades máximas con las dependencias funcionales y anticipar la clave de la tabla que generará la relación
  • Evitar los errores frecuentes al modelar relaciones de grado superior a dos

1. Más allá de las relaciones binarias

1.1. Recordatorio: el grado de una relación

En el módulo 06 viste que el grado de una relación es el número de entidades (o, con más precisión, de papeles) que participan en ella. Hasta ahora has trabajado sobre todo con relaciones binarias (módulo 07) y reflexivas (módulo 08). En este módulo damos el salto a las relaciones en las que intervienen tres o más entidades.

Grado Nombre Ejemplo
1 Unaria o reflexiva (recursive) EMPLEADO es jefe de EMPLEADO
2 Binaria (binary) CLIENTE realiza PEDIDO
3 Ternaria (ternary) PROVEEDOR suministra PIEZA a PROYECTO
4 Cuaternaria PROFESOR imparte ASIGNATURA en AULA durante FRANJA
n n-aria (n-ary) Cualquier relación con n participantes

📘 Concepto: Una relación n-aria R entre los tipos de entidad E₁, E₂, …, Eₙ (no necesariamente distintos) es un conjunto de asociaciones entre ocurrencias de esas entidades. Formalmente, el conjunto de ocurrencias de R en un instante es un subconjunto del producto cartesiano R ⊆ E₁ × E₂ × … × Eₙ. Cada ocurrencia de R es una tupla (e₁, e₂, …, eₙ) que contiene exactamente una ocurrencia de cada entidad participante. Una relación ternaria es una relación n-aria con n = 3.

De esta definición se deducen dos propiedades que usaremos constantemente:

  1. Una ocurrencia de una ternaria siempre tiene los tres participantes. No existe “media ocurrencia” con un participante vacío: en el modelo E/R no hay nulos en las relaciones. Si en la realidad puede faltar alguno, la ternaria no sirve tal cual.
  2. Una ocurrencia queda identificada por sus participantes. Como R es un conjunto, la misma tupla (e₁, e₂, e₃) no puede aparecer dos veces. Si en la realidad el mismo trío se puede repetir (el mismo médico atiende al mismo paciente en el mismo box varias veces), hay que añadir algo más a la relación o convertirla en entidad (lo verás en la sección 10).

💡 Consejo: Piensa en una ternaria como en una tabla de tres columnas en la que cada fila es un hecho que relaciona a tres “protagonistas”. Esa imagen mental (la tabla de ocurrencias) es la herramienta más potente de este módulo: casi todas las dudas sobre ternarias se resuelven escribiendo unas cuantas filas de ejemplo.

1.2. Un primer ejemplo

Lee este requisito de un instituto de Formación Profesional:

“En cada grupo (1º DAM-A, 1º DAM-B, 1º DAW-A…) se imparten varias asignaturas. Cada asignatura, en un grupo concreto, la imparte un único profesor. Un profesor puede impartir varias asignaturas en el mismo grupo y la misma asignatura en varios grupos.”

El hecho que hay que guardar es: “el profesor P imparte la asignatura A al grupo G”. Tiene tres protagonistas y ninguno sobra:

  • Si quitas el grupo, sabes que Ana imparte Bases de Datos, pero no dónde.
  • Si quitas la asignatura, sabes que Ana da clase en 1º DAM-A, pero no qué.
  • Si quitas el profesor, sabes que en 1º DAM-A hay Bases de Datos, pero no quién la da.
flowchart LR
    PROFESOR[PROFESOR] ---|"(1,1)"| imparte{"imparte<br/>1:N:M"}
    imparte ---|"(1,n)"| ASIGNATURA[ASIGNATURA]
    imparte ---|"(1,n)"| GRUPO[GRUPO]
    PROFESOR --- p_dni([<u>dni</u>])
    ASIGNATURA --- a_cod([<u>cod_asig</u>])
    GRUPO --- g_cod([<u>cod_grupo</u>])

En la sección 4 aprenderás a calcular esas cardinalidades y en la sección 6 entenderás por qué, en las ternarias, las mínimas son casi siempre 1.

1.3. Por qué las ternarias merecen un módulo propio

Las relaciones ternarias son, con diferencia, la parte del modelo E/R que más errores provoca en exámenes y en proyectos reales:

Dificultad Consecuencia típica
Las cardinalidades se calculan de forma distinta que en las binarias Cardinalidades mal puestas que cambian la clave de la tabla final
Muchas “ternarias” en realidad no lo son Diseños con redundancia y anomalías que luego hay que normalizar
Muchas ternarias se descomponen erróneamente en binarias Pérdida de información: la base de datos no puede responder preguntas básicas
Las mínimas son ambiguas Discusiones interminables sobre si va un 0 o un 1
Hay alternativas (agregación, entidad) que a veces son mejores Elegir la estructura equivocada para el problema

Iremos punto por punto.


2. ¿Cuándo una relación es realmente ternaria?

2.1. El criterio del hecho indivisible

📘 Concepto: Una relación es realmente ternaria cuando representa un hecho indivisible que involucra simultáneamente a las tres entidades: el hecho solo tiene sentido completo con los tres participantes y no puede reconstruirse a partir de hechos que relacionen solo a dos de ellos.

La pregunta clave que debes hacerte es:

¿Puedo expresar toda la información con frases que mencionen solo a dos entidades cada una, sin perder nada?

  • Si la respuesta es sí, no es una ternaria: son varias binarias.
  • Si la respuesta es no, porque necesitas los tres a la vez para saber qué ocurrió, es una ternaria (o algo equivalente: agregación o entidad).

2.2. La prueba de la frase

Una pista lingüística muy útil: el verbo de una ternaria suele necesitar tres complementos para tener sentido completo.

Frase del requisito ¿Ternaria? Por qué
“El proveedor S suministra la pieza P al proyecto J” Sí El suministro concreto necesita los tres
“El jugador J juega en el equipo E durante la temporada T” Sí El mismo jugador puede estar en distintos equipos según la temporada
“El profesor P imparte la asignatura A al grupo G” Sí Saber qué imparte y dónde no basta para saber quién da cada cosa en cada sitio
“El empleado E trabaja en el departamento D, que está en la sede S” No Son dos hechos: empleado-departamento y departamento-sede
“El alumno A habla el idioma I y practica el deporte D” No Son dos hechos independientes
“El cliente C compra el producto P en la fecha F” Depende Si la fecha es un atributo, es binaria con atributo; si la fecha forma parte de la identidad del hecho, puede ser ternaria (sección 7)

⚠️ Importante: Que en una frase aparezcan tres sustantivos no significa que haya una ternaria. “El empleado trabaja en el departamento de la sede de Madrid” tiene tres sustantivos y son dos binarias encadenadas. Lo que importa es si el hecho es indivisible, no la gramática.

2.3. La prueba de las ocurrencias

La prueba definitiva consiste en escribir ocurrencias y comprobar si las binarias bastan. Volvamos al instituto. Supón estas imparticiones reales:

Profesor Asignatura Grupo
Ana Programación 1º DAM-A
Ana Bases de Datos 1º DAM-B
Luis Programación 1º DAM-B
Luis Bases de Datos 1º DAM-A

Si en lugar de la ternaria guardásemos tres binarias, tendríamos:

Profesor-Asignatura Asignatura-Grupo Profesor-Grupo
(Ana, Programación) (Programación, 1º DAM-A) (Ana, 1º DAM-A)
(Ana, Bases de Datos) (Bases de Datos, 1º DAM-B) (Ana, 1º DAM-B)
(Luis, Programación) (Programación, 1º DAM-B) (Luis, 1º DAM-B)
(Luis, Bases de Datos) (Bases de Datos, 1º DAM-A) (Luis, 1º DAM-A)

Pregunta: ¿quién imparte Programación en 1º DAM-A? Con las binarias, tanto Ana como Luis imparten Programación y ambos dan clase en 1º DAM-A. Las tres binarias son compatibles con “Ana” y con “Luis”: la información se ha perdido. Con la ternaria, la respuesta es inequívoca: Ana. En la sección 8 formalizaremos esta demostración.

2.4. Señales en los requisitos

Sospecha de una ternaria cuando el enunciado contiene expresiones como:

  • “Cada X, en cada Y, …”: “cada asignatura, en cada grupo, la imparte un profesor”.
  • “… para …”, “… en …”, “… durante …” que condicionan el hecho: “el jugador lleva un dorsal en cada temporada”.
  • Preguntas que la base de datos debe responder y que combinan tres cosas: “¿qué piezas ha suministrado cada proveedor a cada proyecto y en qué cantidad?”.
  • Atributos que no dependen de ningún par sino del trío: “la cantidad suministrada” depende de proveedor, pieza y proyecto.

2.5. Falsas ternarias

Tan importante como detectar ternarias es no inventarlas. Estos son los tres disfraces más comunes:

Falsa ternaria Ejemplo Modelo correcto
Cadena de binarias EMPLEADO-DEPARTAMENTO-SEDE EMPLEADO pertenece a DEPARTAMENTO; DEPARTAMENTO se ubica en SEDE
Hechos independientes EMPLEADO-IDIOMA-TITULACIÓN EMPLEADO habla IDIOMA; EMPLEADO posee TITULACIÓN
Una dependencia oculta ESTUDIANTE-EMPRESA-TUTOR, cuando cada tutor pertenece a una sola empresa ESTUDIANTE es tutelado por TUTOR; TUTOR trabaja en EMPRESA
Atributo disfrazado de entidad CLIENTE-PRODUCTO-PRECIO El precio es un atributo, no una entidad

En la sección 8.5 verás con ocurrencias por qué las tres primeras se pueden (y se deben) descomponer.


3. Representación de relaciones ternarias y n-arias

3.1. En la notación del curso

En la notación de Chen extendida que usamos en todo el curso, una relación n-aria es un rombo unido por una arista a cada entidad participante. Cada arista lleva la cardinalidad (mín, máx) de la entidad a la que llega. Los atributos de la relación cuelgan del rombo.

flowchart LR
    PROVEEDOR[PROVEEDOR] ---|"(1,n)"| suministra{"suministra<br/>N:M:P"}
    suministra ---|"(1,n)"| PIEZA[PIEZA]
    suministra ---|"(1,n)"| PROYECTO[PROYECTO]
    suministra --- s_cant([cantidad])
    PROVEEDOR --- pv_cif([<u>cif</u>])
    PIEZA --- pz_cod([<u>cod_pieza</u>])
    PROYECTO --- py_cod([<u>cod_proyecto</u>])

Convenciones que debes respetar:

  • Nombre de la relación: un verbo en minúsculas que se pueda leer con los tres participantes (“suministra”, “imparte”, “juega en”).
  • Una arista por papel. Si la misma entidad participa dos veces con papeles distintos, se dibujan dos aristas y se etiqueta el papel.
  • Cardinalidad junto a cada entidad, calculada con el método de la sección 4.
  • El tipo de correspondencia (1:N:M, N:M:P…) se indica en el texto o junto al rombo.

3.2. Papeles en las ternarias

Igual que en las reflexivas (módulo 08), una entidad puede aparecer varias veces en una ternaria con papeles (roles) distintos. En una liga de fútbol, un partido relaciona a un equipo local, a un equipo visitante y a una jornada:

flowchart LR
    EQUIPO[EQUIPO] ---|"local (1,1)"| juega{"juega<br/>1:1:1"}
    EQUIPO ---|"visitante (1,1)"| juega
    juega ---|"(1,1)"| JORNADA[JORNADA]
    juega --- j_res([resultado])
    EQUIPO --- e_cod([<u>cod_equipo</u>])
    JORNADA --- jo_num([<u>num_jornada</u>])

Es una relación de grado 3 aunque solo haya dos tipos de entidad: el grado cuenta los papeles, no las entidades distintas. Analizaremos sus cardinalidades en la sección 5.5.

3.3. Representación en otras notaciones

Notación ¿Admite n-arias? Cómo se representan
Chen / Chen extendida (la del curso) Sí Rombo con n aristas
EER de Elmasri y Navathe Sí Rombo con n aristas; cardinalidades como restricciones de participación (mín, máx) “mirando aquí”
UML (diagrama de clases) Sí Asociación n-aria: un rombo hueco unido a las n clases, con multiplicidades
Merise (Francia) Sí Elipse o rectángulo redondeado con n patas y cardinalidades de participación
Pata de gallo (crow’s foot, IE, Barker) No Se convierte el hecho en una entidad asociativa con n relaciones binarias

💡 Consejo: Que las notaciones de pata de gallo (las de casi todas las herramientas CASE, como Oracle SQL Developer Data Modeler o MySQL Workbench) no admitan n-arias no significa que las ternarias no existan: significa que esas herramientas trabajan ya a nivel lógico, donde la ternaria se ha convertido en una tabla. El diseño conceptual se hace mejor con Chen, donde el hecho ternario se ve tal cual.

3.4. Diagramas de ocurrencias

En las binarias se suelen dibujar diagramas de ocurrencias con flechas entre dos columnas de puntos. En las ternarias ese dibujo se vuelve ilegible enseguida, así que usaremos tablas de tuplas: una columna por papel y una fila por ocurrencia de la relación.

Proveedor Pieza Proyecto cantidad
S1 Aceros del Norte P1 Tornillo M8 J1 Puente del Ebro 5000
S1 Aceros del Norte P1 Tornillo M8 J2 Torre Sur 1200
S1 Aceros del Norte P2 Viga IPN J1 Puente del Ebro 40
S2 Ferralla Sur P1 Tornillo M8 J1 Puente del Ebro 3000
S2 Ferralla Sur P3 Cable 12 mm J2 Torre Sur 800

📘 Concepto: Las tablas de ocurrencias sirven para dos cosas: para descubrir las cardinalidades (¿puede existir esta fila junto a aquella?) y para verificarlas (¿hay alguna fila que viole lo que dice el diagrama?). Pero recuerda: unas cuantas filas pueden refutar una cardinalidad, nunca demostrarla. Las cardinalidades salen de las reglas de negocio, no de los datos de un día concreto.


4. Cálculo de cardinalidades en ternarias paso a paso

4.1. La idea: fijar todos los participantes menos uno

En una binaria A-B, para calcular la cardinalidad junto a B fijas una ocurrencia de A y preguntas con cuántas de B se relaciona. En una ternaria hay dos “otras” entidades, así que fijas una ocurrencia de cada una de las otras dos, es decir, un par.

📘 Concepto: En una relación ternaria R(A, B, C), la cardinalidad (mín, máx) escrita junto a C indica con cuántas ocurrencias de C, como mínimo y como máximo, está relacionado un par concreto (a, b) formado por una ocurrencia de A y una de B que participan juntas en la relación. Análogamente se calculan las de A (fijando un par de B y C) y las de B (fijando un par de A y C).

Es exactamente la misma convención que usamos en las binarias (la cardinalidad junto a una entidad indica con cuántas ocurrencias de ella se relaciona una ocurrencia de lo demás), llevada a tres participantes. A esta forma de leer se la llama a veces “mirando al otro lado” (look-across), porque la cifra se escribe en el extremo opuesto a lo que se ha fijado.

4.2. El método en cinco pasos

  1. Identifica las tres entidades y escribe la frase del hecho completo: “P imparte A al grupo G”.
  2. Elige una entidad (por ejemplo, C) y fija una ocurrencia concreta de cada una de las otras dos. Ponles nombre para no pensar en abstracto: “Ana” y “Bases de Datos”.
  3. Pregunta por el máximo: para Ana y Bases de Datos, ¿en cuántos grupos como máximo? Si la respuesta es “uno como mucho”, el máximo es 1; si pueden ser varios, es n.
  4. Pregunta por el mínimo: si Ana imparte Bases de Datos (el par participa en la relación), ¿en cuántos grupos como mínimo? En una ternaria, un par que participa siempre tiene al menos un tercero, así que la mínima es casi siempre 1 (sección 6).
  5. Escribe la pareja junto a C y repite los pasos 2-4 con las otras dos entidades. Al final, el tipo de correspondencia se forma con las tres máximas (1 o N/M/P).

4.3. Ejemplo completo: PROFESOR imparte ASIGNATURA a GRUPO

Recuperamos el requisito de la sección 1.2 y hacemos las tres preguntas, siempre con ocurrencias concretas:

Fijamos… Preguntamos por… Pregunta en lenguaje natural Respuesta según los requisitos Cardinalidad
ASIGNATURA = Bases de Datos, GRUPO = 1º DAM-A PROFESOR “Para Bases de Datos en 1º DAM-A, ¿cuántos profesores la imparten?” Exactamente uno (“cada asignatura, en un grupo concreto, la imparte un único profesor”) (1,1) junto a PROFESOR
PROFESOR = Ana, GRUPO = 1º DAM-A ASIGNATURA “Para Ana en 1º DAM-A, ¿cuántas asignaturas imparte?” Al menos una, y pueden ser varias (“puede impartir varias asignaturas en el mismo grupo”) (1,n) junto a ASIGNATURA
PROFESOR = Ana, ASIGNATURA = Bases de Datos GRUPO “Para Ana y Bases de Datos, ¿en cuántos grupos?” Al menos uno, y pueden ser varios (“la misma asignatura en varios grupos”) (1,n) junto a GRUPO

El tipo de correspondencia es 1:N:M (una máxima 1 y dos máximas n). Este es el diagrama resultante (el mismo de la sección 1.2):

flowchart LR
    PROFESOR[PROFESOR] ---|"(1,1)"| imparte{"imparte<br/>1:N:M"}
    imparte ---|"(1,n)"| ASIGNATURA[ASIGNATURA]
    imparte ---|"(1,n)"| GRUPO[GRUPO]

Comprobación con ocurrencias. Estas filas cumplen el diagrama:

Profesor Asignatura Grupo Comentario
Ana Bases de Datos 1º DAM-A  
Ana Bases de Datos 1º DAM-B Ana da la misma asignatura en dos grupos: (1,n) en GRUPO
Ana Programación 1º DAM-A Ana da dos asignaturas en el mismo grupo: (1,n) en ASIGNATURA
Luis Programación 1º DAM-B  
Luis Sistemas Informáticos 1º DAM-A  
Marta Bases de Datos 1º DAW-A  

Y esta fila violaría el diagrama si se añadiera:

Profesor Asignatura Grupo Por qué es inválida
Luis Bases de Datos 1º DAM-A El par (Bases de Datos, 1º DAM-A) ya tiene a Ana: tendría dos profesores, y la máxima junto a PROFESOR es 1

⚠️ Importante: Observa que la máxima 1 junto a PROFESOR no significa “un profesor imparte una sola cosa” (Ana imparte muchas). Significa que cada par (asignatura, grupo) tiene a lo sumo un profesor. En las ternarias, la máxima 1 siempre restringe a un par, nunca a una entidad suelta.

4.4. Cómo leer cada extremo

Para leer en voz alta una cardinalidad de una ternaria, usa siempre esta plantilla:

“Un [A] y un [B] concretos, que participan juntos en [relación], se relacionan con un mínimo de [mín] y un máximo de [máx] [C].”

Aplicada al ejemplo:

Extremo Lectura
(1,1) junto a PROFESOR “Una asignatura que se imparte en un grupo concreto la imparte exactamente un profesor.”
(1,n) junto a ASIGNATURA “Un profesor que da clase en un grupo concreto imparte en él entre 1 y n asignaturas.”
(1,n) junto a GRUPO “Un profesor que imparte una asignatura concreta la imparte en entre 1 y n grupos.”

💡 Consejo: Si al leer en voz alta te sale una frase con una sola entidad fijada (“un profesor imparte como máximo una…”), estás aplicando el razonamiento de las binarias y te vas a equivocar. Obligarte a decir “un X y un Y concretos” es la mejor vacuna.

4.5. La otra convención: participación (“mirando aquí”)

En el módulo 06 viste que existe una convención alternativa, la de participación (look-here), que usan Elmasri y Navathe y la notación Merise: la pareja junto a una entidad indica en cuántas ocurrencias de la relación participa una ocurrencia de esa entidad. En las ternarias ambas convenciones dan resultados muy distintos:

Entidad Convención del curso (fijar un par) Convención de participación (fijar una ocurrencia de la propia entidad)
PROFESOR (1,1): cada (asignatura, grupo) que se imparte tiene exactamente un profesor (0,n): un profesor aparece en muchas imparticiones (o en ninguna, si está de baja)
ASIGNATURA (1,n) (0,n) o (1,n) si toda asignatura debe impartirse en algún grupo
GRUPO (1,n) (1,n) si todo grupo tiene al menos una asignatura

⚠️ Importante: La convención de participación no puede expresar la regla “cada asignatura, en cada grupo, la imparte un solo profesor”, que es precisamente la más importante del requisito (y la que fijará la clave de la tabla). Por eso la convención del curso, que fija pares, es la habitual en España para ternarias. Cuando leas un libro, comprueba siempre qué convención usa antes de interpretar sus diagramas.

4.6. Generalización a grado n

El método se extiende sin cambios: en una relación de grado n, para calcular la cardinalidad junto a una entidad se fijan ocurrencias de las n − 1 restantes. En una cuaternaria se fijan tríos. Lo verás aplicado al horario de la sección 11.


5. Tipos de ternarias según sus cardinalidades máximas

5.1. Las cuatro combinaciones posibles

Cada una de las tres máximas puede ser 1 o muchos. Eso da 2³ = 8 combinaciones, que, salvo el orden en que se nombren las entidades, se reducen a cuatro tipos:

Tipo Máximas Significado Ejemplo de la sección
N:M:P n, n, n Ningún par determina al tercero PROVEEDOR-PIEZA-PROYECTO (5.2)
1:N:M 1, n, n Un par determina al tercero JUGADOR-EQUIPO-TEMPORADA (5.3)
1:1:N 1, 1, n Dos pares distintos determinan, cada uno, a un tercero PILOTO-COCHE-CARRERA (5.4)
1:1:1 1, 1, 1 Cualquier par determina al tercero EQUIPO local-EQUIPO visitante-JORNADA (5.5)

📘 Concepto: Para nombrar el tipo se escriben las tres máximas, usando letras distintas (N, M, P) para los “muchos” porque no tienen por qué ser el mismo número. El orden de las cifras sigue el orden en que nombras las entidades: si dices “JUGADOR-EQUIPO-TEMPORADA”, el tipo es N:1:M (el 1 está en EQUIPO), que es el mismo tipo que 1:N:M. Lo importante no es el orden, sino en qué entidad está cada 1.

5.2. Tipo N:M:P: PROVEEDOR suministra PIEZA a PROYECTO

El ejemplo clásico de la literatura (aparece en Date y en Elmasri y Navathe con distintas variantes) es el suministro de una constructora:

“Los proveedores suministran piezas a los proyectos de obra. Un mismo proveedor puede suministrar varias piezas a un mismo proyecto, la misma pieza a varios proyectos, y una misma pieza puede llegar a un proyecto desde varios proveedores. Interesa saber la cantidad suministrada.”

Fijamos… Pregunta Respuesta Cardinalidad
S1 y P1 ¿A cuántos proyectos suministra S1 la pieza P1? A uno o a varios (1,n) junto a PROYECTO
S1 y J1 ¿Cuántas piezas suministra S1 al proyecto J1? Una o varias (1,n) junto a PIEZA
P1 y J1 ¿Cuántos proveedores suministran P1 al proyecto J1? Uno o varios (1,n) junto a PROVEEDOR
flowchart LR
    PROVEEDOR[PROVEEDOR] ---|"(1,n)"| suministra{"suministra<br/>N:M:P"}
    suministra ---|"(1,n)"| PIEZA[PIEZA]
    suministra ---|"(1,n)"| PROYECTO[PROYECTO]
    suministra --- s_cant([cantidad])

Ocurrencias de ejemplo (todas válidas, ninguna combinación de dos columnas es única):

Proveedor Pieza Proyecto cantidad
S1 P1 J1 5000
S1 P1 J2 1200
S1 P2 J1 40
S2 P1 J1 3000
S2 P3 J2 800

Fíjate: el par (S1, P1) aparece con J1 y con J2; el par (P1, J1) aparece con S1 y con S2; el par (S1, J1) aparece con P1 y con P2. Ningún par determina al tercero. La única forma de identificar una fila es con las tres columnas.

5.3. Tipo 1:N:M: JUGADOR juega en EQUIPO durante TEMPORADA

“Una liga quiere guardar la trayectoria de sus jugadores. En cada temporada, un jugador pertenece a un único equipo (no se permiten traspasos a mitad de temporada). Un equipo tiene muchos jugadores cada temporada y un jugador puede volver a un equipo en el que ya estuvo. En cada temporada el jugador lleva un dorsal.”

Fijamos… Pregunta Respuesta Cardinalidad
Jugador = Iker, Temporada = 2025-26 ¿En cuántos equipos juega Iker en la 2025-26? Exactamente en uno (1,1) junto a EQUIPO
Equipo = Atlético Sur, Temporada = 2025-26 ¿Cuántos jugadores tiene ese equipo esa temporada? Muchos (1,n) junto a JUGADOR
Jugador = Iker, Equipo = Atlético Sur ¿En cuántas temporadas ha jugado Iker en ese equipo? En una o en varias (1,n) junto a TEMPORADA
flowchart LR
    JUGADOR[JUGADOR] ---|"(1,n)"| juega_en{"juega en<br/>1:N:M"}
    juega_en ---|"(1,1)"| EQUIPO[EQUIPO]
    juega_en ---|"(1,n)"| TEMPORADA[TEMPORADA]
    juega_en --- je_dorsal([dorsal])
Jugador Equipo Temporada dorsal
Iker Atlético Sur 2023-24 8
Iker Atlético Sur 2024-25 8
Iker Real Norte 2025-26 10
Lucía Atlético Sur 2025-26 8
Marco Atlético Sur 2025-26 4

La fila (Iker, Atlético Sur, 2025-26) sería inválida porque Iker ya juega en Real Norte esa temporada: el par (Iker, 2025-26) tendría dos equipos.

💡 Consejo: ¿Por qué no basta con una binaria JUGADOR-EQUIPO con la temporada como atributo? Porque Iker estuvo en Atlético Sur dos temporadas: la ocurrencia (Iker, Atlético Sur) aparecería dos veces, y una relación no admite ocurrencias repetidas. La temporada forma parte de la identidad del hecho, no es una simple propiedad. (Una alternativa válida sería convertir el hecho en una entidad FICHA; lo verás en la sección 10.)

5.4. Tipo 1:1:N: PILOTO conduce COCHE en CARRERA

“En una competición automovilística, en cada carrera cada piloto inscrito conduce un único coche (identificado por su número de chasis) y cada coche lo conduce un único piloto. A lo largo del campeonato, un mismo piloto puede conducir coches distintos en carreras distintas y un mismo coche puede pasar por varios pilotos. Una misma pareja piloto-coche puede repetirse en muchas carreras.”

Fijamos… Pregunta Respuesta Cardinalidad
Piloto = Vega, Carrera = GP Montmeló ¿Cuántos coches conduce Vega en Montmeló? Exactamente uno (1,1) junto a COCHE
Coche = Chasis 07, Carrera = GP Montmeló ¿Cuántos pilotos conducen el chasis 07 en Montmeló? Exactamente uno (1,1) junto a PILOTO
Piloto = Vega, Coche = Chasis 07 ¿En cuántas carreras ha conducido Vega el chasis 07? En una o en muchas (1,n) junto a CARRERA
flowchart LR
    PILOTO[PILOTO] ---|"(1,1)"| conduce{"conduce<br/>1:1:N"}
    conduce ---|"(1,1)"| COCHE[COCHE]
    conduce ---|"(1,n)"| CARRERA[CARRERA]
    conduce --- c_pos([posicion_final])
Piloto Coche Carrera posicion_final
Vega Chasis 07 GP Bahréin 5
Vega Chasis 07 GP Montmeló 3
Vega Chasis 09 GP Mónaco 2
Navas Chasis 09 GP Bahréin 11
Navas Chasis 08 GP Montmeló 9

Comprueba las dos restricciones:

  • Par (piloto, carrera) único: Vega-Bahréin, Vega-Montmeló, Vega-Mónaco, Navas-Bahréin, Navas-Montmeló. Sin repeticiones.
  • Par (coche, carrera) único: 07-Bahréin, 07-Montmeló, 09-Mónaco, 09-Bahréin, 08-Montmeló. Sin repeticiones.
  • Par (piloto, coche) repetido: Vega-Chasis 07 aparece en dos carreras. Permitido, porque la máxima junto a CARRERA es n.

Filas que serían inválidas: (Navas, Chasis 07, GP Montmeló), porque el chasis 07 ya lo conduce Vega en Montmeló; (Vega, Chasis 08, GP Bahréin), porque Vega ya conduce el 07 en Bahréin.

5.5. Tipo 1:1:1: partido entre EQUIPO local y EQUIPO visitante en una JORNADA

Las ternarias 1:1:1 son raras, pero existen. El calendario de una liga a doble vuelta es un ejemplo perfecto:

“La liga se juega a doble vuelta: cada equipo recibe en su campo a cada uno de los demás exactamente una vez. En cada jornada, cada equipo juega un único partido, como local o como visitante.”

Fijamos… Pregunta Respuesta Cardinalidad
Local = Atlético Sur, Jornada = 5 Si Atlético Sur juega en casa la jornada 5, ¿contra cuántos visitantes? Exactamente uno (1,1) junto a visitante
Visitante = Real Norte, Jornada = 5 Si Real Norte juega fuera la jornada 5, ¿en el campo de cuántos locales? Exactamente uno (1,1) junto a local
Local = Atlético Sur, Visitante = Real Norte ¿En cuántas jornadas recibe Atlético Sur a Real Norte? Exactamente una (doble vuelta) (1,1) junto a JORNADA
flowchart LR
    EQUIPO[EQUIPO] ---|"local (1,1)"| juega{"juega<br/>1:1:1"}
    EQUIPO ---|"visitante (1,1)"| juega
    juega ---|"(1,1)"| JORNADA[JORNADA]
    juega --- j_res([resultado])
Local Visitante Jornada resultado
Atlético Sur Real Norte 5 2-1
Unión Este Deportivo Oeste 5 0-0
Real Norte Atlético Sur 12 1-1
Deportivo Oeste Atlético Sur 13 0-3

Observa que cualquier par de columnas identifica la fila: (local, jornada), (visitante, jornada) y (local, visitante). Esta ternaria tiene tres formas distintas de identificar cada ocurrencia, lo que en el modelo relacional dará tres claves candidatas.

📘 Concepto: Fíjate en el (1,1) junto a JORNADA: aquí la mínima 1 dice todavía más que en los otros ejemplos, porque todo par (local, visitante) de equipos distintos debe enfrentarse obligatoriamente, no solo los que “ya participan”. Esa obligación de que existan todas las combinaciones no la expresa el diagrama (sección 6): se escribe como restricción textual.

5.6. Resumen de los tipos

Tipo Máximas a 1 Qué pares identifican una ocurrencia Nº de formas de identificar Ejemplo
N:M:P ninguna Ninguno: hacen falta las tres entidades 1 (el trío) Suministro
1:N:M una (en A) El par (B, C) 1 Jugador-temporada → equipo
1:1:N dos (en A y B) (B, C) y (A, C) 2 Piloto-carrera, coche-carrera
1:1:1 tres (A, B), (A, C) y (B, C) 3 Calendario a doble vuelta

💡 Consejo: Regla mnemotécnica: cada 1 junto a una entidad X dice que “los otros dos determinan a X”. Por eso cuantos más unos haya, más formas hay de identificar una ocurrencia sin usar las tres columnas.


6. Cardinalidades mínimas en ternarias y sus problemas de interpretación

6.1. La regla del curso: fijar pares que participan

En una binaria, la mínima se calcula fijando una ocurrencia cualquiera de la otra entidad: “un departamento concreto, ¿cuántos empleados tiene como mínimo?”. En una ternaria hay que fijar un par, y aquí surge la duda: ¿qué par? ¿Cualquiera, o solo los que tienen sentido?

📘 Concepto: Regla del curso. En una relación ternaria R(A, B, C), la mínima junto a C se calcula fijando un par (a, b) de ocurrencias de A y B que realmente participan juntas en la relación, es decir, que aparecen juntas en alguna ocurrencia de R. Por tanto, la pregunta es: “si Ana imparte Bases de Datos, ¿en cuántos grupos como mínimo?”, y no “para un profesor y una asignatura cualesquiera, ¿en cuántos grupos?”.

Con esta regla, la mínima en una ternaria es casi siempre 1:

  • Si Ana imparte Bases de Datos, la imparte en algún grupo: (1,n) junto a GRUPO.
  • Si S1 suministra P1 (a algún proyecto), lo suministra al menos a uno: (1,n) junto a PROYECTO.
  • Si Iker juega la temporada 2025-26, juega en algún equipo: (1,1) junto a EQUIPO.

6.2. Por qué una mínima 0 apenas tiene sentido en una ternaria

Recuerda la propiedad de la sección 1.1: una ocurrencia de una ternaria siempre tiene sus tres participantes. Un par (a, b) solo “participa” en la relación a través de alguna ocurrencia (a, b, c), y esa ocurrencia ya contiene un c. Por eso, si fijas un par que participa, siempre hay al menos un tercero. Una mínima 0 significaría “un par que participa en la relación sin ningún tercero”, es decir, un par que existe por sí mismo, y eso una ternaria no lo puede representar.

⚠️ Importante: Si al analizar un requisito te sale de forma natural una mínima 0 en una ternaria (“el empleado trabaja en el proyecto, pero puede no usar ninguna máquina”), no es un problema de la cardinalidad, sino del modelo: el par (empleado, proyecto) existe sin la tercera entidad. Eso es una relación binaria con vida propia, y lo que hay que relacionar con la tercera entidad es esa relación: la agregación (sección 9 y módulo 12).

Por la misma razón, en la notación del curso la mínima de una ternaria no sirve para decir que una entidad debe participar obligatoriamente (“todo grupo tiene al menos una asignatura”). Eso se escribe como restricción textual (sección 6.4).

6.3. Otras interpretaciones que encontrarás

Este es un punto en el que los autores no se ponen de acuerdo, así que conviene que conozcas las alternativas para no confundirte al leer otros libros o apuntes:

Interpretación Qué se fija para calcular la mínima junto a C Resultado típico Comentario
Pares que participan (la del curso) Un par (a, b) que aparece en alguna ocurrencia de R Casi siempre 1 La mínima confirma que no hay pares “incompletos”; la información importante está en las máximas
Estricta o “cualquier par” Un par (a, b) cualquiera de ocurrencias existentes de A y B Casi siempre 0 (no todo profesor imparte toda asignatura) Solo sería 1 si todas las combinaciones posibles tuvieran tercero; la mínima casi nunca aporta información
Participación (look-here; Elmasri y Navathe, Merise) Una ocurrencia de la propia entidad C: ¿en cuántas ocurrencias de R participa? 0 o 1 según la obligatoriedad de cada entidad Expresa bien la obligatoriedad, pero no puede expresar las máximas que fijan pares (la regla “cada asignatura, en cada grupo, un solo profesor”)

Así se vería la ternaria del instituto con cada interpretación:

Entidad Pares que participan (curso) Estricta Participación (look-here)
PROFESOR (1,1) (0,1) (0,n): un profesor puede no impartir nada este curso
ASIGNATURA (1,n) (0,n) (1,n) si toda asignatura se imparte en algún grupo
GRUPO (1,n) (0,n) (1,n) si todo grupo tiene alguna asignatura

💡 Consejo: Las máximas coinciden en las dos primeras interpretaciones: lo único que cambia es la mínima. Por eso, en un examen, céntrate en calcular bien las máximas e indica siempre qué convención usas para las mínimas. Si tu profesor o tu libro usa otra, respétala y justifícala en una línea.

6.4. Lo que la notación no puede expresar

Ninguna de las interpretaciones lo resuelve todo. Es una limitación conocida del modelo (estudiada, entre otros, por Ferg en 1991 y por Song, Evans y Park en 1995 al comparar notaciones E/R): con una sola pareja (mín, máx) por arista no se pueden expresar a la vez las dependencias entre pares (las máximas “mirando al otro lado”) y la obligatoriedad de participación de cada entidad.

Con la convención del curso, por tanto, estas reglas se escriben aparte:

  • RS1: todo grupo tiene al menos una asignatura asignada (participación obligatoria de GRUPO).
  • RS2: toda asignatura de la oferta se imparte en al menos un grupo (participación obligatoria de ASIGNATURA).
  • RS3 (en la liga de la sección 5.5): todo par de equipos distintos se enfrenta en alguna jornada (existen todas las combinaciones).

6.5. Regla práctica del curso

  1. Calcula las máximas con mucho cuidado: son las que más información aportan, porque determinan la clave de la tabla que generará la relación (sección 13).
  2. Calcula las mínimas fijando pares que participan juntos en la relación: el resultado será casi siempre 1.
  3. Si te sale una mínima 0 (un par puede existir sin tercero), replantéate el modelo: probablemente necesitas una agregación o convertir el hecho en entidad (secciones 9 y 10).
  4. Expresa la participación obligatoria de cada entidad, cuando la haya, como restricción textual.

7. Atributos de las relaciones ternarias

7.1. Atributos que dependen del trío completo

Un atributo pertenece a una ternaria cuando su valor depende de las tres ocurrencias a la vez:

Relación Atributo ¿Depende del trío?
PROVEEDOR suministra PIEZA a PROYECTO cantidad Sí: S1 suministra 5000 tornillos a J1 y 1200 a J2
JUGADOR juega en EQUIPO durante TEMPORADA dorsal Sí: Iker llevó el 8 en Atlético Sur y el 10 en Real Norte
PILOTO conduce COCHE en CARRERA posicion_final Sí: es el resultado de esa carrera, con ese coche y ese piloto
EQUIPO local juega contra EQUIPO visitante en JORNADA resultado Sí

7.2. Atributos que dependen solo de un par: señal de alarma

Si al analizar un atributo descubres que depende solo de dos de las tres entidades, has encontrado un problema de diseño:

“Interesa saber el precio al que cada proveedor vende cada pieza (su tarifa), que es el mismo sea cual sea el proyecto.”

El precio depende de (proveedor, pieza), no del proyecto. Si lo colocas en la ternaria suministra, se repetirá en todas las filas de ese proveedor y esa pieza (una por proyecto), con riesgo de incoherencia (S1 vende P1 a 0,10 € en una fila y a 0,12 € en otra). La solución es crear la binaria que de verdad sostiene ese atributo:

flowchart LR
    PROVEEDOR[PROVEEDOR] ---|"(1,n)"| suministra{"suministra<br/>N:M:P"}
    suministra ---|"(1,n)"| PIEZA[PIEZA]
    suministra ---|"(1,n)"| PROYECTO[PROYECTO]
    suministra --- s_cant([cantidad])
    PROVEEDOR ---|"(0,n)"| tarifa{"tiene en catálogo<br/>N:M"}
    tarifa ---|"(1,n)"| PIEZA
    tarifa --- t_precio([precio])

⚠️ Importante: Un atributo que depende solo de un par es el equivalente conceptual de una dependencia funcional parcial, que en el bloque de normalización verás que viola la 2FN. Detectarlo en el diseño conceptual te ahorra normalizar después.

7.3. Cuando “el tiempo” es participante y no atributo

Ya has visto el caso de la temporada. Es un patrón general: si el mismo par de entidades puede relacionarse varias veces y cada vez es un hecho distinto, el elemento que distingue esas repeticiones (una fecha, una temporada, una convocatoria, una jornada) no puede ser un atributo de la relación, porque una relación no admite ocurrencias repetidas. Tienes dos salidas:

Opción Cuándo es adecuada Ejemplo
Convertir el tiempo en entidad y crear una ternaria El periodo es un concepto del negocio con sus propios datos y se comparte entre muchos hechos TEMPORADA (año, fecha inicio, fecha fin), JORNADA, CONVOCATORIA
Convertir el hecho en entidad (sección 10) Cada repetición tiene identidad propia o muchos datos VISITA, RESERVA, PRÉSTAMO

💡 Consejo: No crees una entidad FECHA “porque sí”. Solo tiene sentido cuando la fecha identifica el hecho (el par se repite en fechas distintas) y no hay un concepto mejor. Si solo te interesa la fecha del último hecho, es un atributo de una binaria.

7.4. Una ternaria se identifica por sus participantes

Recuerda la propiedad de la sección 1.1: una ocurrencia de una ternaria es el trío de participantes. No tiene identificador propio. Si en tu problema el mismo trío puede repetirse (el mismo proveedor suministra la misma pieza al mismo proyecto en dos entregas distintas con cantidades distintas), la ternaria deja de servir tal cual: o añades un cuarto participante (FECHA de entrega, con los problemas de la sección 11) o conviertes el suministro en una entidad ENTREGA.


8. Ternaria frente a tres binarias

8.1. La tentación

Cuando un principiante ve una ternaria, la tentación es “simplificarla” en tres binarias, una por cada par de entidades:

flowchart LR
    PROVEEDOR[PROVEEDOR] ---|"(0,n)"| sp{"vende<br/>N:M"}
    sp ---|"(0,n)"| PIEZA[PIEZA]
    PIEZA ---|"(0,n)"| pj{"se usa en<br/>N:M"}
    pj ---|"(0,n)"| PROYECTO[PROYECTO]
    PROVEEDOR ---|"(0,n)"| sj{"abastece<br/>N:M"}
    sj ---|"(0,n)"| PROYECTO

Parece equivalente: sabemos qué piezas vende cada proveedor, qué piezas usa cada proyecto y qué proveedores abastecen a cada proyecto. No lo es. Vamos a demostrarlo.

8.2. Demostración con ocurrencias: la pérdida de información

Partimos de esta realidad (la ternaria suministra), con solo tres suministros:

# Proveedor Pieza Proyecto
1 S1 P1 J2
2 S1 P2 J1
3 S2 P1 J1

Paso 1. Proyectamos sobre cada par (lo que guardarían las tres binarias):

vende (proveedor, pieza) se usa en (pieza, proyecto) abastece (proveedor, proyecto)
(S1, P1) (P1, J2) (S1, J2)
(S1, P2) (P2, J1) (S1, J1)
(S2, P1) (P1, J1) (S2, J1)

Paso 2. Intentamos reconstruir la ternaria combinando las binarias: un trío (s, p, j) “sería posible” si (s, p) está en vende, (p, j) en se usa en y (s, j) en abastece. Probamos todas las combinaciones que encajan:

Trío candidato ¿(s, p) en vende? ¿(p, j) en se usa en? ¿(s, j) en abastece? ¿Se reconstruye? ¿Es real?
(S1, P1, J2) Sí Sí Sí Sí Sí
(S1, P1, J1) Sí Sí Sí Sí No
(S1, P2, J1) Sí Sí Sí Sí Sí
(S2, P1, J2) Sí Sí No No No
(S2, P1, J1) Sí Sí Sí Sí Sí

Paso 3. Conclusión. La reconstrucción produce cuatro tríos en lugar de tres: aparece (S1, P1, J1), una tupla espuria (spurious tuple). Según las binarias, S1 vende P1, P1 se usa en J1 y S1 abastece a J1… pero S1 nunca ha suministrado P1 a J1 (el P1 de J1 lo puso S2).

Y lo más grave: si la realidad hubiera sido cuatro suministros (los tres anteriores más un cuarto real (S1, P1, J1)), las tres binarias serían exactamente las mismas. Es decir:

📘 Concepto: Dos realidades distintas producen el mismo contenido en las tres binarias. Por tanto, las binarias no pueden distinguir entre ellas: hay pérdida de información. La pregunta “¿suministró S1 la pieza P1 al proyecto J1?” no tiene respuesta con el modelo de tres binarias. Además, con las binarias no hay dónde guardar la cantidad, que depende del trío.

En términos del modelo relacional (lo formalizarás en el módulo de normalización), la tabla de suministros no es igual a la reunión natural de sus tres proyecciones: π[prov, pieza](S) ⋈ π[pieza, proy](S) ⋈ π[prov, proy](S) ≠ S.

8.3. Al revés: las binarias pueden decir cosas que la ternaria no dice

La relación entre ternaria y binarias no es “una es mejor que otra”: expresan hechos distintos. Las binarias pueden guardar información que la ternaria no puede:

  • “S3 puede suministrar P4” (está en su catálogo), aunque todavía no se la haya suministrado a ningún proyecto. En la ternaria no hay forma de guardarlo: haría falta un proyecto.
  • “El proyecto J3 necesita la pieza P5”, aunque no se haya elegido proveedor.

Si el problema necesita ambos tipos de hechos (lo que se ha suministrado y lo que se puede suministrar), el diseño correcto tiene la ternaria y las binarias que correspondan, cada una con su significado, y quizá una restricción que las conecte (sección 12).

8.4. Por qué ocurre

La pérdida de información aparece porque el hecho “S suministra P a J” no es la conjunción de “S vende P”, “P se usa en J” y “S abastece a J”. Que se cumplan las tres cosas por separado no implica que se cumplan juntas en un mismo suministro. Solo si existe una regla de negocio que garantice esa implicación, la descomposición es correcta (caso c de la sección siguiente).

8.5. Cuándo sí se puede descomponer

Hay tres situaciones en que una aparente ternaria se puede (y normalmente se debe) sustituir por binarias sin perder información:

a) Existe una dependencia entre dos de las entidades

“Cada pieza la fabrica un único proveedor, que es quien la suministra a todos los proyectos (piezas en exclusiva).”

Ahora la pieza determina al proveedor, independientemente del proyecto. La “ternaria” contendría filas como estas:

Proveedor Pieza Proyecto
S1 P1 J1
S1 P1 J2
S1 P2 J1
S2 P3 J1
S2 P3 J3

El dato “P1 es de S1” se repite en cada proyecto que usa P1. Se descompone en dos binarias:

fabrica (pieza → proveedor) se usa en (pieza, proyecto)
(P1, S1) (P1, J1)
(P2, S1) (P1, J2)
(P3, S2) (P2, J1)
  (P3, J1)
  (P3, J3)

Reconstrucción: para cada fila de se usa en, el proveedor es el único que fabrica esa pieza. Se obtienen exactamente las cinco filas originales, sin tuplas espurias. La descomposición es sin pérdida (lossless), porque las dos binarias comparten la pieza y la pieza determina al proveedor (es el teorema de Heath, que verás en el módulo de dependencias funcionales).

flowchart LR
    PROVEEDOR[PROVEEDOR] ---|"(1,1)"| fabrica{"fabrica<br/>1:N"}
    fabrica ---|"(0,n)"| PIEZA[PIEZA]
    PIEZA ---|"(0,n)"| se_usa{"se usa en<br/>N:M"}
    se_usa ---|"(0,n)"| PROYECTO[PROYECTO]

📘 Concepto: Si existe una dependencia X → Y entre dos de las entidades de una ternaria que se cumple con independencia de la tercera, la ternaria es falsa: se sustituye por la binaria X-Y (con máxima 1 junto a Y) y una binaria entre X y la tercera entidad.

b) Los hechos son independientes entre sí

“Cada asignatura la pueden impartir varios profesores (en distintos grupos) y tiene una lista de libros recomendados. Los libros recomendados son los mismos sea quien sea el profesor.”

Si lo modelas como ternaria ASIGNATURA-PROFESOR-LIBRO, estás obligado a guardar todas las combinaciones:

Asignatura Profesor Libro
Bases de Datos Ana Elmasri
Bases de Datos Ana Silberschatz
Bases de Datos Marta Elmasri
Bases de Datos Marta Silberschatz

Si se recomienda un tercer libro, hay que insertar dos filas (una por profesor); si entra un tercer profesor, otras tantas. Es una redundancia enorme que delata que no hay un hecho ternario, sino dos hechos independientes: “la asignatura la imparte el profesor” y “la asignatura recomienda el libro”.

flowchart LR
    PROFESOR[PROFESOR] ---|"(1,n)"| imparte{"imparte<br/>N:M"}
    imparte ---|"(0,n)"| ASIGNATURA[ASIGNATURA]
    ASIGNATURA ---|"(0,n)"| recomienda{"recomienda<br/>N:M"}
    recomienda ---|"(0,n)"| LIBRO[LIBRO]

💡 Consejo: La señal de alarma es la frase “sea quien sea” (o “independientemente de”). En el bloque de normalización verás que esta situación se llama dependencia multivaluada y que su eliminación es la 4FN.

c) Existe una regla cíclica explícita

En raras ocasiones el negocio impone una regla como esta: “si un proveedor vende una pieza, esa pieza se usa en un proyecto y ese proveedor abastece a ese proyecto, entonces el proveedor suministra esa pieza a ese proyecto”. Con esa regla, la tupla (S1, P1, J1) de la sección 8.2 no sería espuria, sino obligatoria, y las tres binarias reconstruirían exactamente la realidad. Es la dependencia de reunión (join dependency) que da lugar a la 5FN. Es tan poco frecuente que, si no aparece explícitamente en los requisitos, no la supongas.

8.6. Tabla de decisión

Situación Modelo correcto
El hecho necesita los tres participantes y ningún par lo explica Ternaria
Un par determina a una entidad con independencia de la tercera Dos binarias (una de ellas con máxima 1)
Dos hechos independientes sobre una entidad común (“sea quien sea”) Dos binarias con la entidad común
Regla cíclica explícita en los requisitos Tres binarias (sin pérdida gracias a la regla)
Se necesita registrar el hecho ternario y hechos binarios con significado propio Ternaria + binarias, cada una con su significado, y restricciones que las conecten
El par existe por sí mismo y la tercera entidad se asocia al par ya existente Binaria + agregación (sección 9)

9. Ternaria frente a binaria + agregación

9.1. Un caso que parece ternario

“Los empleados trabajan en proyectos; de cada participación interesa la fecha de incorporación. Además, cada empleado, en cada proyecto en el que trabaja, puede utilizar maquinaria de la empresa (una o varias máquinas, o ninguna), y hay que saber cuántas horas ha usado cada máquina.”

La primera idea es una ternaria EMPLEADO-PROYECTO-MAQUINARIA. Escribamos ocurrencias:

Empleado Proyecto Máquina fecha_incorporacion horas
Eva P1 Grúa G2 01/03/2026 120
Eva P1 Retro R1 01/03/2026 45
Eva P2 ??? 15/05/2026 ???

Aparecen tres problemas:

  1. Eva trabaja en P2 sin usar ninguna máquina. En una ternaria no hay “huecos”: no podemos registrar la participación de Eva en P2 sin inventar una máquina.
  2. La fecha de incorporación se repite en cada fila de Eva en P1 (una por máquina). Depende solo del par (empleado, proyecto): es la señal de alarma de la sección 7.2.
  3. Si para resolver el punto 1 añadimos una binaria trabaja EMPLEADO-PROYECTO además de la ternaria, nada impide que la ternaria contenga (Luis, P3, Grúa G2) aunque Luis no trabaje en P3: los datos pueden contradecirse.

9.2. La idea de la agregación

El análisis revela la estructura real del problema: hay un hecho binario que existe por sí mismo (el empleado trabaja en el proyecto) y otro hecho que se apoya en él (en esa participación se usa una máquina). Lo que queremos es relacionar MAQUINARIA con la participación, no con el empleado ni con el proyecto por separado. El modelo E/R básico no permite unir una relación con otra, y por eso existe la agregación: se encierra la relación trabaja con sus entidades en una “caja” que se comporta como una entidad de nivel superior.

flowchart LR
    subgraph PARTICIPACION["PARTICIPACIÓN (agregación)"]
        direction LR
        EMPLEADO[EMPLEADO] ---|"(1,n)"| trabaja{"trabaja<br/>N:M"}
        trabaja ---|"(0,n)"| PROYECTO[PROYECTO]
        trabaja --- t_fecha([fecha_incorporacion])
    end
    PARTICIPACION ---|"(0,n)"| usa{"usa<br/>N:M"}
    usa ---|"(0,n)"| MAQUINARIA[MAQUINARIA]
    usa --- u_horas([horas])

Con este diagrama, Eva puede trabajar en P2 sin máquinas (la participación existe aunque no esté en usa), la fecha de incorporación se guarda una sola vez, y es imposible registrar el uso de una máquina en una participación que no existe.

📘 Concepto: Como criterio rápido: si uno de los pares de la supuesta ternaria existe con independencia de la tercera entidad (tiene sentido, atributos o reglas propias aunque la tercera no esté), probablemente no tienes una ternaria sino una binaria agregada relacionada con la tercera entidad. La agregación se estudia a fondo en el módulo 12 (Agregación), incluida la demostración completa con ocurrencias de cuándo elegir cada opción.

9.3. Comparación resumida

Pregunta Si la respuesta es sí…
¿Puede existir el par (A, B) sin ninguna C? Agregación de A-B relacionada con C
¿Tiene el par (A, B) atributos propios que no dependen de C? Agregación de A-B relacionada con C
¿Solo tiene sentido el hecho con A, B y C a la vez, y ningún par existe por sí solo? Ternaria
¿Hay que impedir que C se asocie a pares (A, B) que no existen? Agregación (la ternaria + binaria no lo impide)

10. Ternaria frente a entidad

10.1. Convertir el hecho en una entidad

Otra alternativa siempre disponible es cosificar el hecho (reification): en lugar de un rombo con tres aristas, se crea una entidad que representa el hecho, unida por relaciones binarias a cada uno de los antiguos participantes. A esa entidad se la suele llamar entidad asociativa (associative entity) o, en las herramientas de pata de gallo, entidad de intersección.

Ejemplo: las reservas de un hotel.

“Un cliente reserva una habitación para unas fechas. Cada reserva tiene un localizador (código alfanumérico que se entrega al cliente), una fecha de entrada, una fecha de salida y el número de huéspedes. La habitación concreta se puede asignar más tarde, al hacer el check-in.”

Si lo intentamos como ternaria CLIENTE-HABITACIÓN-FECHA, chocamos con todo:

Problema Por qué la ternaria no sirve
La reserva tiene un localizador propio Una ocurrencia de relación no tiene identificador propio
Una reserva de 5 noches ocuparía 5 filas (una por fecha) El hecho “reserva” no es “cliente-habitación-noche”
La habitación se asigna después Una ternaria no admite participantes vacíos
El mismo cliente puede reservar la misma habitación en la misma fecha de entrada dos años distintos Solo si la FECHA incluye el año; y si cancela y vuelve a reservar, el trío se repite

La solución es la entidad RESERVA:

flowchart LR
    CLIENTE[CLIENTE] ---|"(1,1)"| realiza{"realiza<br/>1:N"}
    realiza ---|"(0,n)"| RESERVA[RESERVA]
    RESERVA ---|"(0,n)"| asignada{"se asigna<br/>1:N"}
    asignada ---|"(0,1)"| HABITACION[HABITACIÓN]
    RESERVA --- r_loc([<u>localizador</u>])
    RESERVA --- r_ent([fecha_entrada])
    RESERVA --- r_sal([fecha_salida])
    RESERVA --- r_hue([num_huespedes])

Lectura: cada reserva la realiza exactamente un cliente (1,1) y un cliente realiza de 0 a n reservas; cada reserva tiene como mucho una habitación asignada (0,1: puede no tenerla todavía) y una habitación aparece en 0 a n reservas.

10.2. Cómo cambian las cardinalidades al convertir

Si conviertes una ternaria R(A, B, C) en una entidad E unida a A, B y C por tres binarias:

  • Junto a cada antigua entidad (A, B, C) se escribe (1,1): cada ocurrencia del hecho tiene exactamente un participante de cada tipo (o (0,1) si alguno puede faltar, que es una de las ventajas de la entidad).
  • Junto a E se escribe (0,n) en cada binaria (o (1,n) si la entidad debe participar obligatoriamente).
  • Las máximas originales de la ternaria ya no se ven en el diagrama: hay que conservarlas como restricciones de unicidad.
Ternaria original Restricción que hay que añadir a la entidad E
N:M:P No hay dos E con el mismo trío (a, b, c), si no se permiten repeticiones
1:N:M (1 en A) No hay dos E con el mismo par (b, c)
1:1:N (1 en A y en B) No hay dos E con el mismo (b, c) ni con el mismo (a, c)
1:1:1 No hay dos E con el mismo (a, b), ni (a, c), ni (b, c)

⚠️ Importante: Este es el error más habitual al cosificar: dibujar la entidad con sus tres binarias y olvidar la regla “cada asignatura, en cada grupo, un solo profesor”. El diagrama queda bonito, pero la base de datos permitirá dos profesores para el mismo grupo y asignatura. Escribe siempre la restricción de unicidad (en el relacional será una UNIQUE o la propia clave primaria).

10.3. Cuándo conviene la entidad

Criterio Ternaria Entidad
El hecho tiene identificador propio en la realidad (localizador, nº de matrícula, nº de expediente)   ✔
El mismo trío puede repetirse   ✔
Algún participante puede faltar temporalmente   ✔
El hecho tiene muchos atributos o un ciclo de vida (estados: pendiente, confirmada, cancelada)   ✔
El hecho participa en otras relaciones (la reserva genera una factura) Agregación (módulo 12) ✔
El hecho es simple, sin identidad propia, identificado por sus tres participantes ✔  
Se quiere que las restricciones de las máximas se vean en el diagrama ✔  
Se trabaja con una herramienta de pata de gallo   ✔ (obligatorio)

10.4. ¿Entidad débil o entidad con identificador propio?

Al cosificar tienes dos opciones, que se estudian en detalle en el módulo 10 (Entidades débiles):

  • Entidad débil identificada por sus participantes: por ejemplo, MATRÍCULA identificada por el alumno, la asignatura y el curso académico. Es lo más fiel a la ternaria original.
  • Entidad fuerte con identificador propio (un número de matrícula o un localizador), más las restricciones de unicidad de la tabla anterior. Es lo habitual cuando el código existe en la realidad o cuando el hecho se va a referenciar mucho desde otras partes del modelo.

11. Relaciones de grado 4 o superior

11.1. El ejemplo del horario

Las relaciones de grado mayor que 3 existen, pero son difíciles de leer, de validar y de mantener. El caso típico es el horario de un centro educativo:

“El horario indica qué profesor imparte qué asignatura en qué aula y en qué franja horaria semanal (lunes 8:00-9:00, lunes 9:00-10:00…). Cada asignatura tiene varias sesiones semanales. En una franja, un aula acoge como mucho una clase y un profesor solo puede estar en una clase.”

(Para simplificar, supón que cada asignatura tiene un solo grupo. Si añadieras el GRUPO, la relación sería de grado 5.) Es una relación de grado 4 de tipo 1:1:1:N, con las cardinalidades que se calculan a continuación.

flowchart LR
    PROFESOR[PROFESOR] ---|"(1,1)"| da_clase{"da clase<br/>1:1:1:N"}
    ASIGNATURA[ASIGNATURA] ---|"(1,1)"| da_clase
    da_clase ---|"(1,1)"| AULA[AULA]
    da_clase ---|"(1,n)"| FRANJA["FRANJA HORARIA"]

11.2. Cálculo de cardinalidades fijando tríos

Fijamos… Pregunta Respuesta Cardinalidad
asignatura, aula, franja ¿Cuántos profesores dan esa asignatura en ese aula en esa franja? Exactamente uno (1,1) junto a PROFESOR
profesor, aula, franja ¿Cuántas asignaturas da ese profesor en ese aula en esa franja? Exactamente una (1,1) junto a ASIGNATURA
profesor, asignatura, franja ¿En cuántas aulas está ese profesor con esa asignatura en esa franja? Exactamente una (1,1) junto a AULA
profesor, asignatura, aula ¿En cuántas franjas da ese profesor esa asignatura en ese aula? En una o en varias (1,n) junto a FRANJA

11.3. El problema: reglas que la notación no puede expresar

Las reglas reales del horario son:

  • RS1: (profesor, franja) → (aula, asignatura): un profesor, en una franja, está en un solo sitio dando una sola cosa.
  • RS2: (aula, franja) → (profesor, asignatura): un aula, en una franja, tiene una sola clase.

Las dos tienen un determinante de dos entidades, pero en una relación de grado 4 cada cardinalidad fija tres. El diagrama no puede expresarlas. Comprueba que estas ocurrencias cumplen todas las cardinalidades dibujadas y, sin embargo, son absurdas:

Profesor Asignatura Aula Franja Qué regla real viola
Ana Bases de Datos A1 Lunes 8:00  
Ana Sistemas A2 Lunes 8:00 RS1: Ana está en dos aulas a la vez
Luis Programación A1 Lunes 8:00 RS2: el aula A1 tiene dos clases a la vez

Ningún trío fijado se repite (cada fila difiere de las demás en al menos dos columnas), así que todas las cardinalidades del diagrama se cumplen.

⚠️ Importante: Cuanto mayor es el grado, menos restricciones puede expresar el diagrama, porque las cardinalidades solo capturan dependencias con n − 1 participantes. En una ternaria se pierden las dependencias de un solo participante (8.5 a); en una cuaternaria, además, las de dos.

11.4. Cómo simplificarlas

Para un hecho de grado 4 o más, prueba estas técnicas, por este orden.

Técnica 1. Busca dependencias que permitan sacar binarias (como en la sección 8.5): ¿alguna entidad determina a otra con independencia del resto? Por ejemplo, si cada asignatura tuviera un único profesor, PROFESOR saldría de la relación como binaria con ASIGNATURA, y quedaría una ternaria ASIGNATURA-AULA-FRANJA.

Técnica 2. Busca el par (o trío) que identifica el hecho y conviértelo en entidad. En el horario, la regla RS2 dice que (aula, franja) identifica una clase. Creamos la entidad SESIÓN, identificada por su aula y su franja (una entidad débil con dos relaciones de identificación, módulo 10), y la unimos con binarias a PROFESOR y ASIGNATURA:

flowchart LR
    classDef debil stroke-width:4px
    AULA[AULA] ---|"(1,1)"| en{"en<br/>ID"}:::debil
    en ---|"(0,n)"| SESION[SESIÓN]:::debil
    FRANJA["FRANJA HORARIA"] ---|"(1,1)"| durante{"durante<br/>ID"}:::debil
    durante ---|"(0,n)"| SESION
    SESION ---|"(0,n)"| impartida{"impartida por<br/>1:N"}
    impartida ---|"(1,1)"| PROFESOR[PROFESOR]
    SESION ---|"(0,n)"| de{"de<br/>1:N"}
    de ---|"(1,1)"| ASIGNATURA[ASIGNATURA]

Ahora la regla RS2 está en la estructura (cada sesión es un par aula-franja y tiene un único profesor y una única asignatura), y RS1 queda como una sola restricción de unicidad: “no hay dos sesiones con el mismo profesor y la misma franja”.

Técnica 3. Usa agregación cuando un subhecho existe por sí mismo. Si el centro primero decide quién imparte cada asignatura (IMPARTICIÓN = PROFESOR imparte ASIGNATURA) y después la programa en el horario, el modelo natural es una agregación IMPARTICIÓN relacionada con AULA y FRANJA (módulo 12).

💡 Consejo: Como regla práctica, desconfía de cualquier relación de grado 4 o más. Casi siempre esconde dependencias que permiten simplificarla o un hecho con identidad propia que merece ser entidad. Si después de analizarla sigue siendo irreducible, mantenla, pero documenta con cuidado todas las restricciones que el diagrama no recoge.


12. Restricciones adicionales en ternarias

Las cardinalidades no lo dicen todo. Al modelar una ternaria, revisa sistemáticamente si hay reglas de estos tipos y escríbelas como restricciones semánticas textuales (RS1, RS2…) junto al diagrama. En el módulo 13 (Restricciones avanzadas) verás estas restricciones con más detalle y en el módulo de transformación cómo se implementan.

Tipo de restricción Ejemplo ¿La expresa el diagrama?
Participación obligatoria de una entidad “Todo grupo tiene al menos una asignatura asignada” No (sección 6)
Dependencia con determinante parcial “Un aula, en una franja, tiene una sola clase” (en una cuaternaria) No (sección 11)
Inclusión respecto a una binaria “Solo se suministran a un proyecto piezas que el proveedor tenga en catálogo” (la ternaria suministra proyectada sobre proveedor-pieza debe estar incluida en tiene en catálogo) No
Exclusión entre papeles “En el partido, el equipo local y el visitante son distintos” No
Coherencia entre ocurrencias “Un equipo no puede jugar como local y como visitante en la misma jornada” No: las claves (local, jornada) y (visitante, jornada) no lo impiden
Dominio de atributos de la relación “La cantidad suministrada es mayor que 0”; “el dorsal está entre 1 y 99” No
Restricción entre atributos y participantes “El dorsal es único dentro de cada equipo y temporada” No: es una unicidad sobre (equipo, temporada, dorsal)
Temporal “Un jugador no puede jugar en una temporada anterior a su fecha de nacimiento + 16 años” No

Algunas de estas restricciones se pueden anotar en el propio diagrama con las convenciones del módulo 13: la inclusión entre relaciones, con una flecha discontinua entre los rombos, y las demás reglas, con notas unidas con línea discontinua al elemento al que se refieren:

flowchart LR
    classDef nota fill:#fff8dc,stroke:#999,stroke-dasharray: 3 3
    PROVEEDOR[PROVEEDOR] ---|"(1,n)"| suministra{"suministra<br/>N:M:P"}
    suministra ---|"(1,n)"| PIEZA[PIEZA]
    suministra ---|"(1,n)"| PROYECTO[PROYECTO]
    suministra --- s_cant([cantidad])
    PROVEEDOR ---|"(0,n)"| catalogo{"tiene en catálogo<br/>N:M"}
    catalogo ---|"(1,n)"| PIEZA
    suministra -.->|"inclusión"| catalogo
    R1["R1: la cantidad suministrada es mayor que 0"]:::nota
    R1 -.- s_cant

Lectura de la inclusión: todo par (proveedor, pieza) que aparece en suministra debe aparecer también en tiene en catálogo. Observa que la inclusión se refiere a la proyección de la ternaria sobre dos de sus entidades.

💻 Ejemplo: Restricciones del modelo JUGADOR-EQUIPO-TEMPORADA (sección 5.3), tal como se escribirían en la documentación:

  • RS1: el dorsal es un número entero entre 1 y 99.
  • RS2: dentro de un mismo equipo y temporada no puede haber dos jugadores con el mismo dorsal.
  • RS3: todo equipo inscrito en una temporada tiene al menos 18 jugadores en ella.

Fíjate en RS2: es una restricción de unicidad que involucra a un atributo de la relación. Es muy frecuente y nunca aparece en el diagrama.


13. Relación con las dependencias funcionales

13.1. Cada máxima 1 es una dependencia funcional

Todavía no has estudiado formalmente las dependencias funcionales (lo harás en el bloque de diseño lógico), pero puedes adelantar la idea: una dependencia funcional X → Y significa que “conocido X, Y queda determinado”. Y eso es justo lo que dice una máxima 1 en una ternaria:

📘 Concepto: En una ternaria R(A, B, C), una cardinalidad máxima 1 junto a C equivale a la dependencia funcional (A, B) → C: cada par (a, b) se relaciona con un único c. Una máxima n junto a C indica que no existe esa dependencia.

13.2. La clave de la tabla depende de las cardinalidades

Cuando, en el módulo 17 (Transformación E/R → relacional), conviertas una ternaria en una tabla, su clave primaria saldrá directamente de esas dependencias:

Tipo Dependencias funcionales Claves candidatas de la tabla Clave primaria habitual
N:M:P Ninguna (salvo las triviales) {A, B, C} Las tres claves ajenas
1:N:M (1 en A) (B, C) → A {B, C} (B, C); A es una columna no clave
1:1:N (1 en A y B) (B, C) → A y (A, C) → B {B, C} y {A, C} Una de ellas; la otra, UNIQUE
1:1:1 (B, C) → A, (A, C) → B, (A, B) → C {A, B}, {A, C} y {B, C} Una de ellas; las otras dos, UNIQUE

Un adelanto con los ejemplos del módulo (notación del esquema relacional del curso: clave primaria subrayada, claves ajenas en cursiva):

SUMINISTROS (*cif*, *cod_pieza*, *cod_proyecto*, cantidad)

IMPARTICIONES (*cod_asig*, *cod_grupo*, dni_profesor)

PERTENENCIAS (*cod_jugador*, *cod_temporada*, cod_equipo, dorsal)

CONDUCCIONES (*cod_piloto*, *cod_carrera*, num_chasis, posicion_final)

  • UK: (num_chasis, cod_carrera)

PARTIDOS (*local_id*, *visitante_id*, num_jornada, resultado)

  • UK: (local_id, num_jornada)
  • UK: (visitante_id, num_jornada)

⚠️ Importante: Fíjate en IMPARTICIONES: el profesor no forma parte de la clave primaria. Si hubieras puesto mal la cardinalidad (n en lugar de 1 junto a PROFESOR), la clave sería (asignatura, grupo, profesor) y la base de datos permitiría dos profesores para la misma asignatura y grupo. Un error de una cifra en el diagrama se convierte en un error de integridad en producción.

13.3. Lo que el diagrama no recoge, tampoco lo recogerá la clave

Las dependencias que la notación no expresa (la pieza que determina al proveedor, el aula y la franja que determinan la clase en una cuaternaria) no aparecerán automáticamente en la clave de la tabla. Si no las resuelves en el diseño conceptual (descomponiendo o cosificando, como en las secciones 8.5 y 11.4), aparecerán más tarde como anomalías que tendrás que corregir con la normalización.


14. Errores frecuentes

Error Síntoma Solución
Calcular la cardinalidad fijando una sola entidad, como en las binarias Aparecen máximas n donde debería haber 1 (o al revés); la lectura “un profesor imparte como máximo un…” Fijar siempre un par de ocurrencias de las otras dos entidades (sección 4)
Descomponer una ternaria auténtica en tres binarias Preguntas sin respuesta (“¿quién dio Programación en 1º DAM-A?”); tuplas espurias Comprobar con ocurrencias (sección 8.2)
Inventar una ternaria donde hay binarias Atributos que dependen de un par; combinaciones repetidas (“sea quien sea”) Buscar dependencias y hechos independientes (sección 8.5)
Poner un atributo que depende de un par en la ternaria El mismo valor se repite en muchas filas Moverlo a la binaria correspondiente (sección 7.2)
Usar una ternaria cuando un participante puede faltar “Ponemos una máquina ficticia”, “un proyecto ‘ninguno’” Agregación o entidad (secciones 9 y 10)
Usar una ternaria cuando el mismo trío se repite Se pierden repeticiones o se “inventa” un atributo para distinguirlas Añadir participante temporal o cosificar el hecho (secciones 7.3 y 10)
Poner mínima 0 en una ternaria “porque no todo profesor imparte toda asignatura” Mínimas 0 en todas las aristas, que no aportan nada Calcular la mínima sobre pares que participan (casi siempre 1); si un par existe sin tercero, usar agregación (sección 6)
Expresar con la mínima de la ternaria la obligatoriedad de una entidad (“todo grupo tiene asignaturas”) Se confunde con la convención de participación Escribirla como restricción textual (sección 6.4)
Cosificar la ternaria y olvidar las restricciones de unicidad La base de datos admite dos profesores por asignatura y grupo Añadir la unicidad equivalente a cada máxima 1 (sección 10.2)
Dejar relaciones de grado 4 o 5 sin analizar Restricciones esenciales que el diagrama no expresa Simplificar (sección 11.4) y documentar restricciones
Confundir el grado con el número de entidades distintas “Es binaria porque solo hay EQUIPO y JORNADA” El grado cuenta papeles: local, visitante y jornada son tres
Deducir cardinalidades de unas pocas filas de ejemplo Una máxima 1 que solo se cumple “porque no ha pasado todavía” Las cardinalidades salen de las reglas de negocio; los datos solo las refutan

15. Ejercicios

Ejercicio 1: ¿Ternaria o no?

Para cada requisito, indica si hay una relación ternaria auténtica o no y, si no la hay, qué modelo propones:

  1. “En cada turno, cada camarero atiende varias mesas y cada mesa la atiende un único camarero.”
  2. “Un autor escribe libros y cada libro lo publica una editorial.”
  3. “Un actor interpreta a un personaje en una película (un actor puede tener dos papeles en la misma película y un personaje puede ser interpretado por varios actores).”
  4. “Los empleados hablan idiomas y dominan tecnologías.”
  5. “Un alumno de FP hace las prácticas en una empresa con un tutor de empresa. Cada tutor trabaja en una única empresa.”
  6. “Un cliente alquila un coche en una oficina. El mismo cliente puede alquilar el mismo coche en la misma oficina muchas veces; cada alquiler tiene número de contrato, fechas y kilometraje.”
Ver solución
Nº ¿Ternaria? Modelo propuesto y justificación
1 Sí CAMARERO-MESA-TURNO: “quién atiende cada mesa” depende del turno. Es 1:N:M (ver ejercicio 2)
2 No Cadena de binarias: AUTOR escribe LIBRO (N:M) y LIBRO es publicado por EDITORIAL (N:1). La editorial depende del libro, no del autor
3 Sí ACTOR-PELÍCULA-PERSONAJE, de tipo N:M:P (ver ejercicio 5)
4 No Hechos independientes: EMPLEADO habla IDIOMA y EMPLEADO domina TECNOLOGÍA (ver ejercicio 7)
5 No Hay una dependencia TUTOR → EMPRESA independiente del alumno: ALUMNO es tutelado por TUTOR y TUTOR trabaja en EMPRESA (ver ejercicio 6)
6 No como relación El mismo trío se repite y el hecho tiene identificador propio (nº de contrato) y atributos: entidad ALQUILER relacionada con CLIENTE, COCHE y OFICINA (sección 10)

Ejercicio 2: Cardinalidades de CAMARERO-MESA-TURNO

“Un restaurante organiza su trabajo en turnos (comida del 6 de octubre, cena del 6 de octubre…). En cada turno, cada mesa la atiende un único camarero, y un camarero atiende varias mesas. A lo largo del tiempo, el mismo camarero atiende la misma mesa en muchos turnos. Interesa guardar la propina recibida en cada servicio.”

Calcula las tres cardinalidades con el método de fijar pares, indica el tipo, dibuja el diagrama y propón una fila que lo viole.

Ver solución
Fijamos… Pregunta Respuesta Cardinalidad
Mesa 7, cena del 6/10 (la mesa se atiende ese turno) ¿Cuántos camareros atienden la mesa 7 en esa cena? Exactamente uno (1,1) junto a CAMARERO
Rosa, cena del 6/10 (Rosa trabaja ese turno) ¿Cuántas mesas atiende Rosa en esa cena? Una o varias (1,n) junto a MESA
Rosa, mesa 7 (Rosa ha atendido esa mesa alguna vez) ¿En cuántos turnos? Uno o muchos (1,n) junto a TURNO

Tipo 1:N:M con el 1 en CAMARERO.

flowchart LR
    CAMARERO[CAMARERO] ---|"(1,1)"| atiende{"atiende<br/>1:N:M"}
    atiende ---|"(1,n)"| MESA[MESA]
    atiende ---|"(1,n)"| TURNO[TURNO]
    atiende --- at_prop([propina])

Ocurrencias válidas: (Rosa, mesa 7, cena 6/10), (Rosa, mesa 8, cena 6/10), (Rosa, mesa 7, comida 7/10), (Jorge, mesa 9, cena 6/10). Fila que lo viola: (Jorge, mesa 7, cena 6/10), porque el par (mesa 7, cena 6/10) ya tiene a Rosa. Dependencia funcional: (mesa, turno) → camarero; la tabla tendrá clave (mesa, turno).

Ejercicio 3: Deducir cardinalidades a partir de ocurrencias

En los exámenes prácticos de un centro, cada alumno ocupa un ordenador (PUESTO) en cada sesión de examen. Te dan estas ocurrencias reales:

Alumno Puesto Sesión
Irene PC01 S1
Irene PC01 S2
Irene PC03 S3
Óscar PC02 S1
Óscar PC01 S3
Nerea PC03 S1

a) ¿Qué máximas refutan los datos? b) ¿Cuáles son compatibles con ellos? c) Con la regla de negocio “en cada sesión, un alumno ocupa un único puesto y un puesto lo ocupa un único alumno”, da las cardinalidades definitivas, el tipo y las claves de la futura tabla.

Ver solución

Analizamos los pares de cada combinación de dos columnas:

Par fijado Pares que aparecen ¿Algún par se repite? Conclusión sobre la tercera
(alumno, sesión) Irene-S1, Irene-S2, Irene-S3, Óscar-S1, Óscar-S3, Nerea-S1 No Compatible con máxima 1 junto a PUESTO
(puesto, sesión) PC01-S1, PC01-S2, PC03-S3, PC02-S1, PC01-S3, PC03-S1 No Compatible con máxima 1 junto a ALUMNO
(alumno, puesto) Irene-PC01 aparece dos veces (S1 y S2) Sí Refuta máxima 1 junto a SESIÓN: debe ser n

a) Los datos refutan una máxima 1 junto a SESIÓN. b) Son compatibles con máxima 1 junto a PUESTO y junto a ALUMNO, pero no lo demuestran (podría ser casualidad). c) La regla de negocio confirma ambas: cardinalidades (1,1) junto a ALUMNO, (1,1) junto a PUESTO y (1,n) junto a SESIÓN (mínimas 1 porque se calculan sobre pares que participan en la relación). Tipo 1:1:N. Dependencias: (puesto, sesión) → alumno y (alumno, sesión) → puesto. Claves candidatas: {alumno, sesión} y {puesto, sesión}.

flowchart LR
    ALUMNO[ALUMNO] ---|"(1,1)"| ocupa{"ocupa<br/>1:1:N"}
    ocupa ---|"(1,1)"| PUESTO[PUESTO]
    ocupa ---|"(1,n)"| SESION["SESIÓN DE EXAMEN"]

Ejercicio 4: Validar ocurrencias

Sobre el modelo JUGADOR-EQUIPO-TEMPORADA de la sección 5.3 (con la restricción RS2 de la sección 12: el dorsal es único dentro de cada equipo y temporada) y con las cinco filas de la tabla de esa sección, indica cuáles de estas inserciones se aceptan y cuáles se rechazan, y por qué:

Fila Jugador Equipo Temporada dorsal
a Marco Real Norte 2025-26 4
b Lucía Atlético Sur 2024-25 8
c Lucía Real Norte 2024-25 8
d Iker Atlético Sur 2026-27 8
e Marco Atlético Sur 2025-26 5
Ver solución
Fila Resultado Motivo
a Rechazada Marco ya juega en Atlético Sur en 2025-26: el par (Marco, 2025-26) tendría dos equipos y la máxima junto a EQUIPO es 1
b Rechazada Cumple las cardinalidades, pero viola RS2: en Atlético Sur 2024-25 el dorsal 8 ya es de Iker
c Aceptada Lucía no tenía equipo en 2024-25 y en Real Norte ese año nadie lleva el 8
d Aceptada Iker vuelve a un equipo en el que ya estuvo: el par (Iker, Atlético Sur) puede repetirse en temporadas distintas
e Rechazada El trío (Marco, Atlético Sur, 2025-26) ya existe: una relación no admite ocurrencias repetidas. Cambiar el dorsal sería una modificación de la ocurrencia existente, no una inserción

Observa que la fila b solo se detecta gracias a una restricción textual: el diagrama, por sí solo, la aceptaría.

Ejercicio 5: Demostrar la pérdida de información

En una plataforma de streaming, la ficha de cada película recoge qué actor interpreta a qué personaje. Partimos de estas tres ocurrencias reales:

Actor Película Personaje
Sara La saga I Kael
Sara La saga II Nova
Hugo La saga I Nova

Un compañero propone sustituir la ternaria por tres binarias (ACTOR-PELÍCULA, PELÍCULA-PERSONAJE, ACTOR-PERSONAJE). Demuestra con ocurrencias que se pierde información y calcula las cardinalidades de la ternaria sabiendo que un actor puede hacer dos papeles en una película, un personaje puede tener varios intérpretes en la misma película (versión joven y adulta) y un actor puede interpretar al mismo personaje en varias películas.

Ver solución

Proyecciones (contenido de las binarias):

actúa en (actor, película) aparece en (película, personaje) interpreta (actor, personaje)
(Sara, La saga I) (La saga I, Kael) (Sara, Kael)
(Sara, La saga II) (La saga II, Nova) (Sara, Nova)
(Hugo, La saga I) (La saga I, Nova) (Hugo, Nova)

Reconstrucción: para cada par actor-película tomamos los personajes de esa película y comprobamos que el par actor-personaje exista:

Trío candidato ¿Pasa los tres filtros? ¿Es real?
(Sara, La saga I, Kael) Sí Sí
(Sara, La saga I, Nova) Sí No: tupla espuria
(Sara, La saga II, Nova) Sí Sí
(Hugo, La saga I, Kael) No: (Hugo, Kael) no existe No
(Hugo, La saga I, Nova) Sí Sí

Las binarias afirman implícitamente que Sara interpretó a Nova en La saga I, cosa falsa. Y si fuera verdad (cuatro ocurrencias), las binarias tendrían exactamente el mismo contenido: no pueden distinguir ambas realidades.

Cardinalidades: fijados un actor y una película en la que actúa, uno o varios personajes → (1,n) junto a PERSONAJE; fijados una película y un personaje que aparece en ella, uno o varios actores → (1,n) junto a ACTOR; fijados un actor y un personaje que interpreta, una o varias películas → (1,n) junto a PELÍCULA. Tipo N:M:P.

flowchart LR
    ACTOR[ACTOR] ---|"(1,n)"| interpreta{"interpreta<br/>N:M:P"}
    interpreta ---|"(1,n)"| PELICULA[PELÍCULA]
    interpreta ---|"(1,n)"| PERSONAJE[PERSONAJE]

Ejercicio 6: Una ternaria que sí se descompone

“En la FCT (Formación en Centros de Trabajo), cada alumno hace las prácticas en una empresa y tiene asignado un tutor de esa empresa. Cada tutor trabaja en una única empresa y puede tutelar a varios alumnos. Cada alumno hace las prácticas una sola vez.”

Un diseño inicial usa la ternaria ALUMNO-EMPRESA-TUTOR. Muestra con ocurrencias la redundancia, propón una descomposición y demuestra que no pierde información.

Ver solución

Ocurrencias de la ternaria:

Alumno Empresa Tutor
Ana TecnoSoft Ruiz
Bruno TecnoSoft Ruiz
Carla TecnoSoft Gil
David Datalia Moreno

El dato “Ruiz trabaja en TecnoSoft” se repite en cada alumno de Ruiz. Existe la dependencia tutor → empresa, que no depende del alumno: es el caso a) de la sección 8.5. Además, alumno → tutor (cada alumno una sola FCT).

Descomposición:

es tutelado por (alumno, tutor) trabaja en (tutor, empresa)
(Ana, Ruiz) (Ruiz, TecnoSoft)
(Bruno, Ruiz) (Gil, TecnoSoft)
(Carla, Gil) (Moreno, Datalia)
(David, Moreno)  

Reconstrucción: para cada alumno tomamos su tutor y, como cada tutor tiene una sola empresa, la empresa queda determinada sin ambigüedad. Se obtienen exactamente las cuatro filas originales. Además, ahora se puede registrar un tutor que todavía no tiene alumnos, cosa que la ternaria no permitía.

flowchart LR
    ALUMNO[ALUMNO] ---|"(0,1)"| tutelado{"es tutelado por<br/>1:N"}
    tutelado ---|"(0,n)"| TUTOR[TUTOR]
    TUTOR ---|"(1,1)"| trabaja_en{"trabaja en<br/>1:N"}
    trabaja_en ---|"(0,n)"| EMPRESA[EMPRESA]

Lectura: cada alumno tiene 0 o 1 tutor (0 mientras no se le asigna); cada tutor tutela de 0 a n alumnos; cada tutor trabaja exactamente en una empresa y cada empresa tiene de 0 a n tutores.

Ejercicio 7: Hechos independientes

Una consultora guarda los idiomas y las tecnologías de sus empleados en una ternaria EMPLEADO-IDIOMA-TECNOLOGÍA. Elena habla inglés, francés y alemán, y domina Java, Python, SQL y Docker. a) ¿Cuántas ocurrencias de la ternaria hacen falta para Elena? b) ¿Qué pasa si Elena aprende italiano? c) ¿Y con un empleado nuevo que habla inglés pero aún no domina ninguna tecnología? d) Propón el modelo correcto.

Ver solución

a) Como los idiomas y las tecnologías no tienen nada que ver entre sí, para que la ternaria no “invente” ni “pierda” combinaciones hay que guardar todas: 3 × 4 = 12 ocurrencias.

b) Aprender italiano obliga a insertar 4 filas (italiano con cada tecnología). Si se inserta solo una, los datos dirán que Elena habla italiano “solo para Java”, lo cual no tiene sentido.

c) No se puede guardar: una ternaria no admite que falte la tecnología (anomalía de inserción).

d) Son dos hechos independientes (“sea cual sea la tecnología”). Modelo correcto con dos binarias N:M:

flowchart LR
    IDIOMA[IDIOMA] ---|"(0,n)"| habla{"habla<br/>N:M"}
    habla ---|"(0,n)"| EMPLEADO[EMPLEADO]
    EMPLEADO ---|"(0,n)"| domina{"domina<br/>N:M"}
    domina ---|"(0,n)"| TECNOLOGIA[TECNOLOGÍA]
    habla --- h_nivel([nivel])
    domina --- d_anios([anios_experiencia])

Para Elena bastan 3 + 4 = 7 ocurrencias. Y observa que ahora cada relación puede tener sus propios atributos (nivel del idioma, años de experiencia en la tecnología), que en la ternaria no tendrían dónde ponerse sin repetirse.

Ejercicio 8: De ternaria a entidad

“Una clínica veterinaria registra las visitas: qué veterinario atiende a qué mascota, en qué fecha y a qué hora. Una mascota puede ir varias veces el mismo día (por ejemplo, para una cura por la mañana y una revisión por la tarde). En cada visita se anotan el motivo, el diagnóstico y el importe, y se pueden aplicar varios tratamientos de un catálogo, con su dosis.”

a) Explica por qué una ternaria VETERINARIO-MASCOTA-FECHA no es adecuada. b) Dibuja el modelo con una entidad VISITA. c) Escribe las restricciones de unicidad necesarias.

Ver solución

a) Hay varias razones (sección 10.3):

  • El mismo trío (veterinario, mascota, fecha) se repite el mismo día, y una relación no admite ocurrencias repetidas.
  • La visita participa en otra relación (se le aplican tratamientos), y una relación no puede relacionarse directamente con una entidad (habría que usar agregación).
  • Tiene varios atributos y una identidad clara para la clínica (el número de visita que figura en la factura).

b) Modelo con la entidad VISITA:

flowchart LR
    VETERINARIO[VETERINARIO] ---|"(1,1)"| atiende{"atiende<br/>1:N"}
    atiende ---|"(0,n)"| VISITA[VISITA]
    MASCOTA[MASCOTA] ---|"(1,1)"| recibe{"recibe<br/>1:N"}
    recibe ---|"(0,n)"| VISITA
    VISITA ---|"(0,n)"| aplica{"aplica<br/>N:M"}
    aplica ---|"(0,n)"| TRATAMIENTO[TRATAMIENTO]
    aplica --- ap_dosis([dosis])
    VISITA --- v_num([<u>num_visita</u>])
    VISITA --- v_fh([fecha_hora])
    VISITA --- v_mot([motivo])
    VISITA --- v_diag(["diagnostico (0,1)"])
    VISITA --- v_imp([importe])

Cada visita la atiende exactamente un veterinario y es de exactamente una mascota; un veterinario atiende de 0 a n visitas y una mascota recibe de 0 a n. Cada visita aplica de 0 a n tratamientos y cada tratamiento se aplica en 0 a n visitas, con la dosis como atributo de la relación.

c) Restricciones (las máximas que la ternaria habría expresado y otras reglas de sentido común):

  • RS1: no hay dos visitas de la misma mascota con la misma fecha y hora.
  • RS2: no hay dos visitas del mismo veterinario con la misma fecha y hora.
  • RS3: el importe es mayor o igual que 0.

Ejercicio 9: Simplificar una relación de grado 4

“En un congreso, las charlas se presentan en salas durante franjas horarias. Una charla puede tener varios ponentes y se programa una sola vez (en una sala y una franja). En una franja, una sala acoge una única charla. Un ponente no puede presentar dos charlas en la misma franja.”

a) Calcula las cardinalidades de la cuaternaria PONENTE-CHARLA-SALA-FRANJA. b) ¿Qué dependencia permite simplificarla? c) Propón el modelo simplificado y las restricciones textuales.

Ver solución

a) Fijando tríos:

Fijamos… ¿Cuántos…? Cardinalidad
charla, sala, franja ponentes: uno o varios (1,n) junto a PONENTE
ponente, sala, franja charlas: exactamente una (1,1) junto a CHARLA
ponente, charla, franja salas: exactamente una (1,1) junto a SALA
ponente, charla, sala franjas: exactamente una (1,1) junto a FRANJA

b) La charla determina la sala y la franja con independencia de los ponentes (“se programa una sola vez”): charla → sala y charla → franja. Es la situación de la sección 8.5 a), generalizada.

c) Modelo simplificado: sacamos la sala y la franja como binarias de CHARLA y dejamos la relación N:M entre PONENTE y CHARLA:

flowchart LR
    PONENTE[PONENTE] ---|"(1,n)"| presenta{"presenta<br/>N:M"}
    presenta ---|"(1,n)"| CHARLA[CHARLA]
    CHARLA ---|"(0,n)"| se_celebra{"se celebra en<br/>1:N"}
    se_celebra ---|"(1,1)"| SALA[SALA]
    CHARLA ---|"(0,n)"| se_programa{"se programa en<br/>1:N"}
    se_programa ---|"(1,1)"| FRANJA["FRANJA HORARIA"]

Restricciones textuales:

  • RS1: no hay dos charlas en la misma sala y la misma franja.
  • RS2: un ponente no presenta dos charlas programadas en la misma franja.

El modelo tiene tres relaciones binarias, fáciles de leer, y solo dos restricciones textuales. La cuaternaria original no expresaba ninguna de las dos reglas.

Ejercicio 10: Dependencias funcionales y claves

Para cada ternaria, escribe las dependencias funcionales que expresan sus máximas, las claves candidatas de la tabla que generará y su esquema relacional con la notación del curso:

  1. CAMARERO-MESA-TURNO (ejercicio 2).
  2. ALUMNO-PUESTO-SESIÓN (ejercicio 3).
  3. ACTOR-PELÍCULA-PERSONAJE (ejercicio 5).
  4. CONCURSANTE-COCINA-PRUEBA de un concurso de cocina: “en cada prueba, cada concursante usa una única cocina y cada cocina la usa un único concursante; por rotación, cada concursante pasa por cada cocina como mucho una vez”.
Ver solución
Ternaria Tipo Dependencias Claves candidatas
CAMARERO-MESA-TURNO 1:N:M (mesa, turno) → camarero {mesa, turno}
ALUMNO-PUESTO-SESIÓN 1:1:N (puesto, sesión) → alumno; (alumno, sesión) → puesto {puesto, sesión}, {alumno, sesión}
ACTOR-PELÍCULA-PERSONAJE N:M:P Ninguna no trivial {actor, película, personaje}
CONCURSANTE-COCINA-PRUEBA 1:1:1 (cocina, prueba) → concursante; (concursante, prueba) → cocina; (concursante, cocina) → prueba {cocina, prueba}, {concursante, prueba}, {concursante, cocina}

Esquemas (adelanto del módulo 17):

SERVICIOS (*num_mesa*, *cod_turno*, cod_camarero, propina)

OCUPACIONES (*cod_alumno*, *cod_sesion*, cod_puesto)

  • UK: (cod_puesto, cod_sesion)

INTERPRETACIONES (*cod_actor*, *cod_pelicula*, *cod_personaje*)

USOS_COCINA (*cod_concursante*, *cod_prueba*, cod_cocina)

  • UK: (cod_cocina, cod_prueba)
  • UK: (cod_concursante, cod_cocina)

En las 1:1:N y 1:1:1 la elección de la clave primaria entre las candidatas es libre; las demás se declaran como claves alternativas (UNIQUE). Lo que no es libre es declararlas todas: si olvidas una, la base de datos aceptará datos que violan una regla de negocio.

Ejercicio 11: Corrige el diagrama

Un compañero ha modelado así el requisito de la sección 5.3 (jugadores, equipos y temporadas) y ha escrito esta lectura: “(1,1) junto a EQUIPO significa que un jugador juega en un único equipo”. Además, ha añadido el atributo fecha_nacimiento_jugador a la relación. Encuentra los errores.

flowchart LR
    JUGADOR[JUGADOR] ---|"(1,n)"| juega_en{"juega en<br/>1:N:M"}
    juega_en ---|"(1,1)"| EQUIPO[EQUIPO]
    juega_en ---|"(1,n)"| TEMPORADA[TEMPORADA]
    juega_en --- je_dorsal([dorsal])
    juega_en --- je_fnac([fecha_nacimiento_jugador])
Ver solución
  • Error de lectura. Las cardinalidades son correctas, pero la lectura no: en una ternaria la máxima 1 junto a EQUIPO restringe al par (jugador, temporada), no al jugador. Lectura correcta: “un jugador que juega una temporada concreta lo hace en exactamente un equipo”. Con la lectura del compañero, Iker no podría haber jugado en Atlético Sur y en Real Norte, cosa que la tabla de la sección 5.3 permite.
  • Error de atributo. La fecha de nacimiento depende solo del jugador: no depende ni del equipo ni de la temporada. Debe ser atributo de la entidad JUGADOR. En la relación se repetiría en cada temporada del jugador.
  • Los atributos que sí son de la relación son los que dependen del trío, como el dorsal.

Ejercicios propuestos

✏️ Ejercicio: En un hospital, “en cada turno (mañana, tarde, noche de cada día), cada enfermera está asignada a una única planta, y una planta tiene varias enfermeras en cada turno. Una enfermera puede trabajar en la misma planta muchos turnos”. Calcula las cardinalidades de ENFERMERA-PLANTA-TURNO, indica el tipo, escribe seis ocurrencias válidas y una inválida, y da la clave de la tabla resultante.

✏️ Ejercicio: En una biblioteca, un socio toma prestado un ejemplar en una fecha. Un socio puede tomar prestado el mismo ejemplar varias veces e incluso el mismo día (lo devuelve y lo vuelve a coger). Cada préstamo tiene fecha de devolución prevista y real, y puede generar una sanción. Decide razonadamente entre ternaria SOCIO-EJEMPLAR-FECHA y entidad PRÉSTAMO, y dibuja tu solución.

✏️ Ejercicio: Una cadena de tiendas vende productos a clientes. El precio de cada producto puede ser distinto en cada tienda, pero es el mismo para todos los clientes. De cada venta interesa la cantidad. Analiza qué atributos dependen de qué entidades y propón un modelo sin atributos mal colocados.

✏️ Ejercicio: Inventa un requisito real que dé lugar a una ternaria 1:1:1 distinta de las del módulo. Justifica cada una de las tres máximas con ocurrencias concretas y explica qué añade la mínima 1 en cada extremo.

✏️ Ejercicio: En un centro de salud, cada médico tiene una única especialidad. Un diseño usa la ternaria MÉDICO-PACIENTE-ESPECIALIDAD para registrar qué médico atiende a qué paciente “en qué especialidad”. Demuestra con ocurrencias que la ternaria es falsa, propón la descomposición y comprueba que la reconstrucción no genera tuplas espurias.

✏️ Ejercicio: Una plataforma de streaming quiere saber qué usuario ve qué capítulo en qué dispositivo, y en qué minuto se quedó. Un usuario puede ver el mismo capítulo en varios dispositivos y volver a verlo meses después. Propón dos modelos (ternaria con alguna entidad temporal y entidad VISUALIZACIÓN), compáralos y elige uno.

✏️ Ejercicio: Amplía el horario de la sección 11 con el GRUPO (relación de grado 5: PROFESOR, ASIGNATURA, GRUPO, AULA, FRANJA). Escribe todas las reglas de negocio razonables, indica cuáles no podría expresar el diagrama de grado 5 y simplifica el modelo con las técnicas de la sección 11.4.

✏️ Ejercicio: Te dan esta tabla, obtenida de una ternaria MÉDICO-SERVICIO-FECHA de guardias: GUARDIAS (*dni_medico*, *fecha*, cod_servicio) con UK: (cod_servicio, fecha). Deduce las cardinalidades máximas de la ternaria original, su tipo, y redacta en lenguaje natural las reglas de negocio que expresan.


Resumen

Concepto Idea clave
Relación n-aria Subconjunto de E₁ × … × Eₙ; cada ocurrencia tiene exactamente un participante por papel
Ternaria auténtica Hecho indivisible que involucra a las tres entidades a la vez y no se reconstruye con binarias
Grado Número de papeles, no de entidades distintas (local, visitante y jornada: grado 3)
Cálculo de cardinalidades Junto a C: fijado un par (a, b), ¿con cuántos C como mínimo y máximo? En grado n se fijan n − 1
Lectura “Un A y un B concretos se relacionan con entre mín y máx C”
Tipos N:M:P, 1:N:M, 1:1:N y 1:1:1 según dónde haya máximas 1
Mínimas Se calculan sobre pares que participan juntos: casi siempre 1; una mínima 0 indica un par que existe sin tercero (agregación); la obligatoriedad de cada entidad, como restricción textual
Atributos Pertenecen a la ternaria si dependen del trío; si dependen de un par, van a una binaria
Ternaria vs tres binarias En general no equivalen: tuplas espurias y pérdida de información
Descomposición válida Si hay una dependencia entre dos entidades, hechos independientes o una regla cíclica explícita
Ternaria vs agregación Si un par existe por sí mismo, se agrega y se relaciona con la tercera entidad (módulo 12)
Ternaria vs entidad Identificador propio, tríos repetidos, participantes opcionales o muchos atributos: entidad + restricciones de unicidad
Grado 4 o más Desconfía: busca dependencias, el par que identifica el hecho o subhechos agregables
Restricciones adicionales Participación, inclusión, exclusión, unicidades con atributos, dominios: se documentan como RS
Dependencias funcionales Máxima 1 junto a C ⇔ (A, B) → C; determina la clave de la tabla resultante