Vous êtes sur la page 1sur 58

Bases de datos y acrnimos relacionados

Una Base de Datos (DB, database) es un conjunto de datos persistentes


utilizado por los sistemas de aplicacin de una organizacin. (Son Datos, solo
Datos y nada ms que Datos)

Un Sistema Administrador de Base de Datos (DBMS, database


management system) es un software diseado para la creacin y
administracin de Bases de Datos.

Ejemplos: Oracle, DB2, SQL Server, Sybase, MySQL, Access

Un Administrador de la Base de Datos (DBA, Data Base Administrator) es


una persona o un grupo de personas responsable de la instalacin,
mantencin y configuracin del DBMS

Entidades y Relaciones (vnculos)

Entidades: Objetos respecto del cual deseamos registrar informacin

Relaciones (vnculos): Asociaciones de entidades (o las mismas entidades).

Datos versus Informacin


Un Sistema Administrador de Bases de Datos (DBMS) proporciona las siguientes
facilidades:

Concurrencia: Varios usuarios pueden accesar y actualizar datos al mismo


tiempo, preservando la consistencia de los datos.

Mnima Redundancia: Los datos solo estn repetidos por justificadas razones.

Reduccin de Inconsistencias: En teora, no se deben producir


inconsistencias.

Soporte de Transacciones: Se pueden definir transacciones que aseguren la


ejecucin completa de un conjunto de operaciones sobre los mismos datos por
varios usuarios.

Preservar la Integridad: Se pueden emplear mecanismos para asegurar que


los datos estn correctos.

Mejor manejo de la Seguridad: Se puede establecer un mejor control de la


seguridad.

Estndares: Se pueden forzar estndares para su aplicacin en todos los


sistemas.

Por consecuencia, se puede afirmar que el DBMS es:

Eficiente: Puede manejar grandes volmenes de datos y realizar complejas


consultas (queries) sin tener que revisar todos los datos (optimizador).

Ojo: los Sistemas Basados en Archivos tambin manejan grandes volmenes


de datos

Conveniente: Es fcil escribir queries para extraer datos (informacin)

Los Sistemas Basados en Archivos no cuentan con un diccionario


centralizado

Permite arbitrar conflictos: El DBA puede hacer prevalecer lo que ms


conviene a la organizacin.

Los Sistemas Basados en Archivos no tienen un Administrador central.


Codd defini 8 servicios que debe proporcionar un DBMS:

o Almacenamiento de datos, recuperacin y actualizacin

o Un catlogo accesible al usuario con la descripcin de los datos

o Soporte a transacciones

o Control de accesos concurrentes

o Servicios de recuperacin

o Seguridad de accesos (autorizaciones)

o Soporte a comunicaciones de datos

o Integridad de datos

Funciones y Componentes del DBMS


Una de las mayores ventajas de las bases de datos (u objetivo), es que proporcionan
abstraccin de los datos.

Puede cambiar la definicin interna de los datos sin afectar los programas que
usan esos datos

Se pueden agregar o eliminar estructuras de datos sin afectar mayormente a


las aplicaciones ya existentes.

Propiedades de las Tablas (Modelo Relacional)

El nombre de una tabla es nico en una Base de Datos

No pueden existir 2 tablas con el mismo nombre

Cada celda contiene exactamente 1 valor atmico

Cada atributo de una tabla tiene un nombre distinto

Cada tupla es distinta, no hay tuplas repetidas

El orden de los atributos no es importante (en la prctica, bastante.)

El orden de las tuplas no tiene ninguna relevancia

No hay atributos (campos) compuestos

Relaciones (vnculos)

Convencin: Aunque en rigor terico una relacin es una tabla, vamos a usar el
trmino relacin para referirnos a la asociacin de una o ms tablas.

Las principales relaciones son uno-a-uno, uno-a-ene, ene-a-ene


Transacciones ACID

Transaccin (computacional, informtica, base de datos)

Conjunto de operaciones que forman una unidad de trabajo.

Propiedad ACID

Atomicidad: La transaccin se realiza completamente en todas sus


operaciones o procesos, o no se realiza.

Consistencia: Solo pueden ejecutarse operaciones que no atenten contra


la integridad de la base de datos

Aislamiento (Isolated): La ejecucin de una operacin no debe producir


efectos indeseables sobre otras que operen sobre la misma unidad de
trabajo.

Durabilidad: La transaccin ya completada debe permanecer como


definitiva, independiente del estado del sistema.

Modelo Relacional

El modelo Relacional fue propuesto por E.F.Codd en 1970

System R fue uno de los primeros sistemas de bases de datos relacional


desarrollado por IBM, que marc los siguientes hitos.

Fue el primero en ofrecer SQL

Fue la base varios productos comerciales, como Oracle y DB2

Los RDBMS comerciales se masificaron alrededor de 1980

Principales proveedores

Oracle (lder actual)

Microsoft (SQL Server)

IBM (DB2)

Open Source (MySQL o PostgreSQL)

El modelo Relacional es la base de la mayora de los DBMS que se utilizan


actualmente. Actualmente, son ms del 90% DBMS comerciales.

Otros modelos, ahora prcticamente obsoletos, fueron el Jerrquico y el


modelo de Redes
Vistas (view)

Una Vista es una relacin virtual o derivada.

Permiten obtener un subconjunto de datos para:

Mostrar al usuario solo lo que le interesa

