• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Unidad 1
 

Unidad 1

on

  • 695 views

Unidad I. Base de Datos para Aplicaciones

Unidad I. Base de Datos para Aplicaciones

Statistics

Views

Total Views
695
Views on SlideShare
695
Embed Views
0

Actions

Likes
0
Downloads
23
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Unidad 1 Unidad 1 Presentation Transcript

    • Base de Datos para Aplicaciones Unidad IManipulación avanzada de datos con SQL M.C. Jaime Lara Alvarez
    • Contenido• Conceptos (BD, BD • Consultas y su representación gráfica Relacional, Normalización ) • Operadores• Características y ventajas de una BD • Funciones de Agregación Relacional • Vistas• Elementos del Modelo Relacional • Valores vacíos y repetidos• Sistemas Gestores de BD (SGBD - DBMA) • Modificación de la BD• SQL • Reunión de Relaciones • Cláusulas: – SELECT – FROM – WHERE – GROUP BY – HAVING – ORDER BY
    • Conceptos• Base de Datos (Banco de datos, colección de datos) – Silberschatz: • Un sistema de bases de datos es una colección de archivos interrelacionados y un conjunto de programas que permitan a los usuarios acceder y modificar estos archivos. • Uno de los propósitos principales de un sistema de bases de datos es proporcionar a los usuarios una visión abstracta de los datos. Es decir, el sistema esconde ciertos detalles de cómo se almacenan y mantienen los datos. – Una BD contiene información relevante para una empresa.
    • Base de Datos Relacional• Definición: – Una base de datos relacional es un conjunto de una o más tablas (a las cuales se les asigna un nombre exclusivo) estructuradas en registros (líneas) y campos (columnas), que se vinculan entre sí por un campo en común.
    • Normalización• Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el cual es entendido como el proceso necesario para que una base de datos sea utilizada de manera óptima.
    • Características de una BD Relacional• Los datos estarán distribuidos en varias tablas• El mejor diseño de una base de datos es aquel que involucra varias tablas relacionadas a través de sus llaves primarias y foráneas.
    • Ventajas de una BD Relacional• Entre las ventajas de este modelo están: – Garantiza herramientas para evitar la duplicidad de registros, a través de campos claves o llaves. – Garantiza la integridad referencial: Así al eliminar un registro elimina todos los registros relacionados dependientes.
    • Elementos del Modelo RelacionalTérmino relacional formal Equivalente informalEntidad / Relación TablaTupla Fila o registroCardinalidad Número de filas o registrosAtributo Columna o campoGrado Número de columnas o camposAtributo Identificador Llave Primaria (PK)Dominio Conjunto de valores legales o permitidos
    • Elementos del Modelo Relacional ATRIBUTOSNombre de laTABLA PELICULA TITULO AÑO DURACION La guerra de las galaxias 1997 120 TUPLAS El señor de los anillos 2001 180 (Registros) Mar adentro 2004 90 El viaje de Chihiro 2001 120 El DOMINIO del atributo TITULO = TEXTO Dominio de AÑO y DURACION = ENTEROS
    • Ejemplo: Tabla Película grado atributos título director género rodaje nacionalidad duración Amores Perros A. González Drama 2000 México 1:45 The Matrix A. Wachowsky Ciencia-ficción 1999 EEUU 1:38cardinalidad Torrente S. Segura Comedia 1997 España 1:10 tuplas Nos miran N. López Policiaco 2001 España 1:18 Amelie J. P. Jeunet Comedia 2001 Francia 1:22 Los lunes al sol F. León Drama 2002 España 1:17
    • Claves• Clave candidata: – Atributo o atributos que identifican de manera única una tupla dada• Clave Primaria (Primary Key) – Elegida a partir de las claves candidatas de la relación. – Ningún componente de la clave primaria acepta valores nulos.• Clave Foranea (Foreign Key) – Especifica de forma explícita la forma en que dos tablas se relacionan. – Mecanismo para asegurar la integridad.
    • Atributos• Cada atributo de una tabla (relación) tiene un nombre• El conjunto de valores permitidos para cada atributo es llamado dominio del atributo• El valor especial null (sin valor) es parte de todos los dominios a menos que se especifique lo contrario.• El número de atributos se denomina grado o aridad de la relación.
    • Sistemas de Gestión de Bases de Datos (SGBD)• Database management system (DBMS): – Existen programas denominados sistemas gestores de bases de datos (SGBD), que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. – El objetivo principal de un SGBD es proporcionar una forma de almacenar y recuperar la información de una base de datos de manera que sea tanto práctica como eficiente.• Aplicaciones más usuales: – Gestión de empresas e instituciones públicas. – Entornos científicos (almacenar la información experimental).
    • Productos SGBD disponibles en el mercadoSGBD libres SGBD no libres SGBD no libres y gratuitos• MySQL • dBase • Microsoft SQL• PostgreSQL • IBM DB2 Server Compact• Firebird • IBM Informix Edition• SQLite • Interbase de • Oracle Express CodeGear Edition 10• DB2 Express-C • Microsoft• Apache Derby Access • Microsoft SQL Server • Oracle
    • SQL (Structured Query Language)• Lenguaje basado en el álgebra relacional.• El lenguaje SQL se considere un lenguaje de consultas, contiene además muchas otras capacidades además de la consulta en bases de datos. Incluye características para definir la estructura de los datos, para la modificación de los datos en la base de datos y para la especificación de restricciones de seguridad.
    • Estructura básica de SQL• La estructura básica de una expresión SQL consiste en tres cláusulas: – SELECT – FROM – WHERE
    • Clausula SELECT• La cláusula SELECT corresponde a la operación proyección del álgebra relacional.• Se usa para listar los atributos deseados del resultado de una consulta.• El resultado de una consulta SELECT es una relación (tabla).
    • Clausula FROM• La cláusula FROM corresponde a la operación producto cartesiano del álgebra relacional.• Lista las relaciones que deben ser analizadas en la evaluación de la expresión.
    • Clausula WHERE• La cláusula WHERE corresponde al predicado selección del álgebra relacional.• Es un predicado que engloba a los atributos de las relaciones que aparecen en la cláusula FROM.
    • Clausula WHERE (Continuación) – En la cláusula WHERE, SQL usa las conectivas lógicas: – And – Or – Not• Los operandos de las conectivas lógicas pueden ser expresiones que contengan los operadores de comparación: – <, <=, >, >=, = y <>.• SQL permite usar los operadores de comparación para comparar cadenas y expresiones aritméticas, así como tipos especiales, tales como el tipo fecha.• SQL incluye un operador de comparación between para simplificar las cláusulas WHERE que especifica que un valor sea menor o igual que un valor y mayor o igual que otro valor.
    • Consultas• Se puede pensar que una consulta consiste en obtener un subconjunto de información que es “cortada” de un subconjunto de renglones y columnas de una tabla y entonces después es “pegada” dentro de una tabla temporal o virtual.• A continuación vamos a ver la representación gráfica de los pasos de una consulta
    • Selección de Filas
    • Selección de Columnas
    • Selección de renglones y columnas
    • Aplicaciones• Consultas sencillas pueden proporcionar información para reportes, para subconjuntos de datos para análisis, y respuestas a preguntas específicas.
    • Especificando condiciones para seleccionar renglones • El “filtrado” o “selección” de renglones está basado en una condición lógica o boleana, la cual se evalúa sobre cada uno de los renglones de la tabla o tablas sobre las que se está trabajando. • Para determinar la condición es necesario hacer uso de diferente operadores.
    • Modelo Relacional - Ejemplo
    • Operadores de comparación Operador Significado Ejemplo= Igualdad SELECT idAlumno, Nombre FROM alumno WHERE idAlumno = 1< Menor que SELECT * FROM alumno_materias WHERE calificacion < 8<= Menor o Igual que SELECT * FROM alumno_materias WHERE calificacion <= 7> Mayor que SELECT * FROM alumno_materias WHERE calificacion > 9>= Mayor o igual que SELECT * FROM alumno_materias WHERE calificacion < 8<>, != Diferente SELECT * FROM alumno WHERE nombre != Juan
    • Operadores LógicosSELECT *FROM alumno_materiasWHERE alumno = 1 and Calificacion > 7 SELECT * FROM alumno_materias WHERE alumno = 1 or Calificacion > 7 SELECT * FROM alumno_materias WHERE not Calificacion = 7
    • Caso de Estudio• Biblioteca UTP: – La biblioteca de la UTP desea almacenar la información de sus Libros(titulo, resumen, genero literario, editorial), autores y alumnos. La biblioteca desea llevar un control de los préstamos realizados a los alumno. – A manera de ejemplo utilizaremos el modelo relacional de la biblioteca para abordar los temas siguientes
    • Modelo Relacional - Biblioteca
    • Reunión de relaciones• Ejemplo: ¿Cómo saber los alumnos que han realizado prestamos? – Esta información se encuentra almacenada en dos tablas: en la tabla alumnos y en la tabla prestamos.• ¿Cómo podemos juntar la información?
    • Join• Para unir dos tablas utilizamos la operación join dentro de la clausula FROM• SELECT campo1_, campo_2, …, campo_n FROM tabla1 join tabla 2 on tabla1.campo_t1 = tabla2.campo_t2 Nota: tenga en cuenta que los campos campo_t1 y campo_t2 tienen que ser del mismo tipo y que por lo general uno de estos es llave primaria y el otro es llave foranea, aunque esto último no es necesario.
    • Join – Unión de alumnos con prestamos• SELECT * FROM prestamos p join alumnos a on p.alumno = a.matricula Nota: Por comodidad se renombrando la tabla prestamos como p y la tabla alumnos como a. En caso contrario hubiera tenido que escribir:• SELECT * FROM prestamos join alumnos on prestamos.alumno = alumnos.matricula
    • CLÁUSULAS• GROUP BY• HAVING• ORDER BY
    • Group By• El atributo o atributos especificados en la cláusula group by se usan para formar grupos.• Las tuplas con el mismo valor en todos los atributos especificados en la cláusula group by se colocan en un grupo.
    • Having• Los predicados de la cláusula having se aplican después de la formación de grupos, de modo que se pueden usar las funciones de agregación.
    • Order By• SQL ofrece al usuario cierto control sobre el orden en el cual se presentan las tuplas de una relación.• La cláusula order by hace que las tuplas resultantes de una consulta se presenten en un cierto orden.
    • Order By - Ejemplo• Ordenar de forma Ascendente los alumnos – SELECT * FROM alumnos order by matricula• Ordenar de forma descendente los alumnos – SELECT * FROM alumnos order by matricula DESC
    • Funciones de Agregación• Las funciones de agregación son funciones que toman una colección de valores como entrada y producen un único valor como salida.• SQL proporciona cinco funciones de agregación primitivas: – Media: avg – Mínimo: min – Máximo: max – Total: sum – Cuenta: count
    • Average - avg• Retorna el valor medio de expresión• Sintaxis – AVG(expresión)• Revisar: – http://www.w3schools.com/sql/sql_func_avg.asp
    • Max, Min• Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Ejemplo:• SELECT min(id_Volumen) as ID Mínimo, max(id_Volumen) as ID Máximo‘ FROM volumenes
    • Count• Con mucha frecuencia se usa la función de agregación count para contar el número de tuplas de una relación.• La notación para esta función en SQL es count(*).
    • Count• Obtener el total de prestamos: – SELECT count(*) as Total de prestamos‘ FROM prestamos• Obtener el total de libros: – SELECT count(*) as Total de libros‘ FROM libros
    • Count• Obtener los prestamos realizados por cada alumno• SELECT matricula, nombre, count(*) as Prestamos realizados FROM alumnos a join prestamos p on a.matricula = p.alumno GROUP BY matricula
    • Sum• Retorna la suma de expr. Si el conjunto resultado no tiene registros, SUM() retorna NULL.• Sintaxis – SUM(expresión)
    • Ejemplo: Count y Sum• Obtener de cada libro su titulo, la cantidad de libros que cuenta la biblioteca de cada libro y los libros disponibles para préstamo.• SELECT titulo, count(*) as Cantidad de Libros, sum(disponible) as Libros disponibles‘ FROM volumenes join libros on libros.isbn = volumenes.libro GROUP BY libro;
    • LIMIT• La cláusula LIMIT puede usarse para restringir el número de registros retornados por el comando SELECT. LIMIT tiene uno o dos argumentos numéricos, que deben ser enteros positivos (incluyendo cero).• Con dos argumentos, el primer argumento especifica el desplazamiento del primer registro a retornar. El desplazamiento del registro inicial es 0.• Con un argumento, el valor especifica el número de registros a retornar desde el comienzo del conjunto de resultados, en otras palabras, LIMIT n es equivalente a LIMIT 0,n.• Ejemplo: Seleccionar los primeros 5 libros ordenados por su nombre. SELECT titulo SELECT titulo FROM libros FROM libros ORDER BY BINARY titulo ORDER BY BINARY titulo LIMIT 0,5 LIMIT 5
    • Vistas
    • Vistas• Si los datos de la BD cambian, entonces los resultados de las consultas también deben de cambiar.• Una vista es un resultado de una consulta SQL de una o varias tablas; también se le puede considerar una tabla virtual (Tabla en donde se almacenan los resultados de una consulta y es virtual porque solo es temporal para la ejecución de una consulta determinada).• Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no los datos. Los datos que se recuperan mediante una consulta a una vista se presentarán igual que los de una tabla.
    • Vistas ( Continuación )• Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista.• Una vista se especifica a través de una sentencia SELECT.• La mayoría de los SGBD soportan la creación y manipulación de vistas.• Las vistas fueron introducidas en la versión 5.0 del servidor de base de datos MySQL.
    • CREATE VIEWCREATE VIEW nombre_vista AS SELECT * FROM tablaX
    • CREATE VIEW - EjemploCREATE VIEW alu_materia_calificacion asSELECT a.idAlumno as Matricula, a.Nombre as Nombre del Alumno, m.Nombre as Nombre de la Materia, am.CalificacionFROM (alumno a JOIN alumno_materias am ON a.idAlumno = am.Alumno)JOIN materia m ON am.materia = m.idMateria
    • Consultar datos de la vista
    • Consultas sobre Vistas
    • Trabajando con valores nulos• Desde que se va construyendo la definición de cada tabla, se puede restringir a que un campo pueda o no aceptar valores nulos.• Un valor nulo significa que para un campo de cualquier tipo de los que se permiten definir (int, char, varchar, etc.) no se le asigne valor alguno (como si se quedara vacio).
    • Trabajando con valores nulosSELECT *FROM tabla tWHERE t.columna is nullSELECT *FROM tabla tWHERE not (t.columna is null)
    • Manejo de Valores duplicados SELECT FirstName FROM Students• Si se quiere obtener el resultado sin que aparezcan valores duplicados, se puede usar la palabra clave DISTINCT SELECT DISTINCT m.FirstName FROM Member m
    • Modificación de la BD• Borrado• Inserción• Actualizaciones
    • Borrado• DELETE FROM alumno • Borra todas las tuplas de la relacion alumno• DELETE FROM alumno WHERE idAlumno = 5 • Borra la tupla identificada por el idAlumno 5.• DELETE FROM alumno_materias WHERE calificacion < 7 • Borra las tuplas de la tabla alumno_materia que tengan una calificacion menor a 7
    • Inserción• INSERT INTO tabla VALUES ( ‘valor 1’, 2, ...)• INSERT INTO alumno (idAlumno, Nombre) VALUES (5, ‘Guadalupe Reyes);
    • Actualizaciones• UPDATE alumno SET nombre = ‘Juan Perez’• UPDATE alumno SET Nombre = Juan Pérez‘ WHERE idAlumno = 1
    • Reunion de Relaciones• Inner join• Left outer join• Right outer join• Natural join
    • Reunion de Relaciones
    • Inner join
    • left outer join
    • Right outer join
    • Natural join
    • Referencias• FUNDAMENTOS DE BASES DE DATOS Silberschatz, Korth, Sudarshan. Quinta Edición. McGraw-Hill 2006 ISBN: 84 – 481 – 4644 - 1• Sintaxis de SELECT – http://dev.mysql.com/doc/refman/5.0/es/select.html• Avg • http://www.w3schools.com/sql/sql_func_avg.asp• Group By – http://dev.mysql.com/doc/refman/5.0/es/group-by-functions.html