You are on page 1of 29

UNIVERSIDAD TANGAMANGA DIRECCIÓN ACADÉMICA CARRERA MATERIA TOTAL DE ENCUENTROS DOCENTE Ingeniería en Tecnologías de la Información y Telecomunicaciones Bases de Datos

2 (BAD5) 8 Clases ISC Sergio Chávez Azuara

Para el estudio de la materia se dispone de:
  Libros de referencia Sitios Web

Competencias a alcanzar:
    Asegurar la integridad de los datos de una base de datos Proveer los mecanismos adecuados para extraer información de una base de datos por diversos usuarios simultáneos. Proveer de los elementos mínimos e indispensables para asegurar la seguridad de los datos almacenados en una base de datos. Plasmar todos éstos conocimientos en casos prácticos.

Conocimientos previos que el alumno debe tener:
   Algebra relacional Lenguaje SQL Estar familiarizado con el manejo de un SGBD (Sistema de gestión de bases de datos)

Software a utilizar durante el curso:
 MySQL Versión 5.0 Cliente, servidor, Administrator, Query Browser  DBDesigner 4.0  PostgreSQL Todos ya sea en versiones para Windows y/o GNU/Linux

CONTENIDOS DE LA MATERIA
UNIDAD 1. RECUPERACIÓN
1.1 1.2 1.3 1.4 1.5 Concepto Transacciones Fallas de transacción Fallas del sistema Fallas en el medio

UNIDAD 3. CONCURRENCIA
3.1 Definición 3.2 Problemas que se representan (actualización, pérdida, etc.) 3.3 Seriabilidad 3.4 Mecanismo de seguros  Tipos de seguros  Protocolos  Dead lock  Técnicas para prevenirlo  Técnicas para deshacerlo 3.5 Etiquetas de tiempo

UNIDAD 2. INTEGRIDAD
2.1 2.2 2.3 2.4 2.5 Definición Reglas de integridad Reglas de integridad de dominio Reglas de integridad de relación Mecanismos de visitas para implantación de integridad

UNIDAD 4. SEGURIDAD
4.1 4.2 4.3 4.4 4.5 4.6 4.7 Concepto. Identificación y autenticación. Matriz de autorización. Definición de un esquema de seguridad Mecanismo de vistas para implantación de seguridad. Base de datos estadísticos. Encriptación de datos (codificación).

UNIDAD 5. ELABORACION DE PROYECTO FINAL

INTEGRIDAD 2.1 2. RECUPERACIÓN 1. Esta unidad básica de trabajo está compuesta por un conjunto de tareas o instrucciones a realizar. . ACID en inglés quiere decir que nuestras transacciones cumplen las propiedades de A (atomicidad). C (coherencia). definamos un ejemplo de una transacción: Supongamos que usted posee un paquete de cuenta corriente y caja de ahorros en un banco determinado.ORGANIZACIÓN DE LA MATERIA POR ETAPAS.4 2. retira electrónicamente $300 de su cuenta corriente y los deposita electrónicamente en su caja de ahorros. Asimismo aprenderá los diferentes mecanismos que se pueden utilizar para asegurar estos objetivos. I (aislamiento. CONTENIDO A DESARROLLAR UNIDAD I TRANSACCIONES ACID El concepto de transacción es definir una unidad básica (lógicamente hablando) de trabajo. Ahora bien.3 1.2 2.4 1.5 Definición Reglas de integridad Reglas de integridad de dominio Reglas de integridad de relación Mecanismos de visitas para implantación de integridad OBJETIVOS A ALCANZAR El alumno comprenderá la importancia que tiene para cualquier organización el hecho de poder garantizar la integridad de los datos y su correcta recuperación. para que nos quede más claro. Veamos un poco Cada propiedad que garantiza una transacción ACID.5 Concepto Transacciones Fallas de transacción Fallas del sistema Fallas en el medio UNIDAD 2. Pero primero.3 2. isolation en inglés) y D (Durabilidad). Llega el momento de pagar la tarjeta de crédito. se dirige a un cajero automático y realiza la siguiente operación. Posee $1000 depositados en su caja de ahorros y $2000 depositados en su cuenta corriente. la cual se debita automáticamente de la caja de ahorro y el importe a pagar por ésta es de $1300. ¿qué hubiera pasado si en el ínterin entre que usted retira el dinero $300 de su cuenta corriente y antes de depositario en su caja de ahorros ocurriera cualquier tipo de desperfecto técnico o informático? A usted se le hubieran esfumado o pulverizado $300 sin siquiera poder verlos y/o tocarlos. Como usted no dispone de esa cifra y no quiere que Ie cobren interés por no realizar el pago por el importe total de ella. PRIMERA ETAPA Total de clases para la etapa: ____ UNIDADES DEL PROGRAMA QUE COMPRENDE: UNIDAD 1.2 1.1 1.

Ahora que nos quedó claro qué es una transacción. de las demás. Atomicidad La propiedad de atomicidad garantiza que todas las modificaciones realizadas sobre los datos de una transacción se completen o confirmen como un grupo si la transacción tiene éxito o en caso contrario. Es como si existiera un delay o un tiempo latente. o sea el grado que se aísla una transacción dada. O sea la integridad de los datos se preserva al finalizar la transacción con éxito o por fallo. El nivel de aislamiento determina en qué grado la transacción acepta datos inconsistentes. Consistencia Dicha propiedad de las transacciones garantizan que estas dejen los datos de la base en un estado consistente.Para que esto no suceda. Una aclaración importante es que la base de datos se debe encontrar consistente antes de empezar la transacción. es como si la transacción fuera la única que se estuviera ejecutando en todo el sistema y no afectara ni fuese afectada por nada (otra transacción). Para ser más claro. la transacción comenzaría ni bien usted se loguea o identifica en el cajero y finalizaría en el momento que usted termina esta operación. En nuestro ejemplo. no se registre ninguna de las modificaciones hechas en los datos de ella. veamos las propiedades de ella. Esto implica que una transacción no se verá afectada por otra transacción hasta que dicho cambio provocado por la otra transacción se confirme. es que se define el concepto de transacción. La transacción se debe realizar como si fuera una unidad atómica de ahí el término atomicidad. con lo cual el sacar $ 300 de su cuenta corriente y depositar los $300 en su caja de ahorros sería una única transacción. más allá de que la transacción finalice exitosa o fallidamente. . Aislamiento Esta propiedad garantiza que los efectos provocados por una transacción están aislados de los efectos que provocan otras transacciones concurrentes. o se depositan en la caja de ahorros los $300 retirados de la cuenta corriente (transacción exitosa) o nunca pasó nada y nuestra caja de ahorro posee $1000 y nuestra cuenta corriente $ 2000 (transacción fallida). si la transacción falla. En este último caso. al ocurrir el error se deshacen todas las modificaciones realizadas antes de que ocurriera el error y se deja a los datos en su estado original. En nuestro caso.

SQL Server maneja cuatro niveles distintos de aislamiento y ellos mismos. Y por último. SQL Server utiliza este nivel de aislamiento por defecto. le diría que sea muy cuidadoso al utilizarlos y le aconsejo. o sea datos que se convirtieron en datos permanentes de Ia base de datos. en principio que deje el que SQL Server utiliza por defecto (READ COMMITED). Aunque algún componente físico o lógico falle cuando se reinicie SQL Server. pero como contrapartida los datos obtenidos en ella serán menos certeros.Un nivel de aislamiento alto permite datos más exactos. Se llama de esta manera pues provoca la sensación de que las transacciones se ejecutan una detrás de la otra como si se ejecutaran en Serie. que en el 99 % de las veces funciona correctamente. pero como contrapartida impide o disminuye el número de transacciones concurrentes (que pueden suceder simultáneamente o al mismo tiempo). Para definir el nivel de aislamiento mediante T―SQL se utiliza el siguiente Código: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED | READ COMMITED | REPEATABLE READ | SERIALIZABLE Se debe elegir qué nivel de aislamiento desea entre los cuatro y escribir solamente uno de ellos. Como contrapartida. condicionan el comportamiento con respecto al nivel de bloqueo de las instrucciones involucradas. por lo que explicamos anteriormente sobre la concurrencia. Relación entre los niveles de aislamiento y los tipos de lecturas de transacciones concurrentes. el nivel de aislamiento más alto de todos que es el nivel “serializable” que garantiza que las transacciones estén completamente aisladas una de las otras. el cual garantiza que la lectura repetida de una o mas filas de la transacción Siempre obtenga el mismo resultado. se debe utilizarla siguiente instrucción: DBCC USEROPTIONS Durabilidad Esta propiedad de las transacciones garantiza que una vez Confirmada sus efectos son permanentes en la base de datos aunque posteriormente falle el sistema. en la siguiente grilla un resumen de lo expresado (Tabla 1). Para averiguar el nivel de aislamiento vigente. Luego le sigue el nivel de lecturas confirmadas el cual solo permite la lectura de datos que han sido confirmados. El nivel más bajo es el de lecturas desconfirmadas y el aislamiento que estas poseen es garantizar que no se lean datos en mal estado físico. NIVELES DE AISLAMIENTO DE LAS TRANSACCIONES LECTURA LECTURA LECTURA DESCENTRALIZADA CONFIRMADA REPETIBLE SÍ NO NO SI SI SI SI SI NO TIPOS DE LECTURA Lectura desactualizada Lectura Fantasma Lectura no repetible LECTURA SERIALIZABLE NO NO NO Tabla 1. Veremos. Un nivel más alto de aislamiento posee el de lecturas repetibles. las bases de datos se recuperarán . En particular. El registro de transacciones que posee el SQL Server y los backup de la base de datos garantizan la durabilidad de la base de datos. un nivel bajo de aislamiento permite mayor cantidad de transacciones concurrentes.

