Base de Datos Distribuidas Lic. Hugo D. Ramòn 2001
11/10/2001 Sistemas Distribuidos
Agenda! Algebra Relacional! Cálculo Relacional! Conceptos Fundamentales de Base de Datos! SQL
11/10/2001 Sistemas Distribuidos
Algebra Relacional! BD Relacional Codd (IBM), 1970! Fundamentos de Algebra Relacional (AR) y Calculo (CA)! Lenguajes de Consultas a partir de este trabajo! AR se usa para:
! Optimización de consultas! Consultas distribuidas
! AR define un conjunto de operaciones y fórmulas para manipular tablas
! Estos conjuntos son relaciones de base de datos
11/10/2001 Sistemas Distribuidos
Algebra Relacional! Ejemplo
! EMP_TBL={Apellido,Nombre,ID_EMP}! Tenemos la relación EMP_TBL! Contiene los atributos
• Apellido• Nombre• ID_EMP
! Los valores posibles determinan su dominio! Relación es equivalente a
• Archivo plano de dos dimensiones• Tabla en las base de datos relacionales
! Contiene 4-tuplas ! Columnas son atributos! Las Filas son tuplas
11/10/2001 Sistemas Distribuidos
Algebra Relacional! Ejemplo
E4JuanaSanchez
E3AndresRomero
E2CarlosCela
E1JuanPerez
ID_EMPNombreApellido
11/10/2001 Sistemas Distribuidos
Algebra Relacional! Símbolos
! Π: Project una columna de la relación! σ: Select una fila o tupla de la relación! <>: natural JOIN entre dos relaciones! <: semi JOIN entre dos relaciones! θ: theta JOIN entre dos relaciones! F: fórmula usada en las operaciones de arriba! ∪ : unión entre dos relaciones! ∩: intersección entre dos relaciones! −: diferencia entre dos relaciones! ÷: division entre dos relaciones! X: producto Cartesiano entre dos relaciones
11/10/2001 Sistemas Distribuidos
Algebra Relacional! Definimos dos relaciones simples
233
122
211
CBAR:
334
221
ECAS:
11/10/2001 Sistemas Distribuidos
Algebra Relacional! Estas dos relaciones se derivan del conjunto de dominos A,
B, C y D! Sus dominio están definidos sobre los naturales 0, 1, 2, 3 ! R esta compuesta por A, B y C o R={A,B,C}! S esta compueta por A, C y E o S={A,C,E}! R contiene 3 tuplas y S contiene 2 tuplas! Veremos la utilización de cada símbolo
11/10/2001 Sistemas Distribuidos
Algebra Relacional! Π: Project
! Se utiliza para extraer un atributo vertical ! Podemos extraer mas de una! Una fórmula típca sería que nos da una nueva relación
231221
)(', CARR CA =Π=
11/10/2001 Sistemas Distribuidos
Algebra Relacional! σ: Select una fila o tupla de la relación
! Permite seleccionar tuplas de una relación! Existe una fórmula como criterio de selección! Da como resultado una nueva relación:
2312
))(( 2'
, CARR BCA =Π= >=σ
11/10/2001 Sistemas Distribuidos
Algebra Relacional! <>: Join Natural
! Involucra dos relaciones! Concatena dos relaciones con un atributo! Genera una relación de la forma
! R.A=S.A es una fórmula para concatenar sobre atributos que tienen valor idéntico
! Se eliminan atributos redundantes. Carácteristicas de Join Natural
! Existe el equi JOIN que no elimina atributos. Utiliza Pefijos
2211
'.. ECBASRR ASAR =<>==
11/10/2001 Sistemas Distribuidos
Algebra Relacional! <>: Join Natural
! Podríamos querer ver algunos atributos
21..))(('
, ESARSRR AAEA =<>Π= =
11/10/2001 Sistemas Distribuidos
Algebra Relacional! <: Semi Join
! Similar al natural JOIN! Solo se muestran atributos de la relación a la derecha
! Muy utilizado en ambientes distribuidos (minimiza comunicaciones)
211...'
, CRBRARSRR AA =<=
11/10/2001 Sistemas Distribuidos
Algebra Relacional! θ : Theta Join
! Similar al natural JOIN! Se pueden utilizar los símbolos
• >=• >• <• <>
332343......' 2 ESCSCRBRASARSRR A == > θ
11/10/2001 Sistemas Distribuidos
Algebra Relacional! F :Fórmula
! Representa subformulas ! Revisemos ejemplos anteriores
11/10/2001 Sistemas Distribuidos
! ∪ :Unión! Dadas las relaciones
! Da como resultado
Algebra Relacional
212541211231
:: CBASCBAR
212211541231
' CBASRR =∪=
11/10/2001 Sistemas Distribuidos
! ∪ :Unión! Se utilizan entre relaciones con atributos comunes! Como resultado tenemos una concatenaciòn ! Los dominios deben coincidir
Algebra Relacional
11/10/2001 Sistemas Distribuidos
! ∩:Intersección! Dadas las relaciones
! Da como resultado
! Retorna tuplas que son comunes a ambas relaciones! Tiene las mismas condiciones que la union
Algebra Relacional
555555213321
:: CBASCBAR
555' CBASRR =∩=
11/10/2001 Sistemas Distribuidos
! -:Diferencia! Dadas las relaciones
! Da como resultado
! Retorna tuplas que estan en la primer relacion y no en la segunda
Algebra Relacional
555654211555213321
:: CBASCBAR
654321
' CBASRR =−=
11/10/2001 Sistemas Distribuidos
! ÷:División! Dadas las relaciones
! Da como resultado
Algebra Relacional
1122
111246115225335
:: ASBAR
555
' ASRR =÷=
11/10/2001 Sistemas Distribuidos
! ÷:División! Existen dos condiciones para hacer esta operación
• La secuencia en el dominio de match debe se idéntico (3,2,1)
• Los valores resultantes deben ser los mismos (5,5,5)
Algebra Relacional
11/10/2001 Sistemas Distribuidos
! x:Producto Cartesiano! Dadas las relaciones
! El producto cartesiano da
Algebra Relacional
333322222111211
:: CBASCBAR
322333111333322222111222322211111211......' CSBSASCRBRARRxSR ==
11/10/2001 Sistemas Distribuidos
! x:Producto Cartesiano! El número de tuplas es la multiplicación! Similar al equi JOIN cuando no hay atributo común
Algebra Relacional
11/10/2001 Sistemas Distribuidos
Cálculo Relacional! Chamberlin & Boyce desarrollaron Lenguaje de Consultas
! Manipular! Extraer datos de bases relacionales
! Presentado en el paper “SEQUEL=A Structures English Query Language”, 1974
! En 1980 se renombre a SQL (Structured Query Language)! Mejorado durante años por
! Informix! Oracle! SQL-Base, etc.
! Existen dos variaciones al Cálculo relacional! Cálculo de tuplas! Cálculo de dominio
11/10/2001 Sistemas Distribuidos
Cálculo Relacional! Cálculo de tuplas (CT)
! Lo básico es el concepto de la variables tuplas! Representan tuplas de una relación! Se utilizan para extraer datos de la relación! Se puede restringir valores de atributos! Ejemplo en SQL
SELECT EMP_TBL.Apellido, EMP_TBL. Nombre WHERE EMP_TBL.BASICO>1000
! Esto dice dos cosas• Extraer tuplas que cumplen EMP_TBL.BASICO>1000• De esas tuplas quiero ver Apellido y Nombre
11/10/2001 Sistemas Distribuidos
Cálculo Relacional! Cálculo de tuplas (CT)
! En CT EMP_TBL.BASICO es una variable de tupla! Una fórmula generica tomo la forma
TV1 operador TV2 o constantesDonde
Tvi: variable de tuplasoperador: <,>,>=,<=,<>,=constante: cualquier numero o string
! Las constantes y Tvi deben se del mismo dominio! Las formulas se conectan con AND, OR y NOT
11/10/2001 Sistemas Distribuidos
Cálculo Relacional! Cálculo de dominio (CD)
! Las variables en este lenguaje están basadas en los dominos! Existe el producto Query By Example (QBE) de IBM! Una fórmula típica
DOMAIN VARIABLE LIST, CONDITION! CONDITION:
• es una formula sobre una variable de dominio• es una formula sobre un atributo involucrado en la formula
! Forma general:RELATION NAME(ATTRIBUTE BELONGING TO RELATION=DOMAIN VARIABLE OR CONSTANT)
11/10/2001 Sistemas Distribuidos
Cálculo Relacional! Cálculo de dominio (CD)
! Dada la siguiente relación
! Para extraer Nombre, Salario y Localidad de la gente de La Plata y que gane mas de 1100 debemos hacer
EMP_NR,SALARIO_NR,LOCALIDAD_NRCONDITION (EMP_TBL(LOCALIDAD=‘La Plata’)AND(SALARIO_NR>=1100)
PlataLaGUIDOAiresBuenosCOLLO
PlataLaCASTAPlataLaPEREZ
LOCALIDADSALARIONOMBRETBLEMP
1200300015002000
_ =
11/10/2001 Sistemas Distribuidos
Cálculo Relacional! Cálculo de dominio (CD)
! En QBE, debemos llenar valores en las variables de dominio! Haciendo sobre el ejemplo anterior
PlataLaCASTAPlataLaPEREZ
LOCALIDADSALARIONOMBREDespues
PLATALALOCALIDADSALARIONOMBREAntes
15002000
1200 =>
11/10/2001 Sistemas Distribuidos
Conceptos ! Componentes tipicas de una base relacional
! Tablas! Vistas! Indices! Plans o Stored Procedures! Catalogo
! Relaciones contienen ! atributos (verticales)! Tuplas (horizontales)
! Tablas contienen! Columns ! Row
! Tablas=Relación
11/10/2001 Sistemas Distribuidos
Conceptos ! Views son tablas virtuales! Indices son estructuras para mejorar la performance de
acceso! Plans: procedimientos almacenados que se ejecutan en
forma repetitiva! Catalogo: tablas especiales donde se guardan
! Parametros! Información
11/10/2001 Sistemas Distribuidos
SQL ! SQL está dividio en tres sublenguajes
! Lenguaje de declaración de datos (DDL)• Se usa para crear componentes de la base
! Lenguaje de control de datos (DCL)• Seguridad de Datos• Control de Consistencia
! Lenguaje de manipulación de datos (DML)• Core del SQL• Obtener datos de las diferentes tablas
! Información adicional ! http://w3.one.net/~jhoffman/sqltut.htm! http://www.webdevelopersjournal.com/articles/sql.html
11/10/2001 Sistemas Distribuidos
SQL ! Lenguaje de declaración de datos (DDL)
! Son comandos para los administradores! Permite crear o declara objetos en las bases de datos! Los principales comandos son:
• CREATE• TABLE• INDEX• VIEW
• DROP• TABLE• INDEX• VIEW
11/10/2001 Sistemas Distribuidos
SQL ! Lenguaje de declaración de datos (DDL)
• ALTER• TABLE <tablename> <DROP|ADD> • Podemos ADD
• Columnas• Primary Key• Referentials Constraint
• Podemos DROP• Primary Key• Foregein Key
11/10/2001 Sistemas Distribuidos
SQL ! Lenguaje de control de datos (DCL)
! Permite administrar los aspectos de control y seguridad! Provee dos comandos
• GRANT• Dar privilegios a los usuarios
• REVOKE• Elimina previlegios
11/10/2001 Sistemas Distribuidos
SQL ! Lenguaje de manipulación de datos (DML)
! Una vez de creada la base de datos necesitamos procesar información u obtener reportes
! Las sentencias son similares a las de Ingles! Las claúsulas principales para reportes
• SELECT• FROM• WHERE• GROUP BY• HAVING• ORDER BY
11/10/2001 Sistemas Distribuidos
SQL ! Lenguaje de manipulación de datos (DML)
! Hay claúsulas para actualizar • DELETE• UPDATE• DELETE