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