modelo relacional

11

Click here to load reader

Upload: miguel-angel-marin-julian

Post on 29-Jun-2015

331 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modelo relacional

Bases de datos y sistemas de información

2-16

2.2. Modelo relacional • Creado por Codd a Principios de los 70 • Modelo lógico de datos de no muy alto nivel, orientado a registro. • Sólida base teórica. • Implementado en muchos SGBD. • El concepto principal es la relación o tabla .

2.2.1. Terminología del modelo relacional • Entidad: Igual que en el esquema ER. También se les llama tuplas o filas de la relación. • Atributo: Igual que en el esquema ER. También se le llaman columnas de la relación.

El dominio de los atributos tiene que ser simple: no se admiten atributos multivaluados ni compuestos.

• Esquema de una relación: viene dado por el nombre de la relación y una lista de atributos. Es el tipo de entidad.

• Conjunto de entidades: Relación o tabla. Ej: alumnos(DNI, NombreYApellidos, domicilio, teléfono, cou ) • Instancia de una relación: Conjuntos de entidades. Cada entidad se representa como una

tupla. Cada componente de la tupla corresponde con el valor del atributo correspondiente, según el orden enunciado en el esquema de la relación.

Ej: Instancia de la relación alumnos: { (01234567Z, Manuel Vázquez Prieto, Calle del Jazmín 7 4 Izq, 91-12345678, COU = SI), ....} Representación: En el modelo relacional no se representan diagramas del esquema de la BD. Se pueden representar instancias de una relación de la siguiente forma: Ej.: Instancia de la relación alumnos DNI NombreyApellidos Domicilio Teléfono COU

01234567Z Manuel Vázquez Prieto Calle del Jazmín 7 4 Izq 91-12345678 SI

Bases de datos y sistemas de información

2-17

2.2.2. Paso del modelo ER al modelo relacional Al traspasar información de ER al modelo relacional se pierde información (participación). En cambio, algunos requisitos que no podían representarse en el modelo ER sí van a poder indicarse aquí.

2.2.2.1. Definición de tablas Tipos de entidades Para cada tipo de entidad que no sea débil se crea una relación con el mismo nombre y conjunto de atributos. Ej: En el caso de la BD de secretaría los tipos de entidades dan lugar a las relaciones: Alumnos(DNI, Apellidos y Nombre, Domicilio, teléfono, COU) Asignaturas(Código, título, núm créditos) Profesores(DNI, Apellidos y nombre, Domicilio, teléfono) Aulas(Edificio, núm.Edificio) Tipos de relaciones Para cada tipo de relación R se crea una relación con atributos: • Por cada tipo de entidad que participa en la relación, los atributos de la clave primaria. • Los atributos de la propia relación. Ej: En el caso de la BD de secretaría los tipos de relación dan lugar a las relaciones: Matrícula(DNI, Código, Nota) Supervisa(DNI,DNI) Imparte(DNI, Código, Edificio, NumAula) Tipos de entidades débiles - El tipo de entidad débil E se transforma en una relación que incluye los atributos del tipo de relación más los atributos necesarios para la clave de E. - Los tipos de relaciones en los que participa E deben incluir todos los atributos de la clave de E. Ej: Traspasar el siguiente diagrama entidad-relación a modelo relacional:

CD’s

títuloCD intérpreteNúm.serie

en

Autor

compositores DNI

canciones

título duración

NombreyApe

Page 2: Modelo relacional

Bases de datos y sistemas de información

2-18

Solución: compositores(DNI, NombreYApe) canciones(titulo, duracion,NúmSerie) autor(DNI, titulo, duración, NúmSerie) en(titulo, duración, NúmSerie) <- Se debe eliminar CDs(Num.Serie, títuloCD, intérprete) Generalizaciones Se tratan igual que en el caso de las entidades débiles. La relación IsA no se transforma en relación

alumnos profesores

personas

is a

Apellidos y Nombre Domicilio TeléfonoDNI

COU

personas(DNI, ApellidosyNombre, Domicilio, teléfono). alumnos(DNI, COU) profesores(DNI)

2.2.2.2. Claves

