• No se han encontrado resultados

conceptos previos

N/A
N/A
Protected

Academic year: 2022

Share "conceptos previos"

Copied!
54
0
0

Texto completo

(1)

Dpto. Lenguajes y Sistemas Informáticos

T4.2006-07

(2)

introducción conceptos

previos operadores AR ejemplos

introducción

– ¿Qué es el AR? ¿Para qué sirve?

conceptos previos

– Los conceptos que utiliza AR.

Cómo se adaptan otros conceptos ya conocidos

operadores AR

– Cómo se usan los diferentes operadores del lenguaje

ejemplos

– Cómo construyo consultas con

estos operadores

(3)

introducción conceptos

previos operadores AR ejemplos

los lenguajes de especificación en el MR

• Codd propone 3 lenguajes teóricos en su teoría del MR

ƒ álgebra relacional

ƒ cálculo relacional de tuplas

ƒ cálculo relacional de dominios

• ¿para qué?

ƒ base teórica

ƒ declaración de los mínimos a cumplir por

todo lenguaje “relacional”

(4)

introducción conceptos

previos operadores AR ejemplos

los lenguajes de

especificación en el MR

• ¿y por qué sólo teóricos?

ƒ falta de operadores básicos

ƒ algunos ejemplos “escandalosos”:

– No hay operadores aritméticos simples (sumas, restas, etc.)

– No hay operadores de manipulación de cadenas de caracteres.

– ...

(5)

introducción conceptos

previos operadores AR ejemplos

álgebra relacional

• ¿porqué “álgebra”?

ƒ basado en álgebra de conjuntos

ƒ usa 8 operadores con:

– operandos = relaciones – resultado = relación R1 –

--- --- --- --- --- --- --- --- ---

Operador AR

R2

--- --- ---

RS

--- --- --- --- --- --- --- --- ---

(6)

introducción conceptos

previos operadores AR ejemplos

los conceptos previos

que necesitamos definir o redefinir:

• Relación y Esquema de relación

• Nombres Cualificados de Atributo y Alias de una relación

• Relación nominada y relación derivada

• Relaciones compatibles

• Operación conmutativa y operación

asociativa

(7)

introducción conceptos

previos operadores AR ejemplos

• Relación matemática

– Orden entre las componentes de las tuplas

• Adaptación al MR:

– No orden entre las componentes de las tuplas

– El uso de nombres simbólicos de atributo evita el tener en cuenta la ordenación

• Adaptación al AR

– Volvemos a utilizar el orden de las

componentes (de los atributos)

(8)

introducción conceptos

previos operadores AR ejemplos

relación

• Adaptación al AR

ƒ El conjunto de nombres de atributos es un conjunto

ordenado

ƒ Las tuplas son listas de valores

(conjunto ordenado) tal que el i-

ésimo valor pertenece al i-ésimo

dominio asociado al i-ésimo

(9)

introducción conceptos

previos operadores AR ejemplos

esquema de relación

• es la descripción formal de la relación con sus atributos y dominios asociados.

• se aplica únicamente a las

relaciones nominadas, aquellas

descritas en el esquema lógico

relacional.

(10)

introducción conceptos

previos operadores AR ejemplos

R( A 1 :D 1 , A 2 :D 2 , ..., A n :D n )

donde:

R es el nombre de la relación A i es el nombre del atributo D i es el nombre del dominio asociado a A i

• únicamente para las relaciones descritas

en el esquema de BD

(11)

introducción conceptos

previos operadores AR ejemplos

nombre cualificado de atributo

ƒ nombre “completo” del atributo.

ƒ hace referencia a la relación a la que pertenece:

• R.A i

ƒ el atributo A i de la relación R .

ƒ evita la ambigüedad de atributos con el

mismo nombre.

(12)

introducción conceptos

previos operadores AR ejemplos

alias de una relación

ƒ nombre alternativo de la relación

ƒ dada una relación R se define un alias mediante la declaración:

definir alias S para R

ƒ se puede utilizar como nombre de la relación tanto R como S, y los

nombres cualificados de atributos R.A i

o S.A , respectivamente

(13)

introducción conceptos

previos operadores AR ejemplos

relación nominada

• es toda relación definida en el esquema lógico relacional

• constituyen nuestra base de

datos

(14)

introducción conceptos

previos operadores AR ejemplos

relación derivada