Veamos cada uno en detalle. operación. en realidad no se preserva el concepto original que definimos para transacciones. Además. Confirmación automática En este modo cada una de las instrucciones se confirma automáticamente a medida que van concluyendo. cuanto más actualizadas posea sus copias de seguridad existe una probabilidad mayor que la recuperación sea exitosa. ímporte_total. Ímporte_total) y una tabla Cuenta_Corriente con los atributos (nrocuenta. operación. importe. MODOS DE CONFIRMACIÓN Los modos de confirmación de transacciones en SQL Server son tres: confirmación automática (este es el modo de confirmación por defecto). Pero como contrapartida observe que cada instrucción es una transacción. ya que en función del tamaño de ellas y las características de su hardware esta operación puede demorar un tiempo indefinido de antemano. El tema puntual en este caso es que mientras las transacciones internas del anidamiento no se confirman el recurso no está disponible para el resto de las . en el caso que la transacción falle o fracase. pero estas Se deben definir de forma explícita. de modo que las instrucciones involucradas modifiquen y confirmen los datos en caso que la transacción finalice exitosamente o se deshagan todas las modificaciones generadas por las instrucciones en cuestión. Como su nombre lo indica. nroclíente. En este modo no hacen falta instrucciones extras. Supongamos que poseemos una tabla Caja_Ahorros con los atributos (nrocaja. lo único que debe tener es paciencia. Veamos un caso concreto como el de nuestra caja de ahorros y cuenta corriente y el giro de dinero. Confirmación explícita Este es el modo más utilizado al realizar aplicaciones. nroclíente. procedimientos almacenados (stored procedures) triggers. Esto puede fallar si el problema que existe es en los medios físicos que guardan las copias de seguridad. cursores y secuencia de instrucciones. importe. la confirmación explícita necesita que se defina explícitamente el lugar o instrucción donde comienza la transacción y el lugar o instrucción donde ella finaliza. confirmación explícita o confirmación implícita. ¿Cómo sería la definición de dicha transacción? Además se pueden anidar transacciones.automáticamente sin que usted haga nada. giro_desc). Este modo es útil cuando se ejecuta una instrucción de T-SQL desde la línea de comandos por medio de las aplicaciones ISQL u OSQL (casi no usadas en la actualidad) o cuando ejecuta una única instrucción en el query analizer.

falla en la conexión. Para lograr que el motor de base de datos deshaga toda la transacción a partir de la instrucción que provocó el error en tiempo de ejecución se utiliza la instrucción XACT_ABORT. Para que el query analizer acepte las transacciones implícitas hay que activar dicha opción mediante la instrucción T―SQL: SET IMPLICIT_TRANSACTION ON Y para desactivar la Opción que permite transacciones implícitas se utiliza la misma instrucción T-SQL. La primera es que el motor de base de datos deshaga automáticamente la transacción y la segunda manera es que el usuario lo haga de forma explícita mediante la instrucción ROLLBACK. no obstante. pues está fuera del alcance del libro y Se puede encontrar una explicación clara y concreta en la ayuda de SQL Server. por tal motivo el motor de base de datos solo deshace la instrucción en cuestión. En realidad si usted definió explícitamente la transacción mediante una instrucción BEGIN TRANSACTION sería lógico que definiera su finalización por medio de la instrucción COMMIT TRANSACTION. en caso que ella finalizara correctamente o que definiera la instrucción ROLLBACK TRANSACTION. SET XACT_ABORT OFF Deshacer transacciones de manera explícita . si no se explicitan ninguna de estas dos formas de finalizar la transacción. falla de la aplicación o falla del sistema entre tantas otras posibilidades. No vamos a entrar en detalle en dicho tema. pero con el parámetro off como se muestra a continuación. SET XACT_ABORT ON Por defecto el motor de base de datos posee XACT_0R'I' en OPI-„. SQL Server solo deshace de forma automática los efectos provocados únicamente por dicha instrucción. Confirmación implícita Este modo se activa de forma implícita cuando Se define alguna de estas instrucciones: CREATE DROP ALTER TABLE DELETE INSERT GRANT REVOKE FETCH SELECT UPDATE TRUNCATE TABLE OPEN Pero se debe terminar de forma explícita con un commit tran o un rollback tran. considerando usted en qué momento del código se debería deshacer la transacción en cuestión en caso de error y volver todo para atrás.transacciones. esto puede suceder por alguna falla del hardware. DESHACER TRANSACCIONES Existen dos formas que SQL Server deshaga las transacciones. Si a dicha instrucción se le coloca el parámetro ON esto provocará que el motor de base de datos deshaga toda la transacción a partir de la instrucción que provocó el error en tiempo de ejecución. Deshacer transacciones automáticamente Cuando alguna transacción falla SQL Server automáticamente deshace dicha transacción. SET IMPLICIT_TRANSACTION OFF Al desactivar este modo se activa el modo de confirmación automátic a. la Confirmación de todas las transacciones anidadas sucede cuando se confirma la transacción externa o la más externa de todas las transacciones del anidamiento. esta Concluirá cuando el usuario cierre la Sesión (Se desconecte). Ahora bien. Deshacer la transacción implica que anula todas las modificaciones realizadas por ella y luego libera todos los recursos que dicha transacción estaba utilizando. si una instrucción provoca un fallo o error en tiempo de ejecución.

Dicha instrucción termina la transacción y anula todo los cambios realizados por ella. este tema lo veremos en capítulos posteriores). en nuestro caso de la transferencia de dinero de la cuenta corriente a la caja de ahorros. En general la instrucción ROLLBACK estará incluida dentro de una instrucción If…Then.Si por algún motivo usted desea deshacer una transacción de forma manual debe utilizar la instrucción ROLLBACK TRANSACTION. dicho procedimiento Se anula y se continúa con la instrucción siguiente su invocación. no tendría sentido que usted actualizara los valores de la caja de ahorros si nunca pudo sustraer plata de la cuenta corriente.. será ignorada. Cuando esta instrucción ocurre dentro de un STORED PROCEDURE (procedimiento almacenado.. con lo cual podríamos optimizar nuestro código de la siguiente manera: BEGIN TRANSACTION /* Se puede abreviar por la palabra TRAN además la transacción puede.Else donde usted deseará comprobar si algo se confirmó antes de seguir adelante. el resto de las instrucciones que componen la transacción o mejor dicho la transacción. Poseer una etiqueta o nombre en tal caso habría que escribir el mismo en la instrucción begin tran plata_a_girar y en la instrucción commit tran plata_a_girar */ . Por ejemplo. A partir de esta instrucción.

luego del primer Update cargamos en la variable @Err_Op1 el código de error que se encuentra en la variable interna @@Error (cada vez que se ejecuta una instrucción T-SQL se guarda dentro de esta variable si se ha provocado un error. contendrá un valor distinto de 0 o ha funcionado todo correctamente. se guarda el contenido de la variable interna @@Error dentro de la variable @Err_Op2. contendrá un valor igual a 0).Como vemos en el ejemplo del código anterior. Antes de confirmar la transacción Se verifica primero si no ha ocurrido ningún . Luego se hace lo mismo con la segunda instrucción Update.

De intención Dicho modo se utiliza para definir una jerarquía sobre los bloqueos. Esto sucede cuando dos transacciones diferentes bloquean recursos diferentes que luego deben compartir. Pero ninguna de ellas puede modificar los datos. ya que se corre el riesgo de administrarlos mal de forma manual y generar un “abrazo mortal”. Puntos de almacenamiento Existe la posibilidad de crear o definir puntos de almacenamiento. Si existe algún bloqueo de este tipo generado por una transacción. cuando el nivel de bloqueo es menor. otra transacción no podrá generar un bloqueo exclusivo sobre los datos bloqueados por la primera. ninguna otra (transacción) puede acceder a los datos bloqueados por la primera. Esto es para evitar que diferentes usuarios accedan (consulten y modifiquen) aquellos datos en el mismo instante de tiempo. será desde o mejor dicho a partir de dicho punto de almacenamiento. Cuando un usuario accede a un conjunto de datos se genera un bloqueo sobre los datos en cuestión que impiden a otros usuarios acceder a ellos. de clave. Un punto a saber es que dos usuarios diferentes no pueden tener bloqueados los mismos datos. Actualización masiva Este modo se utiliza cuando se copian masivamente datos a una tabla. Vale aclarar que la concurrencia es sobre las transacciones y no sobre los usuarios. mientras que el bloqueo de base de datos es el de mayor nivel. de páginas. o sea dos usuarios diferentes no pueden bloquear la misma fila O la misma tabla en el mismo instante de tiempo. UNIDAD 2 INTEGRIDAD INFORMÁTICA ENFOCADA A LAS BASES DE DATOS INTRODUCCIÓN Las bases de datos y los sistemas de bases de datos son un componente esencial de la vida cotidiana en la sociedad . En general no es aconsejable cambiar el tipo de bloqueo que define automáticamente el motor de base de datos. al utilizar transacciones el motor de base de datos aplica la utilización de bloqueo. por ejemplo cuando se agrega una columna a una tabla. Este modo permite que transacciones concurrentes accedan al mismo recurso Simultáneamente. Compartido Dicho modo se utiliza para operaciones de lectura como la instrucción SELECT. mayor podrá ser la concurrencia. Cabe aclarar que el bloqueo de fila es el menor nivel de bloqueo que se puede realizar. Para obtener más información sobre este tema resulta siempre conveniente consultar la ayuda de T-SQL.error con la instrucción IF @Err_Op1 = 0 and @Err_Op2 = 0. Dichos modos definen cómo será la concurrencia entre diferentes transacciones. Exclusivo Este modo se utiliza cuando se van a realizar operaciones de actualización. Se pueden realizar bloqueos de filas. Actualización Solo una transacción puede obtener dicho tipo de bloqueo en un momento dado para realizar una actualización. inserción o eliminación. Existen seis modos de bloqueo que pasamos a describir. Al establecerse este modo de bloqueo por medio de alguna transacción. de extensión (ocho páginas simultáneas). Dichos puntos hacen que la transacción se confirme hasta donde ellos están definidos y en caso que se deshaga la transacción o se la confirme. si no se transforma en un bloqueo compartido. Esquema Este modo Se utiliza cuando Se ejecuta una operación que genera un cambio sobre el esquema de una tabla. Dicho bloqueo se transforma automáticamente en un bloqueo exclusivo. BLOQUEO EN EL USO DE TRANSACCIONES Como explicamos anteriormente. de tablas y de toda la base de datos. Cuanto más alto es el nivel de bloqueo menor es la cantidad de concurrencia de usuarios que puede existir sobre los elementos y como contrapartida. En caso que esta condición no sea cierta (O sea que algunos de los Update falló) se ejecutará el código que se encuentra después del ELSE (cada uno de los IF se fijan cual de los Update falló y ejecutan la instrucción ROLLBACK TRANSACTION).

Incluso la compra de productos en un supermercado. Sin embargo. Dada la frecuencia con las que se realizan las actividades antes mencionadas es que debe dársele mucha importancia a la integridad de las aplicaciones tecnológicas. en muchos casos. provoca la actualización automática de la base de datos que mantiene el stock de la tienda. Una base de datos tiene las siguientes propiedades implícitas:    Una base de datos representa algún aspecto del mundo real. Al objeto de que una base de datos sea en todo momento precisa y fiable. No obstante. Compartir una base de datos permite que varios usuarios y programas accedan a la base de datos de forma simultánea. Otras funciones importantes ofrecidas por el DBMS son la protección de la base de datos y su mantenimiento durante un largo período. La construcción de la base de datos es el proceso consistente en almacenar los datos en algún medio de almacenamiento controlado por el DBMS. por ejemplo). Una base de datos determinada podría estar sujeta a cualquier cantidad de restricciones de integridad (en general) de una complejidad arbitraria. la mayoría de nosotros nos enfrentamos a diversas actividades que implican cierta interacción con una base de datos. Esta colección de datos relacionados con un significado implícito es una base de datos. La manipulación de una base de datos incluye funciones como la consulta de la base de datos para recuperar datos específicos. en la base de datos deben reflejarse los cambios tan pronto como sea posible. una base de datos tiene algún origen del que se derivan los datos. En la mayoría de los sistemas actuales. No es correcto denominar base de datos a un surtido aleatorio de datos. . la verificación de la integridad se realiza mediante códigos de procedimientos escritos por los usuarios. es lo que se conoce como metadatos. construye y rellena con datos para un propósito específico.moderna. debe ser un reflejo exacto del minimundo que representa. Dispone de un grupo pretendido de usuarios y algunas aplicaciones preconcebidas en las que esos usuarios están interesados. acceder al catálogo computarizado de una biblioteca para buscar un libro. la definición anterior es muy genérica. La protección incluye la protección del Sistema contra el funcionamiento defectuoso del hardware o el software (caídas) y la protección de la seguridad contra el acceso no autorizado o malintencionado. lo que en ocasiones se denomina "minimundo" o "universo de discurso". Y además esta puede mantenerse manualmente o de forma automática. los nombres. algún grado de interacción con eventos del mundo real y un público que está activamente interesado en su contenido. realizar una reserva en un hotel o una compañía aérea. son actividades que implican que alguien o algún programa de computador acceda a una base de datos. En otras palabras. o comprar algo online (un juguete o un computador. Una base de datos es una colección de datos lógicamente coherente con algún tipo de significado inherente. El DBMS es un sistema de software de propósito general que facilita los procesos de definición. Actualmente. Los cambios introducidos en el minimundo se reflejan en la base de datos. INTEGRIDAD EN LAS BASES DE DATOS Definición de una base de datos Una base de datos es una colección de datos relacionados. Con la palabra "datos" nos referimos a los hechos conocidos que se pueden grabar y que tienen un significado implícito. Por ejemplo. por lo que el DBMS debe ser capaz de mantener el sistema de bases de datos permitiendo que este evolucione según cambian los requisitos en el tiempo. Una gran base de datos típica puede tener un ciclo de vida de muchos años. Definición de DBMS Un DBMS (DataBase Management System) es una colección de programas que permite a los usuarios crear y mantener una base de datos. En este informe nos centraremos en la integridad de las bases de datos. construcción. el uso común del término "Base de datos" es normalmente más restringido. Definición de Integridad La integridad en una base de datos se refiere a la corrección y exactitud de la información contenida. actualizar la base de datos para reflejar los cambios introducidos en el minimundo y generar informes a partir de los datos. manipulación y compartición de bases de datos entre varios usuarios y aplicaciones. Una base de datos se diseña. números de teléfono y direcciones de un grupo de personas. Por ejemplo. ir al banco a depositar o retirar fondos. estructuras y restricciones de los datos que se almacenarán en la base de datos. Definir una base de datos implica especificar los tipos de datos. Por último cabe destacar que una base de datos puede ser de cualquier tamaño y complejidad. por consiguiente. La definición o información descriptiva de una base de datos también se almacena en esta última en forma de catálogo o diccionario de la base de datos.

Reglas de Integridad . En vez de ello es una señal o un recordatorio de que el valor falta o es desconocido. Para que un cliente sea considerado especial. a este respecto. comprobar las restricciones de integridad.Dominio Un Dominio de valores posibles puede estar asociado a cada atributo. pero el valor de Nulo no es un valor de dato real. Hay además dos reglas de integridad muy importantes que son restricciones que se deben cumplir en todas las bases de datos relacionales y en todos sus estados o instancias (las reglas se deben cumplir todo el tiempo). una vez que se determina el modelo conceptual) pasamos a estudiar las reglas de integridad que los datos almacenados en dicha estructura deben cumplir para garantizar que son correctos. La Integridad conserva la seguridad en un sistema de bases de datos que permite el acceso a múltiples usuarios en tiempos paralelos. Al definir cada atributo sobre un dominio se impone una restricción sobre el conjunto de valores permitidos para cada atributo. Reglas de Integridad Una vez definida la estructura de datos del modelo relacional (es decir. usada en forma correcta. usados como tipos de datos. Por conveniencia.000 en compras promedio al año. restricción y validación de los datos a ingresar. Por ejemplo: . posiblemente un tipo simple definido por el sistema o por el usuario. se convierte en mecanismo de control. Un control de integridad o restricción es aquel que nos permite definir con precisión el rango de valores válidos para un elemento y/o las operaciones que serán consideraciones válidas en la relación de tales elementos. En otras palabras. el DBMS debe principalmente. A este tipo de restricciones se les denomina restricciones de dominio. El DBMS tiene que asegurar que los datos se almacenan de acuerdo a las políticas previamente determinadas por el DBA. Antes de definirlas es preciso conocer el concepto de nulo y dominio. Un dominio no es más que un tipo de dato. Nulo: Es un indicador que le dice al usuario que el dato falta o no es aplicable. El Dominio de un atributo define los valores posibles que puede tomar este atributo. Además de los Dominios "naturales". un dato que falta normalmente se dice que tiene valor Nulo. La Integridad es el término utilizado para decir que la información almacenada tiene calidad. controlar la correcta ejecución de las actualizaciones y recuperar la base de datos en caso de pérdida. Dominio: Posibles valores que puede tener un campo. deberá tener un mínimo de USD 1. Son fáciles de probar en el sistema siempre que se introduce un nuevo dato en el sistema. Los límites de Dominio son la forma más elemental de restricciones de Integridad.Algunos ejemplos de restricciones de integridad serían:   Los dueños de cuentas de ahorro no pueden solicitar un monto mayor de dinero del que hayan juntado hasta la fecha. Esta característica. Estas reglas son la de integridad de entidades y la de integridad referencial. el administrador del sistema puede generar sus propios dominios definiendo el conjunto de valores permitidos.

se deben cumplir todo el tiempo. Por lo tanto. Sus contrapartes en la base de datos también deben ser identificables.  Anular: se borra la tupla referenciada y las tuplas que la referenciaban indicando un valor nulo a la clave foránea (sólo si acepta nulos). Integridad de Entidad Las restricciones de entidades aseguran la integridad de las entidades que son modeladas por el sistema. No se puede cambiar un valor de la clave primaria en la tabla principal si el registro tiene registros relacionados. por ejemplo. Mecanismos de Vistas para la implementación de Integridad Las vistas son expresiones del álgebra relacional con un nombre determinado. para cada clave foránea en la base de datos habrá que contestar a dos preguntas: 1. Los valores de la clave primaria sirven como identificadores en la base de datos. Existen básicamente dos reglas de Integridad asociadas con el modelo relacional: la Integridad de Entidad y la Integridad Referencial. La Integridad referencial también vigila que se cumplan las siguientes reglas:    No se podrá introducir un valor en la tabla relacionada si antes no ha sido introducida en la tabla principal. Las razones de esta regla son:      Las tuplas en las relaciones base representan entidades en la realidad. es decir. Así que cuando se realiza una operación ilegal. o un curso impartido por un profesor inexistente. la existencia de una clave principal es una restricción de entidad que impone la regla "cada entidad debe estar identificada de forma única". Regla de borrado: ¿Qué ocurre si se intenta borrar la tupla referenciada por la clave foránea?  Restringir: no se permite borrar la tupla referenciada.Relación Las reglas de Integridad de relación son restricciones que se deben cumplir en todas las bases de datos relacionales y en todos sus estados o instancias. Reglas de Integridad . veamos la tabla siguiente que contiene información sobre los vendedores de una ferretería. También nos permite probar consultas para asegurarnos de que las comparaciones que se hacen tienen sentido. Esta regla se aplica a las claves foráneas. Estas dos reglas son generales y tienen relación con las llaves primarias y foráneas. . en una base de datos académica. Si en una relación hay alguna clave foránea. Hemos de recordar que sólo los productos puramente relacionales implementan realmente estas dos reglas generales de Integridad relacional. destinados al mercado doméstico (un Microsoft Access por ejemplo). debe ser completamente nulo. No se puede eliminar un registro de una tabla principal si existen registros coincidentes en la tabla relacionada. existen dos opciones: rechazar la operación ilegal o bien aceptar la operación y realizar operaciones adicionales compensatorias que conduzcan a volverla legal.Una definición bien adecuada de restricciones de dominio no sólo nos permite probar valores insertados en la base de datos. o bien. En el nivel más simple. Los valores de clave primaria no pueden ser nulos.  Propagar: se borra la tupla referenciada y se propaga el borrado a las tuplas que hacen referencia mediante la clave foránea. Esta regla impide que. Las entidades en la realidad son identificables por definición. INTEGRIDAD REFERENCIAL La regla de Integridad referencial define que la base de datos no debe contener valores de claves foráneas sin concordancia. En otros. Regla de los nulos: ¿tiene sentido que la clave foránea acepte nulos? 2. Por ejemplo. entonces sus valores deben coincidir con los valores de la clave primaria a la que hace referencia. exista un profesor en un departamento inexistente. En esta no está permitido que algún componente de la clave primaria acepte valores nulos. estas incongruencias son admitidas sin problemas.

Las vistas permiten ocultar la complejidad de los datos. tampoco podrá crear una vista con información proveniente de las mismas. sino que es recordada por el sistema de tal forma que para el usuario es como si en realidad tuviera una tabla denominada BUEN_VENDEDOR con los registros y atributos que se muestran a continuación: En otras palabras. se pueden insertar. Nombre. una vista es una ventana a través de la cual se puede consultar o cambiar información de la tabla a la que está asociada. Nombre. en la vista tampoco podrá agregar o modificar información. Es decir. Se dejarán por equipos diversos ejercicios en los cuales deberán implementar la integridad de los datos. actualizar. La única diferencia es que sólo se almacena de ellas la definición. cuando un vendedor se dé de alta. BIBLIOGRAFÍA BÁSICA A CONSULTAR PARA ESTUDIAR EL TEMA . Las vistas ayudan a mantener unos nombres razonables para las consultas. Existen funciones en los DBMS para crear reglas para las vistas. ¿Por qué utilizar vistas?    Las vistas pueden proporcionar un nivel adicional de seguridad. A PRESENTAR EN LAS CLASES SEGÚN INDIQUE EL DOCENTE. Al igual que sucede con una tabla. Actividad 2. Se realizarán ejemplos prácticos donde se puedan realizar las transacciones y asegurar la integridad de los datos en caso de diversos fallos. pues como ya se mencionaba. ACTIVIDADES A REALIZAR POR EL ESTUDIANTE EN LA CLASE Y FUERA DE LA CLASE PARA LA COMPRENSIÓN Y DESARROLLO DE LAS COMPETENCIAS PROFESIONALES. La información de dos o más tablas puede recuperarse utilizando una combinación de tablas. en relación con los privilegios que posea el usuario de la base de datos. Las vistas tienen la misma estructura que una tabla: filas y columnas. si el usuario no tiene acceso a determinadas tablas. Actividad 1.000 en ventas. y es precisamente así como una vista puede implementarse para garantizar la Integridad de la base de datos. Esto significa que una vista no contiene datos duplicados de una tabla de la base de datos. también. Ciudad from Vendedores where Venta > 100000 Se utiliza sólo la frase: Buen_Vendedor * En las vistas remotas y en las vistas sin conexión puede crear reglas a nivel de campo y de registro para validar datos introducidos localmente antes de enviarlos al origen de datos remoto. él considera un buen vendedor a aquel que iguale o supere los $100. también se deberá cumplir con esa restricción. Por ejemplo. Por ejemplo. Para hacerlo. borrar y seleccionar datos. en lugar de la instrucción: Select Clave. De hecho. debe reproducir las reglas del origen de datos en las reglas que se crean para la vista remota. no es una tabla real. No tiene absolutamente ningún dato. nada hace suponer que es así. Utilizando una vista en SQL podríamos decir: var BUEN_VENDEDOR view (V where venta >= 100000) { Clave. si no se sabe que se está trabajando con una vista. es posible determinar si existen datos referenciados que pudieran comprometer la Integridad relacional. Esto. ACTIVIDADES A REALIZAR DE TAREA PARA CONSOLIDAR EL CONTENIDO DE LA UNIDAD. Creando una vista se hace visualmente todo más simple. Se dejarán por equipos diversos ejercicios en los cuales deberán implementar transacciones exitosas en bases de datos multiusuario. y estas combinaciones pueden resultar muy confusas. Actividad 1. mediante las vistas. Una base de datos se compone de muchas tablas. si la clave de un vendedor está formada por cuatro dígitos y así lo establecen las restricciones de Integridad de la tabla Vendedores.Supongamos que el dueño del negocio quiere conocer a los mejores vendedores para premiarlos con un bono especial al final del año. la expresión del álgebra relacional no es evaluada. Puesto que el objetivo de estas reglas es impedir que se envíe al origen de datos cualquier dato que pueda ser rechazado por las reglas de Integridad del servidor. claro está. entonces en la vista. no los datos. Ciudad} Al ejecutar esta instrucción. Si el usuario solamente tiene privilegios de lectura en una entidad. se percibe como una tabla virtual. Los datos que se recuperan mediante una consulta en una vista se presentarán igual que los de una tabla.

com/manuales/9/ MySQL con Clase. Addison Wesley iberoamericana. http://www. . Date. para tener derecho a esta evaluación tendrá que haber cumplido por lo menos el 85% de las asistencias.net/ Manual de referencia oficial de MySQL. MP Ediciones.0/es/index. Después de 10 minutos de comenzada la clase se tomará como retardo y por cada 3 retardos se tomará como una falta. las actividades de clase y un examen parcial que contendrá tanto conceptos vistos en las dos unidades como ejercicios de arreglos y registros. J. Mc Graw Hill. http://dev. Curso de bases de datos con MySQL. Programación MySQL. C. http://mysql. Introducción a los sistemas de bases de datos. Korth. Sudasrhan.conclase. el peso que se le dará a cada uno de los componentes de la calificación es el siguiente: Asistencia: 20% Tareas: 30% Examen: 50% La asistencia que contará será desde el inicio de clase hasta un día hábil antes de la evaluación .mysql. Bases de datos y su aplicación con SQL. Edición. Paul Dubois.       Fundamentos de Bases de Datos. Sergio Ezequiel Rozic. 4a Edición. Silberschatz. Argentina. las tareas. 6ª.com/doc/refman/5. Anaya multimedia.desarrolloweb.html SITIOS WEB: EVALUACIÓN DE LA PRIMERA ETAPA Para la evaluación de la primera etapa se tomará en cuenta la asistencia. Tutorial de SQL.

1 0 Etiquetas de tiempo UNIDAD 4. Esta problemática ha llevado a diseñar e implementar diferentes estrategias de control de concurrencia.. pérdida.. en los que muchos clientes utilizando la misma aplicación. SEGURIDAD 4.3 4..SEGUNDA ETAPA Total de clases para la etapa: ____ UNIDADES DEL PROGRAMA QUE COMPRENDE: UNIDAD 3. etc. En la mayoría de los sistemas operativos actuales.3 Seriabilidad 3.9 Técnicas para deshacerlo 3. las diferentes tareas o hilos se ejecutan de forma intercalada (incluso en el caso de máquinas con varios procesadores).1 4. . esta intercalación puede resultar en que las lecturas y escrituras de las diferentes tareas o aplicaciones en el medio físico se realicen en cualquier orden y secuencia. el sistema operativo decide por su cuenta cuando suspender una de las tareas y darle un poco de tiempo de ejecución a otra.8 Técnicas para prevenirlo 3.2 Problemas que se representan (actualización.  CONTENIDO A DESARROLLAR UNIDAD 3 Control de concurrencia en bases de datos relacionales La mayoría de las bases de datos se utilizan en entornos multi-usuario. Cada una de esas aplicaciones enviará consultas al gestor. CONCURRENCIA 3. si tenemos una estructura de tablas relacional que incluye las siguientes: PEDIDO(id.5 Tipos de seguros 3.. nombre.4 4. o muchas aplicaciones cada una con uno o muchos clientes acceden a la misma base de datos. Pueden ocurrir diferentes problemas relacionados con la escritura simultánea con otras escrituras o lecturas.4 Mecanismo de seguros 3. . cantidad. y normalmente cada hilo de ejecución será una transacción diferente.6 Protocolos 3.6 Base de datos estadísticos 4. Si hay tareas simultáneas o concurrentes sobre la misma base de datos. de modo que los desarrolladores de las aplicaciones pueden “olvidarse” de ellos al escribir su código. El alumno conocerá y deberá implementar diferentes mecanismos de seguridad a los sistemas de bases de datos.5 Concepto Identificación y autenticación Matriz de autorización Definición de un esquema de seguridad Mecanismo de vistas para implantación de seguridad 4. id-prod. Por ejemplo. El acceso simultáneo descrito puede dar como resultados información inconsistente o simplemente incorrecta. num-cliente. que se encargan de evitar todos esos problemas. dependiendo de la mala o buena suerte que tengamos en la intercalación de las lecturas y escrituras simultáneas. Es decir.1 Definición 3..7 Encriptación de datos (codificación) OBJETIVOS A ALCANZAR  El alumno deberá de implementar las técnicas adecuadas para lograr que varios usuarios simultáneos puedan obtener y/o modificar datos de una base de datos.2 4. stock) .) 3.7 Dead lock 3. precio) PRODUCTO(id-prod.

de un stock de 10. Los bloqueos son los más conocidos. Por ejemplo. cuando en realidad. que tiene un stock de 10. seguido de un UPDATE al stock por esa cantidad. mediante una operación desbloquear(A) de modo que otras tareas puedan tomarlos. ya que cubre todos los tipos de bloqueo que implementan los múltiples gestores de almacenamiento disponibles). Dos sentencias UPDATE que actualicen un mismo producto decrementando el stock del mismo en una unidad podrían terminar en que una de ellas no se realizase. Los bloqueos como solución al problema de la concurrencia Una forma de controlar la concurrencia es hacer que cada transacción deba adquirir un derecho de acceso exclusivo a cada fragmento de datos que necesite modificar. y el tipo de bloqueo mediante lock_type (el número de tipos definidos en MySQL es muy grande. y se indica la información de los datos a bloquear mediante la variable to. mientras que lo correcto era un resultado de 8. cada transacción debe solicitar el bloqueo de cada fragmento de datos A que vaya a utilizar antes de acceder a él (sea para leerlo o escribirlo). Existen varias técnicas para controlar la concurrencia. ya que solo requiere mantener una tabla que indica qué partes de los datos está bloqueada y por qué transacción. Si pensamos en un UPDATE como una secuencia de una lectura y una escritura. haciendo quedar el stock del producto en negativo. ya que no permite que dos transacciones que van a leer el mismo fragmento de datos A lo hagan simultáneamente. Por ejemplo. en MySQL. por ejemplo. En un bloqueo binario. .incluyendo los siguientes: 1. y después las escrituras. En este caso. no puede haber problemas en varios lectores simultáneos. mediante una operación bloquear(A). quedando el resultado en 9. decrementan ese dato. Serialización de los bloqueos de lectura/escritura La serialización de las operaciones de lectura y escritura consiste en ordenar esas operaciones para un conjunto de transacciones concurrentes de modo que los resultados de las operaciones sean correctos. Supongamos una sentencia que primero comprueba que hay stock del producto P. enum thr_lock_type lock_type) Cada llamada a store_lock utiliza el manejador de una tabla thd concreta. Nótese que esas llamadas se implementan de diferentes formas en diferentes gestores de bases de datos. THR_LOCK_DATA **to. Bloqueos binarios La forma más simple de bloquear es utilizar bloqueos binarios. tanto las solicitudes de bloqueos como las liberaciones se realizan mediante una sola llamada del API de los gestores de almacenamiento: store_lock(THD *thd. A estos “derechos” se les denomina bloqueos. Este sistema de bloqueos tiene una implementación muy simple. Puede que otra inserción de un pedido se ejecute antes del UPDATE pero después de la comprobación. si tenemos las siguientes transacciones X e Y. y después inserta un nuevo PEDIDO de diez unidades del producto P. Bloqueos de lectura/escritura El sistema de bloqueos binarios es simple pero demasiado restrictivo. puede que ambos UPDATE hagan la lectura. aunque también se utiliza el control multi-versión y otras técnicas como las marcas de tiempo. las operaciones que las transacciones deben realizar son tres: desbloquear(A) y bloquear_para_lectura(A) o bloquear_para_escritura(A). 2. Deberá liberar todos los bloqueos. Los bloqueos de lectura/escritura hacen más débil la restricción permitiendo la siguiente compatibilidad de bloqueos. puede darse la siguiente situación.

y después se pueden liberar. Dicho de otro modo. Inconvenientes de los bloqueos y la serialización Un problema del protocolo de bloqueo en dos fases es que puede llevar a situaciones de interbloqueo.En esa situación. Sin embargo. La siguiente es una secuencia de operaciones que lleva al interbloqueo pero cumple perfectamente l protocolo de bloqueo en dos fases. . bloquear_escritura) preceden a la primera operación de desbloqueo (desbloquear). si hubiésemos tenido suerte y todas las operaciones de TX se hubiesen realizado antes que las de TY. puede demostrarse que la ejecución será serializable. cuando tenía que haberse incrementado dos veces. el resultado habría sido correcto. El bloqueo en dos fases permite la serialización El protocolo de bloqueo en dos fases fuerza a las transacciones cuando todas las operaciones de adquisición de bloqueos (bloquear_lectura. Cuando se utiliza el protocolo de bloqueo en dos fases. hace falta alguna política o mecanismo de adquisición y liberación de bloqueos que permita hacer las operaciones serializables. Por lo tanto. La conclusión es que el mero mecanismo de los bloqueos garantiza el acceso exclusivo a un dato o fragmento de información (evitando ciertos problemas). pero los problemas asociados a la intercalación de las operaciones compuestas aún pueden darse. primero hay que adquirir todos los bloqueos. la ejecución de TX y TY hace que el dato original sólo se haya incrementado una vez.

Una opción posible es bloquear tablas enteras. más de una transacción esté interesada en los mismos dos fragmentos de datos. De este modo. otra transacción lee el dato “antiguo”. hay que mantener mucha más información sobre los bloqueos (ya que el número de filas es en general muy grande respecto al número de tablas). No obstante lo anterior. No obstante. se han diseñado los protocolos de control multi-versión. y otros bloqueos a nivel de tabla. Esto hace que la gestión de los bloqueos sea simple y tenga poca sobrecarga (solo hay que guardar el estado de bloqueo de las N tablas). veremos que muchos de los problemas están en que una transacción lee un cierto dato y antes de escribir el resultado. se puede utilizar para cada una de ellas la versión de los datos “que hace la ejecución correcta”. La idea básica es que cuando una transacción modifica un dato. ¿Bloqueos más grandes o más pequeños? Un aspecto que aún no se ha tratado en la discusión anterior es cuán “grandes” son los elementos de datos que se deben bloquear. es decir. En ese momento. Guardando “instantáneas” de los datos: el Control Multi-versión El protocolo de bloqueo en dos fases limita considerablemente las posibilidades de concurrencia. y el servidor se sobrecarga más con la gestión de los bloqueos. Una segunda opción es utilizar bloqueos al nivel de las filas. Hay gestores de bases de datos que permiten seleccionar el tipo de bloqueo que queremos para nuestra base de datos. y la mala suerte nos lleve a una situación en la que ambos quedan suspendidos. se crea una nueva versión del mismo. esto impide que dos transacciones que van a manipular filas diferentes de una tabla puedan progresar en paralelo. como por ejemplo una sentencia ALTER TABLE. en MySQL hay gestores de almacenamiento que ofrecen bloqueo a nivel de fila. Por ejemplo. pero se guarda la anterior. sin posibilidad de avanzar. UNIDAD 4 .El inconveniente está en que puede que en la fase de adquisición de bloqueos (fase de expansión). Lógicamente. pero por otro lado. estas técnicas requieren más espacio de almacenamiento para guardar las diferentes versiones. hay sentencias que siempre producirán un bloqueo de tabla. En este caso. al acabar la ejecución de las transacciones. se hacen mayores las posibilidades de concurrencia. pero permitir la mayor concurrencia posible. Para paliar esos problemas. cada transacción trabaja con un estado de información inconsistente. Si observamos los problemas que causan los bloqueos no serializados. que hace la ejecución serializable.

así como la imparable ola de ataques o violaciones a las barreras de acceso a los sistemas implementados en aquellas. propia. propietario y/o información privada. Servicios y Recursos de usuarios no autorizados. sueldos de empleado. y de una manera controlada. Disponibilidad: indica que los objetos del sistema tienen que permanecer accesibles a elementos autorizados. y que en cierta manera es infalible. y a veces incluso de la misma empresa. es el contrario de la negación de servicio. Integridad: significa que los objetos sólo pueden ser modificados por elementos autorizados. y que esos elementos autorizados no van a convertir esa información en disponible para otras entidades.la lista continúa y sobre. Esto puede incluir información del cliente. y a veces aún el negocio sí mismo. La mayoría de las bases de datos contienen. números de la tarjeta de crédito . Teniendo presente que no existe un sistema seguro pero que si se puede proteger es que existen métodos para proteger los datos de un sistema así mismo recomendaciones para el uso de dichos sistemas.SEGURIDAD EN BASES DE DATOS INTRODUCCIÓN En los últimos años el tema de la seguridad en los sistemas se ha tornado en un asunto de primera importancia dado el incremento de prestaciones de las mismas. El fin de la seguridad es garantizar la protección o estar libre de todo peligro y/o daño. La clave para mantener esta información de forma segura es la confidencialidad y las empresas que no puedan garantizar la seguridad de esta información confidencial de riesgos de vergüenza. Los "incidentes de seguridad" reportados continúan creciendo cada vez a un ritmo más acelerado. o Activos: aquellos que dañan el objetivo atacado o lo modifican en su favor. SEGURIDAD Es la capacidad del Sistema para proteger Datos.  Personas o Pasivos: aquellos que husmean por el sistema pero no lo modifican/ destruyen. a la par de la masificación del Internet y de la complejidad del software desarrollado. registros de pacientes. Esto puede incluir la información de cliente. De qué nos queremos proteger A continuación se presenta una relación de los elementos que potencialmente pueden amenazar a nuestro sistema. y/o privada. números tarjetas de crédito. La llave al mantenimiento de esta información en una manera segura es la confidencialidad y las empresas que no pueden asegurar la seguridad(el valor) para la vergüenza de riesgo confidencial de la información. salarios de empleado. sanciones económicas. ¿Haría usted el negocio con un banco(una orilla) si usted descubriera que la cuenta de otros clientes information (incluyendo la información que puede ser usada hacer transferencias de cable) con frecuencia se filtraba y usó por criminales? . registros pacientes. penas financieras. Describiremos algunos de ataques que realizan las personas: o Personal o Ex-empleados o Curiosos o Hackers o Terroristas  Amenazas Lógicas o Software incorrecto o Herramientas de seguridad o Puertas traseras o Canales cubiertos o Virus o Gusanos o Caballos de Troya ENCRIPTACION La mayor parte de bases de datos contienen la información sensible.    Confidencialidad: nos dice que los objetos de un sistema han de ser accedidos únicamente por elementos autorizados a ello.

porque la base de datos de comunicaciones son en su mayoría en texto en claro-o lo suficientemente cerca para borrar texto. Degradación depende del método de cifrado. mediante el uso de los servicios públicos y en su mayoría simples herramientas libres. sobre todo en redes de conmutación bien diseñadas. es algo que no puede vivir con el. puerto 50000 para DB2. un hacker debe ejecutar sus herramientas en una máquina que sea capaz de ver los paquetes transmitidos desde el cliente al servidor y viceversa. por ejemplo: puerto 1433 para el servidor de Microsoft SQL. entonces tal vez no valga la pena el esfuerzo y la degradación del rendimiento. 2. Aunque el cifrado de los datos en tránsito se está convirtiendo en popular. puerto 1521 para Oracle. Por lo tanto. vamos a entender un poco más sobre lo que sucede cuando se utiliza sin cifrar cadenas. Anatomía de la Vulnerabilidad: Sniffing De Datos Si un hacker va a espiar y robar datos. De los dos. En cualquier caso. una parte cifrar los datos se transmitan a través de la red y el otro-el que descifrar los datos almacenados en las tablas y los datos utilizados en la aplicación no está cifrada. El cifrado es una tecnología madura. el cifrado IPSec). y puerto 3306 para MySQL. verás las siguientes opciones que ofrecen una muestra de la amplia gama de técnicas:     Características específicas de la Base de datos (ejemplo. Basándose en el sistema operativo (ejemplo.capturando y robando ambas las declaraciones que usted publica tan bien como los datos volvió por el servidor de base de datos. que un hacker pueda escuchar y robar información. puerto 4100 para Sybase. El hacker debe ser capaz de entender el flujo de comunicación a un nivel que le permita la extracción de los datos sensibles. Aunque aún no he de definir qué criterios de valoración son (y serán diferentes en los distintos sistemas de cifrado). no quiero dar la impresión errónea de que la mayoría de las personas-no encriptan los datos en tránsito. En un de alto nivel. Meterse en tu base de datos de comunicaciones es relativamente fácil. Una opción es ejecutar estas herramientas en la máquina cliente. Garantizar los túneles (ejemplo. la mayoría de la gente utiliza los puertos por defecto del servidor que esta usando. Si considera que esto es poco probable y le parece extraño que. Este tipo de cifrado es llamado cifrado de los datos en tránsito porque todos (o de las piezas). entonces usted debería cifrar los datos en tránsito. Mientras que los puertos son configurables. Métodos de conexión de base (ejemplo. Los clientes de la base de datos se conectan con el servidor sobre estos puertos predefinidos para iniciar una comunicación. dependiendo del tipo de la base de datos y la configuración del servidor.Encriptación de datos en transito La mayoría de los ambientes de base de datos utilizan TCP/IP y el servidor de base de datos escucha algunos puertos y acepta las conexiones iniciadas por los clientes de la base de datos. sino como un ejemplo. cualquiera puede golpear ligeramente en sus conversaciones de la base de datos y escuchar detrás de las puertas encendido el acceso de base de datos . las comunicaciones entre el cliente y el servidor están encriptadas. redireccionando a otro puerto o terminando la comunicación entera sobre el mismo puerto del servidor. Estos van desde la base de datos específica de los servicios de cifrado para el uso de los servicios básicos prestados por el sistema operativo. usar protocolo Secure Sockets Layer [SSL]). El hacker debe ser capaz de colgarse físicamente en las comunicaciones entre los clientes de la base de datos y el Servidor de bases de datos. y la obtención de base de datos de las comunicaciones implica generalmente asegurar TCP / IP de sesiones. Si usted cree que un potencial espía. En concreto. La manera de evitar que esto suceda-y el tema de esta sección es para encriptar las comunicaciones entre la base de datos de clientes y servidores de bases de datos. antes de examinar las diversas opciones para la encriptación de las comunicaciones la base de datos. puede elegir entre un buen número de opciones de ejecución cuando se desea cifrar la base de datos sesiones. . las comunicaciones son generalmente MySQL 35% más lento cuando se utilizan conexiones SSL. y para muchos ambientes en que está perfectamente bien. Como resultado de ello. sobre la posibilidad de que este no se produce cabezas rodarán. y otra es ejecutar las herramientas en el Servidor de Base de Datos – en ambos casos las maquinas puede ver todo el flujo de la comunicación. Oracle Advanced Security). Implementar Opciones para Encriptación de Datos en Tránsito. La encriptación se produce en los extremos. mediante el sistema Secure Shell [SSH] túneles). debe de suceder dos cosas: 1. el conseguir la llave física es seguramente la tarea más difícil. así como la base de datos. esto significa que con las herramientas derechas y el acceso correcto a la red. Con el fin de aprovechar el flujo de comunicación TCP/IP.

3.Uso de SSL para conexiones de base de datos segura Gracias a la web y comercio electrónico. Túneles SSH SSH es otro estándar de factor en el mundo de cifrado y es usado en una amplia variedad de usos. y es completamente transparente para la base de datos de cliente y el servidor de base de datos. En este esquema de configurar un período de sesiones encriptadas entre la máquina cliente y el servidor utilizando SSH. En la red los datos se cifran mientras viaja a través del túnel SSH. Por ejemplo.1.33 el cual escucha el puerto estándar 3306.1.168.168. En este caso podría usar el siguiente comando para configurar el túnel: Este comando crea un túnel SSH enviando desde el puerto 10000 de la máquina cliente al puerto 3306 en el servidor de base de datos. es necesario cambiar las interfaces de entrada en su archivo. incluyendo sesiones de Shell Seguras (como un reemplazo para el protocolo inseguro telnet). SSL se ha convertido en el estándar de facto para garantizar la información sensible a través de TCP / IP. Puede configurar túneles SSH para cifrar el tráfico de la base de datos la capacidad de reenvío de puertos de llamado. Desde una perspectiva de servidor de base de datos. Es. como se muestra en la Figura 3. Caso Práctico Supongamos que desea un túnel de conexiones desde la maquina cliente Linux con 192.168 a un servidor con MySQL instalado con dirección IP 192. por tanto. La cosa es limpia realmente que la base de datos es ajena a esta acción. no es de extrañar que la mayoría de entornos de base de datos de uso de SSL como una instalación para la base de datos de cifrado de comunicaciones. . los paquetes que se envían a la base de datos en red las bibliotecas son "normales" ya que son descifradas antes de que lleguen a la base de datos. copia segura de archivos (SCP y SFTP-USADO en vez del FTP). si desea habilitar el SSL para Sybase ASE. y creación de encriptados túneles. incluyendo sesiones de base de datos. los cuales le ofrecen lo mejor de ambos mundos. El puerto transmisión le da la opción especificar un puerto local en la máquina cliente que será el punto de entrada a un túnel SSH – la conexión a este puerto local serán recogidos por el túnel SSH y entregados al servidor en el puerto designado. Estos túneles proporcionan una facilidad cifrada TCP/IP que puede ser usada (como su nombre implica) al túnel cualquier conversación.

pero los datos en el cable será cifrada por el túnel SSH. Conceptualmente. Algunos de los otros argumentos en la línea de comandos para crear el túnel SSH como se indica anteriormente son los siguientes: IPSec (Internet Protocol security) El uso de IPSec es otra opción de infraestructura que protege la base de datos de las complejidades de cifrado a nivel de cable. IPSec también crea una especie de túnel cifrado. IPSec es un estándar del sector definido por la Internet Engineering Task Force (IETF). Definido como un . este proporcionan las instalaciones de cifrado al nivel de Sistema Operativo y el cifrado es por lo tanto transparente a la Base de Datos. pero esta vez esto se hace por el sistema operativo y se hace para toda la pila TCP/IP.Aquí es donde se produce la magia: la base de datos de cliente y el servidor de bases de datos son ajenos a la encriptación de lugar.

a continuación. Si el cliente no es capaz de alojar una conexión encriptada y. se puede asignar la política adecuada. que. . un hacker todavía puede robar o copiar los archivos (sobre el sistema de archivos) ser usado por la base de datos o aún el disco entero. Opciones de Aplicación: Implementar el Cifrado En ambos escenarios mencionados. son sumamente confidenciales y tienen que ser más protegidos que los medios de datos. Por último. los datos en la base de datos se mantiene como texto cifrado. El primer problema que la encriptación de datos en reposo abordar es el de los usuarios de la base de datos quienes buscan datos que no deberían de observar. o simplemente buenas prácticas. En ambos escenarios de vulnerabilidad. Las opciones que se verá en las siguientes secciones se diferencian principalmente en términos de quién está haciendo el cifrado/descifrado. ENCRIPTACION DE DATOS EN REPOSO El otro uso de cifrado en entornos de base de datos es la encriptación de los datos propiamente dichos (es decir. El valor por defecto son las siguientes políticas:    Sólo responde el cliente: Este es el modo por defecto para los clientes. La motivación puede estar en los reglamentos. y sólo podrá servir a clientes que pueden acomodar una conexión segura. incluida la base de datos de cliente y servidor. el servidor de recurrir a una conexión sin encriptar. Estos no son vulnerabilidades en el sentido verdadero de la palabra. Este enfoque pasa cuando los desarrolladores de aplicaciones utilizan algunas bibliotecas criptográficas para cifrar y descifrar los datos y el acceso a la base de datos es realizado usando texto cifrado.. la encriptación de los valores que están almacenados en la base de datos de las tablas). como se considera. aunque esto no tenga sentido de revocar estos permisos a los usuarios. El objetivo de encriptar es el reemplazar de texto plano con el texto de cifrado que incluso así sea visto por personas no autorizadas esto no presenta ninguna violación de seguridad. la directiva IPSec utilizando Administración de equipos. el cifrado de datos proporciona una capa de protección útil. La encriptación es transparente para las capas superiores. la privacidad. ya sea mediante el uso de uno de los incorporados en las políticas o por su propia definición de la política.conjunto de protocolos cuya función es asegurar las comunicaciones sobre el Protocolo de Internet (IP) Autenticando y/o Cifrando cada paquete IP en un flujo de datos. sólo que la conexión está encriptada. en cuyo caso. Cifrado en la Capa de Aplicación Un enfoque sobre que consiste la encriptación de la capa de aplicación. lo que significa que normalmente no son las comunicaciones encriptadas a menos que un servidor solicita una conexión segura. el servidor no se caiga de nuevo a una conexión sin encriptar. la capa 3 del modelo OSI. IPsec también incluye protocolos para el establecimiento de claves de cifrado. se apoyan muchas opciones aquí. El otro problema en la encriptación de datos en reposo implica el robo de archivos o del disco duro. Exigir que el servidor de seguridad: En este modo. por tanto. así que no hay en la base de datos de configuración de nivel. Solicitud del servidor de seguridad: Este modo se usa para servidores de e implica que el servidor intentará iniciar una conexión segura con el cliente. Su desventaja es que sólo protege el tráfico IP. En ambos casos. Los protocolos de IPsec actúan en la capa de red. porque el cifrado de datos en reposo es más sobre una capa adicional de seguridad. directrices. Esta capa adicional de seguridad a menudo es usada para datos sensibles. y tanto la base de datos y servidores de bases de datos de clientes enviar y recibir la información sin encriptar. en todos los casos. La principal decisión que tendrá que hacer a la hora de elegir una opción de ejecución es decidir en qué capa se realizara el cifrado. los datos cifrados que se almacenan dentro de la base de datos no puede utilizarse si se cae en las manos equivocadas. el servidor de cifrado se realiza por la capa de IPSec. Anatomía de la Vulnerabilidad: Buscar lo Interesante y Robo de Archivos Hay dos escenarios al que el cifrado de datos en reposo se orienta. una solución de infraestructura que tiene algunas ventajas sobre SSL. Incluso si el control de acceso a su base de datos es perfecta.

además. Cuando se concede a un usuario el permiso de tener acceso a datos cifrados. este enfoque tiene algunos inconvenientes importantes que a menudo hacen poco práctico para las necesidades específicas de cifrado. se debe entender que las llaves son usadas para cifrar/descifrar los datos y donde ellos residen. Sin embargo. Cifrado en el Sistema de Archivos El segundo acercamiento toma el otro extremo. la llave simétrica que es usada para cifrar/descifrar aquel elemento de datos es cifrado con la llave pública de aquel usuario y colocado en un lugar público. un tema relacionado a la gestión de claves tiene que ver con la recuperación. ¿Están en la base de datos o fuera de la base de datos? .7) no es trivial y no se admite en algunos entornos de base de datos. donde se selecciona una llave simétrica. Debido a que este puede implicar la integración con otro producto. La buena gestión de llaves es crucial en una estrategia de encriptación. podrán conseguir el acceso a la llave simétrica con el empleo de su llave privada (que es accesible porque el usuario tiene la “palabra secreta” correcto). Esta estrategia puede ser débil. Las funciones criptográficas son complejas y seguramente no desea escribir su propia versión de estos algoritmos.¿Qué protege las llaves? ¿Se utilizan contraseñas para proteger las llaves. entonces usted está añadiendo complejidad a los gastos generales y su entorno. En ambos casos. Los datos que no guardan relación deben utilizar llave simétrica distinta. La llave privada de cada usuario típicamente es protegida por la contraseña del usuario. Cifrado de Bases de Datos Finalmente. administrar llaves seguras. y de ser así esto significa que cualquier persona que tenga acceso a una cuenta de usuario automáticamente tiene acceso a datos cifrados? . muchas personas tienden a omitir el desarrollo de una buena estrategia de gestión de claves y simplemente almacenar las claves de los datos en una tabla y el uso que el acceso de la mesa de control para determinar quién tiene acceso a las llaves. y se debe entender cuáles son las opciones:  Siempre se define una columna para el cifrado requerido. Ahora veremos la gestión de llaves. y lo haría mejor. si no está claro para usted que las llaves son seguras. el paso de la carga al sistema operativo. Qué Consideraciones al Seleccionar una Opción a Ejecutar El cifrado de datos en reposo es una técnica importante que se debe considerar cuando se desea una capa adicional de defensa contra el acceso de datos no autorizado. Recuperación. se podría terminar con problemas serios que serán difíciles de resolverse. no hay nada que hacer en el nivel de base de datos aparte de asegurarse que las longitudes de los atributos sean bastante largas como para sostener el texto de cifrado (menudo más largo que el texto plano equivalente). Una sola llave simétrica puede ser usada para cifrar los datos que tienen la misma clasificación y son usados dentro de un mismo contexto. Si no se logra entender y se aplica guías.    La estrategia descrita aquí (y también se muestra en la Figura 10. La siguiente es una lista que usted debe revisar para asegurarse de que no sorprendido e indefenso:  Gestión de Llaves. a proteger las claves de los usuarios de claves pública / privada y proteger la clave privada con la contraseña de usuario. la de utilizar la base de datos para cifrar y descifrar datos. Conceder a cada usuario una llave pública y una llave privada. y el manejo transparente de datos cifrados. Este acercamiento usa las instalaciones que están por lo general disponibles en sistemas de archivos avanzados para almacenar datos sobre el disco dentro de un formato cifrado. Sólo aquellos usuarios que se les ha concedido el permiso de tener acceso a los datos sensibles. Antes de que usted implante esta técnica en su entorno. ¿Puedes   . y de ser así dónde están almacenados? Recuerde que el cifrado de toda la estrategia se basa en estas llaves. los elementos importantes de un esquema de cifrado de datos bueno son el acceso a funciones criptográficas. la cual tiene un precio.¿Se usan certificados para obtener las llaves. sin añadir ningún valor claro a esta. que es usada como palabra secreta. para asegurar que un usuario que obtiene la llave simétrica solo acceda a una parte de la información y no pueden acceder a todas las partes. Realice buenas prácticas de implementación dentro de la Base de Datos o compre Aplicaciones complementarias. conseguimos a la opción más práctica. o una llave diferente puede ser usada para cada tabla o la columna. se debería tomar conciencia de las implicaciones que se afrontaran en una base diaria.Este acercamiento es completamente transparente a la base de datos. Esta categoría de métodos el poner en práctica incluye tanto rutinas empotradas en la Base de Datos o el empleo de extensiones de tercero a bases de datos populares.

Este cuadro suele tener un customer_id columna. Esto obligará a descifrar de tablas con funciones (de los grandes cuadros es equivalentes a cometer suicidio profesional). El ataque spoffing es difícil de evitar por lo cual tiene a mantenerse una buena encriptación de datos en tránsito. y estas herramientas ofrecen una gama completa de soluciones a los problemas de gestión de llaves. Si su proveedor de la solución de base de datos parece demasiado parcial para usted. no codificar el ID de cliente. se puede cifrar el número de tarjeta de crédito del cliente dentro de un cuadro. y usted probablemente se basa en la selección de ID en lugar del número de tarjeta de crédito. . De los dos tipos de encriptación la más vulnerable es la encriptación en tránsito. un ladrón simplemente podría ponerse los archivos de reserva con los datos no descifrados más bien que toman los datos de la base de datos. y lo mucho que depende de cuánto encriptar. y como son asociadas los BackUp con las llaves sin las cuales estas sean inútiles? Clustering. mientras que en contra de la ACTUALIZACIONES registros fueron cuatro veces más lenta utilizando DES y ocho veces lento utilizando triple DES. Debido a la complejidad de este tema y las complejas cuestiones listedearlier. que es la clave para la mesa. algunos terceros proveedores ofrecen una "solución completa". ¿Cómo afecta la encriptación a las opciones de Clustering? ¿Son compartidas las llaves por todos los Grupos del Sistema. SELECCIONE consultas contra todos los registros usando la encriptación DES fueron más de 200 veces más lento que en la versión sin cifrar. Hasta hace relativamente poco. en un punto de referencia realizado por el Grupo de Tecnologías de Servidor de base de datos sobre la seguridad social 1. Para estar seguro que usted debe asumir que el 50% más de espacio que se necesita para los datos cifrados. Como un ejemplo. sobre todo si un proveedor de elección para ICP ya se utiliza dentro de su empresa. ¿Cómo afecta la Encriptación a los BackUp? De otra manera. En el momento de escribir este libro. los datos numéricos y porque a menudo se convierte en una forma compacta menos antes de ser encriptados. Dentro de un sistema es recomendable los dos tipos de encriptación en tránsito y en la base de datos. Debido a la naturaleza común de estos temas. donde guardadas estas llaves. que aborda todas estas cuestiones dentro de su producto.1.0. sería prudente examinar esas capacidades.     perder tus llaves? . BackUp y Recuperación. porque por encima de los metadatos. una categoría de herramientas llamado ICP ha urgido. Por lo tanto. como se les asegura. Pista de auditoría.6 millones de números almacenados en Oracle 9.¿Qué sucede si lo hace? . Por lo tanto. Elija lo que es importante y que sólo cifrar datos. Nunca cifrar columnas que se utilizan como llaves o índices. Dése el tiempo suficiente al iniciar este proyecto para hacer un análisis comparativo. antes del inicio de la aplicación y ajuste en las etapas avanzadas de la aplicación. Como ejemplo.2.¿Nunca va a poder acceder a sus datos? Una vez más. SQL 2005 es la más cercana al abordar plenamente el cifrado de datos en el descanso y proporciona una solución integrada que aborda todas estas cuestiones. esta es una de las cuestiones clave en la gestión. el hecho de que los datos que a menudo ocupa más bytes. este es otro tema que es sinónimo de la gestión de llaves. En este ejemplo. que podría convertirse en una parte de la aplicación de cifrado de sus datos. un buen número de cuestiones que se han alineado con su estrategia de cifrado antes de empezar a cifrar sus datos. ¿Cómo afecta la encriptación al rendimiento de la Base de Datos? No hay ninguna manera en el hecho de que el cifrado y descifrado se afectar a su base de datos de rendimiento. CONCLUSIONES      La criptografía da un nivel de seguridad necesario e importante que debe implantarse en un sistema de base de datos. y la solución de cifrado que usted seleccione. algoritmos de cifrado que se utiliza. Integración con Sistemas de Infraestructura de Llave Pública (PKI). usted debe recordar algunos lineamientos importantes: o o Encriptar selectivamente. sino que debe preguntar a sí mismo (o el instrumento que decida el vendedor) antes de empezar. El segundo (y más complejo) la publicación tiene que hacer otra vez con la dirección clave. Al encriptar la base de datos surge una degradación y esto depende del método de cifrado a utilizar. ¿Hay un visible e independiente de auditoría sobre el uso de claves y contraseñas? Como puede ver. ¿Qué pasa si las llaves de vez en cuando son cambiadas? ¿Cómo salvar las llaves que fueron usadas en los BackUp anteriores. quizás merezca la pena su tiempo para examinar esos productos de terceros para ahorrarle la molestia (y posiblemente de la vergüenza). y apoya su estrategia de gestión de llave su estrategia Clustering? Rendimiento. Datos cifrados siempre ocupa más espacio que los datos sin encriptar. o   Espacio en disco. el apoyo para el cifrado de datos en el resto-dentro de la base de datos de productos fue parcial y no aborda todas estas cuestiones de forma nativa.

gráficos que establezcan ideas esenciales y relaciones. enunciados de leyes. Durante la clase se elaborarán casos prácticos donde se pondrán a prueba los conceptos de concurrencia. para tener derecho a esta evaluación tendrá que haber cumplido por lo menos el 85% de las asistencias. Edición. Después de 10 minutos de comenzada la clase se tomará como retardo y por cada 3 retardos se tomará como una falta. Paul Dubois. Actividad 1. A PRESENTAR EN LAS CLASES SEGÚN INDIQUE EL DOCENTE. C. ACTIVIDADES A REALIZAR POR EL ESTUDIANTE EN LA CLASE Y FUERA DE LA CLASE PARA LA COMPRENSIÓN Y DESARROLLO DE LAS COMPETENCIAS PROFESIONALES.org/content/m18939/latest/ Seguridad en Bases de datos. ACTIVIDADES A REALIZAR DE TAREA PARA CONSOLIDAR EL CONTENIDO DE LA UNIDAD. . teorías. esquemas. Sudasrhan. Bases de datos y su aplicación con SQL. Sergio Ezequiel Rozic. http://cnx. Silberschatz. Introducción a los sistemas de bases de datos. Programación MySQL. Korth. Anaya multimedia. B) Descripción de los procedimientos. Date. Mc Graw Hill. Durante la clase se realizarán ejemplos prácticos donde se analizarán los diversos tipos de seguridad que se le puede aplicar a las bases de datos. Actividad 1.scribd. cuadros. 4a Edición.com/doc/14870070/Seguridad-en-Base-de-Datos EVALUACIÓN DE LA SEGUNDA ETAPA Para la evaluación de la primera etapa se tomará en cuenta la asistencia. Argentina. las tareas. BIBLIOGRAFÍA BÁSICA A CONSULTAR PARA ESTUDIAR EL TEMA     Fundamentos de Bases de Datos. J. 6ª.DESARROLLO DEL CONTENIDO A) Listado de los conceptos básicos. las actividades de clase y un examen parcial que contendrá tanto conceptos vistos en las dos unidades como ejercicios de arreglos y registros. SITIOS WEB. C) Explicaciones. Addison Wesley iberoamericana. el peso que se le dará a cada uno de los componentes de la calificación es el siguiente: Asistencia: 20% Tareas: 30% Examen: 50% La asistencia que contará será desde el inicio de clase hasta un día hábil antes de la evaluación. Actividad 2. http://www. MP Ediciones.   Control de concurrencia en bases de datos relacionales.

Korth. para tener derecho a esta evaluación tendrá que haber cumplido por lo menos el 85% de las asistencias. el peso que se le dará a cada uno de los componentes de la calificación es el siguiente: Asistencia: 20% Tareas: 30% Examen: 50% . enunciados de leyes. J. Durante ésta última parte del curso se elaborará un proyecto en común que dará pauta a que desarrollen su proyecto propio. Bases de datos y su aplicación con SQL. Mc Graw Hill. C. Edición. CONTENIDO A DESARROLLAR El proyecto debe incluir los siguientes elementos:     Debe de ser capaz de implementar mecanismos de recuperación de información en caso de fallas de energía eléctrica o del medio. las tareas. Sergio Ezequiel Rozic. Anaya multimedia. MP Ediciones. F) Explicaciones. ELABORACIÓN DE PROYECTO DE CURSO. Después de 10 minutos de comenzada la clase se tomará como retardo y por cada 3 retardos se tomará como una falta. teorías. BIBLIOGRAFÍA BÁSICA A CONSULTAR PARA ESTUDIAR EL TEMA     Fundamentos de Bases de Datos.TERCERA ETAPA Total de clases para la etapa: ____ UNIDADES DEL PROGRAMA QUE COMPRENDE: UNIDAD 5. Argentina. A PRESENTAR EN LAS CLASES SEGÚN INDIQUE EL DOCENTE. cuadros. 4a Edición. ACTIVIDADES A REALIZAR DE TAREA PARA CONSOLIDAR EL CONTENIDO DE LA UNIDAD. Sudasrhan. Silberschatz. 6ª. EVALUACIÓN DE LA TERCERA ETAPA Para la evaluación de la primera etapa se tomará en cuenta la asistencia. Programación MySQL. ACTIVIDADES A REALIZAR POR EL ESTUDIANTE EN LA CLASE Y FUERA DE LA CLASE PARA LA COMPRENSIÓN Y DESARROLLO DE LAS COMPETENCIAS PROFESIONALES. gráficos que establezcan ideas esenciales y relaciones. las actividades de clase y un examen parcial que contendrá tanto conceptos vistos en las dos unidades como ejercicios de arreglos y registros. Debe tener la capacidad de asegurar la integridad de los datos Debe resolver favorablemente las situaciones de concurrencia Debe implementar mecanismos de seguridad ya sea en el medio o en la base de datos en sí Podrán utilizarse cualquiera de éstos gestores de bases de datos:  MySQL  PostgreSQL DESARROLLO DEL CONTENIDO D) Listado de los conceptos básicos. E) Descripción de los procedimientos. Date. Actividad 1. Durante esta última parte los alumnos deberán en equipos de máximo 2 personas elaborar un proyecto de bases de datos que involucre los conceptos vistos durante el curso. OBJETIVOS A ALCANZAR En ésta última parte del curso el alumno pondrá en práctica los conceptos aprendidos desarrollando una aplicación que involucre el manejo de bases de datos. Paul Dubois. Introducción a los sistemas de bases de datos. Actividad 1. Addison Wesley iberoamericana. esquemas.

La asistencia que contará será desde el inicio de clase hasta un día hábil antes de la evaluación. . EVALUACION GENERAL DE LA MATERIA Exámenes parciales: 40% Proyecto final: 60% Para la evaluación general los alumnos deberán realizar su proyecto final con los términos especificados en la tercera etapa de éste curso.