Hay dos casos: 1. La relación proviene de un tipo de entidad en el esquema ER. La clave es la clave del tipo

de entidad 2. La relación proviene de un tipo de relación en el esquema ER. Relaciones binarias: R relación binaria entre E1 y E2. R’ relación construida a partir de R Clave de E1 : c1 Clave de E2 : c2 Atributos de R’: Atributos de E1 + Atributos de E2 + Atributos de R a) Una a una

E1 E2R

Dos superclaves: c1 y c2

Bases de datos y sistemas de información

2-19

b) Una a varias

E1 E2R

Superclave: c2 c) Varias a varias

E1 E2R

Superclave : c1 ∪ c2 Relaciones n-arias Supongamos que la relación proviene de un tipo de relación R entre tipos de entidad E1, E2, ..., Ek. - Si todos participan con cardinalidad varios en R, entonces una superclave es la unión de las

claves de E1, E2, ..., Ek. - Si algunos tipos de entidad participan con cardinalidad una en R, entonces uno de ellos

puede ser excluido de la superclave. Ej: BD secretaría Alumnos(DNI, Apellidos y Nombre, Domicilio, teléfono, COU) Asignaturas(Código, título, núm.créditos) Otra clave candidata: { título } Profesores(DNI, Apellidos y nombre, Domicilio, teléfono) Aulas(Edificio, núm.Edificio) Matricula(DNI, Código, Nota) Supervisa(DNISupervisor,DNISupervisado) Imparte(DNI, Codigo, Edificio,NumAula) Ej: BD de canciones: compositores(DNI, NombreYApe) canciones(título, duración, NúmSerie) autor(DNI, título, duración, NúmSerie) CDs(Núm.Serie, títuloCD, intérprete)

Page 3: Modelo relacional

Bases de datos y sistemas de información

2-20

2.2.2.3. Cuestiones de diseño En ocasiones es posible combinar 2 o más tablas en una sola: Ej:

Personas PaísesNacidaApell.

DNI

Nombre

Esquema de la BD: Personas(DNI, Apell.) Países(Nombre) Nacida(DNI, Nombre) Nuevo Esquema: Personas(DNI,Apell, PaisNac) Países(Nombre) Ej: Esquema de BD: personas(DNI, ApellidosyNombre, Domicilio, teléfono). alumnos(DNI, COU) profesores(DNI) Esquema modificado: personas(DNI, ApellidosyNombre, Domicilio, teléfono,AlumnOProfe, COU).

2.2.3. Lenguajes formales del modelo relacional

2.2.3.1. Álgebra relacional Lenguaje de manipulación de datos DML (Data Management Language) de tipo procedimental que permite consultar y modificar la BD. Define operaciones sobre una o dos relaciones que producen otra relación. Operaciones fundamentales: selección, proyección, unión, diferencia de conjuntos, producto cartesiano y renombramiento. Agrupadas según: - Operaciones entre conjuntos: unión, intersección, diferencia,. - Operaciones que eliminan partes de una relación: proyección (elimina columnas) y

selección (elimina filas) - Operación de renombramiento - Combinación de tuplas de 2 relaciones: productos cartesianos, uniones naturales, productos,

divisiones - Extensiones del álgebra relacional.

Bases de datos y sistemas de información

2-21

2.2.3.1.1. Operaciones entre conjuntos: unión, intersección, diferencia Son operaciones binarias que requieren: - Los dos esquemas deben tener idénticos atributos. - En el momento de efectuar la operación se supone que el orden de las columnas es el

mismo. Def.: Dados dos esquemas de relación R(A1,....,An), S(A1,....,An) La operación unión de R y S , que se denota R U S(A1,....,An), produce un esquema cuyas instancias válidas pueden escribirse de la forma (r U s), con r instancia válida de R y s instancia válida de S. La operación intersección de R y S , y se denota R ∩ S(A1,....,An), produce un esquema cuyas instancias válidas pueden escribirse de la forma (r ∩ s), con r instancia válida de R y s instancia válida de S. La operación diferencia de R y S , y se denota R \ S(A1,....,An), produce un esquema cuyas instancias válidas pueden escribirse de la forma (r \s), con r instancia válida de R y s instancia válida de S. Ej.: - Deseamos formar un esquema de relación con todos los empleados de la empresa.

