Sei sulla pagina 1di 40

Unidad 1

UNIDAD 1 : INSTALACIN Y CONFIGURACION DEL SISTEMA GESTOR DE BASES DE DATOSEN DISTINTAS PLATAFORMAS

Raghu Ramakrishnan,Johannes Gehrke. Sistemas de gestin de bases de datos. 3er. edicin. McGraw-Hill. Espaa. 2007.

Raghu Ramakrishnan,Johannes Gehrke. Sistemas de gestin de bases de datos. 3er. edicin. McGraw-Hill. Espaa. 2007.

1.1 REQUERIMIENTOS PARA LA INSTALACION

Raghu Ramakrishnan,Johannes Gehrke. Sistemas de gestin de bases de datos. 3er. edicin. McGraw-Hill. Espaa. 2007.

Raghu Ramakrishnan,Johannes Gehrke. Sistemas de gestin de bases de datos. 3er. edicin. McGraw-Hill. Espaa. 2007.

1.2 Instalacin del SGBD

Raghu Ramakrishnan,Johannes Gehrke. Sistemas de gestin de bases de datos. 3er. edicin. McGraw-Hill. Espaa. 2007.

1.3 Configuracin del SGBD

Administracin de sistemas informticos en red, Autor Jorge Snchez

Administracin de sistemas informticos en red, Autor Jorge Snchez

Unidad 2