ƒ es toda relación resultado de una expresión del Álgebra Relacional

• no tiene nombre ni alias

• como nombres de atributos

usan los nombres cualificados de atributos de las relaciones operando

– siguiendo unas ciertas reglas dependiendo

del operador y del orden de los operandos

(15)

introducción conceptos

previos operadores AR ejemplos

relaciones compatibles

ƒ dos relaciones R y S son compatibles si tienen la misma estructura:

– el mismo grado, y los mismos dominios asociados a los i-ésimos atributos

R( A 1 :D 1 , A 2 :D 2 , ..., A n :D n ) S( B 1 :E 1 , B 2 :E 2 , ..., B m :E m )

R y S son compatibles si y sólo si:

1) n = m

2) ∀i D = E (1 ≤ i ≤ n)

(16)

introducción conceptos

previos operadores AR ejemplos

ejemplo de relaciones compatibles

ALUMNOS (dni: domDni , nombre: domNombre , fechaNacim: domFecha )

EMPRESAS (cif: domDni , nombreComercial:

domNombre , fechaApertura: domFecha )

ƒ mismo grado n=3

ƒ mismos dominios asociados al i-

ésimo atributo

(17)

introducción conceptos

previos operadores AR ejemplos

ejemplo de relaciones NO compatibles

ALUMNOS (dni: domDni , nombre:

domNombre , fechaNacim: domFecha )

ALUMNOS_ARQUITECTURA (dni: domDni , nombre: domNombre , fechaNacim:

domFecha , edificiosDestruidos:

domCantidad )

(18)

introducción conceptos

previos operadores AR ejemplos

ejemplo de relaciones NO compatibles

ALUMNOS (dni: domDni , nombre:

domNombre , fechaNacim: domFecha )

ALUMNOS_ARQUITECTURA (dni: domDni , nombre: domNombre , fechaNacim:

domFecha , edificiosDestruidos:

domCantidad )

diferente grado !!!

(19)

introducción conceptos

previos operadores AR ejemplos

otro ejemplo de relaciones NO compatibles

ALUMNOS (dni: domDni , nombre:

domNombre , fechaNacim: domFecha ) PROFESORES (dni: domDni , nombre:

domNombre , fechaNacim: domFecha2 )

(20)

introducción conceptos

previos operadores AR ejemplos

otro ejemplo de relaciones NO compatibles

ALUMNOS (dni: domDni , nombre:

domNombre , fechaNacim: domFecha ) PROFESORES (dni: domDni , nombre:

domNombre , fechaNacim: domFecha2 )

diferentes dominios !!!

(21)

introducción conceptos

previos operadores AR ejemplos

operación conmutativa

ƒ una operación es conmutativa si se cumple

A ⊗ B = B ⊗ A

operación asociativa

ƒ una operación es asociativa si se cumple

(A ⊗ B) ⊗ C = A ⊗ (B ⊗ C)

(22)

introducción conceptos

previos operadores AR ejemplos

operación conmutativa

ƒ una operación es conmutativa si se cumple

A ⊗ B = B ⊗ A

operación asociativa

ƒ una operación es asociativa si se cumple

(A ⊗ B) ⊗ C = A ⊗ (B ⊗ C)

No obstante, hay que tener en cuenta que las columnas de las relaciones derivadas dependen del

orden de los operandos

No obstante, hay que tener en cuenta que las columnas de las relaciones derivadas dependen del

orden de los operandos

(23)

introducción conceptos

previos operadores AR ejemplos

operadores del AR

ƒ según Codd, los operadores del AR se pueden dividir en 2 grupos:

unión

∩ intersección

diferencia

× producto cartesiano

DONDE selección

[ ] proyección

÷ división

∞ concatenación natural derivados de la

teoría de conjuntos relacionales

(24)

introducción conceptos

previos operadores AR ejemplos

operadores del AR

• otra clasificación:

unión

diferencia

× producto cartesiano

DONDE selección

[ ] proyección

∩ intersección

÷ división

∞ concatenación natural

básicos

(o primitivas) derivados

(25)

introducción conceptos

previos operadores AR ejemplos

características básicas

ƒ las operaciones son anidables (porque el resultado es otra relación)

ƒ hay precedencias por el uso de paréntesis

R ⊗ S = D 1

D 1 ⊗ O = D 2 R ⊗ S ⊗ O = D 2

R ⊗ S = D 1