Empleados <-- Programadores U Analistas - Queremos conocer a los empleados que son a la vez programadores y analistas.

ProgramadoresYAnalistas <-- Programadores ∩ Analistas - Empleados que son analistas pero no programadores

SoloAnalistas <-- Analistas \programadores - Empleados que son sólo Programadores o SoloAnalistas:

SoloProgOSoloAnalistas <-- SoloAnalistas U SoloProgramadores SoloProgOSoloAnalistas <-- Empleados\ ProgramadoresYAnalistas

Page 4: Modelo relacional

Bases de datos y sistemas de información

2-22

2.2.3.1.2. Operaciones que eliminan partes de una relación Proyección y selección Proyección Def: Sea R(A1,..,An) un esquema de relación y r instancia válida de R. La operación de proyección

de R respecto a Ai, Ai+1, ..., Aj lista de atributos de R, se denota πAi,Ai+1,...Aj, (R) y produce un esquema de relación que tiene - como atributos Ai, Ai+1,...,Aj - como instancias válidas los valores en Ai, Ai+1, ... Aj de las instancias válidas de R. Ej.: - Determinar los códigos de los proyectos en los que hay algún empleado trabajando.

ProyectosEnMarcha <-- πCodigoPr(Distribución) Selección Def: Sea R(A1,..,An) un esquema de relación y r instancia válida de R. La operación de selección de

R respecto a C se denota σC(R) y produce un esquema de relación: - Atributos: (A1,...,An) - Instancias válidas: las de R tras eliminar las tuplas que no cumplan C. C es la condición de selección es una fórmula construida de la siguiente forma: C:= <nombre_atributo> <op_comparación> <nombre_atributo> C:= <nombre_atributo> <op_comparación> <constante> C:= C <AND> C C:= C <OR> C C:= <NOT> C Donde <op_comparacion> representa operadores booleanos del dominio (=). Ejs.: - Códigos de todos los proyectos en los que trabaja el empleado con DNI 4

ProyectosDNI4 <-- πCódigoPr(σ(DNIEmp=4)(Distribución)) - DNI de los trabajadores que trabajan entre 10 y 20 horas (ambas cantidades inclusive) en algún proyecto.

Entre10Y20 <-- πDNIEmp (σ(Horas>=10 and Horas<=20)(Distribución)) DNI’s: 1,4,5 - Código y descripción de los proyectos dirigidos por el empleado de DNI 4 o por el empleado de DNI 6

Proyectos4o6 <--- πCódigo, Descripción(σ(DNIDIR=4 OR DNIDir=6)(Proyectos)) Respuesta: Códigos P1, P2, P5

Bases de datos y sistemas de información

2-23

2.2.3.1.3. Operación de renombramiento Def. Sea R(A1,...,An) esquema de relación. La operación de renombramiento se denota por

ρS(B1,...,Bn)(R) y produce un nuevo esquema de relación con: - Nombre: S - Atributos: (B1,...,Bn), donde cada Bi es un nuevo nombre de atributo con el mismo dominio

que Ai. - Instancias válidas: Las de R Obs.: - Si sólo se quieren renombrar los atributos se puede omitir S, y si sólo se quiere cambiar el nombre de la relación se puede omitir (B1,...,Bn). - La notación S <-- R también cambia el nombre a un esquema de relación. Ej.: - DNI’s de empleados que no trabajan ni dirigen ningún proyecto:

DNIEmpleados <--- πDNI(Programadores U Analistas)

DNIEmpleadosActivos <--- ρ(DNI)(πDNIEmp(Distribución)) U

ρ (DNI) (πDNIDir(Proyectos)) DNIEmpleadosNoActivos <--- DNIEmpleados \ DNIEmpleadosActivos

Page 5: Modelo relacional

Bases de datos y sistemas de información

2-24

