+ All Categories
Home > Education > Unidad 1

Unidad 1

Date post: 22-Jul-2015
Category:
Upload: jaime-lara
View: 586 times
Download: 0 times
Share this document with a friend
Popular Tags:
70
Base de Datos para Aplicaciones Unidad I Manipulación avanzada de datos con SQL M.C. Jaime Lara Alvarez
Transcript

Base de Datos para Aplicaciones

Unidad I

Manipulación avanzada de datos con SQL

M.C. Jaime Lara Alvarez

Contenido

• Conceptos (BD, BD Relacional, Normalización )

• Características y ventajas de una BD Relacional

• Elementos del Modelo Relacional

• Sistemas Gestores de BD (SGBD -DBMA)

• SQL• Cláusulas:

– SELECT

– FROM

– WHERE

– GROUP BY

– HAVING

– ORDER BY

• Consultas y su representación gráfica

• Operadores

• Funciones de Agregación

• Vistas

• Valores vacíos y repetidos

• Modificación de la BD

• Reunión de Relaciones

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 Relacional

Término relacional formal Equivalente informal

Entidad / Relación Tabla

Tupla Fila o registro

Cardinalidad Número de filas o registros

Atributo Columna o campo

Grado Número de columnas o campos

Atributo Identificador Llave Primaria (PK)

Dominio Conjunto de valores legales o permitidos

Elementos del Modelo Relacional

1202001El viaje de Chihiro

902004Mar adentro

1802001El señor de los anillos

1201997La guerra de las galaxias

DURACIONAÑOTITULO

1202001El viaje de Chihiro

902004Mar adentro

1802001El señor de los anillos

1201997La guerra de las galaxias

DURACIONAÑOTITULO

PELICULANombre de la TABLA

ATRIBUTOS

TUPLAS(Registros)

El DOMINIO del atributo TITULO = TEXTO

Dominio de AÑO y DURACION = ENTEROS

Ejemplo: Tabla Película

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:38

Torrente S. Segura Comedia 1997 España 1:10

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

tuplas

cardinalidad

gradoatributos

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 mercado

SGBD libres

• MySQL

• PostgreSQL

• Firebird

• SQLite

• DB2 Express-C

• Apache Derby

SGBD no libres

• dBase

• IBM DB2

• IBM Informix

• Interbase de CodeGear

• Microsoft Access

• Microsoft SQL Server

• Oracle

SGBD no libres y gratuitos

• Microsoft SQL Server Compact Edition

• Oracle Express Edition 10

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 unarelació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ónOperador Significado Ejemplo

= Igualdad SELECT idAlumno, Nombre FROM alumnoWHERE idAlumno = 1

< Menor que SELECT *FROM alumno_materiasWHERE calificacion < 8

<= Menor o Igual que SELECT *FROM alumno_materiasWHERE calificacion <= 7

> Mayor que SELECT *FROM alumno_materiasWHERE calificacion > 9

>= Mayor o igual que SELECT *FROM alumno_materiasWHERE calificacion < 8

<>, != Diferente SELECT *FROM alumnoWHERE nombre != 'Juan'

Operadores Lógicos

SELECT *FROM alumno_materiasWHERE alumno = 1 and Calificacion > 7

SELECT *FROM alumno_materiasWHERE alumno = 1 or Calificacion > 7

SELECT *FROM alumno_materiasWHERE 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 joindentro 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 alumnosorder by matricula

• Ordenar de forma descendente los alumnos

– SELECT * FROM alumnosorder 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 pon 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 tituloFROM librosORDER BY BINARY tituloLIMIT 0,5

SELECT tituloFROM librosORDER BY BINARY tituloLIMIT 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 VIEW

CREATE VIEW nombre_vista AS

SELECT *

FROM tablaX

CREATE VIEW - Ejemplo

CREATE VIEW alu_materia_calificacion as

SELECT a.idAlumno as Matricula,

a.Nombre as 'Nombre del Alumno',

m.Nombre as 'Nombre de la Materia', am.Calificacion

FROM (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 nulos

SELECT *

FROM tabla t

WHERE t.columna is null

SELECT *

FROM tabla t

WHERE 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 tablaVALUES ( ‘valor 1’, 2, ...)

• INSERT INTO alumno (idAlumno, Nombre) VALUES (5, ‘Guadalupe Reyes');

Actualizaciones

• UPDATE alumnoSET nombre = ‘Juan Perez’

• UPDATE alumnoSET 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 DATOSSilberschatz, Korth, Sudarshan. Quinta Edición.McGraw-Hill 2006ISBN: 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


Recommended