O ⊗ D 1 = D 2 O ⊗ ( R ⊗ S ) = D 2

(26)

introducción conceptos

previos operadores AR ejemplos

la consulta más básica en AR

• la consulta más básica en AR sería la que obtiene todos los datos de una relación

• uso: <operando>

• ejemplo: “obtener los alumnos”

AR: alumno

SQL: select * from alumno

(27)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Peatones (“toda información disponible de los …”)

select * from peatones

PEATONES

(28)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones

select nombre from peatones

PEATONES [nombre]

(29)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones de menos de 30 años

select nombre from peatones where edad <= 30

PEATONES donde edad<=30 [nombre]

(30)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones de menos de 30 años

select nombre from peatones where edad <= 30

PEATONES [nombre] donde edad<=30 es lo mismo que

PEATONES [nombre]

(31)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones de entre 20 y 30 años

select nombre from peatones where edad >= 20 and edad <= 30

PEATONES donde (edad >= 20 y edad

<= 30) [nombre]

(32)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre y edad de los peatones de entre 20 y 30 años

select nombre, edad from peatones where edad>=20 and edad<=30

PEATONES donde (edad>=20 y

edad<=30) [nombre, edad]

(33)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre y edad de los peatones de entre 20 y 30 años select nombre from peatones where

edad>=20 and edad<=30

PEATONES donde (edad>=20 y edad<=30) [nombre, edad]

PEATONES [nombre, edad] donde

(edad>=20 y edad<=30)

(34)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Dni de los peatones atropellados

select dni from atropellados

ATROPELLADOS [dni]

(35)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Dni de los peatones atropellados

select dni from atropellados

ATROPELLADOS [dni]

Dni de los peatones

select dni from peatones

PEATONES [dni]

(36)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Dni de los peatones que no han sido atropellados nunca

select dni from peatones

MINUS select dni from atropellados

PEATONES [dni]

– (ATROPELLADOS [dni] )

(37)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Secuencia de evaluación:

PEATONES [dni]

– (ATROPELLADOS [dni] )

Primero, paréntesis;

luego, de izquierda a derecha

(38)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Secuencia de evaluación:

PEATONES [dni]

– (ATROPELLADOS [dni] )

Primero, paréntesis;

luego, de izquierda a derecha

(39)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Secuencia de evaluación:

PEATONES [dni]

– (ATROPELLADOS [dni] )

Primero, paréntesis;

luego, de izquierda a derecha

(40)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Secuencia de evaluación:

PEATONES [dni]

– (ATROPELLADOS [dni] )

Primero, paréntesis;

luego, de izquierda a derecha

(41)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Secuencia de evaluación:

PEATONES [dni]

– (ATROPELLADOS [dni] )

Primero, paréntesis;

luego, de izquierda a derecha

(42)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Secuencia de evaluación:

PEATONES [dni]

– (ATROPELLADOS [dni] )

Primero, paréntesis;

luego, de izquierda a derecha

(43)

introducción conceptos

previos operadores AR ejemplos

PEATONES [dni]

– (ATROPELLADOS [dni] )

ATROPELLADOS =R1 R1 [dni] =R2

PEATONES =R3 R3 [dni] =R4

R4 – R2 =S

Atropellados.dni, Atropellados.mat Atropellados.dni Peatones.dni,

Peatones.nombre, Peatones.edad

Peatones.dni

Peatones.dni

(44)

introducción conceptos

previos operadores AR ejemplos

PEATONES [dni]

– (ATROPELLADOS [dni] )

ATROPELLADOS =R1 R1 [dni] =R2

PEATONES =R3 R3 [dni] =R4

R4 – R2 =S

Atropellados.dni, Atropellados.mat

Atropellados.dni Peatones.dni,

Peatones.nombre, Peatones.edad

Peatones.dni

Peatones.dni

(45)

introducción conceptos

previos operadores AR ejemplos

PEATONES [dni]

– (ATROPELLADOS [dni] )

ATROPELLADOS =R1 R1 [dni] =R2

PEATONES =R3 R3 [dni] =R4

R4 – R2 =S

Atropellados.dni, Atropellados.mat Atropellados.dni Peatones.dni,

Peatones.nombre, Peatones.edad

Peatones.dni

Peatones.dni

(46)

introducción conceptos

previos operadores AR ejemplos

PEATONES [dni]