2.2.3.1.4. Operaciones de combinación de tuplas Producto Cartesiano Def.: Dadas dos relaciones R1, R2 esquemas de relación , la operación producto Cartesiano de R1, se denota por R1 x R2 y se define como: - Atributos: Los de R1 U los de R2. Si tienen algún nombre de atributo A común, este se

convierte en R1.A, R2.A - Instancias: Son de la forma r1xr2, con r1 instancia de R1, r2 instancia de R2. Ej.: Queremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algún proyecto: 1 Datos de todos los empleados

Empleados ← Programadores U Analistas Empleados(DNI, Nombre,Dirección,Teléfono)

2 Hacemos el producto cartesiano con los DNI’s de los directores de proyecto:

DNIDirPorEmpleados ← πDNIDir(Proyectos) x Empleados DNIDirPorEmpleados (DNIDir, DNI, Nombre,Dirección,Teléfono)

3 Nos quedamos con los datos de los directores de proyecto

DatosDirProyecto ← πNombre, Dirección, Teléfono( σDNIDir = DNI(DNIDirPorEmpleados)) DatosDirProyecto(Nombre,Dirección,Teléfono)

Bases de datos y sistemas de información

2-25

Join (combinación) Def.: Se define la combinación de R1 y R2 como:

R1 R2 = σC(R1 x R2) Donde c es una conjunción de operaciones booleanas: C= C1 AND C2 AND C3 ..... Ej.: Queremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algún proyecto: 1. Datos de todos los empleados Empleados ← Programadores U Analistas Empleados(DNI, Nombre,Dirección,Teléfono) 2. Datos de los directores de proyecto

DatosDirProyecto ← πNombre, Dirección, Teléfono( Proyectos Empleados) Ej.: Obtener los nombres de todos los empleados que trabajan en algún proyecto más de 10 horas: Dos formas:

NombresTrabajanMasde10 ← πNombre( Empleados Distribución) Resultado Nombre Herminia Calixto Teodora Evaristo

C

DNIDir=DNI

DNIEmp=DNI AND Horas>10

C

Page 6: Modelo relacional

Bases de datos y sistemas de información

2-26

Equijoin (equicombinación) Def.: Se llaman operación Equijoin a todo join natural cuya condición es una conjunción de igualdades. Ej.: R1(A,B) A B 1 B1 2 B2 2 B3 R2(C,D) C D 2 D1

2 D2 R1 |x|(A=C) R2 A B C D 2 B2 2 D1 2 B2 2 D2 2 B3 2 D1 2 B3 2 D2 Join natural Def.: Sean R1(A1,...,An) y R2(B1,...,Bm) dos esquemas de relación y {C1,C2,...,Cj) la lista de los atributos comunes a ambas relaciones. La operación join natural (producto natural) de R1 y R2, Produce un esquema de relación R1 R2 tal que: - Atributos: {A1,....,An} U {B1,...,Bm} (los atributos comunes sólo aparecen una vez). - Instancias válidas: Dada r1 instancia válida de R1 y r2 de R2, se obtiene una instancia

válida de la unión natural combinando todas las tuplas u de r1 y v de r2 tales que u y v coinciden sobre {C1,C2,...,Cj}.

Bases de datos y sistemas de información

2-27

Ej.: Datos personales de los directores de proyecto.

DNIDirPro ← ρ (DNI) (πDNIDir(Proyectos)) DatosDirProyecto ← DNIDirPro (Programadores U Analistas) Teorema: Sean R1 y R2 dos esquemas de relación con atributos comunes (C1,....,Cj), atributos de A son (A1,...,An,C1,...,Cj) Y los de B (B1,....,Bm,C1,....,Cj) Entonces R1 R2 = (salvo el orden de los atributos)

ρ A1,A2,...,An,B1,...,Bm,C1,...,Cj (πA1,A2,...,An,B1,...,Bm,R1.C1,...,R1.Cj ( σ(R1.C1 = R2.C2 AND ,...,AND

R1.Cj=R2.Cj)(R1 x R2) )) Ej.: R1(A,B) A B 1 B1 2 B2 2 B3 R2(C,D) A C 2 C1

