You are on page 1of 45

Base de Datos

Introduccin a las Bases de datos Relacionales

Temas

Introduccin Modelo Entidad-Relacin Modelo Relacional Algebra Relacional SQL

Qu es una Base Datos?

Conjunto de datos relacionados entre s Representan algn aspecto de la realidad. Tienen un significado. Sirven para un propsito especfico. Pueden ser de cualquier tamao. Pueden tener distintos grados de complejidad.

SGBD

Qu es un Sistema Manejador de Base de Datos (SGBD)?

Sistema que provee un conjunto de servicios adecuados para la construccin y mantenimiento de bases de datos. Tenemos un conjunto de datos relacionados entre si, organizados alrededor de un modelo de datos y un conjunto de programas para mantener esos datos.

Conclusin:

Objetivos

Controlar redundancia de los datos. Evitar inconsistencia de los datos. Facilidad para el acceso a los datos. Seguridad de los datos. Integridad de los datos. Evitar anomalas en el acceso concurrente. Recuperacin de fallos. Informacin distribuida.

Entorno simplificado de un Sistema de Base de Datos

Modelo de Datos

Un Modelo de Datos es una herramienta conceptual que nos permite describir los datos y las operaciones que se realizan sobre ellos. Permite:

Definir los datos. Definir Restricciones de Integridad. Definir Operaciones sobre los datos.

DDL

DML

DDL: Lenguaje Definicin de Datos

Permite definir los objetos y las relaciones, es decir las estructuras de los datos para almacenar la informacin. El resultado de la compilacin de las instrucciones en DDL se almacena en el Catlogo del Sistema.

DML: Lenguaje Manipulacin Datos

Me permite manejar o tener acceso a los datos que estn organizados por medio de modelos apropiados. Esta manipulacin consiste en:

Recuperacin de datos. Insercin de datos. Eliminacin de datos. Modificacin de datos.

Modelo Entidad-Relacin

Modelo conceptual para la definicin de datos. Se basa en representar objetos (entidades) y relaciones entre ellos. Describe el esquema en trminos de conjuntos de entidades y relaciones entre esos conjuntos. Permite declarar restricciones sobre las relaciones como sobre los conjuntos de entidades. Tiene un DDL grfico. No tiene DML standard.

Entidades, Atributos y Relaciones

Entidad

Objeto distinguible de la realidad en estudio. Las entidades se agrupan en conjuntos de entidades. Propiedades especficas que describen una entidad.

Atributo

Relacin

Correspondencia o asociacin entre dos o ms entidades. Cada relacin tiene un nombre que describe su funcin.

Diagrama de Entidad-Relacin

Los Conjuntos de Entidades se representan con un rectngulo con el nombre, del que cuelgan los atributos. Los Conjuntos de Relaciones se representan con un rombo con el nombre, conectado con los conjuntos de entidades que relaciona. Hay un conjunto grande de Restricciones que se pueden imponer sobre el diagrama con diferentes notaciones.

Tipos de Atributos

Simples o compuestos Monovaluados o multivaluados Almacenados o derivados

Ejemplo
Estudiante

Atributo Determinante

Cdula

Fecha Nacimiento
Edad Telfonos*
Atributo multivalorado Fecha de nacimiento es almacenado, mientras Edad es derivado

Direccin

Calle

Nmero

Atributo estructurado o compuesto

Ejemplo
Estudiante
N Inscripto N

Curso

Funcionario
N

Trabaja

Departamento

Modelo relacional

Modelo ms utilizado en la actualidad para problemas reales y administrar datos dinmicamente. Su idea fundamental es el uso de relaciones, stas podran considerarse en forma lgica como conjuntos de datos llamados tuplas. Cada relacin sera una tabla que est compuesta por registros o tuplas (filas de la tabla) y columnas (tambin llamadas campos).

Conceptos

Restricciones del Modelo Relacional

Restriccin de Dominio: restringen el dominio para ese atributo. Restriccin de Identidad o Clave: No puedan existir tuplas con el mismo valor en ciertos atributos. Esto hace que esos atributos se conviertan en un identificador de las tuplas (conforman una clave). Restriccin de Integridad de Relacin: Ningn valor de la clave puede ser nulo. Restriccin de Integridad Referencial: Toda tupla de una relacin que haga referencia a una tupla de otra relacin debe hacerlo a una tupla existente. Restriccin de Integridad Semntica: Las restricciones entre los valores de los atributos de distintas tuplas estn dados por la semntica de la Aplicacin Ejemplo: El salario de un empleado no debe exceder el salario de un supervisor.

