Autor Tema: Calculo relacional basado en tuplas?

0 Usuarios y 1 Visitante están viendo este tema.

28 Septiembre, 2021, 04:15 am
Leído 254 veces

Jambo

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 210
  • País: uy
  • Karma: +0/-0
  • Sexo: Femenino
Hola! Primero que nada, no sé si alguien puede ayudarme con esto; en caso de que haya alguien, no sé bien en que foro iría (así que lo puse aquí  :P)

Me presentan una realidad, que representan mediante tablas, entre las que están:

Autores (cod_autor, nom_autor, notas)
Contiene el código de autor, nombre y notas sobre él.

Inventario (cod_registro, cod_obra, volumen, forma_ingreso, fecha_recepcion)
Contiene los registros de las obras en el inventario, con los datos de volumen, forma de ingreso y fecha de recepción.

Obra_autor (cod_obra, cod_autor, cod_funcion)
Contiene cada combinación de obra con autor, y la función que cumple el autor en esa obra.

Y luego me piden devolver los nombres de los autores que están relacionados sólo con obras que nunca ingresaron al inventario por medio de ‘canje’ con una expresión del calculo relacional.

¿Alguien podría ayudarme? No llego a la solución planteada :(

Saludos

28 Septiembre, 2021, 11:16 pm
Respuesta #1

martiniano

  • Moderador Global
  • Mensajes: 1,963
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola.

Pues a ver... He leído alguna vez algo sobre esto en material de bases de datos, pero ya te aviso que no tengo mucha idea.

Yo lo que haría es:

\[ A=\Pi_{codobra} (\sigma_{formaingreso='canje'} (Inventario))  \]

En A están los códigos de las obras cuya forma de ingreso fue el canje.

\[ B=\Pi_{codautor} (Obraautor\otimes{}_{codobra} A)  \]

En B están los códigos de los autores con obras en A. Finalmente, la sentencia que devuelve lo que pide el enunciado es:

\[ \Pi_{nomautor} (Autores) - \Pi_{nomautor} (B\otimes{}_{codautor} (Autores)  \]

He utilizado el símbolo \[ \otimes{} \] para lo del join (creo), \[ \Pi \] para las proyecciones y \[ \sigma \] para las selecciones.

Espero que te sirva. Un saludo.