2.3 Lenguajes e interfaces de bases de datos En la Seccin 1.4 explicamos la variedad de usuarios que un DBMS soporta. El DBMS debe proporcionar los lenguajes e interfaces apropiados para cada categora de usuarios. En esta seccin explicamos los tipos de lenguajes e interfaces proporcionados por un DBMS y las categoras de usuarios a las que se dirige cada interfaz. 2.3.1 Lenguajes DBMS Una vez completado el diseo de una base de datos y elegido un DBMS para implementarla, el primer paso es especificar los esquemas conceptual e interno para la base de datos y cualesquiera mapeados entre los dos. En muchos DBMSs donde no se mantiene una separacin estricta de niveles, el DBA y los diseadores de la base de datos utilizan un lenguaje, denominado lenguaje de definicin de datos (DDL, data definition language), para definir los dos esquemas. El DBMS tendr un compilador DDL cuya funcin es procesar las sentencias DDL a fin de identificar las descripciones de las estructuras del esquema y almacenar la descripcin del mismo en el catlogo del DBMS. En los DBMSs donde hay una clara separacin entre los niveles conceptual e interno, se utiliza DDL slo para especificar el esquema conceptual. Para especificar el esquema interno se utiliza otro lenguaje, el lenguaje de definicin de almacenamiento (SDL, storage definition language). Los mapeados entre los dos esquemas se pueden especificar en cualquiera de estos lenguajes. En la mayora de los DBMSs relacionales actuales, no hay un lenguaje especfico que asuma el papel de SDL. En cambio, el esquema interno se especifica mediante una combinacin de parmetros y especificaciones relacionadas con el almacenamiento: el personal del DBA normalmente controla la indexacin y la asignacin de datos al almacenamiento. Para conseguir una arquitectura de tres esquemas real se necesita un tercer lenguaje, el lenguaje de definicin de vistas (VDL, vew defintion langllage), a fin de especificar las vistas de usuario y sus mapeados al esquema conceptual, pero en la mayora de los DBMSs se utiliza el DDL para definir tanto el esquema conceptual como el externo. En los DBMSs relacionales se utiliza SQL actuando como VDL para definir las vistas de usuario o de aplicacin como resultado de las consultas predefinidas (consulte los Captulos 8 y 9). Una vez compilados los esquemas de la base de datos y rellenada sta con datos, los usuarios deben disponer de algunos medios para manipularla. Entre las manipulaciones tpicas podemos citar la recuperacin, la insercin, el borrado y la modificacin de datos. El DBMS proporciona un conjunto de operaciones o un lenguaje denominado lenguaje de manipulacin de datos (DML, data manipulation [anguage) para todas estas tareas. En los DBMSs actuales, los tipos de lenguajes anteriormente citados normalmente no estn considerados como lenguajes distintos; ms bien, se utiliza un lenguaje integrado comprensivo que incluye construcciones para la definicin del esquema conceptual, la definicin de vistas y la manipulacin de datos. La definicin del almacenamiento normalmente se guarda aparte, ya que se utiliza para definir las estructuras de almacenamiento fisico a fin de refinar el rendimiento del sistema de bases de datos, que normalmente lo lleva a cabo el personal del DBA. El lenguaje de bases de datos relacionales SQL es un ejemplo

tpico de lenguaje de bases de datos comprensible (consulte los Captulos 8 y 9). SQL representa una combinacin de DDL, VDL y DML, as como sentencias para la especificacin de restricciones, la evolucin del esquema y otras caractersticas. El SDL era un componente de las primeras versiones de SQL, pero se ha eliminado del lenguaje para mantenerlo nicamente en los niveles conceptual y externo. Hay dos tipos principales de DML. Se puede utilizar un DML de alto nivelo no procedimental para especificar de forma concisa las operaciones complejas con las bases de datos. Muchos DBMS admiten sentencias DML de alto nivel mediante la introduccin interactiva desde el monitor o terminal, o incrustadas en un lenguaje de programacin de propsito general. En el ltimo caso, las sentencias DML deben identificarse dentro del programa para que el precompilador las pueda extraer y el DBMS las pueda procesar. Un DML de bajo nivelo procedimental debe incrustarse en un lenguaje de programacin de propsito general. Normalmente, este tipo de DML recupera registros individuales u objetos de la base de datos, y los procesa por separado. Por consiguiente, es preciso utilizar construcciones de un lenguaje de programacin, como los bucles, para recuperar y procesar cada registro de un conjunto de registros. Los DMLs de bajo nivel tambin se conocen con el nombre de DMLs record-at-a-time (registro de una sola vez), debido a esta propiedad. DUl, un DML diseado para el modelo jerrquico, es un DML de bajo nivel que utiliza comandos como GET UNIQUE, GET NEXT o GET NEXT WITHIN PARENT para navegar de un registro a otro dentro de la jerarqua de registros de una base de datos. Los DMLs de alto nivel, como SQL, pueden especificar y recuperar muchos registros con una sola sentencia DML; por tanto, tambin se conocen como DML set-at-a-tillle o setoriented (un conjunto de una sola vez, u orientado a conjuntos). Una consulta en un DML de alto nivel a menudo especifica los datos que hay que recuperar, en lugar de cmo recuperarlos; en consecuencia, dichos lenguajes tambin se conocen como declarativos. Siempre que hay comandos DML, de alto o de bajo nivel, incrustados en un lenguaje de programacin de propsito general, ese lenguaje se denomina lenguaje /tost, y el DML sublenguaje de datos. 9 Por el contrario, un DML de alto nivel utilizado de forma interactiva independiente se conoce como lenguaje de consulta. En general, tanto los comandos de recuperacin como los de actualizacin de un DML de alto nivel se pueden utilizar interactivamente y, por tanto, se consideran como parte del lenguaje de consulta. Los usuarios finales casuales normalmente utilizan un lenguaje de consulta de alto nivel para especificar sus consultas, mientras que los programadores utilizan el DML en su forma incrustada. Los usuarios principiantes y paramtricos normalmente utilizan interfaces amigables para el usuario para interactuar con la base de datos; los usuarios casuales, u otros usuarios, que quieren aprender los detalles de un lenguaje de consulta de alto nivel tambin pueden utilizar estas interfaces. A continuacin explicamos los tipos de interfaces.

1.5. LENGUAJES DE BASES DE DATOS Un sistema de bases de datos proporciona un lenguaje de definicin de datos para especificar el esquema de la base de datos y un lenguaje de manipulacin de datos para expresar las consultas a la base de datos y las modificaciones. En la prctica, los lenguajes de definicin y manipulacin de datos no son dos lenguajes separados; en su lugar simplemente forman partes de un nico lenguaje de bases de datos, tal como SQL, ampliamente usado. 1.5.1. Lenguaje de definicin de datos Un esquema de base de datos se especifica mediante un conjunto de definiciones expresadas mediante un lenguaje especial llamado lenguaje de definicin de datos (LDD). Por ejemplo, la siguiente instruccin en el lenguaje SQL define la tabla cuenta: create table cuenta (nmero-cuenta char(10), saldo integer) La ejecucin de la instruccin LDD anterior crea la tabla cuenta. Adems, actualiza un conjunto especial de tablas denominado diccionario de datos o directorio de datos. Un diccionario de datos contiene metadatos, es decir, datos acerca de los datos. El esquema de una tabla es un ejemplo de metadatos. Un sistema de base de datos consulta el diccionario de datos antes de leer o modificar los datos reales. Especificamos el almacenamiento y los mtodos de acceso usados por el sistema de bases de datos por un conjunto de instrucciones en un tipo especial de LDD denominado lenguaje de almacenamiento y definicin de datos. Estas instrucciones definen los detalles de implementacin de los esquemas de base de datos, que se ocultan usualmente a los usuarios. Los valores de datos almacenados en la base de datos deben satisfacer ciertas restricciones de consistencia. Por ejemplo, supngase que el saldo de una cuenta no debe caer por debajo de 100 . El LDD proporciona facilidades para especificar tales restricciones. Los sistemas de bases de datos comprueban estas restricciones cada vez que se actualiza la base de datos.

Unidad 3

LENGUAJE DE MANIPULACIN DE DATOS (DML)

Un lenguaje de manipulacin de datos (Data Manipulation Language, o DML en ingls) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.

INSERCIN, ELIMINACIN Y MODIFICACIN DE REGISTROS 1- INSERT Una sentencia INSERT de SQL agrega uno o ms registros a una (y slo una) tabla en una base de datos relacional. Ejemplo (inserto valores alumno pepe en la materia spd2 a la tabla cursada): INSERT INTO ''cursada'' (''alumno'', ''materia'') VALUES (''pepe'', ''spd2'')

2- UPDATE Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla. Ejemplo (modifico la materia donde el alumno sea pepe): UPDATE ''cursada'' SET ''materia''= ''spd3'' WHERE ''alumno''= ''pepe'' 3- DELETE Una sentencia DELETE de SQL borra uno o ms registros existentes en una tabla. Ejemplo (borro todos los valores de las columnas alumno y materia donde la materia sea spd2): DELETE FROM ''cursada'' WHERE ''materia''= ''spd2''

CONSULTAS DE REGISTROS

Recuperacin de Datos Recuperar los datos frente a las fuentes de error mencionadas anteriormente. La restauracin de la Base de Datos a su estado normal es responsabilidad del DBA, quien es el responsable de implantar procedimientos de deteccin de error y recuperacin. El DBA es quien tiene el control centralizado de la base de datos. Se persigue con esto reducir el nmero de personas que tengan acceso a los detalles tcnicos y de diseo para la operacin del DBMS. Las soluciones principales de un DBA son: DEFINICION DEL ESQUEMA.- Crea el esquema original de la base de datos y genera el diccionario de datos por medio de proposiciones en DDL. DEFINICION DE ESTRUCTURAS DE ALMACENAMIENTO Y METODOS DE ACCESO.- Se encarga de generar a seleccionar estructuras para el medio secundario y definir los mtodos de acceso a la informacin, esto ltimo por medio de proposiciones en DML. MODIFICACION DE ESQUEMA Y ORGANIZACIN.- Es una actividad poco frecuente que consiste en redisear el esquema de la base de datos. Esto se hara necesario ante la modificacin abrupta de las condiciones originales que dieron pie al diseo del esquema primario. Las proposiciones para llevar a cabo esta tarea se realizan en DDL. CONCESION DE AUTORIZACIONES DE ACCESO.- Se encarga de registrar a los usuarios para permitir su acceso al DBMS. Asigna a cada uno de ellos una serie de atributos que le permiten gozar de privilegios como el acceso a determinadas reas de aplicacin, de los datos o del uso de recursos en el sistema. ESPECIFICACION DE LAS LIMITANTES DE INTEGRIDAD.- Crea una serie de tablas donde se especifica el conjunto de restricciones que sern aplicables durante los procesos de actualizacin Para recuperar: Backup(respaldo): disco duro,cinta. Backup caliente: Base de Datos esta operativa.

Backup frio: Base de Datos no esta operativa.

Restriccin y ordenacin de datos La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos una condicin en la clusula WHERE. Esta condicin regresa todas las filas que cumplen dicha condicional. La complejidad del criterio de bsqueda es prcticamente ilimitada, y en l se pueden combinar operadores de diversos tipos con funciones de columnas, componiendo expresiones ms o menos complejas. Condicin de bsqueda basada en una comparacin compuesta En este ejemplo, se utiliza el operador lgico OR en la clusula WHERE para localizar los empleados que son chofer o secretaria. La consulta y la tabla resultados se muestra a continuacin. SELECT nombreEmpleado "Nombre Empleado", oficio FROM empleado WHERE (oficio = 'Chofer') OR (oficio = 'Secretaria') Condicin de bsqueda basada en rango La condicin BETWEEN indica los puntos extremos del rango, por lo cual el resultado incluir tambien a todos los empleados cuyo salario est entre 2,500 y 5,000 pesos. SELECT nombreEmpleado "Nombre Empleado", Oficio, (salario,'999,999') Salario FROM empleado WHERE salario BETWEEN 2500 AND 5000; TO_CHAR

La condicin de pertenencia de un conjunto (IN) comprueba si un valor de los datos se corresponde con uno de los valores especificados en una determinada lista, que en este caso est compuesta por slo dos opciones 'Chofer' y 'Secretaria'. La consulta y la tabla resultado se muestra a continuacin. SELECT nombreEmpleado "Nombre Empleado", oficio, TO_CHAR(salario,'999,999') Salario FROM Empleado WHERE oficio IN ('Chofer', 'Secretaria');

La operacin ms utilizada sobre las cadenas de caracteres es la comparacin de patrones, para la que se usa el operador LIKE. Para la descripcin de los patrones se utilizan dos caracteres especiales: Considere la consulta: Determinar que empleados se apellidan o se llaman 'OLIVEROS' SELECT nombreEmpleado "Nombre Empleado", oficio, TO_CHAR(salario,'999,999') Salario FROM Empleado WHERE nombreEmpleado LIKE '%OLIVEROS%'; Clusula ORDER BY En general, las filas de la tabla resultados de una consulta SQL, no estn ordenadas por ningn criterio particular. Sin embargo podemos garantizar que los resultados de la consulta queden ordenados utilizando la clusula ORDER BY en la instruccin SELECT. La clusula ORDER BY est compuesta por una lista de identificadores de columna segn los cuales hay que ordenar los resultados, separados por comas. ORDER BY se usa para especificar el criterio de ordenacin de la respuesta a la consulta. Por defecto la ordenacin es ascendente, aunque se puede especificar un orden descendente (DESC). La ordenacin se puede establecer sobre el contenido de columnas o sobre expresiones con columnas. Clusula DISTINCT Cuando se realiza una consulta sobre una tabla en la que se extrae informacin de varias columnas, puede ocurrir que, si no incluimos la/s columna/s que forman la clave principal, obtengamos filas repetidas en la respuesta. Si este comportamiento es no satisfactorio podemos utilizar la clusula DISTINCT para eliminar las filas duplicadas obtenidas como respuesta a una consulta.

Informes de datos agregados mediante funciones de grupo GROUP BY La clusula GROUP BY combina los registros con valores idnticos en la lista de campos especificada en un nico registro. Para cada registro se puede crear un valor agregado si se incluye una funcin SQL agregada como por ejemplo SUM o COUNT, en la instruccin SELECT. Su sintaxis es:

SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] [{,<funcion_agregacin>}]