Proteger u ocultar atributos confidenciales

Generar datos redundantes y no almacenarlos

Etc.

Se generan mediante una consulta (query) a la base de datos

Dependiendo del RDBMS, tienen prcticamente las mismas caractersticas


que las tablas base.

Es posible realizar consultas sobre una vista como si fuera una tabla
base

Actualizaciones tienen restricciones conceptuales y tambin del RDBMS

No quedan los datos almacenados, se extraen cada vez.

Solo permanece almacenada la definicin de la vista, no sus datos

Llaves (keys)

Las llaves se utilizan para acceder a las tablas en el modelo relacional

Se componen de uno o ms atributos (campos)

Pueden o no tener valores nulos

Pueden o no tener valores duplicados

Una llave primaria identifica en forma nica cada tupla (registro)

No permite nulos/duplicados

Una llave candidato es una llave que puede ser llave primaria

nica (no contiene valores repetidos)

Irreductible (ningn subconjunto de ella tiene la caracterstica de nica)

Una llave fornea (externa) es una llave candidato en otra tabla

Una llave secundaria es una llave distinta a la primaria.

Su objetivo principal es mejorar el acceso por el o los atributos que la componen


ndices

Estructuras internas (fsicas) que permiten acelerar el acceso a las bases de


datos.

Por analoga, son las llaves a nivel lgico/conceptual.

Se construyen para un atributo de una tabla (pueden ser atributos compuestos)

Para cada valor del atributo, se guarda las direcciones fsicas de todos los
bloques que contienen tuplas con ese valor.

Los valores en un ndice se mantienen ordenados para buscar rpidamente por


esos valores.

Los indices primarios contienen el valor de la llave y la direccin (puntero) del


bloque donde est la tupla.

Los indices secundarios apuntan a un bloque y deben buscar secuencialmente el


valor dentro del bloque.

Pueden haber varios ndices secundarios, pero solo un ndice primario.

Construccin de mejores ndices (best indexes)

Lo ms pequeo posible:

Si el ndice es muy grande en tamao, se requieren ms accesos a disco por


cada lectura.

La velocidad de acceso a discos siempre es lenta respecto a velocidad


en RAM

Generalmente los ndices utilizan bastante las operaciones de comparacin,


es ms eficiente comparar elementos pequeos.

Es ms eficiente la bsqueda sobre valores no duplicados

Los valores de los ndices sean la respuesta a las solicitudes

De esta forma, basta con leer los ndices y no es necesario volver a leer la
data

Considerar llaves compuestas

Indices clusterizados

Si la data est ordenada por el valor del ndices, la lectura es ms eficiente

Ejemplo: llaves primarias


Normalizacin (Formas Normales)

Recomendaciones que facilitan el diseo de bases de datos.


o Cada atributo en la tabla que le corresponde

Evitan la redundancia y reducen las posibilidades de inconsistencias.

Las Formas Normales son inclusivas:

1a.Forma Normal:

Una tabla est en primera forma normal si y solo si, en cada valor vlido de esa
tabla, toda tupla contiene exactamente un valor para cada atributo

Dependencia funcional:

Dada una relacin R: XY, el atributo Y es funcionalmente dependiente del


atributo X, si y solo si, siempre que dos tuplas de R coincidan en sus valores de
X, tambin coincidirn en sus valores de Y.