Operaciones

Operaciones que nos permiten manipular tuplas:


Insercin de tuplas. Borrado de tuplas. Modificacin de valores de atributos en determinadas tuplas. Consultas.

Algebra Relacional

Operaciones para manipular tuplas, se clasifican en dos grupos:


Sobre Conjuntos: Unin, Interseccin, Producto Cartesiano, Diferencia, Cociente. Sobre Relaciones: Proyeccin: Recibe una relacin y una lista de atributos y deja slo esos atributos. Seleccin: Recibe una relacin y una condicin deja slo las tuplas que cumplen la condicin. Join Natural: Recibe dos relaciones A y B y junta correctamente las tuplas de A y B que tienen igual valor en los atributos de igual nombre.

Otras operaciones

Funciones agregadas: Suma, Promedio, Mximo, Mnimo, Cuenta Reunin y unin externa

SQL: Structured Query Language

Lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en stas. Permite efectuar consultas con el fin de recuperar informacin de una base de datos, as como tambin hacer cambios sobre ella

Lenguaje de definicin de datos (DDL)

Se encarga de la modificacin de la estructura de los objetos de la base de datos. Existen cuatro operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE

CREATE

Crea un objeto dentro de la base de datos. Puede ser una tabla, vista, ndice, trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Ejemplo:
CREATE TABLE Estudiante ( numero INT not null, nombre varchar(20) ) PRIMARY KEY (numero)

ALTER

Permite modificar la estructura de un objeto. Se pueden agregar /quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar ndices a una tabla, modificar un trigger, etc. Ejemplo: agregar columna a una tabla ALTER TABLE Estudiante ( add apellido varchar(20))

DROP

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, ndice, trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. ALTER TABLE Estudiante ( DROP COLUMN apellido) Drop table Estudiante cascade;

TRUNCATE

Trunca todo el contenido de una tabla. Ventaja sobre el comando DELETE: mucho ms rpido, especialmente si la tabla es muy grande. Desventaja: no se permite la clusula WHERE Ejemplo:
TRUNCATE TABLE ESTUDIANTE

Lenguaje de manipulacin de datos (LDM)

Permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado Consultas: Select Operaciones de Actualizaciones: Insert, Update, Delete

SELECT

Devuelve un conjunto de tuplas de la base de datos de una o mas tablas Sintaxis:


SELECT <lista de atributos> FROM <lista de tablas> <WHERE <condicion>>

SELECT
Dadas las siguientes tablas:

SELECT (ejemplos)

Obtener cdigo y nombre de los empleados del departamento de Compras y cuyo cdigo sea menor a 7.

SELECT codigo, nombre FROM Empleado WHERE departamento = 2 AND codigo< 7

SELECT

Obtener el nombre de cada empleado , departamento en el que trabaja y nombre del gte de su departamento

SELECT E.nombre as NombreEmpleado, D.nombre as NombreDpto, S.nombre as NombreGte FROM Empleado E, Empleado S, Departamento D WHERE E.departamento = D.departamento AND D.codigoGte = S.codigo

SELECT

JOIN: combina tuplas de varias tablas con la condicin especificada UNION: realiza la unin de dos conjuntos de tuplas. Tuplas repetidas se eliminan; si queremos ver las repetidas usar UNION ALL.
SELECT * FROM `empleado` WHERE departamento = 1 UNION SELECT * FROM `empleado` WHERE departamento = 2

IN
SELECT E.* FROM Empleado E where codigo in (1,2,5)

SELECT

EXISTS
select E.* from empleado E where exists( Select codigoGte from departamento where codigo = E.departamento and codigoGte <> E.codigo) Recuperar los empleados de cada departamento que no son gerentes. Otra opcin: Select E.* from departamento D, empleado E where D.codigo = E.departamento and D.codigoGte <> E.codigo

SELECT
AND, NOT, OR, IS NULL MAX, MIN, SUM, COUNT, AVG, DISTINCT Select max(salario), min(salario), avg(salario), sum(salario) from Empleado

Obtener los distintos montos de salarios: Select distinct(salario) from Empleado Obtener la cantidad de empleados Select count(*) from Empleado

SELECT

GROUP BY: agrupa