2 C2 R1 x R2 R1.A B R2.A C 1 B1 2 C1 1 B1 2 C2 2 B2 2 D1 2 B2 2 D2 2 B3 2 D1 2 B3 2 D2

σ(R1.A=R2.A)(R1 x R2 ) R1.A B R2.A C 2 B2 2 D1 2 B2 2 D2 2 B3 2 D1 2 B3 2 D2

ρ(A,B,C) (π (R1.A,B,C) (σ(R1.A=R2.A)(R1 x R2 )) A B C 2 B2 D1 2 B2 D2 2 B3 D1 2 B3 D2

Page 7: Modelo relacional

Bases de datos y sistemas de información

2-28

Ej.: Obtener los datos de todos datos de los empleados que comparten domicilio con otro empleado. Empleados(dni,nombre,domicilio) DNI Nombre Domicilio 1 Aniceto Jazmín 1 2 Eulalia Rosa 3 3 Teodora Clavel 2 4 Macario Rosa 3 5 Anacleto Jazmín 1

σE1.DNI<>E2.DNI AND E1.Domicilio=E2.Domicilio(ρE1(Empleados) x ρ E2(Empleados))

Ej.: Analistas |x| Analistas DNI 4 5 6

Bases de datos y sistemas de información

2-29

Divisiones Idea: Se utilizan para obtener consulta de en la que se busca que algún atributo de una relación tome (al menos) todos los valores de otro atributo en otra relación. Def.: Sea R(A1,...,An), S(B1,...,Bm) con {B1,....,Bm}⊆{A1,...,An}. Entonces la operación división R÷S produce un esquema de relación - Atributos: {C1,...,Cj} = {A1,...,An}\{B1,...,Bm} - Instancias válidas: Dada r instancia válida de R, s inst. válida de S, Una tupla u está en R ÷S cuando para todo v de S, la tupla que se obtiene al unir los valores de u y v está en R. Ej.: R A B A1 B1 A2 B1 A3 B1 A4 B1 A1 B2 A3 B2 A2 B3 A3 B3 A3 B3 A1 B4 A2 B4 A3 B4 S A A1 A2 A3 T B B1 B4 Ej.: Determinar los datos personales de los empleados que trabajan en todos los proyectos que trabaja el empleado Jacinto

DatosJacinto ←σ(Nombre = Jacinto)(empleados))

ProyectosJacinto ← π(codigoPr)(( DatosJacincto |x|(DNI=DNIEmp)(Distribución))

DNIProyecto ← π(codigoPr, DNIEmp) (Distribución) DNIBuscados ← DNIProyecto ÷ ProyectosJacinto

DatosBuscados ← ρ(DNI)(DNIBuscados) |x| empleados

Page 8: Modelo relacional

Bases de datos y sistemas de información

2-30

2.2.3.2. Cálculo relacional de tuplas

2.2.3.2.1. Forma general de una consulta en cálculo relacional de tuplas: {t | P(t) } = el conjunto de todas las tuplas que cumplen la condición P. P es una fórmula escrita en lógica de primer orden. Ejemplo Datos personales del empleado con DNI 3: {t | ((t ∈ programadores) ∨ (t ∈ Analistas)) ∧ (t[DNI] = 3]) }

2.2.3.2.2. Fórmulas en el cálculo relacional de tuplas Pueden ser átomos y fórmulas compuestas. • Átomos.

Los átomos tienen una de las siguientes formas: 1.- x ∈ r. Con x una variable de tupla y r un esquema de relación. Una variable de tupla representa un fila genérica de una instancia válida de r. 2.- t[A] θ s[B], donde t y s son variables de tupla, A es un atributo de la relación en la que está definida la variable de tupla t, B es un atributo de la relación en la que está definida la variable de tupla s, y θ es un operador de comparación (<,>,= ...) El dominio de los atributos A y B debe ser compable. Con t[A] denotamos el valor de la tupla t en el atributo A. 3.- t[A] θ c, donde t variable de tupla, A un atributo de la relación en la que está definida la variable de tupla t, c un valor del dominio de A y θ es un operador de comparación (<,>,= ...).

