Академический Документы
Профессиональный Документы
Культура Документы
264 Tema 8
SQL (cont.) ODBC
Subconsultas Las subconsultas de SQL nos permiten utilizar los resultados de una consulta como parte de otra. Subconsultas:
A menudo, constituyen un modo natural de escribir una instruccin. Permiten dividir una consulta en partes y reconstruirla. Permite realizar algunas consultas que de otro modo no se podran llevar a cabo.
Subconsultas
Obtener un listado de las oficinas cuyo cupo de ventas excede la suma de los cupos individuales de los vendedores:
SELECT Ciudad FROM Oficinas WHERE Objetivo > ??? ??? es la suma de los cupos de los vendedores" o:
SELECT SUM(Cupo) FROM RepVentas WHERE OfiRep = NumOfi
Subconsultas
Las subconsultas siempre figuran como parte de las clusulas WHERE (o HAVING). Una subconsulta slo puede dar lugar a una columna de datos como resultado:
En la subconsulta SELECT slo puede haber un campo.
No permite ORDER BY; no tendra sentido. Tampoco admite UNION; slo se permite un SELECT. A menudo, hace referencia al nombre de una columna de una tabla principal de la subconsulta:
Esto determina la fila de la tabla principal para la que se est ejecutando la subconsulta. Se conoce como referencia exterior. En nuestro ejemplo, es OfiRep= NumOfi de la tabla Oficinas.
Vistas
Tablas virtuales que muestran los datos a los usuarios de forma no normalizada. NO hay distintas copias de los datos; hacen referencia a los datos de las tablas subyacentes. La base de datos almacena la definicin de las vistas. Los datos se actualizan cuando se actualizan las tablas subyacentes. Ventajas:
vistas diseadas para ellos.
Diseadas para cubrir necesidades especficas de los usuarios. Las consultas son mucho ms simples para los usuarios en Seguridad: slo permite acceder a los datos de las vistas. Independencia: evita que el usuario o el programa modifiquen
las tablas subyacentes.
Vistas
CREATE VIEW PedidosClientes AS SELECT NumClien, Empresa, Nombre, NumPedido, Prod, Cant, Im porte FROM Clientes, RepVentas, Pedidos WHERE RepClien = NumRep AND NumClien = Clien (SQL estndar)
Pedidos
NumPedido Clien Prod Cant Importe
88 99
7 31.000$ 2 4.000$
PedidosClientes
NumClien Empresa Nombre NumPedido Prod Cant Importe
Clientes NumClien Empresa RepClien LimitCredit 211 QGG Co 89 50.000$ 322 DBO Co 89 40.000$
88 ABAC 99 CDE
7 31.000$ 2 4.000$
RepVentas
NumRep Nombre OfiRep Cupo Ventas 22 100.000$ 0$ 53 Bill Smith 89 Jen Smith 44 50.000$ 130.000$
No se pueden actualizar todas las vistas. Una vista es de slo lectura si:
DISTINCT forma parte de la instruccin SELECT. Contiene expresiones (medias, totales, etc.). Hace referencia a vistas que no son actualizables. Contiene clasulas GROUP BY o HAVING. En ocasiones: hace referencia a ms de una tabla (fracaso del objetivo).
Vistas en MS Access
Las vistas se construyen y almacenan como consultas: Construir la instruccin SELECT, incluyendo las
relaciones (JOINS) entre las tablas en caso necesario.
Guardar la consulta, dndole un nombre. A continuacin, se puede realizar una consulta sobre
la consulta anterior (vista), as como utilizarla como fuente de datos de pginas Web, a modo de tabla.
Ejercicios de repaso
Mostrar todos los clientes con pedidos o lmites de crdito > 50.000 dlares.
Es posible listar al cliente una sola vez?
Eliminar a los representantes de las oficinas de ventas de Nueva York (NY) con cupos de ms de 40.000 dlares.
Consejo: recuerde que debe eliminarlos a partir de (FROM) una sola tabla. Utilice una subconsulta.
Soluciones
Mostrar todos los clientes con pedidos o lmites de crdito > 50.000 dlares:
Es posible listar al cliente una sola vez, con los lmites de crdito y los importes de los pedidos? S, pero no es fcil. SELECT DISTINCT NumClien FROM Clientes, Pedidos WHERE NumClien = Clien AND (LimitCredit>50000 OR Importe>50000);
Eliminar a los representantes de las oficinas de ventas de Nueva York (NY) con cupos de ms de 40.000$:
Consejo: recuerde que debe eliminarlos a partir de (FROM) una sola tabla. Utilice una subconsulta. DELETE * FROM RepVentas WHERE NumRep IN (SELECT NumRep FROM RepVentas, Oficinas WHERE NumOfi = OfiRep AND Cupo>40000 AND Estado="NY);
ndices
Un ndice es un objeto de datos independiente presente en la base de datos que ordena las filas de la tabla para facilitar una vista rpida:
Cada ndice de cada tabla es un objeto independiente. Las claves primarias y secundarias se indexan automticamente.
Ejemplo de ndices
Base de datos de clientes:
Seguridad
Opciones de seguridad:
Utilizar el login/contrasea del sistema operativo para identificar al usuario (menor seguridad):
Se restringe el acceso a otras bases de datos y tablas, pero permite
utilizar todas las aplicaciones.
Utilizar un login/contrasea para la base de datos (mayor seguridad): Seguridad a nivel de aplicacin (an ms seguro, pero difcil de administrar):
usuario est o no autorizado; es ms centralizado que de BD a BD.
El usuario puede acceder a todas las bases de datos y a todas las tablas.
Las aplicaciones deben consultar una base de datos comn para ver si el Utiliza una infraestructura de clave pblica (PKI) y de directorios, que
Clases de usuarios: superusuario (DBA), propietario y usuario. Asignacin de privilegios sobre la base de datos (permisos):
GRANT y REVOKE. P. ej.:
GRANT ALL ON NombreTabla TO PUBLIC WITH GRANT OPTION En las instrucciones GRANT y REVOKE es importante el orden. El ltimo es el que domina.
Transacciones
Un grupo de operaciones se debe tratar a menudo como una unidad atmica:
Iniciar la transaccin:
Insertar CabeceraPedido. Mientras hay otros DetallesPedido (elementos de la lnea):
Seleccionar la pieza. Actualizar el inventario de las piezas. Insertar la fila DetallesPedido.
Completar la transaccin.
Transacciones
Las bases de datos multiusuario tienen otros
problemas relacionados con las transacciones. Dos acciones de la base de datos entran en conflicto si una o ambas son operaciones escritas.
Actualizaciones perdidas:
Hay 7 piezas en el inventario. Las transacciones 1 y 2 leen simultneamente 7 como la cantidad actual. La transaccin 1 acaba primero, aade 3 piezas y escribe 10 en la cantidad. La transaccin 2 acaba despus, elimina 5 piezas y escribe 2 en la cantidad.
Cambios no realizados:
La transaccin 1 aade 3 piezas y escribe 10 en la cantidad. La transaccin 2 lee 10 como cantidad. La transaccin 1 se cancela (vuelve atrs) y deja a la transaccin 2 con datos errneos.
Transacciones
Las bases de datos utilizan protecciones para las concurrencias. Un esquema sencillo es el siguiente:
Las escrituras obtienen proteccin exclusiva sobre un registro,
evitando otras lecturas o escrituras. Las lecturas obtienen protecciones no exclusivas, que permiten otras lecturas, pero evitan que una escritura obtenga proteccin exclusiva.
Si se cancela una modificacin, se lee el log para deshacer las transacciones. Si falla el sistema o el disco, se ejecuta el log desde el ltimo punto de comprobacin para restaurar la base de datos. Desactivar los log durante la carga y la recuperacin de datos.
Rendimiento
Programas para analizar el rendimiento (desde TPC-A hasta H):
www.tpc.org
Optimizadores de consultas:
Hay muchas formas de establecer relaciones; depende del
tamao de las tablas, las caractersticas de las claves (longitud, "unicidad"), etc.
API ODBC
La librera de las llamadas a la funcin ODBC para conectar una aplicacin (Web, Windows u otra) a un SGBD, ejecuta sentencias SQL y recupera los resultados. Sintaxis SQL basada en el estndar SQL-92. Conjunto de cdigos de errores estndar. Modo estndar de conectar y acceder a un SGBD. Representacin estndar de los tipos de datos. Mtodos estndar para la conversin de tipos de datos. ODBC tiene una funcionalidad de ncleo, de capa 1 y de capa 2 para entenderse con interfaces sencillas y sofisticadas.
Estas caractersticas ayudan a superar muchos de los problemas del SQL no estndar mencionados en el tema anterior.
Arquitectura ODBC
Arquitectura ODBC
Aplicacin (Windows o Web):
Lleva a cabo el procesamiento. Llama a las funciones ODBC para transmitir las sentencias SQL y recupera los resultados.
Administrador de controladores:
Carga y descarga los controladores solicitados por la aplicacin. Procesa algunas llamadas a las funciones ODBC (supervisor).
Controlador ODBC:
Procesa la mayora de las llamadas a las funciones ODBC. Enva las peticiones SQL a fuentes de datos especficas:
Modifica la peticin de la aplicacin para adecuarla a la sintaxis SQL de la fuente de datos.
Fuente de datos.
Aplicacin
Solicita la conexin o establecimiento de sesin con la fuente de datos. Enva la peticin SQL a la fuente de datos. Ubica las zonas de almacenamiento y define los formatos de los resultados de las peticiones SQL. Solicita los resultados. Procesa los datos y los errores. Si la aplicacin requiere un proceso de transaccin, solicita una confirmacin o cancelacin para aceptar o rechazar los resultados de la transaccin. Una vez completado, finaliza la conexin a la fuente de datos.
Administrador de controladores
El administrador de controladores es una librera de enlaces dinmicos (DLL) ofrecida por Microsoft. Carga y descarga los controladores ODBC. Cuando la aplicacin solicita una lista con los nombres de las fuentes de datos instaladas, el administrador de controladores recupera la informacin del registro y devuelve la lista. Procesa las llamadas de inicializacin y las validaciones de parmetros y secuencia para las llamadas a la funcin ODBC.
Controlador
El controlador es una DLL (librera), escrita por Microsoft
o por el distribuidor de la base de datos, que implementa las llamadas a la funcin ODBC. Conversin de datos a los estndares ODBC. Conversin del cdigo de errores a los estndares ODBC. Manejo de la transaccin. Acceso a archivos externos al SGBD como son los archivos de Excel o los de texto:
Soporte limitado para SQL: slo SELECT, INSERT, CREATE y DROP.