FROM <nombre_tabla>|<nombre_vista> [{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicin> [{ AND|OR <condicin>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicin>[{ AND|OR <condicin>}]] [ORDER BY <nombre_campo>|<campo_ndice> [ASC | DESC] [{,<nombre_campo>|<campo_ndice> [ASC | DESC ]}]]

En la clusula GROUP BY se colocan las columnas por las que vamos a agrupar. Y en la clusula HAVING filtra los registros una vez agrupados. La evaluacin de las diferentes clusulas en tiempo de ejecucin, se efecta en el siguiente orden: Clusula WHERE Descripcin Filtra las filas Crea una tabla de grupo nueva Filtra los grupos Clasifica la salida

GROUP BY HAVING ORDER BY

Los valores NULL en los campos de GROUP BY se agrupan y no se omiten. Sin embargo, los valores NULL no se calculan en ninguna funcin de agregado SQL. Un ejemplo de SELECT de grupos es consultar los empleados agrupados por su oficio. Un primer intento de consulta es el siguiente: SELECT oficio, nombreEmpleado FROM empleado GROUP BY oficio Se presenta un error debido a que cuando se utiliza GROUP BY, las columnas implicadas en el SELECT y que no aparezcan en la clusulaGROUP BY deben tener una funcin de agrupamiento. En otras palabras, la columna nombreEmpleado debe tener una funcin de agrupamiento que actue sobre ella (MAX, MIN, SUM, COUNT, AVG). De no ser posible, deber aparecer dicha columna a la clusulaGROUP BY. La consulta correcta quedaria as; SELECT oficio, COUNT (nombreEmpleado) Elementos

FROM empleado GROUP BY oficio ORDER BY oficio Ejemplo: Considere los alumnos inscritos en las materias que imparto durante Enero Junio 2011 en el ITV. La siguiente consulta obtiene el nmero de alumnos por gnero y materia. SELECT Genero, COUNT(*) Alumnos FROM alumnosITV GROUP BY Genero HAVING La clusula HAVING se utiliza para especificar una condicin, se comporta como WHERE, con la diferencia que HAVING se aplica a grupos y no a tuplas (registros). Es decir HAVING filtra los registros agrupados. Ejemplo: Considere la siguiente informacin relativa a automoviles, modelos y precios MODELO SABLE AUDI-A4 BMW-323 AO PRECIO 2001 50,000 2007 420,000 2000 115,000

PORSCHE BOXSTER-987 2002 310,000 MALIBU STRATUS-RT CHRYSLER 300-C FUSION CUTLASS EUROSPORT 1998 32,000 2005 97,500 2005 185,000 2006 150,000 1992 25,000

MODELO CIVIC COUPE CIVIC LS-4L ACCORD EXR-L4 PLATINA PLATINA ALTIMA ALTIMA ALTIMA PEUGEOT 206 XR TOYOTA COROLLA XRS VW SEDAN

AO PRECIO 2006 135,000 2004 89,000 1998 53,000 2005 65,000 2004 60,000 2003 92,000 2007 179,000 2005 105,000 2006 65,000 2009 190,000 1998 25,000

Calcule el promedio por ao para todas las marcas a partir del 2003. CREATE TABLE carros ( modelo CHAR(25), year CHAR(4), precio NUMBER); SELECT year, TO_CHAR(AVG(precio),'999,999.22') media FROM carros GROUP BY year HAVING year > 2002 ORDER BY year;

Visualizacin de datos de varias tablas La verdadera potencia del SQL se alcanza cuando combinamos el contenido de ms de una tabla. Suponga que desea conseguir una lista con los empleados y los departamentos para los que trabajan. Esta informacin est repartida en las dos tablas empleado y departamento. Si necesitamos obtener informacin de ms de una tabla, tendremos la opcin de utilizar subconsultas o combinaciones. Si la tabla de resultados final debe contener columnas de tablas diferentes, entonces deberemos utilizar obligatoriamente una combinacin. Para realizar una combinacin, basta incluir ms de un nombre en la clusula FROM, utilizando una coma como separador y, normalmente, incluyendo una clusulaWHERE para especificar la columna o columnas con las que hay que realizar la combinacin. As, podramos intentar una consulta que seleccionara el campo nombre de la tabla empleado y el nombre del departamento. Y aqu surge el primer problema, cmo distinguimos entre dos columnas que llamndose igual, pertenecen a tablas distintas? El uso de alias para las tablas incluidas en el FROM o en las columnas del SELECT permite evitar la ambigedad, el alias se separa por un espacio. Considere el siguiente modelo fsico relacional y su correspondiente cdigo SQL en MySQL y Oracle

La traduccin a SQL es CREATE TABLE artista ( idArtista NUMBER, nombreArtista CHAR(35) NOT NULL, CONSTRAINT pk_Artista PRIMARY KEY (idArtista), CONSTRAINT ak_nombreArtista UNIQUE ( nombreArtista )); CREATE TABLE disco ( asin CHAR(12), idArtista NUMBER NOT NULL, nombreAlbum CHAR(20) NOT NULL, yearLanzamiento NUMBER(4),

marca CHAR(20), CONSTRAINT pk_disco PRIMARY KEY (asin), CONSTRAINT fk_artistaDisco FOREIGN KEY (idArtista) REFERENCES artista (idArtista) ); El resultado es incorrecto, ya que obtenemos es el producto cartesiano de todos los artistas por todos los discos. SQL tomo cada fila de la tabladisco y le ha asociado todos los idArtista de la tabla artista. Reglas de Combinacin:

Pueden combinarse tantas tablas como se desee. El criterio de combinacin puede estar formado por ms de una pareja de columnas. En la clusula SELECT pueden citarse columnas de ambas tablas, condicionen o no la combinacin. Si hay columnas con el mismo nombre en las distintas tablas, deben identificarse especificando la tabla de procedencia o utilizando un alias de tabla. Es necesario incluir una clasula WHERE que asocie las tablas mediante las correspondientes llaves Para lograr el resultado correcto necesitamos asociar un disco con el nombre del artista que lo interpreta. Y esto se puede hacer si aadimos la condicin en la cual idArtista el mismo valor en la fila de la tabla disco que en la fila correspondiente de la tabla artista. SELECT * FROM artista A, disco D WHERE A.idArtista = D.idArtista Ejemplo: Considere el siguiente Modelo fsico relacional. Que descibe las relaciones existentes para el torneo apertura 2009 del futbol Mexicano de 1era divisin. Para crear la estructura siguiente Procedimiento Subconsultas Una subconsulta es una instruccin SELECT anidada dentro de una sentencia SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATEo dentro de otra subconsulta. Una subconsulta, a su vez, puede contener otra subconsulta y as hasta un mximo de 16 niveles. Las particularidades de las subconsultas son: y los datos, es necesario realizar el

1. Su resultado no se visualiza, sino que se pasa a la consulta principal para su comprobacin. 2. Puede devolver un valor nico o una lista de valores y en dependencia de esto se debe usar el operador del tipo correspondiente. 3. No puede usar el operador BETWEEN, ni contener la setencia ORDER BY. 4. Puede contener una sola columna, que es lo ms comn, o varias columnas.Este ltimo caso se llama subconsulta con columnas mltiples. Cuando dos o ms columnas sern comprobadas al mismo tiempo, deben encerrarse entre parntesis. Ejemplo: Nombres de los jugadores que han participado ms que el promedio, equipo y posicin durante un torneo SELECT equipo, nombreJugador, posicion, minutos FROM femexfut WHERE minutos > ( SELECT AVG(minutos) FROM femexfut WHERE torneo = 'Bicentenario 2010' AND jj > 0) AND torneo = 'Bicentenario 2010' ORDER BY equipo, posicion, nombreJugador La consulta ms interna calcula el promedio de minutos jugados, y la consulta ms externa lo utiliza para seleccionar los nombres de los jugadores que participan ms del promedio. El valor de comparacin puede ser un valor simple, como en el ejemplo anterior, o un conjunto de valores. Hay que tener en cuenta este detalle ya que el tipo de operador a utilizar vara. En el primer caso se puede utilizar un operador de comparacin de carcter aritmtico (<, >, etc.). Y en el segundo uno de tipo lgico (IN). Las subconsultas pueden devolver ms de una columna, y se habrn de comparar de manera consecuente:

Las columnas de la clausula WHERE de la consulta principal deben estar agrupadas por parntesis. Las columnas encerradas entre parntesis deben coincidir en nmero y tipo de datos con los datos que devuelve la subconsulta.

Se puede utilizar una subconsulta para insertar valores en una tabla en el momento de la creacin de la misma. Ejemplo: Crear una tabla con los datos de los jugadores que participan ms que el promedio y su desviacin: CREATE TABLE borrame

SELECT minutos, nombreJugador FROM femexfut WHERE minutos > ( SELECT AVG(minutos) + STDDEV(minutos) FROM femexfut WHERE jj > 0 AND torneo = 'Bicentenario 2010') AND torneo = 'Bicentenario 2010' ORDER BY minutos DESC, nombreJugador No es necesario especificar tipos ni tamaos de las columnas, ya que vienen determinados por los tipos y tamaos de las columnas recuperadas en la subconsulta. Ejemplo: Valor ms reciente del dlar en la base de datos SELECT fecha, precio FROM dolar WHERE fecha = ( SELECT MAX(fecha) FROM dolar) Operadores SET Los operadores SET (Conjunto) combinan los resultados de dos o ms consultas en un nico resultado. Las consultas que contienen operadores SET (Conjunto) son llamadas consultas compuestas (compound queries). Operador UNION Todas las filas distintas seleccionadas por ambas consultas Todas las filas seleccionadas por ambas consultas, incluyendo todos los duplicados Todas las filas distintas seleccionadas por ambas consultas Todas las filas distintas seleccionadas por la primera sentencia SELECT que no se encuentren en la segunda sentencia SELECT Obtiene

UNION ALL

INTERSECT MINUS

Todos los operadores SET tienen la misma precedencia. Si una sentencia SQL contiene mltiples operadores SET, el servidor de Oracle evala estos de izquierda a derecha. Se puede hacer uso de los parntesis para especificar un orden explicito de evaluacin como pueden ser las consultas que usan el operador INTERSECT con operadores SET.

BIBLIOGRAFIA
http://asc-spd2.blogspot.mx/2010/09/lenguaje-de-manipulacion-de-datos-dml.html

http://www.prograweb.com.mx/tallerBD/030206Join.html

Unidad 4

Seguridad la seguridad en bases de datos y el DBA El administrador de la base de datos (DBA) es el responsable principal de la gestin de un sistema de base de datos. Entre las responsabilidades del DBA se encuentran la concesin y retirada de privilegios a los usuarios que necesitan utilizar el sistema, y la clasificacin de usuarios y datos en funcin de la poltica de la organizacin. El DBA dispone de una cuenta de DBA en el DBMS, llamada tambin a veces cuenta de sistema o de superusuario, que proporciona enormes posibilidades que no estn disponibles para las cuentas y los usuarios normales de la base de datos. Entre los comandos privilegiados a nivel del DBA se encuentran los comandos para conceder o retirar privilegios a las cuentas o usuarios individuales o a los grupos de usuarios y para ejecutar los siguientes tipos de acciones: 1. Creacin de cuentas. Mediante esta accin se crea una nueva cuenta y contrasea para posibilitar el acceso al DBMS a un usuario o grupo de usuarios. 2. Concesin de privilegios. Esta accin permite al DBA conceder determinados permisos a detenidas cuentas. 3. Retirada de privilegios. Esta accin permite al DBA retirar (cancelar) determinados permisos concedidos previamente a determinadas cuentas. 4. Asignacin del nivel de seguridad. Esta accin consiste en asignar cuentas de usuario al nivel de clasificacin de seguridad adecuado. El DBA es el responsable de la seguridad general del sistema de bases de datos. La accin 1 de la lista anterior se utiliza para controlar el acceso al DBMS en su totalidad, mientras que las acciones 2 y 3 se utilizan para controlar las autorizaciones discrecionales en la base de datos y la accin 4 se utiliza para controlar la autorizacin obligatoria.

(Nathe, 2007, p. 684)

4.1Tipos de Usuarios Un usuario no es ms que un conjunto de permisos que se aplican a una conexin de base de datos. De igual manera, el usuario tambin tiene otras funciones: Ser el propietario de ciertos objetos. Definicin del tablespace por defecto para los objetos de un usuario. Copias de seguridad. Cuotas de almacenamiento. El usuario que posee privilegios est en la posibilidad de de realizar dos operaciones: Operacin de sistema: necesita el permiso de sistema correspondiente. Operacin sobre objeto: necesita el permiso sobre el objeto en cuestin. El rol en una base de datos es una agrupacin de permisos de sistema y de objeto.

4.2 Creacin de Usuarios Creacin y eliminacin de usuarios Antes de aprender cmo es la creacin de usuarios es importante tener claro el concepto de tablespace. Una base de datos se divide en unidades lgicas denominadas TABLESPACES. Un tablespace es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias) que se creen en la base de datos bajo el tablespace indicado (tablas, secuencias). Ahora s, la creacin de usuarios se hace a travs de la sentencia SQL CREATE USER, donde su sintaxis es: CREATE USER nombre_usuario IDENTIFIED [ BY clave | EXTERNALLY ] { DEFAULT TABLESPACE tablespace_por_defecto } { TEMPORARY TABLESPACE tablespace_temporal } { DEFAULT ROLE [ roles, ALL [EXCEPT roles], NONE ] }; IDENTIFIED BY: indica que tipo de autentificacin se utilizar: _ Interna de Oracle: una clave para cada usuario de base de datos. _ Interna del SO: utilizando la seguridad del SO.

DEFAULT TABLESPACE ser el tablespace por defecto en la creacin de objetos del usuario que estamos creando. Si se omite se utilizar el tablespace SYSTEM. TEMPORARY TABLESPACE: indica el tablespace que se utilizar para la creacin de objetos temporales en la operaciones internas de Oracle. Si se omite se utilizar el tablespace SYSTEM. DEFAULT ROLE: asigna roles de permisos durante la creacin del usuario. La eliminacin de usuarios se hace a travs de la instruccin DROP USER, donde su sintaxis es: DROP USER usuario {CASCADE}; CASCADE: borra el usuario y todos los objetos que posee. (Garavito, 2007, pp. 6-7)

4.3 Privilegios a usuarios


Control de acceso discrecional basado en la concesin y revocacin de privilegios El mtodo habitual para reforzar el control de acceso discrecional en un sistema de base de datos se basa en la concesin y revocacin de privilegios. Vamos a considerar los privilegios en el contexto de un DBMS relacional. En particular, veremos un sistema de privilegios similar en cierto modo al desarrollado originalmente para el lenguaje SQL (consulte el Captulo 8). Muchos DBMS relacionales de la actualidad utilizan alguna variacin de esta tcnica. La idea principal es incluir declaraciones en el lenguaje de consultas que permitan al DBA y a los usuarios seleccionados conceder y revocar privilegios. Tipos de privilegios discrecionales En SQL2, el concepto de identificador de autorizacin se utiliza para referirse, a grandes rasgos, a una cuenta de usuario (o a un grupo de cuentas de usuario). Por simplicidad, utilizaremos las palabras usuario o cuenta de modo indiferente en lugar de identificador de autorizacin. El DBMS debe proporcionar acceso selectivo a cada relacin de la base de datos basndose en cuentas determinadas. Tambin podemos controlar las operaciones; de este modo, la posesin de una cuenta no significa necesariamente que el propietario de la cuenta est autorizado a toda la funcionalidad que permita el DBMS. Informalmente hablando, existen dos niveles de asignacin de privilegios de uso del sistema de base de datos: El nivel de cuenta. En este nivel, el DBA especifica los privilegios en particular que posee cada cuenta, independientemente de las relaciones existentes en la base de datos. El nivel de relacin (o tabla). En este nivel, el DBA puede controlar el privilegio de acceso a cada relacin o vista individual en la base de datos. Los privilegios a nivel de cuenta se aplican a las funcionalidades de la propia cuenta y pueden incluir el privilegio sobre CREATE SCHEMA o CREATE TABLE para crear un esquema o relacin base; el privilegio sobre CREATE VIEW; el privilegio sobre ALTER, para realizar cambios en el esquema como la agregacin o eliminacin de atributos en las relaciones; el privilegio sobre DROP, para borrar relaciones o vistas; el privilegio sobre MODIFY, para insertar, borrar o actualizar duplas; y el privilegio sobre SELECT, para obtener infamacin de la base de datos usando una consulta SELECT. Observe que estos privilegios de cuenta se aplican a las cuentas en general. Si una cuenta determinada no tiene el privilegio sobre CREATE TABLE, no se podrn crear relaciones desde esa cuenta. Los privilegios

a nivel de cuenta no forman parte de SQL2; debern ser definidos por los creadores del DBMS. En versiones anteriores de SQL, exista un privilegio denominado CREATETAB para proporcionar a una cuenta el privilegio para crear tablas (relaciones). El segundo nivel de privilegios se aplica al nivel de relacin, bien sean relaciones base o relaciones virtuales (vistas). Estos privilegios se definen en SQL2. En lo que veremos a continuacin, el trmino relacin puede referirse a una relacin base o a una vista, a menos que especifiquemos explcitamente una o la otra. Los privilegios a nivel de relacin especifican, a nivel de usuario, las relaciones individuales sobre las que se puede aplicar cada tipo de comando. Algunos privilegios tambin hacen referencia a columnas individuales (atributos) de las relaciones. Revocacin de privilegios En algunos casos, es deseable conceder un privilegio a un usuario de manera temporal. Por ejemplo, el propietario de una relacin podra querer conceder privilegio a un usuario sobre SELECT para realizar una tarea determinada y, despus, revocar ese privilegio una vez que la tarea haya finalizado. Segn lo anterior, se necesita un mecanismo para revocar privilegios. SQL incluye un comando REVOKE con el propsito de retirar privilegios

(Nathe, 2007, pp. 685-686)

4.4 Roles Control de accesos basado en roles El Control de acceso basado en roles (RBAC) surgi en muy poco tiempo en los aos 90 como tecnologa probada para la gestin y el reforzamiento de la seguridad en sistemas empresariales a gran escala. La idea bsica es que los permisos estn asociados a roles y a los usuarios se les asignan los roles apropiados. Los roles se pueden crear mediante los comandos CREATE ROLE y DESTROY ROLE. Los comandos GRANT y REVOKE que se vieron en el control de acceso discrecional (DAC) pueden ser usados para conceder y revocar privilegios a los roles. El control de acceso basado en roles parece ser una alternativa viable a los controles de acceso discrecionales y obligatorios tradicionales; garantiza que slo los usuarios autorizados tienen acceso a determinados datos o recursos. Los usuarios crean sesiones durante las cuales pueden activar un subconjunto de roles a los que pertenecen. Cada sesin se puede asignar a muchos roles, pero se corresponde con un nico usuario o sujeto. Muchos DBMS permiten el concepto de roles que consiste en asignar privilegios a los mismos. La jerarqua de roles en RBAC es el modo natural de organizar los roles para que reflejen la jerarqua de autoridad y de responsabilidades en la organizacin. Por convencin, los roles de menor responsabilidad de la parte inferior se conectan con roles de responsabilidad cada vez mayor a medida que se sube por la jerarqua. Los diagramas de jerarqua son rdenes parciales, por tanto son reflexivos, transitivos y anti simtricos. Otra idea importante en los sistemas RBAC es la posibilidad de que existan restricciones temporales en los roles, como el tiempo y la duracin de las activaciones de los roles, y el disparo temporizado de un rol mediano. (Nathe, 2007, p. 692)

4.5 Visitas Autorizaciones y vistas En el Captulo 3 se introdujo el concepto de las vistas como medio de proporcionar a un usuario un modelo personalizado de la base de datos. Una vista puede ocultar los datos que un usuario no necesita ver. La capacidad de las vistas para ocultar datos sirve para simplificar el uso del sistema y para mejorar la seguridad. El uso del sistema se simplifica porque se permite al usuario restringir su atencin a los datos de inters. Aunque puede que se niegue el acceso directo a una relacin, puede que se le permita el acceso a parte de esa relacin mediante una vista. Por tanto, se puede utilizar una combinacin de seguridad en el nivel relacional y en el nivel de las vistas para limitar el acceso de un usuario precisamente a los datos que necesita. En el ejemplo bancario considrese un empleado que necesita saber los nombres de todos los clientes que tienen un prstamo en cada sucursal. Este empleado no est autorizado a ver la informacin concerniente a los prstamos concretos que pueda tener cada cliente. Por tanto, se le debe negar el acceso directo a la relacin prstamo. Pero si va a tener acceso a la informacin necesaria se le debe conceder acceso a la vista cliente-prstamo, que consiste slo en los nombres de los clientes y las sucursales en los que tienen un prstamo. Esta vista se puede definir en SQL de la manera siguiente: create view cliente-prstamo as (select nombre-sucursal, nombre-cliente from prestatario, prstamo where prestatario.nmero-prstamo= prstamo.nmero-prstamo) Supngase que el empleado formula la siguiente consulta SQL: select * from prstamo-cliente Evidentemente, el empleado est autorizado a ver el resultado de esta consulta. Sin embargo, cuando el procesador de consultas traduce la consulta en una consulta sobre las relaciones reales de la base de datos, se obtiene una consulta sobre prestatario y prstamo. Por tanto, se debe comprobar la autorizacin de la consulta del empleado antes de que comience el procesamiento de la misma. La creacin de vistas no necesita la autorizacin de recursos. El usuario que crea una vista no recibe necesariamente todos los privilegios sobre la misma. Ese usuario slo recibe los privilegios que no proporcionan autorizaciones adicionales

respecto de las que ya posee. Por ejemplo, un usuario no puede recibir la autorizacin de actualizacin sobre una vista sin tener la autorizacin de actualizacin sobre las relaciones utilizadas para definir la vista. Si un usuario crea una vista sobre la que no se puede conceder ninguna autorizacin, se deniega la solicitud de creacin de la vista. En el ejemplo de la vista clienteprstamo, el creador de la vista debe tener autorizacin de lectura sobre las relaciones prestatario y prstamo. (Silberschatz, 2002, pp. 150-151)

Unidad 5

Unidad 5 : Transacciones
5.1 Conceptos Bsicos
Varias operaciones sobre la base de datos forman a menudo una nica unidad lgica de trabajo. Un ejemplo que se vio en el Apartado 1.2 es la transferencia de fondos, en el que una cuenta (A) se carga y otra cuenta (B) se abona. Claramente es esencial que, o bien tanto el cargo como el abono tengan lugar, o bien no ocurra ninguno. Es decir, la transferencia de fondos debe ocurrir por completo o no ocurrir en absoluto. Este requisito de todo o nada se denomina atomicidad. Adems, es esencial que la ejecucin de la transferencia de fondos preserve la consistencia de la base de datos. Es decir, el valor de la suma A + B se debe preservar. Este requisito de correccin se llama consistencia. Finalmente, tras la ejecucin correcta de la transferencia de fondos, los nuevos valores de las cuentas A y B deben persistir, a pesar de la posibilidad de fallo del sistema. Este requisito de persistencia se llama durabilidad.

Una transaccin es una coleccin de operaciones que se lleva a cabo como una nica funcin lgica en una aplicacin de bases de datos. Cada transaccin es una unidad de atomicidad y consistencia. As, se requiere que las transacciones no violen ninguna restriccin de consistencia de la base de datos. Es decir, si la base de datos era consistente cuando la transaccin comenz, la base de datos debe ser consistente cuando la transaccin termine con xito. Sin embargo, durante la ejecucin de una transaccin, puede ser necesario permitir inconsistencias temporalmente, ya que o el cargo de A o el abono de B se debe realizar uno antes que otro. Esta inconsistencia temporal, aunque necesaria, puede conducir a dificultades si ocurre un fallo.

Se llama transaccin a una coleccin de operaciones que forman una nica unidad lgica de trabajo. Un sistema de base de datos debe asegurar que la ejecucin de las transacciones se realice adecuadamente a pesar de la existencia de fallos: o se ejecuta la transaccin completa o no se ejecuta en absoluto. Adems debe gestionar la ejecucin concurrente de las transacciones evitando introducir inconsistencias. Volviendo al ejemplo de la transferencia de fondos, una transaccin que calcule el saldo total del cliente podra ver el saldo de la cuenta corriente antes de que sea cargado por la transaccin de la transferencia de

fondos, y el saldo de la cuenta de ahorros despus del abono. Como resultado, se obtendra un resultado incorrecto. Una transaccin es una unidad de la ejecucin de un programa que accede y posiblemente actualiza varios elementos de datos. Una transaccin se inicia por la ejecucin de un programa de usuario escrito en un lenguaje de manipulacin de datos de alto nivel o en un lenguaje de programacin (por ejemplo SQL, COBOL, C, C++ o Java), y est delimitado por instrucciones (o llamadas a funcin) de la forma inicio transaccin y fin transaccin. La transaccin consiste en todas las operaciones que se ejecutan entre inicio transaccin y el fin transaccin.

5.2 PROPIEDADES DE LAS TRANSACCIONES


Para asegurar la integridad de los datos se necesita que el sistema de base de datos mantenga las siguientes propiedades de las transacciones: Atomicidad. O todas las operaciones de la transaccin se realizan adecuadamente en la base de datos o ninguna de ellas. Consistencia. La ejecucin aislada de la transaccin (es decir, sin otra transaccin que se ejecute concurrentemente) conserva la consistencia de la base de datos. Aislamiento. Aunque se ejecuten varias transacciones concurrentemente, el sistema garantiza que para cada par de transacciones Ti y Tj, se cumple que para los efectos de Ti, o bien Tj ha terminado su ejecucin antes de que comience Ti , o bien que Tj ha comenzado su ejecucin despus de que Ti termine. De este modo, cada transaccin ignora al resto de las transacciones que se ejecuten concurrentemente en el sistema. Durabilidad. Tras la finalizacin con xito de una transaccin, los cambios realizados en la base de datos permanecen, incluso si hay fallos en el sistema.

5.3 NIVELES DE AISLAMIENTO


Se puede ajustar el nivel de aislamiento entre las transacciones y determinar para una transaccin el grado de aceptacin de datos inconsistentes. A mayor grado de aislamiento, mayor precisin, pero a costa de menor concurrencia.

El nivel de aislamiento para una sesin SQL establece el comportamiento de los bloqueos para las instrucciones SQL. Niveles de aislamiento: Lectura no comprometida. Menor nivel. Asegura que no se lean datos corruptos fsicamente. Lectura comprometida. Slo se permiten lecturas de datos comprometidos. Lectura repetible. Las lecturas repetidas de la misma fila para la misma transaccin dan los mismos resultados. Secuenciable. Mayor nivel de aislamiento. Las transacciones se aslan completamente.

5.4 GRADOS DE CONSISTENCIA


Consistencia es un trmino ms amplio que el de integridad. Podra definirse como la coherencia entre todos los datos de la base de datos. Cuando se pierde la integridad tambin se pierde la consistencia. Pero la consistencia tambin puede perderse por razones de funcionamiento. Una transaccin finalizada (confirmada parcialmente) puede no confirmarse definitivamente (consistencia).

Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efectuado en la base de datos. Si se anula los cambios que ha efectuado son deshechos.

La ejecucin de una transaccin debe conducir a un estado de la base de datos consistente (que cumple todas las restricciones de integridad definidas).

Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efectuado en la base de datos. Si se anula los cambios que ha efectuado son deshechos.

Ejemplo Begin tran <Comandos SQL> <Comandos SQL> If @@ ERROR <> 0 Rollback tran

Else Commit tran

5.5 COMMIT Y ROLLBACK


En la norma SQL se especifica el comienzo de una transaccin explcitamente. Las transacciones se terminan con una de las instrucciones SQL siguientes: Commit work compromete la transaccin actual y comienza una nueva. Rollback work provoca que la transaccin actual aborte.

Unidad 6 y 7

Potrebbero piacerti anche