• Fórmulas compuestas Para construir una fórmula se usan las siguientes reglas: Las fórmulas básicas son fórmulas. Si F es una fórmula (F) y ¬F también son fórmulas. Si F1 y F2 son formulas entonces F1 ∧ F2, F1∨F2 y F1⇒F2 tambiéns on fórmulas. Se pueden usar ∀y ∃ para ligar las variables de tupla. Si F(t) es una fórmula en la que aparece libre la variable de tupla t, entonces las siguientes también son fórmulas: ∀t∈R, P(t) ∃ t∈R, P(t) Una variable de tupla que está cuantificada se dice ligada cuando aparece en una fórmula afectada por un cuantificador (∀,∃).

Bases de datos y sistemas de información

2-31

2.2.3.2.3. Ejemplos

- Deseamos formar un esquema de relación con todos los empleados de la empresa.

{t | (t∈ Programadores) ∨ (t∈ Analistas)} t es libre - Queremos conocer a los empleados que son a la vez programadores y analistas.

{t | (t∈ Programadores) ∧ (t∈ Analistas)} DNI: 4 - Empleados que son analistas no programadores (SoloAnalistas <-- Analistas \programadores)

{t | (t∈ Programadores) ∧ ¬ (t∈ Analistas)} DNI : 5,6,7 - Empleados que son sólo Programadores o SoloAnalistas:

{t | ((t∈ Programadores) ∧ ¬ (t∈ Analistas))

(t∈ Analistas) ∧ ¬ (t∈ Programadores)}

2.2.3.2.4. Operaciones Selección Ej: - proyectos en los que trabaja el empleado con DNI 4 ProyectosDNI4 <-- (σ(DNIEmp=4)(Distribución)) {t | (t∈ Distribución) ∧ (t[DNIEmp] = 4)} - Trabajadores que trabajan entre 10 y 20 horas (ambas cantidades inclusive) en algún proyecto. Entre10Y20 <-- σ(Horas>=10 and Horas<=20)(Distribución) DNI’s: 1,4,5 {t | (t ∈ Distribución) ∧ (t[Horas]>=10) ∧ (t[Horas]<=20)} - Proyectos dirigidos por el empleado de DNI 4 o por el empleado de DNI 6 Proyectos4o6 <--- πCódigo, Descripción(σ(DNIDIR=4 OR DNIDir=6)(Proyectos)) Respuesta: Códigos P1, P2, P5 {t | (t ∈ Distribución) ∧ ((t[DNIDir] = 4) ∨ (t[DNIDir]=6))}

Page 9: Modelo relacional

Bases de datos y sistemas de información

2-32