– (ATROPELLADOS [dni] )

ATROPELLADOS =R1 R1 [dni] =R2

PEATONES =R3 R3 [dni] =R4

R4 – R2 =S

Atropellados.dni, Atropellados.mat Atropellados.dni

Peatones.dni,

Peatones.nombre, Peatones.edad

Peatones.dni

Peatones.dni

(47)

introducción conceptos

previos operadores AR ejemplos

PEATONES [dni]

– (ATROPELLADOS [dni] )

ATROPELLADOS =R1 R1 [dni] =R2

PEATONES =R3 R3 [dni] =R4

R4 – R2 =S

Atropellados.dni, Atropellados.mat Atropellados.dni

Peatones.dni,

Peatones.nombre, Peatones.edad

Peatones.dni

Peatones.dni

(48)

introducción conceptos

previos operadores AR ejemplos

PEATONES [dni]

– (ATROPELLADOS [dni] )

ATROPELLADOS =R1 R1 [dni] =R2

PEATONES =R3 R3 [dni] =R4

R4 – R2 =S

Atropellados.dni, Atropellados.mat Atropellados.dni

Peatones.dni,

Peatones.nombre, Peatones.edad

Peatones.dni

Peatones.dni

(49)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones que no han sido atropellados nunca

PEATONES [dni]

– (ATROPELLADOS [dni] )

PEATONES [nombre]

(50)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones que no han sido atropellados nunca

PEATONES [dni]

– (ATROPELLADOS [dni] )

PEATONES [nombre]

Atributos con =nombre e =dominio

(51)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

PEATONES ∞ ATROPELLADOS sí (dni)

COCHES ∞ ATROPELLADOS sí (matrícula)

PEATONES ∞ COCHES NO

(52)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones atropellados alguna vez select nombre

from peatones, atropellados where

peatones.dni=atropellados.dni

PEATONES ∞ ATROPELLADOS [nombre]

(53)

introducción conceptos

previos operadores AR ejemplos

(dni:

domDNI

,

nombre:

domNombre

, edad:

domEdad

)

CP(dni)

(matrícula:

domMat

, marca:

domCad

, modelo:

domCad

)

CP(matrícula)

(dni:

domDNI

,

matrícula:

domMat

)

CP (dni, matrícula)

CAj (dni) → PEATONES CAj (matrícula) → COCHES

Nombre de los peatones atropellados alguna vez select nombre

from peatones, atropellados where

peatones.dni=atropellados.dni

PEATONES [nombre] ∞ ATROPELLADOS

¡INCORRECTO!

(54)

introducción conceptos

previos operadores AR ejemplos

Resumen

• Proyección

selecciona columnas (select)

• Selección

selecciona filas (where)

elimina las que no cumplen la condición

• Concatenación natural

– relaciona filas de distintas tablas (automatiza el where de varias tablas)

• Diferencia

filtra filas (minus)

elimina las que sí cumplen la condición

• Producto cartesiano

todas las posibles combinaciones de filas (from)

Referencias

Documento similar

Existen muchos criterios para evaluar a los alumnos, entre ellos destacan los conocimientos previos que cada uno tiene como resultado de su experiencia, pero son el logro

Desarrollo: Para continuar los invitamos a realizar tu DNI (tamaño grande) donde deberán colocar su nombre y apellido completo, dibujarse (como figura en el DNI) y agregar

lecto-escritura, comprensión de lectura, narrador, vocabulario en inglés y escritura de visiting the farm, habilidades motrices básicas, elaborar conceptos acerca

DNI PRIMER APELLIDO SEGUNDO APELLIDO NOMBRE.. LUGAR EXAMEN

Se produce un accidente en un barco petrolero, que además transporta mercurio, entonces al derramarse estos en el océano :.. El petróleo se va al fondo

En enero bajan las ventas a la Zona Franca de Extensión (USD 31 millones CIF), bajan al Extranjero (USD 20 millones CIF) y suben al Resto del país (USD un millón CIF), en comparación

La respuesta a estas preguntas nos acercará a los conocimientos previos que las alumnas y los alumnos tienen sobre el SPC y los usuarios de estos sistemas para a partir

Revista/Libro: Anales de Prehistoria y Arqueología Universidad de Murcia, 15, 1999 (publ. de firma): García Entero, Virginia y Vidal Álvarez, Sergio Título: El Gabinetto Segreto