SELECT D.codigo, D.nombre, count(*)as EmpleadosDpto


FROM Empleado E, Departamento D WHERE E.departamento = D.codigo group by D.codigo

HAVING :se aplica a grupos de tuplas


SELECT D.*, count(*)as EmpleadosDpto FROM Empleado E, Departamento D WHERE E.departamento = D.codigo group by D.codigo having count(*)>2

SELECT

LIKE
Para buscar cadenas SELECT * FROM Empleado WHERE nombre like '%na%'

ORDER BY
SELECT * FROM `Empleado` order by salario desc, nombre asc

SELECT: Outer join

Supongamos que tenemos una tabla de telfonos, pero no todos los empleados tienen.

SELECT E.*, T.telefono FROM empleado E, telefonos T where e.codigo = t.codigoEmp

SELECT: Outer join


Problema: no contamos con el registro de Manuela y Javier. Solucin: usar OUTER JOIN
SELECT E.*, T.telefono FROM empleado E LEFT OUTER JOIN telefonos T ON e.codigo = t.codigoEmp

INSERT

Agrega uno o ms registros a una tabla. Sintaxis: INSERT INTO ''tabla'' (''columna1'',[''columna2,... '']) VALUES (''valor1'', [''valor2]) Ejemplo:

INSERT INTO ESTUDIANTE (numero, nombre) VALUES (1, Ana), (2, Gonzalo);

INSERT (continuacin)

Ejemplo: Insertar en la tabla EstudiantesViejos, los estudiantes con cdigo menor a 10.000
INSERT INTO EstudiantesViejos
(codigo, nombre)

Select codigo, nombre from Estudiante where codigo < 10000

DELETE

Borra tuplas de una tabla Sintaxis: DELETE FROM <Tabla> <WHERE cond> Ejemplos:

borrar todos los empleados DELETE FROM Empleados borra todos los clientes con cdigo mayor a 1000 DELETE FROM Cliente WHERE codigo > 1000;

UPDATE

Modifica valores de los atributos en una o mas tuplas Sintaxis:

UPDATE <Tabla> SET <campo1>=<valor1>[,<campo2> =<valor2>,..] <WHERE cond>

Ejemplos:
UPDATE Estudiante set nombre=Ana, apellido=Bollella where codigo = 1 UPDATE Cliente set comision= comision*1.5 where localidad IN (Punta del Este, La Paloma)

ORACLE

Desc <Table>: describe estructura de una tabla Select table_name from user_tables

Dudas de clase anterior


Eliminacin de registros con claves forneas Una de las principales bondades de las claves forneas es que permiten eliminar y actualizar registros en cascada.
Con las restriccciones de clave fornea podemos eliminar un registro de la tabla cliente y a la vez eliminar un registro de la tabla venta usando slo una sentencia DELETE. Esto es llamado eliminacin en cascada, en donde todos los registros relacionados son eliminados de acuerdo a las relaciones de clave fornea. Una alternativa es no eliminar los registros relacionados, y poner el valor de la clave fornea a NULL (asumiendo que el campo puede tener un valor nulo). En nuestro caso, no podemos poner el valor de nuestra clave fornea id_cliente en la tabla venta, ya que se ha definido como NOT NULL. Las opciones estndar cuando se elimina una registro con clave fornea son: ON DELETE RESTRICT ON DELETE NO ACTION ON DELETE SET DEFAULT ON DELETE CASCADE ON DELETE SET NULL ON DELETE RESTRICT es la accin predeterminada, y no permite una eliminacin si existe un registro asociado, como se mostr en el ejemplo anterior. ON DELETE NO ACTION hace lo mismo. ON DELETE SET DEFAULT actualmente no funciona en MySQL - se supone que pone el valor de la clave fornea al valor por omisin (DEFAULT) que se defini al momento de crear la tabla. Si se especifica ON DELETE CASCADE, y una fila en la tabla padre es eliminada, entonces se eliminarn las filas de la tabla hijo cuya clave fornea sea igual al valor de la clave referenciada en la tabla padre. Esta accin siempre ha estado disponible en MySQL. Si se especifica ON DELETE SET NULL, las filas en la tabla hijo son actualizadas automticamente poniendo en las columnas de la clave fornea el valor NULL. Si se especifica una accin SET NULL, debemos asegurarnos de no declarar las columnas en la tabla como NOT NULL.

You might also like