Estructura de datos y de la información

Anuncio
Tema 1. Introducción a las bases de datos......................1
1.1 Procesamiento tradicional de datos.........................1
1.2 Sistemas de bases de datos.................................1
1.3 Abstracción de la información e independencia de datos.....2
1.4 Modelos de datos...........................................3
1.5 Lenguajes de bases de datos................................5
1.6 Usuarios de sistemas de bases de datos.....................6
1.7 Estructura de un sistema de bases de datos.................6
1.8 Arquitectura de aplicaciones...............................7
Tema 2. Modelo Relacional......................................8
2.1 Introducción...............................................8
2.2 Estructura del modelo relacional...........................8
2.3 Valores nulos..............................................9
2.4 Componentes del modelo relacional.........................10
Tema 3. Álgebra Relacional....................................11
3.1 Introducción..............................................11
3.2 Operadores del álgebra relacional.........................11
3.4 Modificación de la Base de Datos..........................14
3.5 Operación de complementos.................................15
3.6 Potencia expresiva........................................15
3.7 Propiedades de los operadores.............................15
3.8 Ampliación de operadores para valores nulos...............16
3.9 Vistas....................................................17
Tema 5. SQL...................................................18
5.1 Introducción..............................................18
5.2 Recuperación de datos (Consultas).........................18
5.3 Operadores lógicos........................................20
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
TEMA 1. INTRODUCCIÓN A LAS B ASES DE D ATOS
1.1 Procesamiento tradicional de datos
§ Proliferación de ficheros específicos implementados para satisfacer las
demandas de la empresa
§ Ambiente enfocado a los procedimientos y no a los datos
Aparte de las evidentes ventajas para la época, el procesamiento tradicional de
datos tenía varias desventajas:
Desventajas:
§ Redundancia de la información
o Aumenta el coste de almacenamiento
o Aumenta el coste de acceso
o Aumenta la inconsistencia de datos
§ Dificultad de acceso a los datos
§ Dependencia del formato
§ Problemas de acceso concurrente
§ Confidencialidad de la información
§ Problemas con la integridad
§ Problemas de atomicidad
§ Reestructuración de la información
1.2 Sistemas de bases de datos
Sistema de información orientado a los datos en el que se pretende almacenar
y leer la información de manera cómoda y eficiente
Base de datos: Colección de datos no redundante compartido por diferentes
programas
Ventajas
§ Referidas a los datos:
o Independencia de los datos respecto de los procedimientos
o Mejor disponibilidad de los datos
o Mayor eficiencia almacenamiento/recuperación
§ Referidas a los resultados:
o Mayor coherencia de resultados
o Facilidad para compartir los datos (datos más normalizados)
o Mayor flexibilidad para atender demandas inesperadas
§ Referidas a los usuarios:
o Acceso rápido y sencillo a la información
o Mayor flexibilidad para atender demandas inesperadas
1
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
Desventajas
§ Coste del sistema gestor de BD
§ Costoso en recursos de maquina
§ Necesario personal especializado
Sistema Gestor de Bases de Datos (SGDBS o DBMS)
El SGDB es el conjunto de herramientas de software que permiten la creación y
acceso a los datos de forma cómoda y eficiente
§
Definición de datos
o Crear / borrar / modificar
o Reestructurar el esquema de la BD
o Hacer consultas
El esquema de la BD representa propiedades invariantes de los datos, según
las cuales se organiza la BD.
El contenido de la información que tiene un esquema en un momento dado es
una instancia
§
§
Manipulación de datos
o Recuperar / insertar / borrar / actualizar
Control de datos
o Acceso concurrente
o Privilegios
o Levantamiento del sistema en caso de falla
o Altas o bajas de usuarios
1.3 Abstracción de la información e independencia de datos
Los SGDB dan acceso cómodo a la información, lo cual se logra con
estructuras de datos complejas, pero esta complejidad queda oculta al usuario:
Abstracción:
Para poder dar abstracción se crean tres niveles de organización:
2
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
Según los niveles de abstracción, hay diferentes esquemas
El esquema representa la organización de los datos a
nivel conceptual.
Algunos autores dividen el esquema en dos partes:
Conceptual (no tiene relación con el sistema gestor)
Canónico: (sí que la tiene)
La independencia de datos es la capacidad que te da el sistema gestor de
modificar el esquema sin modificar el esquema superior. Hay 2 tipos:
§ Independencia física: Modificar el esquema físico sin modificar el
conceptual
§ Independencia lógica: Modificar el esquema conceptual sin tener que
modificar los subesquemas
Para un SGDB le es más fácil proporcionar independencia física que lógica
1.4 Modelos de datos
Realidad à Modelo conceptual à Esquema conceptual
El modelo de datos es un conjunto de herramientas que permiten describir los
datos, su semántica y las condiciones de integridad que deben satisfacer los
mismos.
Existen muchos modelos de datos. Un modelo de datos es tanto mejor cuanto
más se ajuste al esquema conceptual.
Según sirvan para describir el esquema físico o el conceptual, están los
modelos de datos físicos o lógicos.
3
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
1.4.1 Modelo entidad relación
La realidad es un conjunto de entidades distintas entre las cuales se puede
establecer relación:
1.4.2 Modelo relacional
La realidad se percibe como un conjunto de registros de diferentes clases.
Esos registros están agrupados en tablas
P. ej:
CLIENTE DNI NOM
1111 Pedro
2222 Juan
3333 Pilar
POSEE DNI Nº Cta.
1111 1
2222 2
3333 3
CUENTA Nº Cta.
1
2
3
CIUDAD
La Laguna
Sta. Cruz
Candelaria
SALDO
10^5
10^3
200
En las tablas no hay ninguna fila repetida. No lo acepta el modelo relacional
1.4.3 Modelo de datos en red
La realidad se modeliza usando registros conectados de forma arbitraria. Los
registros tienen esta forma:
CLIENTE
CUENTA
4
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
1.4.4 Modelo de datos jerárquico
La realidad es un conjunto de registros entre los cuales se establece una
dependencia jerárquica
1.5 Lenguajes de bases de datos
Los sistemas de BD dan al usuario diferentes tipos de lenguajes para poder
interactuar de manera cómoda y eficaz. Se nombran según la funcionalidad:
§ De definición de datos: (DDL à Data Definition Languaje).
Sirven para especificar o modificar el esquema o de la base de datos. Se
obtiene el esquema canó nico.
Al ejecutar instrucciones de DDL, se almacenan en el diccionario de la
base de datos, el cual contiene metadatos (información acerca de los
datos) y luego realiza los cambios en dichos datos.
§ De manipulación de datos: (DML à Data Manipulation Languaje)
Consultas, accesos, gestión...
Se pueden clasificar de varias formas:
1)
Un DML es procedimental si al recuperar información se debe explicar
QUÉ se quiere y CÓMO se quiere
En los declarativos sólo hay que especificar el QUÉ
2)
De tipo huésped: sus sentencias están inmersas en otro lenguaje de
programación de propósito general. Hay dos formas de imbuir un DML
en otro de propósito general:
a) Ampliando la sintaxis del DML y luego sumergirlo
b) Utilizando un API: Tienes una librería de funciones y lo que
haces en C son llamadas a la base de datos
De tipo independiente si sólo con sus instrucciones es posible crear un
programa ejecutable.
Un DML es dual si puede ser usado como lenguaje huésped o de forma
independiente.
5
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
3)
Conversacional: Puede ejecutar las sentencias del lenguaje de manera
interactiva
Diferido: Se ejecuta el conjunto de sentencias por lotes
1.6 Usuarios de sistemas de bases de datos
§
§
§
§
§
Usuarios normales: (Operadores de aplicaciones, usuarios
ingenuos...) Por lo general no tienen conocimientos de informática e
interaccionan con la BD a través de un programa de aplicación.
Administrador de la BD: (DBA à DB Administrator) Usuario con
grandes conocimientos de informática. Tienen el control de la BD y son
los responsables del buen funcionamiento de la misma. Suelen
encargarse del mantenimiento, integridad, acceso, etc...
Programadores de aplicaciones: Usuario con conocimientos de
informática que desarrollan aplicaciones para la BD. Algunos DBMS
tienen herramientas que facilitan esta tarea
Usuario sofisticado: Atienden peticiones no previstas de información
al sistema. Para ello interaccionan con el sistema mediante formularios
Usuario experto: Interaccionan con el sistema de forma no tradicional
(una BD de audio, de video, etc...)
Cuando los usuarios sofisticados reciben una petición, hay dos formas de
acceder:
- OLPT: Procedimiento en línea de aplicaciones que se están ejecutando
- OLAP: Procesamiento analítico. Busca e intenta averiguar el
comportamiento de los datos.
1.7 Estructura de un sistema de bases de datos
Los DBMS suelen distinguirse en dos módulos:
1) Gestor de almacenamiento : Proporciona una interfaz entre el programa de
aplicación y los datos almacenados en el almacenamiento secundario. Usa
los servicios del SO para acceder al hardware. Puede a su vez dividirse en:
a) Gestor de transacciones: Garantiza la atomicidad de las transacciones.
Controla el acceso concurrente
b) Gestor de autorización de integridad: Verifica que se satisfacen las
condiciones de integridad.
c) Gestor de archivos: Gestiona el espacio en disco para almacenar la
información, las estructuras de datos que se usan, etc...
d) Gestor de memoria intermedia: Intenta acelerar la recuperación de
información. Deja parte de la información leída del disco duro en la
caché.
6
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
Asociado al gestor de almacenamiento, también están:
-Ficheros de datos
-Diccionario de la BD
-Índices
2) Procesador de consultas:
a) Motor de evaluación de la consulta: Ejecuta la consulta
b) Optimización de consultas: Mira si una consulta tiene equivalencias y
busca la mejor
c) Compiladores, precompiladotes, etc...
1.8 Arquitectura de aplicaciones
Lo usual es que se use la BD a través de una red. Este tipo de arquitectura se
llama cliente-servidor. Esta arquitectura tiene variantes:
- Modelo de 2 capas: En la maquina cliente se ejecuta el programa
de aplicación y, a través del API de SGDB pide datos al servidor.
Consume recursos en ambas máquinas
- Modelo de 3 capas:
7
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
TEMA 2. MODELO RELACIONAL
2.1 Introducción
A comienzos de los 70’ sale el modelo de E. F. Codd. Es un modelo muy
intuitivo.
IBM saca el DB2
BERKELEY el INGRESS
ORACLE el ORACLE (1979)
El modelo relacional se apodero del mercado a comienzos de los 80’
2. 2 Estructura del modelo relacional
Una BD relacional está formada por un conjunto de tablas o relaciones. Cada
tabla tiene un nombre único. Las tablas se componen por filas, también
llamadas t-uplas.
Las tablas tienen atributos. (p. ej. la tabla cliente tiene los atributos DNI, NOMBRE,
CIUDAD). Es importante el orden de los atributos pero no el de las filas.
El contenido de una tabla se llama extensión o instancia.
Los atributos tienen asociado un dominio (conjunto de valores permitidos por
ese atributo). Formalmente una tabla es un subconjunto finito del producto
cartesiano de los dominios de sus atributos
R C Di×...×Dn
Una tabla no puede tener ni infinitas filas ni filas repetidas
Los dominios pueden ser finitos (p. ej de tipo cualitativo: “sexo”) o infinitos
(conjunto de los números reales)
Un atributo se dice que es atómico si no se puede descomponer en unidades
más pequeñas con significado (p. ej. “edad”). Un ejemplo de atributo no
atómico puede ser la dirección (calle, piso...).
Supondremos que todas las relaciones se componen de atributos atómicos, y
cuando eso es así, se dice que estamos en primera forma natural (1FN)
Se llama grado de una t-upla al numero de compone ntes de esa t-upla y grado
de una tabla al grado de sus t-uplas
Esquema de una tabla:
NOMBRE (ATRIBUTO1,...,ATRIBUTOn)
grado n
Formalmente habría que poner también los dominios:
NOMBRE (DNI long, NOMBRE string[20], ...)
Una tabla contiene información que no cambia con el tiempo (información no
volátil)
INTENSION à Esquema de la tabla
EXTENSION à Los valores que se guardan en la tabla
8
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
El siguiente ejemplo será el que utilizaremos a lo largo de
todo el curso:
CLIENTE (DNI, N, CDC)
DEPOSITO (DNI, CS, NC, SLD)
PRESTAMO (DNI, CS, NP, I)
SUCURSAL (CS, NS, CDS)
N
CDC
CS
NC
SLD
NP
:
:
:
:
:
:
Nombre
Ciudad
Código sucursal
Nº Cuenta
Saldo
Nº Préstamo
Una condición de integridad es una restricción que han de cumplir las filas de la
tabla para ser formalmente válidas.
Superclave : Conjunto de atributos que permite identificar de forma única las
filas de una tabla
Clave: Superclave minimal
Puede haber varias claves para una tabla. La que mas a menudo se utiliza es
la primaria. El resto son claves alternativas
Todas las claves tienen siempre una superclave alternativa
TABLA
Cliente
Deposito
Préstamo
Sucursal
CLAVE PRIMARIA
DNI
DNI, CS, NC
DNI, CS, NP
CS
Clave externa o clave ajena: (foreign key): Un conjunto de atributos es una
foreign key si referencia la clave primaria de otra relación. P. ej. el DNI en la
tabla depósito es una foreign key y referencia a la clave primaria de la tabla
cliente.
No siempre la foreign key tiene que referenciar a la clave primaria de otra
relación
2.3 Valores nulos
Los valores nulos representan información desconocida y se denotan con el
símbolo “?”. Proporciona flexibilidad al modelo
CLIENTE <1234, Juan, ?>
Se puede admitir que hay diferentes niveles de desconocimiento. Nosotros
asumiremos que todos los valores nulos son igualmente desconocidos.
Permitir valores nulos conlleva revisar su precedencia
También hay que revisar cuando dos t-uplas son iguales:
<1111, Juan, ?>
<1111, Juan, Sta. Cruz>
¿Son iguales?
9
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
Dos t-uplas son iguales cuando los elementos no nulos coinciden entre sí y los
valores nulos son nulos en ambas t-uplas
Operaciones lógicas con valores nulos:
or
V
F
?
V
V
V
V
F
V
F
?
?
V
?
?
and
V
F
?
V
V
F
?
F
F
F
F
?
?
F
?
not
V
F
F
V
?
?
En el modelo necesitamos una función ( isnull (Atributo) ) que nos dice si un
atributo es nulo o no
2.4 Componentes del modelo relacional
-Estructuras de datos
-Operadores
-Condiciones de integridad
à En todos los modelos
En el relacional:
- Estructuras de datos: Dominio, t-uplas, tablas
- Operadores : (manejan estructuras de datos) Operadores del
álgebra relacional
- Condiciones de integridad: reglas de integridad de clave primaria
y reglas de integridad referencial
10
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
TEMA 3. Á LGEBRA RELACIONAL
3.1 Introducción
El álgebra relacional es un lenguaje de procedimiento (habrá que indicar qué se
quiere y cómo se quiere). Se suele usar como lenguaje patrón para lenguajes
comerciales.
Tiene una potencia expresiva limitada (no se pueden expresar todas las
consultas) .
El álgebra relacional se define como un sistema cerrado de operaciones
definidas sobre relaciones (los operadores y el resultado son relaciones)
3.2 Operadores del álgebra relacional
Se pueden clasificar como:
-Unarios: Actúan sobre un único operando
-Binarios: Actúan sobre dos operandos
O también:
-Esenciales: No se pueden poner en función de otros
-Derivados: Se puede poner en función de otros (producto). No añaden
potencia expresiva al lenguaje
Operadores:
§
Selección: S(F)(R) Selección de R según el predicado F
Selecciona de R las t-uplas que satisfagan el predicado lógico F. El
predicado lógico puede estar formado sólo por constantes atributos de
R, operadores lógicos
Supongamos esta tabla
R A
a
b
a
b
B
1
2
3
1
S(B=1)(R) A B
a 1
b 1
Ej: Listar las t-uplas de la tabla CLIENTE de los clientes que viven en La
Laguna
S(CDC=”La Laguna”)(CLIENTE)
11
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
§
David F. S.
[email protected]
Proyección: P(K)(R) Proyección de R sobre el conjunto de atributos K
Si hay más de un atributo, se separan por comas.
K esta formada por atributos de R
La tabla que se obtiene tiene esquema K y se obtiene seleccionando las
columnas de R asociadas a los atributos de K y eliminando una de cada
dos t-uplas duplicadas si las hubiera
R A
a
b
a
b
B
1
2
3
1
à
P(B)(R) B
1
2
3
1
eliminamos duplicados:
P(B)(R) B
1
2
3
La proyección disminuye la anchura y posiblemente también la
profundidad
§
Producto cartesiano R×S
Si tenemos R(r) y S(s) à R×S(r+s), donde (r+s) significa concatenar al
esquema de r el de s
Por cada fila de R concatenamos todas las t-uplas de S
R A
a
b
a
B
1
2
3
R A C
a 2
b 1
R×S R.A
a
a
b
b
a
a
B S.A C
1 a
2
1 b
1
2 a
2
2 b
1
3 a
2
3 b
1
Cuidado: Pueden salir tablas enormes
Supongamos que nos piden los DNI de clientes de La Laguna con
cuentas en la sucursal con código “1” y saldo mayor de 1000 €:
¿Qué cue ntas usaremos? CLIENTE y DEPOSITO
(Por abreviar usaremos CL como CLIENTE y DE como DEPOSITO)
P(DNI)(S((CL.DNI==DE.DNI)^(SLD>1000)^(CDC==”La
Laguna”)^(CS==1))(CLIENTE×DEPOSITO)
Pero esta forma es poco eficiente. Esta otra es mejor:
P(CL.DNI)S(CL.DNI==DE.DNI)((S(CDC==”La
Laguna”)(CLIENTE)) × (S((CS==1)^(SLD>1000)(DEPOSITO))
12
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
§
David F. S.
[email protected]
Unión R U S
Para poder aplicarlo debe darse que:
- Las dos tablas tienen el mismo grado
- Los dominios de los atributos i-ésimos coinciden
El resultado es una nueva tabla que tiene todos los elementos de R y
todos los de S, eliminando una de cada dos t-uplas duplicadas
R A B
a1 1
a2 2
S A B
a1 b1
a3 b3
R U S X
a1
a2
a3
Y
b1
b2
b3
Supongamos que queremos consultar el DNI de las personas con
prestamos o cuenta en el banco:
A = P(DNI)(DEPOSITOS)
B = P(DNI)(PRESTAMO)
(A y B son subrutinas)
AUB
§
Diferencia: R – S
Se amplían las dos condiciones de la unión. El esquema del resultado
será el esquema de R
La tabla resultado está formada por las t-uplas de R que no están en S
§
Intersección: R n S
Se exigen también las dos condiciones de antes. La tabla resultado está
formada por las t-uplas de R que están también en S. Es una operación
binaria y derivada. Para facilitar el uso, pediremos que las tablas te ngan
el mismo esquema
R A B
a1 b1
a2 b2
§
S A B
a1 b1
a3 b3
R n S A B
a1 b1
Yunción (joint): R Y (F)(S) Yunción entre K y S según el predicado F
Lo primero que hace es el producto cartesiano entre R y S y a
continuación se seleccionan las t-uplas que verifican el predicado F
Ej: DNI de los clientes con alguna cuenta con saldo > 1000 € en una
sucursal de La Laguna:
DEPOSITO Y((SLD>1000)^(DEPOSITO.CS==SUSURSAL.CS)^(CDC==”La
Laguna”)) SUCURSAL
En este tipo de condiciones es común poner la igualdad de los atributos
homónimos
13
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
§
David F. S.
[email protected]
Yunción natural (natural joint): R * S
Es un tipo particular de yunción.
La tabla resultado se obtiene haciendo el producto cartesiano de R por
S. Después se seleccionan las t-uplas en las que los atributos
homónimos tienen atributos iguales. Después se eliminan una de cada
dos t-uplas duplicadas
Veamos la misma consulta de antes
P(DNI)S((SLD>1000)^(CDC==”La Laguna”))(DEPOSITO*SUCURSAL)
§
Cociente: R/S
Para poder aplicar el operador: R(r), S(s), tiene que darse r c s
El esquema del cociente son los atributos de R que no están en S
El contenido está formado por las t-uplas de la proyección de R sobre
R – S tales que al concatenarle todas las t-uplas de Se obtiene todas las
t-uplas de R
R A
a1
a2
a3
B
b1
b1
b2
S B
b1
b2
R/S A
VACIA
Ahora al revés, ¿cómo tendrían que ser R y S?
R A
a1
a2
a3
a1
B
b1
b1
b2
b2
S B
b1
b2
R/S A
a1
Ej: DNI de aquellos que tienen cuenta en todas las sucursales de La
Laguna
R=P(DNI, CS)DEPOSITO
S=P(CS)S(CDS==”La Laguna”)SUCURSAL
R / S
3.4 Modificación de la Base de Datos
Inserción: Se hace a traves de una union R U { t }. Podemos insertar un
conjunto de tuplas R U E
Borrado: Se hace a traves de la diferencia R – { t } ^ R – E.
Actualizacion: Pasar de t1 a t2 siendo t1 ? R: (R – { t1 }) U { t2 }
14
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
3.5 Operación de complementos
El operador complemento no se define en álgebra relacional porque existiría la
posibilidad de que la nueva tabla tuviera infinitas filas.
P.ej: “¿Cuál es el complemento de los clientes del banco?” Eso nos
daría una tabla con TODOS los clientes que no son del banco
3.6 Potencia expresiva
La potencia expresiva de un lenguajes el conjunto de consultas que pueden ser
resueltas a través del lenguaje. La potencia expresiva depende de los
operadores del lenguaje. Dado que sólo tenemos 9 operadores, hay consultas
que no pueden ser resueltas.
3.7 Propiedades de los operadores
Se dice que dos consultas son equivalentes si dan los mismos resultados para
todos los valores de la variable
Propiedades:
1. U, n
Conmutativa y asociativa:
R U S = S U R
(R U S) U T = R U (S U T)
2. ×, *
Asociativa, conmutativa
R * S = S * R
3. Cascada de selecciones
S(F1)(S(F 2)(....S(Fn)(R)))) = S(F 1^F2^···^Fn)(R)
4. Cascada de proyecciones
P(L1)(P(L2)(...P(Ln)(R)))) = P(L1)(R)
5. Conmutativa entre P y S
P(L)(S(F)(R)) = S(F)(P(L)(R))
6. Conmutativa entre P y ×
P(L)(R×S) = (P(Ln C)(R))*(P(Ln S)(S))
7. Conmutativa entre la S y los operadores de conjunto
S(F)(R ? S) = (S(F)(R)) ? (S(F)(S))
? ? { U, n , - }
8. Conmutativa entre la P y la U
P(L)(R U S) = (P(L)(R)) U (P(L)(S))
15
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
3.8 Ampliación de operadores para valores nulos
§
Unión externa
R UE S
Relaja las condiciones de la unión. Sólo se pide que los atributos
homónimos tengan igual dominio.
Da lugar a una tabla cuyo esquema son todas las t-uplas de R y de S
completadas con valores nulos. Los duplicados solo se cuentan una vez
§
yunción natural externa
R YE S
Da lugar a una tabla cuyo esquema es la unión de los esquemas de R y
S añadiendo todas las t-uplas que tengan o bien un valor nulo en un
atributo común o bien el atributo no existe en la otra tabla
R A
a
b
?
c
d
B
1
2
3
4
5
S A
a
e
?
c
f
C
6
7
8
9
A
R YE S A
a
c
b
?
d
e
?
f
B
1
4
2
3
5
?
?
?
C
6
9
?
?
?
7
8
A
Puede ser a izquierda y a derecha:
-Izquierda: Sólo se añaden las que origina el operador de la izquierda
-Derecha: Sólo se añaden las que origina el operador de la derecha
§
yunción posibilista
R YP S
Es una mezcla entre yunción y yunción natural.
Funciona como una yunción pero seleccionando por un predicado
especial el de la yunción natural de los homónimos.
1º R×S
2º Selecciona las t-uplas con valores iguales en los atributos
homónimos pero considera iguales un valor nulo con otro o un
valor nulo con cualquier otra cosa
R A
a
b
c
?
B
1
2
?
3
S B
1
?
2
4
C
A
B
?
C
R YP S A R.B S.B C
a 1
1
A
a 1
?
B
b 2
?
B
b 2
2
?
c ?
1
A
c ?
?
B
c ?
2
?
c ?
4
C
? 3
?
B
16
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
3.9 Vistas
Consiste en darle un nombre a una expresión algebraica
Tienen el mismo objetivo que las funciones y procedimientos en los lenguajes
de programación de alto nivel ya que se pueden reutilizar y son de gran
utilidad:
A = P(DNI)(DEPOSITOS)
-Se pueden hacer vistas sobre vistas:
B = P(L)A
B=A
(Duplicar el nombre, útil para relacionar tablas con el mismo nombre)
-Protegen la confidencialidad de la información:
Alguien quiere acceder a DEPOSITO, pero no nos interesa que lo vea,
entonces hacemos una vista y le damos privilegios:
A = P(DNI, NC, CS)DEPOSITO
S(DNI == “1111”)DEPOSITO
-Proteger a las aplicaciones ante cambios en el diseño
17
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
TEMA 5. SQL
5.1 Introducción
Es un lenguaje de consultas para bases de datos relacionales. Hay otros
lenguajes como Quel o QBE (access)
SQL: Lenguaje comercial híbrido, en realidad declarativo y procedimental
-SQL (Structured Query Languaje): Lenguaje de consulta estructurado
-QBE: Lenguaje de dominios
-Quel: Cálculo relacional de tuplas
IBM saca en 1974 el SEQUEL, al cual siguió SQUARE (no eran comerciales)
que se modifica en 1976 y pasa a SEQUEL2 (muy parecido al SQL).
El SQL surge en 1979 (aunque IBM saca uno en 1976 conocido como R
System) creado por la compañía Relational Corporation (Ahora Oracle)
formada a su vez por ex-componentes de IBM
Ha sufrido muchas estandarizaciones:
-1986 à ANSI SQL
-1992 à SQL o SQL 1992: Normaliza lo relativo a bases de datos
orientadas a objetos y el concepto de disparador.
-1999 à SQL 3 ó SQL 1999
Cuando algo no está normalizado, se mira lo que utiliza la compañía en cabeza
y se toma como estandar.
5.2 Recuperación de datos (Consultas)
Una consulta en SQL siempre empieza con:
SELECT <Lista de atributos>
FROM <Lista de tablas> (Tablas y atributos separados por comas “,”
§
§
SELECT: Proyeccion del álgebra relacional.
FROM: Producto cartesiano.
Las clausulas han de estar en mayúsculas.
Ej: DNI de clientes del banco con cuenta:
SQL:
SELECT(DNI)
FROM (DEPOSITO)
Álgebra:
P(DNI)(DEPOSITO)
18
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
Los sistemas comerciales admiten duplicados; el álgebra no. Si uno tiene más
cuentas, sale más veces. Ademas eliminar duplicados en SQL es muy costoso:
SELECT [DISTINCT] DNI
FROM DEPOSITO
[ALL]
NOTA: Los elementos
entre corchetes,
[···], son opcionales
à Por defecto. Todos, incluyendo duplicados
SELECT
[DISTINCT] à Escoge eliminando duplicados
Las tablas de resultados sólo aparecen en pantalla, no se almacenan. El orden
de los atributos es importante
Ej: Nombre de los clientes con cuenta en el banco
SELECT NDC “Nombre del cliente”
FROM CLIENTE
Como NDC puede no ser conocido, se le p uede poner un alias junto al nombre
del atributo, entre comillas: “Nombre del cliente”. Si el alias sólo tiene una
palabra, no hace falta poner comillas
Al mostrar el resultado, no aparecen NDC sino el alias.
Si hay varios atributos:
SELECT NDC nombre, CDC “Ciudad del cliente”
SELECT * à Proyecta nsobre todos los atributos de los atributos de la tabla en
el mismo nombre.
Entonces el esquema será:
SELECT [DISCTINCT | ALL] { Lista de atributos[“alias”] | * }
FROM { Lista de tablas [alias]
Las listas de tablas tambien pueden llevar alias; para deshacer ambigüedades
u otros motivos.
Tambien se pueden anidar los SELECT:
SELECT...
FROM.....(SELECT....
FROM....)
WHERE: Selección del álgebra relacional
SELECT...
FROM...
[WHERE condicion]
La condicion puede ser:
• Aritméticas: (,), +, -, *, /
• Operacionales: <,>, >=, <=, =, <>, !=
19
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
•
David F. S.
[email protected]
Logicas: (,), AND, OR, NOT, BETWEEN, SOUND, IN, ANY, ALL,
LIKE, EXISTS, ISNULL
Ej: Sacar por pantalla los saldos de la cuenta de la sucursal 1 incrementados
en un 10%
SELECT SLD * 1.1 (à La lista de atributos es, en realidad una lista de
expresiones o constantes)
FROM DEPOSITO
WHERE CS == 1;
à Expresión logica
Si pones una cte sacas tantas constantes como veces se cumpla la condicion.
SELECT [DISTINCT] ‘Hola mundo’ “Hola mundo”
FROM DEPOSITO;
à Muestra ‘Hola mundo’ si hay alguna tupla en DEPOSITO
Ej: DNI de los clientes con cuenta en la sucursal con código 100 y 200
SELECT DNI
FROM DEPOSITO
WHERE (CS = 100 OR CS = 200);
5.3 Operadores lógicos
§
BETWEEN: Permite comprobar si el valor de un atributo pertenece a un
determinado rango.
atributo [NOT] BETWEEN <cte1> AND <cte2>
Ej: DNI de clientes con cuenta en sucursales con codigo comprendido
entre el 1 y el 100
SELECT DNI
FROM DEPOSITO
WHERE CS BETWEEN 1 AND 100;
En el caso discreto no aporta potencia expresiva al lenguaje
SLD BETWEEN 1 AND 100 = (SLD >= 1) AND (SLD <= 100)
§
IN: Comprueba si un atributo está contenido en un conjunto de valores
atributo [not] IN <conjunto_de_valores>
(no da potencia e xpresiva)
Ej: DNI de los clientes que son titulares de las cuentas 100, 200 ó 300
SELECT DNI
FROM DEPOSITO
WHERE NC IN (100, 200, 300);
20
Estructura de Datos y de la Información
2º Cuatrimestre
Marzo 2004
David F. S.
[email protected]
El conjunto de valores tambien puede darse de forma implicita. Habría
entonces que poner una consulta anidada.
Ej Ciuades de residencia de los clientes que son cotitulares de la cuenta
100
SELECT CDC
FROM CLIENTE
WHERE DNI IN (SELECT DNI
FROM DEPOSITO
WHERE NC = 100);
Conjunto de valores
escalares donde sólo
se proyecta una columna
Aquí sí se añade potencia expresiva. No se puede realizar de otra forma.
Las subrutinas se realizan de manera habitual. No sólo en FROM.
21
Descargar