Proyección Ej: - Determinar los códigos de los proyectos en los que hay algún empleado trabajando. ProyectosEnMarcha <-- πCodigoPr(Distribución) {t | ∃p ∈ Distribucion( t[CodigoPr] = p[CodigoPr])} Producto Cartesiano Queremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algún proyecto: 1.1 Datos de todos los empleados Empleados ← Programadores U Analistas Empleados(DNI, Nombre,Dirección,Teléfono) 1.2 Hacemos el producto cartesiano con los DNI’s de los directores de proyecto: DNIDirPorEmpleados ← πDNIDir(Proyectos) x Empleados DNIDirPorEmpleados (DNIDir, DNI, Nombre,Dirección,Teléfono) 1.3 Nos quedamos con los datos de los directores de proyecto DatosDirProyecto ← πNombre, Dirección, Teléfono( σDNIDir = DNI(DNIDirPorEmpleados)) DatosDirProyecto(Nombre,Dirección,Teléfono) {t | ∃u( ((u ∈ Analistas) ∨ (u ∈ Programadores)) ∧ (t[Nombre] = u[Nombre]) ∧ (t[Dirección] = u[Dirección]) ∧ (t[teléfono] = u[teléfono]) ∧ (∃v∈Proyectos( v[DNIDir] = u[DNI]) ) }

Join natural r1(A,B) r2(A,C,D) {t | ∃ u ∈ r1(∃ v ∈ r2 (t[A] = u[A] ∧ t[B] = u[B] ∧ t[C] = v[C] ∧ t[D] = v[D] ∧ u[A] = v[A]}

Bases de datos y sistemas de información

2-33

División Empleados que trabajan en los mismos proyectos que Jacinto {t | ((t ∈ Programadores) ∨ (t ∈Analistas)) ∧ ∃ j ( j ∈ Programadores ∨ j ∈Analistas) ( j[nombre] = Jacinto ∧ (∀p∈ Distribucion)

((p[DNIEmp] = j[DNI] ) ⇒ ∃ u ((u ∈ Distribucion ) ∧ t[DNI] = u[DNIEmp] ∧ u[CodigoPr] = p[CodigoPr] ) )

) }

2.2.3.2.5. Significado de una fórmula. Fórmulas seguras. Para que tengan una fórmula {t | P(t)} del calculo relacional de tuplas tenga significado debe cumplir: 1. Todas las variables deben estar ligadas, exceptuando t que es libre. 2. Todas las variables que aparezcan en la fórmula-condición deben pertenecer a un esquema

de relación, menos quizá, t. 3. La fórmula debe ser segura. Fórmulas seguras: Es posible que el resultado de una expresión sea infinito, por ejemplo: {t | ¬ (t ∈ R)} Se introduce el concepto de dominio. dom(P) es el conjunto de todos los valores a los que P hace referencia Se dice que una expresión {t | P(t)} es segura si todos los valores que aparecen en el resultado son valores de dom(P). La expresión {t | ¬ (t ∈ R)} no es segura: dom(¬ (t ∈ R)) es el conjunto de todos los valores que aparecen en R. Sin embargo, es posible tener una tupla t que no esté en préstamo que contenga valores que no aparezcan en R.

Page 10: Modelo relacional

Bases de datos y sistemas de información

2-34

2.2.3.3. Cálculo relacional de dominios

2.2.3.3.1. Forma general de una consulta {<x1,....,xn> | P(x1, x2, ..., xn)} con xi variables de dominio Ejemplo - códigos de proyectos en los que trabaja el empleado con DNI 4 ProyectosDNI4 <-- (σ(DNIEmp=4)(Distribución)) {t | (t∈ Distribución) ∧ (t[DNIEmp] = 4)} {<cod> | ∃desc, dni((<cod,desc,dni>∈ Distribución) ∧ dni = 4) } {<cod> | ∃desc (<cod,desc, 4>∈ Distribución) }

2.2.3.3.2. Fórmulas en el cálculo relacional de dominios Pueden ser - átomos - fórmulas compuestas - átomos 1.- < x1, ..., xn > ∈ r donde r es una relación con n atributos donde xi son variables de dominio o constantes de dominio. 2.- x θ y, donde x y y son variables de dominio y θ es un operador de comparación (<,>,= ...). 3.- x θ c, donde x variable de dominio, c un valor del dominio de x y θ es un operador de comparación (<,>,= ...). Fórmulas Compuestas - Un átomo es una fórmula. Si F es una fórmula (F) y ¬F también son fórmulas. Si F1 y F2 son formulas entonces F1 ∧ F2, F1∨F2 y F1⇒F2 también son fórmulas. Se pueden usar ∀y ∃ para ligar las variables de tupla. Si F(t) es una fórmula en la que aparece libre la variable de dominio x, entonces las siguientes también son fórmulas: ∀x, P(x) ∃ x, P(x) Una variable de tupla que está cuantificada se dice ligada cuando aparece en una fórmula afectada por un cuantificador (∀,∃).

Bases de datos y sistemas de información

2-35

2.2.3.3.3. Ejemplos - Deseamos formar un esquema de relación con todos los empleados de la empresa.

{<dni,nom,dir,tel> | < dni,nom,dir,tel> ∈ (Programadores ∨ Analistas)} Selección - Trabajadores que trabajan entre 10 y 20 horas (ambas cantidades inclusive) en algún proyecto.

Entre10Y20 <-- σ(Horas>=10 and Horas<=20)(Distribución) DNI’s: 1,4,5

{t | (t ∈ Distribución) ∧ (t[Horas]>=10) ∧ (t[Horas]<=20)}

{<dni> | ∃ c,h(<c,dni,h> ∈ Distribución ∧ h >=10 ∧ h <=20)} Producto Cartesiano Queremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algún proyecto: 1.1 Datos de todos los empleados Empleados ← Programadores U Analistas Empleados(DNI, Nombre,Dirección,Teléfono) 1.2 Hacemos el producto cartesiano con los DNI’s de los directores de proyecto:

DNIDirPorEmpleados ← πDNIDir(Proyectos) x Empleados DNIDirPorEmpleados (DNIDir, DNI, Nombre,Dirección,Teléfono) 1.3 Nos quedamos con los datos de los directores de proyecto

DatosDirProyecto ← πNombre, Dirección, Teléfono( σDNIDir = DNI(DNIDirPorEmpleados)) DatosDirProyecto(Nombre,Dirección,Teléfono) {t | ∃u( ((u ∈ Analistas) ∨ (u ∈ Programadores)) ∧ (t[Nombre] = u[Nombre]) ∧ (t[Dirección] = u[Dirección]) ∧ (t[teléfono] = u[teléfono]) ∧ (∃v∈Proyectos( v[DNIDir] = u[DNI]) ) } {<n,dir,t> | ∃dni( ((<dni,n,dir,t> ∈ Analistas) ∨ (<dni,n,dir,t> ∈ Programadores)) ∧ (∃cod,descr (<cod,descr,dni>∈Proyectos) }

Page 11: Modelo relacional

Bases de datos y sistemas de información

2-36

2.2.3.3.4. Significado de una fórmula. Fórmulas seguras. Para que tengan una fórmula {<x1,...,xn>| P(<x1,...,xn>)} del calculo relacional de dominios tenga significado debe cumplir: 1. Todas la variables deben estar ligadas, exceptuando <x1,...,xn> que es libre. 2. La fórmula debe ser segura. Fórmulas seguras: Son fórmulas no-seguras las que contienen alguna subfórmula capaz de generar un número infinito de tuplas. { <dni,nom,dir,tel> | (<dni,nom,dir,tel> ∈ programadores) } En el cálculo relacional de dominios también hay que tener en cuenta la forma de las fórmulas dentro de las instrucciones “existe” y “para todo”. Considérese la expresión {<x> | ∃ y (<x, y ∈ r) ∧ ∃ z (¬ (<x, z> ∈ r) ∧ P(x, z))} donde P es una fórmula que implica a x y a z. Se puede probar la primera parte de la fórmula, ∃ y (<x, y ∈ r), tomando en consideración sólo los valores de r. Sin embargo, para probar la segunda parte de la fórmula, ∃ z (¬ (<x, z> ∈ r) ∧ P(x, z)), hay que tomar en consideración valores de z que no aparecen en r. Dado que todas las relaciones son finitas, no aparece en r un número infinito de valores. Por tanto, no resulta posible en general probar la segunda parte de la fórmula ∃ z (¬ (<x, z> ∈ r) ∧ P(x, z)), hay que tomar en consideración valores de z que no aparecen en r. Dado que todas las relaciones son finitas, no aparece en r un número infinito de valores. Por tanto, no es posible en general probar la segunda parte de la fórmula sin tomar en consideración un número infinito de valores de z. En vez de eso, se añaden ligaduras para prohibir expresiones como la anterior. Condiciones de seguridad: Se dice que la expresión {<x1, x2, ..., xn> | P(x1, x2, ..., xn)} es segura si se cumplen todas las condiciones siguientes: 1. Todos los valores que aparecen en las tuplas de la expresión son valores de dom(P). 2. Para cada subfórmula “existe” de la forma ∃ x (P1(x)), la subfórmula es cierta si y sólo si

hay un valor x en dom(P1) tal que P1(x) es verdadero. 3. Para cada subfórmula “para todo” de la forma ∀ x (P1(x)), la subfórmula es verdadera si y

sólo si P1(x) es verdadero para todos los valores x de dom(P1). Teorema Es equivalente el poder expresivo de - el álgebra relacional - el cálculo relacional de tuplas para fórmulas seguras - el cálculo relacional de dominios para fórmulas seguras