6 El catálogo del sistema Un sistema de gestión de base de datos debe llevar la cuenta de gran cantidad de información referente a la estructura de una base de datos con el fin de efectuar sus funciones de gestión de datos. En una base de datos relacional, esta información está almacenada típicamente en el catálogo de sistema, una colección de tablas del sistema que el DBMS mantiene para su propio uso. La información del catálogo del sistema describe las tablas, las vistas, las columnas, los privilegios y otras características estructurales de la base de datos. Aunque el DBMS mantiene el catálogo de sistema principalmente para sus propios fines internos, las tablas del sistema son generalmente accesibles a los usuarios de la base de datos también a través de consultas SQL estándar. Una base de datos relacional es por tanto autodescriptiva; utilizando consultas sobre las tablas del sistema, se puede pedir a la base de datos que describa su propia estructura. Los «frontales» (front-ends) de bases de datos de propósito general, tales como las herramientas de consulta y los escritores de informes, utilizan esta característica autodescriptiva para generar listas de tablas y columnas para selección de usuario, simplificando el acceso a la base de datos. Este capítulo describe los catálogos de sistema proporcionados por varios productos DBMS populares, basados en SQL y la información que el catálogo contiene. ¿Qué es el catálogo de sistema? El catálogo de sistema es una colección de tablas especiales en una base de datos que son propiedad, están creadas y son mantenidas por el propio DBMS. Estas tablas del sistema contienen datos que describen la estructura de la base de datos. Las tablas del catálogo de sistema son automáticamente creadas al crear la base de datos. Generalmente se recogen todas juntas bajo un «id-usuario de sistema» especial con un nombre como SYSTEM, SYSIBM, MASTER o DBA. El DBMS se refiere constantemente a los datos del catálogo de sistema cuando procesa las sentencias SQL. Por ejemplo, para procesar una sentencia SELECT de dos tablas, el DBMS debe: • • • • • verificar que las dos tablas designadas existen realmente asegurar que el usuario tiene permiso para acceder a ellas comprobar si existen las columnas referenciadas en la consulta resolver los nombres de columna no cualificados a una de las tablas determinar el tipo de datos de cada columna Almacenando la información estructural en tablas del sistema, el DBMS puede utilizar sus propios métodos y lógica de acceso para recuperar rápida y eficientemente la información que necesita en la realización de esas tareas. Si las tablas del sistema sólo fueran utilizadas internamente por el DBMS, serían de poco interés para los usuarios de la base de datos. Sin embargo, el DBMS hace generalmente que las tablas del sistema también estén disponibles para acceso a los usuarios. Las consultas de usuario respecto de los catálogos del sistema están casi siempre permitidas en las bases de datos sobre minicomputadores y computadores personales. Estas consultas son también soportadas en productos DBMS sobre maxicomputadores, pero el administrador de la base de datos puede restringir el acceso al catálogo de sistema como medida adicional de seguridad de la base de datos. Consultando los catálogos de sistema, usted puede descubrir información acerca de la estructura de una base de datos, incluso si nunca la ha utilizado antes. El acceso de los usuarios al catálogo de sistema es de solo lectura. El DBMS impide a los usuarios actualizar o modificar directamente las tablas del sistema, ya que tales modificaciones destruirán la integridad a la base de datos. En su lugar, el propio DBMS tiene a su cargo insertar, eliminar y actualizar filas de las tablas del sistema cuando modifica la estructura de una base de datos. Las sentencias DDL tales como CREATE, ALTER, DROP, GRANT y REVOKE producen cambios en las tablas del sistema como consecuencia de sus acciones. 1 Figura 16.1 Una herramienta de consulta amistosa. El catálogo y sus herramientas de consulta Uno de los beneficios más importantes del catálogo de sistema es que hace posible herramientas de consulta de fácil actualización («amistosas»), tal como se muestra en la Figura 16.1. El objetivo de tal herramienta es permitir a los usuarios un acceso simple y transparente a la base de datos sin tener que aprender el lenguaje SQL. Típicamente, la herramienta conduce al usuario a través de una serie de pasos como éstos: 1. El usuario proporciona un nombre y una contraseña para el acceso a la base de datos. 2. La herramienta de consulta visualiza una lista de las tablas disponibles. 3. El usuario elige una tabla, haciendo que la herramienta de consulta visualice una lista de las columnas que contiene. 4. El usuario elige las columnas de interés, quizás aceptando sus nombres con pulsaciones de tecla cuando éstos aparecen en la pantalla de un PC. S. El usuario elige columnas de otras tablas o restringe los datos a ser recuperados con una condición de búsqueda. 6. La herramienta de consulta recupera los datos solicitados y los visualiza en la pantalla de usuario. Una herramienta de consulta de propósito general con la de la Figura 16.1 debe ser capaz de conocer dinámicamente las tablas y columnas existentes en la base de datos. La herramienta realiza consultas sobre el catálogo de sistema con este propósito. El catálogo y el estándar ANSI/ISO El estándar SQL ANSI/ISO actual no especifica la estructura y los contenidos de] catálogo de sistema. De hecho, el estándar no requiere la existencia de un catálogo de sistema en absoluto. Sin embargo, todos los productos DBMS basados en SQL más importantes proporcionan un catálogo de sistema de 2 una forma u otra. La estructura del catálogo y las tablas que contiene varían considerablemente de un producto DBMS a otro. Debido a la creciente importancia de las herramientas de base de datos de propósito general que deben acceder al catálogo de sistema, el estándar SQL2 propuesto incluye una especificación de un catálogo de sistema mínimo. La especificación está basada generalmente en las tablas de sistema DB2, pero elimina los contenidos específicos de DB2. Si este intento de normalizar el catálogo del sistema va a tener éxito o no sigue siendo una cuestión abierta. Contenidos del catálogo Cada tabla del catálogo de sistema contiene información referente a una sola clase de elemento estructural de la base de datos. Aunque los detalles varían, casi todos los productos SQL comerciales incluyen tablas del sistema que describen cada una de estas cinco entidades: • Tablas. El catálogo describe cada tabla de la base de datos, identificando su nombre, su propietario, el número de columnas que contiene, su tamaño, etc. • Columnas. El catálogo describe cada columna de la base de datos, proporcionando el nombre de la columna, la tabla a la que pertenece, su tipo de datos, su tamaño, si están permitidos los NULL. • Usuarios. El catálogo describe a cada usuario autorizado de la base de datos, incluyendo el nombre, una forma cifrada de la contraseña del usuario y otros datos. • Vistas. El catálogo describe cada vista definida en la base de datos, incluyendo su nombre, el nombre de su propietario, la consulta que define la vista, etc. • Privilegios. El catálogo describe cada grupo de privilegios concedidos en la base de datos, incluyendo los nombres del donante y el donatario, los privilegios concedidos, el objetivo sobre el cual se han concedido los privilegios, etc. La Tabla 16.1 muestra los nombres de las tablas de sistema que proporcionan esta información en cada uno de los principales productos DBMS basados en SQL. Otras informaciones El catálogo de sistema es un reflejo de las capacidades y características del DBMS que lo utiliza. Debido a las muchas extensiones de SQL y a las características adicionales ofertadas por los productos DBMS más populares, catálogos de sistema siempre contienen varias tablas propias del DBMS. He aquí algunos ejemplos: • DB2 y Oracle soportan sinónimos (nombres alternativos para las tablas). Las definiciones de sinónimos se almacenan en una tabla de sistema llamada SYSSYNONYMS. • SQL Server soporta múltiples bases de datos designadas. Tiene una tabla de sistema llamada SYSDATABASES que identifica las bases de datos gestionadas por un mismo servidor. • Ingres soporta tablas que están distribuidas a través de varios volúmenes de discos. Su tabla de sistema IIMULTI_LOCATIONS lleva la cuenta de las ubicaciones de las tablas multivolumen. 3 Resumen El catálogo de sistema es una colección de tablas de sistema que describen la estructura de una base de datos relacional: • El DBMS mantiene los datos en las tablas del sistema, actualizándolos cuando la estructura de la base de datos cambia. 4 • Un usuario puede consultar las tablas de] sistema para obtener información referente a tablas, columnas y privilegios en la base de datos. • Herramientas de consulta frontales utilizan las tablas del sistema para ayudar a los usuario a manejar la base de datos de una manera más amistosa. • Los nombres y la organización de las tablas del sistema difieren ampliamente de un producto DBMS a otro; incluso los productos SQL de IBM tienen diferencias en sus catálogos de sistema. CREATE VIEW Command Creates a view file from the FoxPro environment. Syntax CREATE VIEW <file> Remarks CREATE VIEW builds a new view <file> containing information about the FoxPro environment. SET VIEW restores the environment saved to a view file by CREATE VIEW. View files created with CREATE VIEW are assigned a .VUE extension. The information saved in a view file includes: All tables/.DBFs, index, alternate and format files currently open in all work areas All fields contained in the SET FIELDS list All established relations between open tables/.DBFs All filters in effect for open tables/.DBFs The DEFAULT and PATH settings The procedure file setting The current help file The current resource file The SET SKIP status The status bar state (ON or OFF) View files are useful both in programs and while debugging. Only one command, SET VIEW TO <view file>, needs to be executed to establish the entire environment needed to complete a task. This prevents you from having to retype the command. While debugging, the environment settings can be saved in a view file, testing can be performed, and the environment can be restored to continue program execution. SET VIEW Command Restores the FoxPro environment from a view file. Syntax SET VIEW TO <file> | ? Remarks TO <file> | ? 5 Issuing SET VIEW TO <file> restores the FoxPro environment to the state it was in when the view file specified with <file> was created. View files are created with CREATE VIEW. A Sample Data Base in FPW 6 CREATE VIEW DB1 7 CLOSE DATABASES SET VIEW TO DB1 8