En álgebra relacional, ¿cómo expresa la restricción de integridad que impone que cualquier valor bajo el atributo X en la relación A debe aparecer al menos una vez en la relación B?

Asumiré que la restricción es:

Cualquier valor en la columna X de la relación A debe aparecer al menos una vez en la columna Y de la relación B.

Notación para el álgebra:

  • [math] \ pi_ {a_1, \ ldots, a_n} (R) [/ math] es la proyección de la relación R en las columnas [math] a_1, \ ldots, a_n [/ math]
  • [math] R \ times S [/ math] es el producto cartesiano de [math] R [/ math] y [math] S [/ math]
  • [matemática] R \ cap S [/ matemática] es la intersección de [matemática] R [/ matemática] y [matemática] S [/ matemática]
  • [matemática] R \ setminus S [/ matemática] es [matemática] R [/ matemática] menos [matemática] S [/ matemática]
  • [math] \ sigma_ {a = b} (R) [/ math] es la selección de [math] R [/ math] que satisface [math] a = b [/ math]
  • [math] \ rho_ {a \ mapsto b} (R [/ math]) cambia el nombre de la columna [math] a [/ math] a [math] b [/ math]

Notación para ecuaciones de álgebra:

  • [matemática] R \ subseteq S [/ matemática] denota que la relación [matemática] R [/ matemática] es un subconjunto de la relación [matemática] S [/ matemática]
  • [matemáticas] R = S [/ matemáticas] denota que R y S son la misma relación
  • [math] \ emptyset [/ math] es la relación vacía

Puede escribir directamente la restricción como:

  • [matemáticas] \ pi_ {X} (A) \ subseteq \ rho_ {Y \ mapsto X} (\ pi_ {Y} (B)) [/ matemáticas]

Si desea una expresión que lo exprese en forma de igualdad, puede usar el hecho de que [math] R \ subseteq S [/ math] es equivalente a [math] R \ cap S = R [/ math]:

  • [matemáticas] \ pi_X (A) \ cap \ rho_ {Y \ mapsto X} (\ pi_Y (B)) = \ pi_X (A) [/ matemáticas]

La intersección siempre se puede reemplazar usando el producto cartesiano y la selección, por lo que si desea hacerlo solo con los cinco operadores básicos:

  • [matemáticas] \ pi_X (\ sigma_ {X = Y} (\ pi_X (A) \ times \ pi_Y (B))) = \ pi_X (A) [/ matemáticas]

Si desea una ecuación de la forma = , puede ser:

  • [matemáticas] \ pi_ {X} (A) \ setminus \ rho_ {Y \ mapsto X} (\ pi_ {Y} (B)) = \ emptyset [/ math]