Your SlideShare is downloading. ×
  • Like
Modelo relacional
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Modelo relacional

  • 300 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
300
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Bases de datos y sistemas de información Bases de datos y sistemas de información2.2. Modelo relacional 2.2.2. Paso del modelo ER al modelo relacional• Creado por Codd a Principios de los 70 Al traspasar información de ER al modelo relacional se pierde información (participación). En• Modelo lógico de datos de no muy alto nivel, orientado a registro. cambio, algunos requisitos que no podían representarse en el modelo ER sí van a poder• Sólida base teórica. indicarse aquí.• Implementado en muchos SGBD.• El concepto principal es la relación o tabla . 2.2.2.1. Definición de tablas2.2.1. Terminología del modelo relacional Tipos de entidades Para cada tipo de entidad que no sea débil se crea una relación con el mismo nombre y conjunto• Entidad: Igual que en el esquema ER. También se les llama tuplas o filas de la relación. de atributos.• 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 Ej: En el caso de la BD de secretaría los tipos de entidades dan lugar a las relaciones: compuestos.• Esquema de una relación: viene dado por el nombre de la relación y una lista de atributos. Alumnos(DNI, Apellidos y Nombre, Domicilio, teléfono, COU) Es el tipo de entidad. Asignaturas(Código, título, núm créditos)• Conjunto de entidades: Relación o tabla. Profesores(DNI, Apellidos y nombre, Domicilio, teléfono) Aulas(Edificio, núm.Edificio)Ej: alumnos(DNI, NombreYApellidos, domicilio, teléfono, cou ) Tipos de relaciones• Instancia de una relación: Conjuntos de entidades. Cada entidad se representa como una Para cada tipo de relación R se crea una relación con atributos: tupla. Cada componente de la tupla corresponde con el valor del atributo correspondiente, • Por cada tipo de entidad que participa en la relación, los atributos de la clave primaria. según el orden enunciado en el esquema de la relación. • Los atributos de la propia relación.Ej: Instancia de la relación alumnos: Ej: En el caso de la BD de secretaría los tipos de relación dan lugar a las relaciones:{ (01234567Z, Manuel Vázquez Prieto, Calle del Jazmín 7 4 Izq, 91-12345678, COU = SI),....} Matrícula(DNI, Código, Nota) Supervisa(DNI,DNI) Imparte(DNI, Código, Edificio, NumAula)Representación:En el modelo relacional no se representan diagramas del esquema de la BD. Se puedenrepresentar instancias de una relación de la siguiente forma: Tipos de entidades débiles - El tipo de entidad débil E se transforma en una relación que incluye los atributos del tipo deEj.: Instancia de la relación alumnos 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.DNI NombreyApellidos Domicilio Teléfono COU Ej: Traspasar el siguiente diagrama entidad-relación a modelo relacional:01234567Z Manuel Vázquez Prieto Calle del Jazmín 7 4 Izq 91-12345678 SI compositores DNI NombreyApe Autor canciones en CD’s título duración intérprete Núm.serie títuloCD 2-16 2-17
  • 2. Bases de datos y sistemas de información Bases de datos y sistemas de información b) Una a varias E1 R E2Solución:compositores(DNI, NombreYApe) Superclave: c2canciones(titulo, duracion,NúmSerie)autor(DNI, titulo, duración, NúmSerie) c) Varias a variasen(titulo, duración, NúmSerie) <- Se debe eliminarCDs(Num.Serie, títuloCD, intérprete) E1 R E2GeneralizacionesSe tratan igual que en el caso de las entidades débiles. Superclave : c1 ∪ c2La relación IsA no se transforma en relación Relaciones n-arias DNI Apellidos y Nombre Domicilio Teléfono 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 personas 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. is a Ej: BD secretaría COU Alumnos(DNI, Apellidos y Nombre, Domicilio, teléfono, COU) Asignaturas(Código, título, núm.créditos) Otra clave candidata: { título } alumnos profesores Profesores(DNI, Apellidos y nombre, Domicilio, teléfono) Aulas(Edificio, núm.Edificio)personas(DNI, ApellidosyNombre, Domicilio, teléfono). Matricula(DNI, Código, Nota)alumnos(DNI, COU) Supervisa(DNISupervisor,DNISupervisado)profesores(DNI) Imparte(DNI, Codigo, Edificio,NumAula)2.2.2.2. Claves Ej: BD de canciones:Hay dos casos: compositores(DNI, NombreYApe)1. La relación proviene de un tipo de entidad en el esquema ER. La clave es la clave del tipo canciones(título, duración, NúmSerie) de entidad autor(DNI, título, duración, NúmSerie)2. La relación proviene de un tipo de relación en el esquema ER. CDs(Núm.Serie, títuloCD, intérprete)Relaciones binarias:R relación binaria entre E1 y E2. R’ relación construida a partir de RClave de E1 : c1Clave de E2 : c2Atributos de R’: Atributos de E1 + Atributos de E2 + Atributos de Ra) Una a una E1 R E2Dos superclaves: c1 y c2 2-18 2-19
  • 3. Bases de datos y sistemas de información Bases de datos y sistemas de información 2.2.3.1.1. Operaciones entre conjuntos: unión, intersección, diferencia2.2.2.3. Cuestiones de diseño Son operaciones binarias que requieren:En ocasiones es posible combinar 2 o más tablas en una sola: - Los dos esquemas deben tener idénticos atributos.Ej: - En el momento de efectuar la operación se supone que el orden de las columnas es el mismo. Nombre Def.: Apell. Dados dos esquemas de relación R(A1,....,An), S(A1,....,An) Personas Nacida Países DNI 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.Esquema de la BD:Personas(DNI, Apell.)Países(Nombre) La operación intersección de R y S , y se denota R ∩ S(A1,....,An),Nacida(DNI, Nombre) 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.Nuevo Esquema:Personas(DNI,Apell, PaisNac) La operación diferencia de R y S , y se denota R S(A1,....,An),Países(Nombre) 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:Esquema de BD: Ej.:personas(DNI, ApellidosyNombre, Domicilio, teléfono). - Deseamos formar un esquema de relación con todos los empleados de la empresa.alumnos(DNI, COU) Empleados <-- Programadores U Analistasprofesores(DNI) - Queremos conocer a los empleados que son a la vez programadores y analistas.Esquema modificado: ProgramadoresYAnalistas <-- Programadores ∩ Analistaspersonas(DNI, ApellidosyNombre, Domicilio, teléfono,AlumnOProfe, COU). - Empleados que son analistas pero no programadores SoloAnalistas <-- Analistas programadores2.2.3. Lenguajes formales del modelo relacional - Empleados que son sólo Programadores o SoloAnalistas:2.2.3.1. Álgebra relacional SoloProgOSoloAnalistas <-- SoloAnalistas U SoloProgramadores SoloProgOSoloAnalistas <-- Empleados ProgramadoresYAnalistasLenguaje de manipulación de datos DML (Data Management Language) de tipo procedimentalque permite consultar y modificar la BD. Define operaciones sobre una o dos relaciones queproducen otra relación.Operaciones fundamentales: selección, proyección, unión, diferencia de conjuntos, productocartesiano 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. 2-20 2-21
  • 4. Bases de datos y sistemas de información Bases de datos y sistemas de información2.2.3.1.2. Operaciones que eliminan partes de una relaciónProyección y selección 2.2.3.1.3. Operación de renombramiento Def.Proyección Sea R(A1,...,An) esquema de relación. La operación de renombramiento se denota porDef:Sea R(A1,..,An) un esquema de relación y r instancia válida de R. La operación de proyección ρ S(B1,...,Bn)(R) y produce un nuevo esquema de relación con:de R respecto a Ai, Ai+1, ..., Aj lista de atributos de R, se denota πAi,Ai+1,...Aj, (R) y produce un - Nombre: Sesquema de relación que tiene - Atributos: (B1,...,Bn), donde cada Bi es un nuevo nombre de atributo con el mismo dominio- como atributos Ai, Ai+1,...,Aj que Ai.- como instancias válidas los valores en Ai, Ai+1, ... Aj de las instancias válidas de R. - Instancias válidas: Las de REj.: Obs.:- Determinar los códigos de los proyectos en los que hay algún empleado trabajando. - 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).ProyectosEnMarcha <-- π CodigoPr(Distribución) - La notación S <-- R también cambia el nombre a un esquema de relación.Selección Ej.:Def: - DNI’s de empleados que no trabajan ni dirigen ningún proyecto:Sea R(A1,..,An) un esquema de relación y r instancia válida de R. La operación de selección de DNIEmpleados π (Programadores U Analistas) <--- DNIR respecto a C se denota σC(R) y produce un esquema de relación:- Atributos: (A1,...,An) DNIEmpleadosActivos <--- ρ (π (Distribución)) U (DNI) DNIEmp ρ (π (Proyectos))- Instancias válidas: las de R tras eliminar las tuplas que no cumplan C. (DNI) DNIDirC es la condición de selección es una fórmula construida de la siguiente forma: DNIEmpleadosNoActivos <--- DNIEmpleados DNIEmpleadosActivosC:= <nombre_atributo> <op_comparación> <nombre_atributo>C:= <nombre_atributo> <op_comparación> <constante>C:= C <AND> CC:= C <OR> CC:= <NOT> CDonde <op_comparacion> representa operadores booleanos del dominio(=).Ejs.:- Códigos de todos los proyectos en los que trabaja el empleado con DNI 4ProyectosDNI4 <-- π CódigoPr(σ(DNIEmp=4)(Distribución))- DNI de los trabajadores que trabajan entre 10 y 20 horas (ambas cantidades inclusive) en algúnproyecto.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 empleadode DNI 6Proyectos4o6 <--- π σ(DNIDIR=4 OR DNIDir=6)(Proyectos)) Código, Descripción(Respuesta: Códigos P1, P2, P5 2-22 2-23
  • 5. Bases de datos y sistemas de información Bases de datos y sistemas de información Join (combinación)2.2.3.1.4. Operaciones de combinación de tuplas Def.: Se define la combinación de R1 y R2 como:Producto CartesianoDef.: R1 C R2 = σ (R1 x R2) CDadas dos relaciones R1, R2 esquemas de relación , la operación productoCartesiano de R1, se denota por R1 x R2 y se define como: Donde c es una conjunción de operaciones booleanas:- Atributos: Los de R1 U los de R2. Si tienen algún nombre de atributo A común, este se C= C1 AND C2 AND C3 ..... convierte en R1.A, R2.A- Instancias: Son de la forma r1xr2, con r1 instancia de R1, r2 instancia de R2. Ej.:Ej.: Queremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algúnQueremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algún proyecto:proyecto:1 Datos de todos los empleados 1. Datos de todos los empleados Empleados ← Programadores U Analistas Empleados ← Programadores U Analistas Empleados(DNI, Nombre,Dirección,Teléfono) Empleados(DNI, Nombre,Dirección,Teléfono)2 Hacemos el producto cartesiano con los DNI’s de los directores de proyecto: 2. Datos de los directores de proyecto DNIDirPorEmpleados ← π DNIDir(Proyectos) x Empleados DatosDirProyecto ← π Nombre, Dirección, Teléfono( Proyectos DNIDir=DNI Empleados) DNIDirPorEmpleados (DNIDir, DNI, Nombre,Dirección,Teléfono) Ej.:3 Nos quedamos con los datos de los directores de proyecto Obtener los nombres de todos los empleados que trabajan en algún proyecto más de 10 horas: DatosDirProyecto ← π Nombre, Dirección, Teléfono( σ DNIDir = DNI(DNIDirPorEmpleados)) Dos formas: DatosDirProyecto(Nombre,Dirección,Teléfono) NombresTrabajanMasde10 ← π Nombre( C Empleados DNIEmp=DNI Distribución) AND Horas>10 Resultado Nombre Herminia Calixto Teodora Evaristo 2-24 2-25
  • 6. Bases de datos y sistemas de información Bases de datos y sistemas de informaciónEquijoin (equicombinación) Ej.:Def.: Datos personales de los directores de proyecto.Se llaman operación Equijoin a todo join natural cuya condición es una conjunción deigualdades. DNIDirPro ← (DNI) ρ (π DNIDir(Proyectos)) DatosDirProyecto ← DNIDirPro (Programadores U Analistas)Ej.: Teorema:R1(A,B) Sean R1 y R2 dos esquemas de relación con atributos comunes (C1,....,Cj),A B atributos de A son (A1,...,An,C1,...,Cj)1 B1 Y los de B (B1,....,Bm,C1,....,Cj)2 B22 B3 Entonces R1 R2 = (salvo el orden de los atributos)R2(C,D) ρ A1,A2,...,An,B1,...,Bm,C1,...,Cj (π A1,A2,...,An,B1,...,Bm,R1.C1,...,R1.Cj ( σ (R1.C1 = R2.C2 AND ,...,ANDC D R1.Cj=R2.Cj)(R1 x R2) ))2 D1 Ej.:2 D2 R1(A,B)R1 |x|(A=C) R2 A BA B C D 1 B12 B2 2 D1 2 B22 B2 2 D2 2 B32 B3 2 D12 B3 2 D2 R2(C,D) A CJoin natural 2 C1Def.:Sean R1(A1,...,An) y R2(B1,...,Bm) dos esquemas de relación y {C1,C2,...,Cj) la lista de los 2 C2atributos comunes a ambas relaciones.La operación join natural (producto natural) de R1 y R2, R1 x R2Produce un esquema de relación R1 R2 tal que: R1.A B R2.A C- Atributos: {A1,....,An} U {B1,...,Bm} (los atributos comunes sólo aparecen una vez). 1 B1 2 C1- Instancias válidas: Dada r1 instancia válida de R1 y r2 de R2, se obtiene una instancia 1 B1 2 C2 válida de la unión natural combinando todas las tuplas u de r1 y v de r2 tales que u y v 2 B2 2 D1 coinciden sobre {C1,C2,...,Cj}. 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 2-26 2-27
  • 7. Bases de datos y sistemas de información Bases de datos y sistemas de informaciónEj.: DivisionesObtener los datos de todos datos de los empleados que comparten domicilio con otro empleado. 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.Empleados(dni,nombre,domicilio)DNI Nombre Domicilio Def.:1 Aniceto Jazmín 12 Eulalia Rosa 3 Sea R(A1,...,An), S(B1,...,Bm) con {B1,....,Bm}⊆{A1,...,An}.3 Teodora Clavel 2 Entonces la operación división R÷S produce un esquema de relación4 Macario Rosa 3 - Atributos: {C1,...,Cj} = {A1,...,An}{B1,...,Bm}5 Anacleto Jazmín 1 - 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.σE1.DNI<>E2.DNI AND E1.Domicilio=E2.Domicilio(ρE1(Empleados) x ρ E2(Empleados)) Ej.: R A BEj.: A1 B1Analistas |x| Analistas A2 B1DNI A3 B14 A4 B15 A1 B26 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 2-28 2-29
  • 8. Bases de datos y sistemas de información Bases de datos y sistemas de información 2.2.3.2.3. Ejemplos2.2.3.2. Cálculo relacional de tuplas2.2.3.2.1. Forma general de una consulta en cálculo relacional de tuplas: - Deseamos formar un esquema de relación con todos los empleados de la empresa.{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. {t | (t∈ Programadores) ∨ (t∈ Analistas)} t es libreEjemploDatos personales del empleado con DNI 3: - Queremos conocer a los empleados que son a la vez programadores{t | ((t ∈ programadores) ∨ (t ∈ Analistas)) ∧ (t[DNI] = 3]) } y analistas.2.2.3.2.2. Fórmulas en el cálculo relacional de tuplasPueden ser átomos y fórmulas compuestas. {t | (t∈ Programadores) ∧ (t∈ Analistas)}• Átomos. DNI: 4 Los átomos tienen una de las siguientes formas: 1.- x ∈ r. Con x una variable de tupla y r un esquema de relación. - Empleados que son analistas no programadores Una variable de tupla representa un fila genérica de una instancia válida de r. (SoloAnalistas <-- Analistas programadores) {t | (t∈ Programadores) ∧ ¬ (t∈ Analistas)} 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 DNI : 5,6,7 variable de tupla s, y θ es un operador de comparación (<,>,= ...) El dominio de los atributos A y B debe ser compable. - Empleados que son sólo Programadores o SoloAnalistas: Con t[A] denotamos el valor de la tupla t en el atributo A. {t | ((t∈ Programadores) ∧ ¬ (t∈ Analistas)) 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 (<,>,= (t∈ Analistas) ∧ ¬ (t∈ Programadores)} ...).• Fórmulas compuestas Para construir una fórmula se usan las siguientes reglas: 2.2.3.2.4. Operaciones Las fórmulas básicas son fórmulas. Selección Si F es una fórmula (F) y ¬F también son fórmulas. Ej: Si F1 y F2 son formulas entonces F1 ∧ F2, F1∨F2 y F1⇒F2 tambiéns on fórmulas. - proyectos en los que trabaja el empleado con DNI 4 Se pueden usar ∀y ∃ para ligar las variables de tupla. Si F(t) es una fórmula en la que ProyectosDNI4 <-- (σ(DNIEmp=4)(Distribución)) aparece libre la variable de tupla t, entonces las siguientes también son fórmulas: ∀t∈R, P(t) {t | (t∈ Distribución) ∧ (t[DNIEmp] = 4)} ∃ t∈R, P(t) Una variable de tupla que está cuantificada se dice ligada cuando aparece en una fórmula - Trabajadores que trabajan entre 10 y 20 horas (ambas cantidades inclusive) en algún proyecto. afectada por un cuantificador (∀,∃). 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))} 2-30 2-31
  • 9. Bases de datos y sistemas de información Bases de datos y sistemas de información DivisiónProyecciónEj: Empleados que trabajan en los mismos proyectos que Jacinto- Determinar los códigos de los proyectos en los que hay algún empleado trabajando. {t | ((t ∈ Programadores) ∨ (t ∈Analistas))ProyectosEnMarcha <-- πCodigoPr(Distribución) ∧ ∃ j ( j ∈ Programadores ∨ j ∈Analistas){t | ∃p ∈ Distribucion( t[CodigoPr] = p[CodigoPr])} ( j[nombre] = Jacinto ∧ (∀p∈ Distribucion)Producto Cartesiano ((p[DNIEmp] = j[DNI] )Queremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algún ⇒proyecto: ∃ u ((u ∈ Distribucion ) ∧ t[DNI] = u[DNIEmp] ∧ u[CodigoPr] = p[CodigoPr]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 2.2.3.2.5. Significado de una fórmula. Fórmulas seguras.DNIDirPorEmpleados (DNIDir, DNI, Nombre,Dirección,Teléfono) Para que tengan una fórmula {t | P(t)} del calculo relacional de tuplas tenga significado debe1.3 Nos quedamos con los datos de los directores de proyecto cumplir:DatosDirProyecto ← πNombre, Dirección, Teléfono( σDNIDir = DNI(DNIDirPorEmpleados))DatosDirProyecto(Nombre,Dirección,Teléfono) 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{t | ∃u( de relación, menos quizá, t. 3. La fórmula debe ser segura. ((u ∈ Analistas) ∨ (u ∈ Programadores)) ∧ Fórmulas seguras: (t[Nombre] = u[Nombre]) Es posible que el resultado de una expresión sea infinito, por ejemplo: ∧ {t | ¬ (t ∈ R)} (t[Dirección] = u[Dirección]) Se introduce el concepto de dominio. ∧ dom(P) es el conjunto de todos los valores a los que P hace referencia (t[teléfono] = u[teléfono]) 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: (∃v∈Proyectos( v[DNIDir] = u[DNI]) 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. }Join naturalr1(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]} 2-32 2-33
  • 10. Bases de datos y sistemas de información Bases de datos y sistemas de información 2.2.3.3.3. Ejemplos2.2.3.3. Cálculo relacional de dominios - Deseamos formar un esquema de relación con todos los empleados de la empresa.2.2.3.3.1. Forma general de una consulta {<dni,nom,dir,tel> | < dni,nom,dir,tel> ∈ (Programadores ∨ Analistas)}{<x1,....,xn> | P(x1, x2, ..., xn)} con xi variables de dominio Selección - Trabajadores que trabajan entre 10 y 20 horas (ambas cantidades inclusive) en algún proyecto.Ejemplo Entre10Y20 <-- σ(Horas>=10 and Horas<=20)(Distribución)- códigos de proyectos en los que trabaja el empleado con DNI 4ProyectosDNI4 <-- (σ(DNIEmp=4)(Distribución)) DNI’s: 1,4,5{t | (t∈ Distribución) ∧ (t[DNIEmp] = 4)}{<cod> | ∃desc, dni((<cod,desc,dni>∈ Distribución) ∧ dni = 4) } {t | (t ∈ Distribución) ∧ (t[Horas]>=10) ∧ (t[Horas]<=20)} {<dni> | ∃ c,h(<c,dni,h> ∈ Distribución ∧ h >=10 ∧ h <=20)}{<cod> | ∃desc (<cod,desc, 4>∈ Distribución) } Producto Cartesiano2.2.3.3.2. Fórmulas en el cálculo relacional de dominios Queremos conocer los nombres, direcciones y teléfonos de los empleados que dirigen algúnPueden ser proyecto:- átomos- fórmulas compuestas 1.1 Datos de todos los empleados- átomos Empleados ← Programadores U Analistas1.- < x1, ..., xn > ∈ r donde r es una relación con n atributos donde xi son variables de dominio Empleados(DNI, Nombre,Dirección,Teléfono)o constantes de dominio. 1.2 Hacemos el producto cartesiano con los DNI’s de los directores de proyecto:2.- x θ y, donde x y y son variables de dominio y θ es un operador de comparación (<,>,= ...). DNIDirPorEmpleados ← π DNIDir(Proyectos) x Empleados DNIDirPorEmpleados (DNIDir, DNI, Nombre,Dirección,Teléfono)3.- x θ c, donde x variable de dominio, c un valor del dominio de x y θ es un operador decomparación (<,>,= ...). 1.3 Nos quedamos con los datos de los directores de proyectoFórmulas Compuestas DatosDirProyecto ← π Nombre, Dirección, Teléfono( σ DNIDir = DNI(DNIDirPorEmpleados)) DatosDirProyecto(Nombre,Dirección,Teléfono)- Un átomo es una fórmula.Si F es una fórmula (F) y ¬F también son fórmulas. {t | ∃u(Si F1 y F2 son formulas entonces F1 ∧ F2, F1∨F2 y F1⇒F2 también son fórmulas. ((u ∈ Analistas) ∨ (u ∈ Programadores))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: (t[Nombre] = u[Nombre])∀x, P(x) ∧∃ x, P(x) (t[Dirección] = u[Dirección]) ∧Una variable de tupla que está cuantificada se dice ligada cuando aparece en una fórmula (t[teléfono] = u[teléfono])afectada por un cuantificador (∀,∃). ∧ (∃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) } 2-34 2-35
  • 11. Bases de datos y sistemas de información2.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 dominiostenga 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úmeroinfinito 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órmulasdentro 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 lasegunda parte de la fórmula, ∃ z (¬ (<x, z> ∈ r) ∧ P(x, z)), hay que tomar en consideraciónvalores de z que no aparecen en r. Dado que todas las relaciones son finitas, no aparece en r unnúmero infinito de valores. Por tanto, no resulta posible en general probar la segunda parte de lafórmula ∃ z (¬ (<x, z> ∈ r) ∧ P(x, z)), hay que tomar en consideración valores de z que noaparecen en r. Dado que todas las relaciones son finitas, no aparece en r un número infinito devalores. Por tanto, no es posible en general probar la segunda parte de la fórmula sin tomar enconsideración un número infinito de valores de z. En vez de eso, se añaden ligaduras paraprohibir 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).TeoremaEs 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 2-36