Por ejemplo, la relacin VP.(V#,P#) VP.CANT es una dependencia funcional. O


sea, el atributo CANT es funcionalmente dependiente del atributo compuesto
V#,P# (Llave primaria).
2a.Forma Normal:

Una tabla est en segunda forma normal si y solo si, est en primera forma
normal y todo atributo no llave es funcionalmente dependiente de la clave
primaria

En otras palabras, todos los atributos de una tupla en una tabla, quedan
absolutamente determinados por el valor de la llave primaria

3a.Forma Normal:

Una tabla est en Tercera Forma Normal si y solo si, est en Segunda Forma
Normal y todo atributo no llave es dependiente en forma no transitiva de la llave
primaria.

En otras palabras, todos los atributos de una tupla en una tabla, quedan
absolutamente determinados SOLO por el valor de la llave primaria, no hay otros
atributos de los cuales dependa.

Desnormalizacin:

Es el proceso inverso a la Normalizacin, consiste en aumentar la redundancia


para reducir la cantidad de relaciones y lograr un mejor rendimiento para
determinadas aplicaciones.

Especficamente consiste en minimizar la cantidad de relaciones en tiempo de


ejecucin, creando las consolidaciones en la estructura de la base de datos.

La Desnormalizacin NO se realiza a nivel de diseo lgico

Deben existir fundadas razones para justificarla:

El sistema puede tener un desempeo aceptable sin la desnormalizacin?

An con desnormalizacin el desempeo seguir siendo malo?

El sistema ser menos confiable debido a la desnormalizacin?


Algunas razones que pueden justificarla:

Numerosas consultas crticas o reportes incluyen datos que residen en


ms de una tabla.

Grupos repetidos de elementos necesitan ser procesados en un grupo en


vez de individualmente.

Muchos clculos necesitan realizarse a una o ms columnas antes de


procesar las consultas.

Las tablas necesitan ser accesadas de diferentes maneras por diferentes


usuarios durante el mismo lapso de tiempo.

Llaves primarias mal diseadas que requieren tiempo al usarlas en


relaciones.

Algunas columnas son interrogadas un gran porcentaje del tiempo.

Aplicaciones de Datawarehousing.

Data Definition Language (DDL):

Para describir la base de datos al DBMS, se utiliza el Lenguaje de Definicin de


Datos (DDL).

El DDL permite al usuario crear las estructuras de datos

El DDL define la Visin o Vista (View) Externa de la Base de Datos

Data Manipulation Language (DML)

Despues de crear la Base de Datos en el DBMS con el DDL, el usuario accesa los
datos mediante el Lenguaje de Manipulacin de Datos (DML).

El DML estndar es SQL

El DML permite insertar, modificar, borrar y recuperar datos

Mediante el DML se aprecia la abstraccin de datos, ya que las consultas se


especifican usando los nombres de los Atributos (Campos) sin importar su
representacin fsica.

El DBMS se encarga de interpretar y traducir las consultas

Tampoco es necesario indicar como efectuar la operacin: el DBMS


utiliza la mejor estrategia de acceso por medio del optimizador.
Data Control Language (DCL)

Lenguaje para controlar los accesos a los datos. Por ejemplo:

GRANT

REVOKE

Muchas veces al DCL se agregan commandos del tipo DTL (Data Transaction
Language)

COMMIT

SAVEPOINT

ROLLBACK

Etc.

SQL

Structured Query Language o SQL es el lenguaje de consulta para las bases de


datos Relacionales

En 1986 se convirti en el estndar oficial ANSI (American National


Standards Institute)

Todos los grandes proveedores de DBMS ofrecen SQL con pequeas


variaciones en el formato (diferentes dialectos)

SQL consiste de un DDL (Lenguaje de Definicin de Datos) y un DML


(Lenguaje de Manipulacin de Datos)

SQL es un lenguaje declarativo (no-procedural). Una query SQL especifica QUE


recuperar, no COMO recuperar.

SQL no es un lenguaje de programacin completo, no tiene comandos de control


o de iteracin, pero puede ser incluido DENTRO DE otros lenguajes (Embedded
SQL) que incluyan estas estructuras, de esta forma logra completitud y agrega al
lenguaje Host todos los beneficios del RDBMS.
SQL queries

El formato general es:

El * se usa para indicar todos los atributos

Se usan las combinaciones del algebra relacional para las operaciones de


Select, Project y Join en una sola instruccin

Los operadores de comparacin son =, <>, >, <, >=, <=

En algunos casos las consultas SQL generan valores (filas) duplicadas. Por ejemplo,
obtenga todos los Titulos de los empleados.

Para eliminar los duplicados, SQL ofrece la clasula DISTINCT (select distinct title
from emp):
JOIN mediante SQL

Para realizar un join de tablas, basta con hacer la asociacin de las tablas en la
clusula WHERE igualando los atributos comunes.

Ejemplo: Obtenga el nombre de los empleados que estn asignados al


Departamento Management.

Campos (atributos) calculados

La clusula SELECT permite realizar operaciones aritmticas simples para obtener


nuevos campos calculados. El nuevo atributo se denomina col1, col2, etc.

Por ejemplo, obtenga cuanto ganar el empleado A.Lee por cada proyecto.
Asuma sueldos anuales.

Nota: Agregar en WHERE la condicin ename=A. Lee.


Renombrar atributos

Muchas veces es conveniente renombrar el atributo en el resultado final


(especialmente cuando hay campos calculados). Se puede usar la keyword AS
aunque es opcional.

Nota: Agregar en WHERE la condicin ename=A. Lee.

Clausula Between

Cuando se requiere especificar un rango en la clusula WHERE, se puede usar la


keyword BETWEEN. Por ejemplo, obtenga los empleados que ganan a lo menos US$
20.000 y no ms de US$ 45.000.

En este caso conviene usar la keyword BETWEEN.


Operador LIKE

El operador LIKE permite usar metacaracteres para expresar contenidos de Strings.

El signo % indica uno o ms y el underscore _ expresa solo un carcter.


Por ejemplo, obtenga todos los empleados que nombre comience con A.

Obtenga todos los empleados cuyo nombre comience con J. y su apellido


tenga solo tres letras.

Condicin IN

Para expresar que el valor de un atributo puede ser alguno de los valores de una
lista, se debe utilizar la keyword IN.

Por ejemplo, Obtenga todos los empleados que estn en los departamentos
D1, D2,D3.

Note que la expresin anterior es equivalente a usar el operador OR


Valor nulo o NULL value

El null se utiliza para indicar que un determinado atributo no tiene un valor. Para
determinar si un atributo es nulo, se usa la clusula is null. (Note que no preguntar
si un valor es nulo con = o <>)

Ejemplo, encuentre todos los empleados que no estn asignados a un


departamento.

Obtenga todos los departamentos que tienen un Jefe.

UNION en SQL

La operacin relacional UNION tiene directa implantacin en SQL.

Suponga que requiere obtener todos los nombres de empleados que son
supervisados directamente por R.Davis o por M.Smith.
Keyword INTO

El resultado de un Select, puede quedar en una tabla temporal mediante la keyword


INTO.

Repitamos la query anterior.

Este resultado temporal se puede utilizar para formar la operacin, en lugar de usar
parntesis.

Nota: cambie este ltimo R.Davis por M.Smith

Ordenaciones

Por default, el orden de la salida de una query no queda ordenada por ningn
atributo. Mediante la clusula ORDER BY se puede indicar la ordenacin.

ASC indica ascendente y DESC descendente. El default es ASC.

El orden de los atributos es importante: primero se ordena por el primer


atributo, luego por el segundo atributo, etc.

El valor NULL es tratado como menor a cualquier valor.


Funciones agregativas

Existen cinco funciones agregativas bsicas:

COUNT: retorna el # de valores en una columna

SUM: Entrega la suma de los valores de una columna

AVG: Entrega el promedio de los valores de una columna

MIN: Retorna el menor valor de una columna

MAX: Retorna el mayor valor de una columna

COUNT, MAX y MIN se aplican sobre cualquier tipo de campos, mientras que
SUM y AVG se aplican solo sobre atributos numricos

Todas estas funciones ignoran el NULL value, excepto COUNT que cuenta el numero
de filas del atributo.

Ejemplo: Obtenga la cantidad de empleados y su sueldo promedio.

Clusula GROUP BY

Las funciones agregativas son muy prcticas cuando se combinan con la clusula
GROUP BY. Por ejemplo, obtenga la cantidad de empleados por cada titulos (title), su
salario mnimo, mximo y promedio.
Clusula HAVING

La clusula HAVING es aplicada despus de aplicada la clusula GROUP BY y las


funciones agregativas.

Se utiliza para dejar fuera los grupos que no coinciden con el criterio establecido en
la query.

Por ejemplo, obtenga el ttulo y la cantidad de empleados con ese ttulo, tal
que la cantidad de empleados con ese ttulo sean a lo menos dos.

Ejemplo de GROUP BY y HAVING

Para los empleados nacidos con posterioridad al 01/12/1965, obtenga el salario


promedio por departamento cuyo promedio es superior a $ 40.000.

Primer paso: aplicar el Join y el filtro que aparecen en la clusula WHERE


Segundo paso: aplicar la clusula GROUP BY sobre dname.

Tercer paso: Calcular las funciones agregativas

Ultimo paso: Filtrar los grupos usando la clusula HAVING.

Subqueries

SQL permite que una query tenga mltiples subqueries anidadas dentro de ella.
Esto facilita la construccin de queries ms complejas.

Cuando se tienen queries anidadas, la query principal determina el contenido del


resultado final, mientras que la subquery se utiliza para obtener resultados
intermedios, generalmente para obtener valores expresados en las clusulas
WHERE.

Una subquery puede estar presente en la clusula WHERE o HAVING.

Por ejemplo:
Tipos de Subquery

Hay 3 tipos de subqueries:

Subquery escalar: retorna un nico valor que luego se utiliza en una


comparacin.

Si escribe una query cuya subquery debe retornar un valor, y al


ejecutarla retorna ms de un valor o ningn valor, se produce un error de
run-time.

Subquery de fila: retorna una fila nica que puede tener varias columnas.

Subquery de tabla: retorna una o ms columnas y mltiples filas

Ejemplos de Subquery

Ejemplos de Subquery (2)


Reglas de sintxis de las Subqueries

La clusula ORDER BY no puede usarse en una subquery

El nmero de atributos en la clusula SELECT en la subquery, debe corresponder


con el numero de atributos comparados mediante el operador de comparacin.

Use el operador IN cuando una subquery pueda retornar mltiples resultados y


usted requiera que el valor del atributo pueda ser cualquiera de los resultantes.

Funcin EXISTS

La funcin EXISTS se utiliza para chequear si el resultado de una query anidada est
o no vaco.

EXISTS retorna el valor 1 si la query anidada tiene una o ms tuplas.

Ejemplo: Obtenga todos los empleados que tienen el mismo nombre en la tabla
Empleados.

Keywords ANY y ALL

SQL permite utilizar las keywords ANY y ALL con los operadores de comparacin y
subqueries.

ANY significa que cualquier valor retornado por la subquery puede satisfacer la
condicin

ALL significa que todos los valores retornados por la subquery deben satisfacer
la condicin.

Ejemplo: obtenga todos los empleados que ganan ms que los empleados con titulo
ME.
Actualizaciones (updates) en base de datos

SQL permite actualizar una base de datos mediante la insercin, modificacin y


eliminacin de filas (DML)

Para insertar columnas se usa el comando INSERT

Nota: si omite la column list, los valores deben ser especificados en el orden en
que fueron creados en la tabla. Si omite cualquier valor de las columnas, stas
quedan con el valor NULL.

INSERT

El INSERT se puede usar para ingresar mltiples filas que son el resultado de una
instruccin SELECT

INSERT INTO tablename [(column list)] SELECT

Ejemplo: crear una tabla que contenga el nombre del departamento, su codigo y
el numero de empleados que tiene cada departamento
UPDATE

Para modificar valores de una tabla, SQL utiliza la instruccin UPDATE.

DELETE

Para eliminar filas de una tabla, SQL utiliza la instruccin DELETE.


Integridad

Las Reglas de Integridad (constraints) son reglas o restricciones que se aplican a


una base de datos y limitan los valores de los datos que pueden guardar, con el
objetivo de mantener la integridad de la base de datos y evitar que los usuarios
o aplicaciones ingresen data inconsistente.

Estas Reglas se agrupan en tres categoras

1. De Dominio

2. De Integridad de Entidad

3. De Integridad Referencial

Regla de Integridad del Dominio

Esta Regla establece que todo valor de un atributo debe ser un elemento del
dominio del atributo o nulo (null)

o Cuando en una tupla el valor de un atributo es desconocido, entonces se


utiliza el null para su representacin.

o El null no representa el valor cero ni el espacio en blanco, porque estos


valores tienen una representacin muy precisa. El null implica ausencia de
informacin, porque al insertar la tupla se desconoca el valor del atributo, o
porque para dicha tupla el atributo no tiene sentido.

o Por ejemplo, mes 1-12.

Regla de Integridad de Entidades

Esta Regla de Integridad se refiere a las llaves primarias: ninguno de los


valores de l o los atributos que componen la llave primaria puede ser
null.

Sabemos que una llave primaria es irreductible, o sea no existe un suconjunto de


sus atributos que pueda identificar en forma nica las tuplas de la tabla. Si se
permitiera el valor null en la llave primaria, entonces se transgrede esta
propiedad.

Esta regla se aplica solo a las llaves primarias, no se aplica a llaves alternas o
secundarias.
Regla de Integridad Referencial

Esta Regla de Integridad es muy importante porque permite preservar la


integridad de las Relaciones.

Su definicin es: si existe una llave fornea en una tabla, entonces todo valor
del atributo debe coincidir con un valor en la tabla referenciada o ser null.

Entonces, al momento de crear la relacin es necesario cuestionarse lo


siguiente.

o Delete: Si elimino una tupla referenciada por la llave fornea

No se permite

Se elimina tambin la tupla que la referencia

Se deja en Null (solo si acepta Null)

o Update: Si modifico el valor de la tupla referenciada por la llave fornea

No se permite

Se modifica tambin la tupla que la referencia

Se deja en Null (solo si acepta Null)


Reglas de Integridad Referencial (MySQL)

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 un registro con clave fornea son:

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

ON DELETE CASCADE

ON DELETE SET NULL

ON DELETE SET DEFAULT 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.
A continuacin se muestra un ejemplo de eliminacin en cascada:

mysql> ALTER TABLE venta ADD FOREIGN KEY(id_cliente) -> REFERENCES


cliente(id_cliente) ON DELETE CASCADE;

Vamos a ver como estn nuestros registros antes de ejecutar la sentencia DELETE:

mysql> SELECT * FROM cliente;

Ahora eliminaremos a Pepe Pecas de la base de datos:

mysql> DELETE FROM cliente WHERE id_cliente=3;

mysql> SELECT * FROM venta;

Con la eliminacin en cascada, se ha eliminado el registro de la tabla venta al que


estaba relacionado Pepe Pecas.
Vistas

Una Vista (View) es el resultado dinmico de una query sobre las tablas base.

Es considerada virtual porque no permanece almacenada en la base de datos,


sino que es calculada (generada) cada vez que se utiliza la Vista.

Para el usuario, la Vista aparece como una tabla ms y puede usarse en una
query como si fuera una tabla base (con algunas limitaciones lgicas).

Creacin de Vistas

Las Vistas son creadas mediante el comando:

CREATE VIEW nombre-vista [(col1, col2, ., coln)] AS query-sql [WITH


[CASCADE | LOCAL] CHECK OPTION]

query-sql puede ser cualquier query

Es posible renombrar las columnas al momento de definir la Vista, en caso


contrario asumir los mismos nombres originales.

WITH CHECK OPTION se usa para asegurar que si se hacen cambios a la


Vista, estos cambios sean consistentes con su definicin.

Ejemplos de Vistas

Crear una Vista de los Empleados del Departamento D2

CREATE VIEW empd2 AS SELECT * FROM emp WHERE dno = D2;

Crear una Vista que solo muestre el numero del Empleado, Titulo y Nombre

CREATE VIEW staff (Number, Name, Title)

AS SELECT eno, ename, title FROM emp;

Note que el primer ejemplo es una Vista horizontal porque contiene un


subset de tuplas (filas)

El segundo ejemplo es una Vista vertical porque contiene un subset de


atributos (columnas).
Eliminar Vistas

Para eliminar una Vista se usa el comando DROP VIEW

DROP VIEW nombre-vista [RESTRICT|CASCADE]

Notas:

RESTRICT no borra la Vista si hay otras Vistas que dependan de esta.

CASCADE borra la Vista y todas las Vistas dependientes

WITH CHECK OPTION

La opcion WITH CHECK OPTION se utiliza en las Vistas actualizables. Se usa para
prevenir actualizaciones que eliminaran filas de la Vista.

CREATE VIEW staff (Number, Name, Job, DeptNum)

AS SELECT eno, ename, title, D2 FROM emp WHERE DeptNum=D2;

UPDATE staff SET DeptNum=D3 WHERE Number=E3;

Esta actualizacin eliminara el empleado E3 de la Vista, ya que al cambiar su


departamento a D3 ya no cumplira con la condicin que la Vista solo contiene
empleados del departamento D2.

Para prevenir esto, se utiliza WITH CHECK OPTION

CREATE VIEW staff (Number, Name, Job, DeptNum)

AS SELECT eno, ename, title, D2 FROM emp WHERE DeptNum=D2

WITH CHECK OPTION;

WITH CHECK OPTION (2)

Las opciones LOCAL/CASCADE se utilizan si la opcion WITH CHECK OPTION se


aplica a esta Vista (LOCAL) o a todas las Vistas derivadas (CASCADE).

La opcion default es CASCADE WITH CHECK OPTION

Estas opciones (y las Vistas en general) son muy tiles para mantener la
integridad de la Base de Datos.
Ventajas/Desventajas de las Vistas

Ventajas

o Independencia de Datos: permite modificar tablas sin afectar a las


aplicaciones.

o Seguridad: Se pueden usar Vistas para limitar el acceso a algunos


datos a algunos usuarios.

o Consultas simples: Las Vistas pueden simplificar la complejidad de


algunas queries.

o Conveniencia: Los usuarios ven solo la parte de la Base de Datos que


les interesa.

Desventajas

o Las Vistas actualizables no siempre son soportadas por los RDBMS

o Las Vistas actualizables son restrictivas

Embedded SQL

SQL es un lenguaje de consultas interactivo y tambin un lenguaje de


programacin de bases de datos.

El objetivo del Embedded SQL es que las instrucciones interactivas se puedan


utilizar en un programa de aplicacin.

Usualmente las instrucciones SQL se insertan en un lenguaje de


programacin y se les distingue como EXEC SQL.

Las Embedded SQL incluyen instrucciones declarativas como DECLARE


CURSOR.

Las tablas y vistas usadas en el programa deben ser previamente declaradas


mediante DECLARE TABLE.

Despues que se ejecuta una instruccin SQL, el resultado se obtiene en la


variable SQLCODE que entrega un valor numerico: cero indica Ok.
Cursores

Cuando el resultado de un SELECT requiere ser procesado, se utiliza los


cursores.

o Equivalente a archivos temporales que se leen en forma secuencial

El cursor primero debe declararse antes de usarlo (DECLARE cursor


CURSOR)

Despus el cursor debe abrirse (OPEN cursor)

o La declaracin del Cursor no ejecuta ninguna accin, solo cuando se


abre.

Para leer cada registro del cursor se utiliza el FETCH.

El cursor hay que cerrarlo con CLOSE cursor.

Para completar la operacin completa sobre el Cursor, debe usar la


instruccin COMMIT.

Si requiere revertir los cambios, debe usar ROLLBACK

Embedded SQL

Las instrucciones embedded SQL se insertan en un programa del lenguaje


Host y se precompilan o traducen al instrucciones equivalente de lenguaje
host.

Ejemplo con lenguaje C:


Ejemplo:

El siguiente procedimiento (PL/SQL) permite subir el sueldo a todos los empleados


que trabajan en un departamento que se entrega al ejecutar el procedimiento. El
porcentaje de aumento tambin se entrega como parametro.

Este procedure se puede invocar desde la shell de SQL*plus mediante el


comando:

execute aumentar_salary(10, 3)

Si el procedure es llamado solo con el numero del departamento (parametro


10), se asumir un incremento default de 0.5%.
Transacciones

Las Transacciones tienen cuatro importantes propiedades (denominadas ACID)

Atomicidad: Las transacciones son atmicas (todo o nada)

Consistencia: Las transacciones conservan la consistencia de la base de datos.


Es decir, una transaccin transforma un estado consistente de la base de
datos a otro estado tambin consistente.

Aislamiento (Isolation): Las transacciones estn aisladas entre s. Es decir,


aunque generalmente hay muchas transacciones ejecutndose en forma
concurrente, las actualizaciones de una transaccin quedan ocultas a las
otras transacciones mientras no sean confirmadas (commit).

Durabilidad: Una vez que una transaccin es confirmada (commit), sus


actualizaciones sobreviven en la base de datos, an cuando haya una cada
posterior del sistema.

Recuperacin (Recovery)

En el tiempo tf sucede una falla de sistema.

El punto de verificacin ms reciente anterior a tf, se tom en el tiempo tc.

Las transacciones del tipo T1 terminaron antes del tiempo tc.

Las transacciones del tipo T2 se iniciaron antes del tiempo tc y terminaron


despus del tiempo tc y antes del tiempo tf.

Las transacciones del tipo T3 tambin se iniciaron antes del tiempo tc pero no
haban terminado en el tiempo tf.

Las transacciones del tipo T4 se iniciaron despus del tiempo tc y terminaron


antes del tiempo tf.
Las transacciones del tipo T5 tambin se iniciaron despus del tiempo tc, pero no
haban terminado en el tiempo tf.
Algoritmo de Recuperacin (Recovery)

Al restablecer el sistema, las transacciones T3 y T5 deben deshacerse y las T2 y


T4 deben rehacerse.

Comience con dos listas de transacciones, la lista DESHACER y REHACER.

Ingrese en DESHACER la lista de todas las transacciones que estn


en el registro (log) en el ltimo punto de verificacin tc.

Deje vaca la lista REHACER

Busque hacia adelante en el registro (log) comenzando en el ltimo punto


de verificacin tc.

Si encuentra una entrada BEGIN TRANSACTION en el registro (log) para


una transaccin T, agregue esa transaccin T a la lista DESHACER.

Si encuentra una entrada COMMIT para una transaccin T, mueva esa


transaccin desde la lista DESHACER a la lista REHACER.

Cuando llegue al fin del log, las listas DESHACER y REHACER identifican las
transacciones del tipo T3 y T5 respectivamente.

Ahora el sistema trabaja hacia atrs en el log deshaciendo las transacciones que
estn en la lista DESHACER y luego vuelve hacia adelante volviendo a hacer las
transacciones que estn en la lista REHACER.

Finalmente, cuando todas las actividades de recuperacin han finalizado, entonces


(y solo entonces) el sistema est listo para recibir nuevos trabajos
Concurrencia

Hay 3 tipos generales de problemas de concurrencia

Actualizacin perdida (lost update)

Dependencia no confirmada (Uncommitted dependency)

Anlisis inconsistente

Actualizacin perdida (Lost update)

Concurrencia (Dependencia no confirmada)


Anlisis inconsistente
Bloqueos (Locks)

Cuando una transaccin necesita asegurarse que uno o varios registros no


cambiarn mientras dure la operacin, entonces la transaccin realiza un bloqueo
sobre estos registros.

Los bloqueos pueden ser Exclusivos o Compartidos (shared)

Veamos los problemas anteriores de concurrencia manejados mediante bloqueos.

Bloqueos en Actualizacin perdida

Bloqueos en Dependencia no confirmada


Bloqueos en Dependencia no confirmada

Bloqueos en Anlisis Inconsistente


Deadlock
Seguridad

- SEGURIDAD: Proteger data de usuarios no autorizados permisos

- INTEGRIDAD: Proteger data de usuarios autorizados informacin correcta

- Seguridad DBMS

Control Discrecional: Usuarios tendrn privilegios sobre diferentes objetos


Control Obligatorio: Usuarios tienen niveles de acreditacin y los objetos
tienen niveles de clasificacin
o Esencialmente jerrquico.

Control de Acceso Discrecional

- Ejemplo genrico:

AUTHORITY AV3

GRANT RETRIEVE (V#, SUPPLIER, CITY), DELETE

ON P

TO Jim, Fred, Mary;

- AV3: Indica el nombre con el que se grabar en el Log

- RETRIEVE, DELETE: Privilegios

- P: Tabla

- Jim, etc: Usuarios


Privilegios en SQL

Los Privilegios dan a los usuarios el derecho de realizar operaciones sobre los
objetos de la base de datos (MySQL). El set de privilegios son:

Select: El usuario puede recuperar datos de la tabla

Insert: El usuario puede insertar datos en la tabla

Update: El usuario puede modificar datos en la tabla

Delete: El usuario puede eliminar data (filas) de la tabla

References: La habilidad para referenciar columnas en una tabla en restricciones


de integridad

Usage: La habilidad para usar dominios, set de caracteres y traducciones (Por


ejemplo, otros objetos de la base de datos, no solo las tablas)

Notas:

Insert y Update pueden ser restringidos a ciertas columnas

Cuando un usuario crea una tabla, se convierte en el dueo y tiene todos los
privilegios sobre la tabla
Comando GRANT

El comando GRANT se usa para dar privilegios sobre objetos de bases de


datos a los usuarios.

GRANT {privilege list | ALL PRIVILEGES }

ON ObjectName

TO { Authorization IdList | PUBLIC }

[ WITH GRANT OPTION ]

La privilege list es uno o ms de los siguientes privilegios:

SELECT

DELETE

INSERT

UPDATE

REFERENCES

USAGE

La keyword ALL PRIVILEGES le da todos los privilegios al usuario excepto la


habilidad de dar privilegios a otros usuarios.

La keyword PUBLIC le da acceso a todos los usuarios (actuales y futuros) de la


base de datos.

La opcin WITH GRANT OPTION permite a los usuarios dar privilegios a otros
usuarios. Un usuario puede solo dar privilegios que l tiene.

Permita a los usuarios consultar la tabla dept.

GRANT SELECT ON dept TO PUBLIC;

Solo permita a los usuarios Manager y Director accesar y modificar Salary en


la tabla Emp.

GRANT SELECT, UPDATE (salary) ON Emp TO Manager, Director;

Permita a Director full acceso a Proj y la habilidad de dar privilegios a otros


usuarios.

GRANT ALL PRIVILEGES ON Proj TO Director WITH GRANT OPTION;


Comando REVOKE

El comando REVOKE se usa para remover privilegios sobre objetos de base de


datos a los usuarios.

REVOKE [GRANT OPTION FOR] {PrivilegeList | ALL PRIVILEGES }

ON ObjectName

FROM {Authorization Idlist | PUBLIC } [RESTRICT | CASCADE]

Notas:

ALL PRIVILEGES elimina (remueve) todos los privilegios sobre un objeto.

GRANT OPTION FOR elimina la habilidad a los usuarios de dar


privilegios a otros usuarios.

RESTRIC: REVOKE falla si el privilegio ha sido pasado a otros usuarios.

CASCADE: remueve cualquier privilegio y objetos creados usando los


privilegios revocados, incluyendo a los pasados a otros usuarios.

Privilegios son dados a un objeto a un usuario desde un usuario especfico. Si


un usuario entonces revoca su garantizacin de privilegios, eso aplica
solamente a ese usuario.

Ejemplo:

Usuario A da ALL PRIVILEGES al usuario B sobre la tabla T

Usuario B da ALL PRIVILEGES al usuario C sobre la tabla T

Usuario C da ALL PRIVILEGES al usuario D sobre la tabla T

Usuario E da privilegio SELECT al usuario C sobre la tabla T

Usuario A revoca todos los privilegios sobre la tabla T al usuario B

Esto provoca que todos los privilegios sean removidos para el usuario C
tambin, excepto el SELECT que fue dado por el usuario E.

Usuario D ahora tiene solamente el privilegio SELECT tambin.


Encriptacin o Cifrado de datos

El propsito es ocultar la informacin o contenido de los datos frente a accesos


no autorizados.

Este mecanismo tiene alta utilizacin cuando se transmiten datos.

Terminologa:

Texto plano se denomina a los datos originales.

Para encriptarlos, se utiliza una clave de encriptacin y un algoritmo

El algoritmo es pblico o medianamente pblico

Texto encriptado corresponde a la salida del proceso de encriptacin.

Ejemplo:

Texto plano: AS KINGFISHERS CATCH FIRE

Clave de encriptacin: ELIOT

Algoritmo:

Dividir el texto plano en bloques de longitud igual a clave de


encriptacin.

AS_KI NGFIS HERS_ CATCH _FIRE

Reemplazar cada carcter por numero entre _=00 y Z=26

0119001109 1407060919 0805181900 0301200308


0006091805

Aplicarlo tambin a la clave de encriptacin

0512091520

Sumar los bloques de texto plano y clave en modulo 27

0604092602 1919152412 1317000720 0813021801


0518180625

Reemplazar los numeros por su equivalente carcter

FDIZB SSOXL MQ_GT HMBRA ERRFY

Si se conoce el texto plano y el texto encriptado, es posible deducir la clave


de encriptacin ?
Estndares de Encriptacin

El mtodo del ejemplo anterior se basa en la sustitucin, otros se basan en la


permutacin o en ambos

Un algoritmo es DES (Data Encription Standard), desarrollado por IBM y adoptado


por USA en 1977.

DES utiliza bloques de 64 bits, la clave usa 56 bits y 8 de paridad.

Aplica permutaciones y 16 sustituciones complejas

Posteriormente surge 3DES para mejorar este mtodo y hacer que el


trabajo de romper la encriptacin sea prcticamente imposible o
extremadamente costoso.

Encriptacin mediante clave pblica

El algoritmo y la clave de encriptacin son conocidas, pero este mtodo utiliza


una clave de desencriptacin distinta y desconocida.

Mtodo RSA (Rivest, Shamir y Adleman).

Fundamentos:

Existe un mtodo rpido para determinar si un numero es primo

No existe ningn algoritmo rpido para deducir los nmeros


primos del producto que genera un determinado numero.

Por ejemplo, si determinar que un nmero de 130 dgitos es primo


demora 7 minutos, obtener dos factores primos de 63 dgitos a partir
de su resultado, demora 40 mil billones de aos.
Ejemplo mtodo RSA

Sea r el numero que interesa y p,q los primos que lo generan: r = p * q

Sea e la clave de encriptacin, numero primo mayor que p y q

Sea d la clave de desencriptacin, como el multiplicativo inverso en modulo


e de (p-1)*(q-1).

d * e = 1 modulo (p-1)*(q-1)

El algoritmo para calcular d a partir de e,p,q es directo y conocido.

Se publican r y e, pero d es desconocido

Se aplica la encriptacin en base al modulo r con la clave e. C=Pe modulo


r (C:texto Cifrado)

Se aplica la desencriptacin en base al modulo r con la clave d. P=Cd


modulo r (P:texto Plano)

Nota:calcular d conociendo r y e (y no p o q) no es factible, por eso cualquier


persona puede encriptar(cifrar) pero solo los que tienen d pueden
desencriptar.

Ejemplo encriptacin clave pblica/privada con RSA

Sea p=3, q=5 r=15 (p-1)*(q-1)=8.

Sea e=11 (primo mayor que p y q)

d * e = 1 modulo (p-1)*(q-1) d * 11 = 1 modulo 8 d=3.

Si el texto plano es 13, entonces el texto encriptado es:

C = 1311 modulo 15

= 1.792.160.394.037 modulo 15

=7

Entonces el texto plano original ser:

P = 73 modulo 15

= 343 modulo 15

= 13

Nota: como d y e son inversos entre s, se exige que los mensajes encriptados
(cifrados) sean firmados (firma digital)
Tipos de Encriptacin

Simtrica

Utiliza la misma llave para encriptar y desencriptar el mensaje.

No es recomendable para ambientes pblicos (Internet)

Ejemplos de estndares de la industria

Asimtrica

Tambin se denomina Encriptacin con Llave Publica.

Utiliza una llave pblica y una llave privada para encriptar/desncriptar los
mensajes
ltimas tendencias en seguridad de Aplicaciones

Fundamento emprico

La realidad muestra que las protecciones de firewall, antivirus, prevencin de


intrusos(IPS), deteccin de intrusos(IDS), etc. no son garanta de proteccin
frente a accesos no autorizados en Internet

Es necesario separar los componentes de las Aplicaciones

Mainframe: terminales tontos, seguridad concentrada en servidor

Cliente-Servidor: no asume que los clientes podran no ser clientes

Basadas en Web: asume que clientes podran ser intrusos

Arquitectura de 3 niveles (capas)

Su objetivo es separar los componentes de las aplicaciones

Componentes Arquitectura de 3 capas

Capa de Presentacin

Es la interfaz que se presenta al usuario.

Capa de Negocio

Es donde residen los programas (aplicaciones). Esta capa se


comunica con la Capa de Presentacin para recibir los
requerimientos, los procesa en base a las reglas de negocio que
tenga definida y se comunica con la capa de datos para
procesarlas.

Capa de Datos

Es donde residen los datos y los DBMS.

Vous aimerez peut-être aussi