Uf1845 issuu

Page 1

IFCD0210

Informática y Comunicaciones

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB

Módulo Formativo 0492_3

Programación web en el entorno servidor

Unidad Formativa 1845 Acceso a datos en aplicaciones web del entorno servidor

Certificado de Profesionalidad


© Unión Editorial para la Formación (UEF) www.unioneditorialformacion.es I.S.B.N.: 978-84-16047-34-5

Autores: José Manuel Carballeira Rodrigo Impreso en España. Printed in Spain 1ª edición «Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos) si necesita fotocopiar o escanear algún fragmento de esta obra (www.conlicencia.com; 91 702 19 70 / 93 272 04 47)». Reservados todos los derechos. Está prohibido, bajo las sanciones penales y el resarcimiento civil previstos en las leyes, reproducir, registrar o transmitir esta publicación, íntegra o parcialmente por cualquier sistema de recuperación y por cualquier medio sea mecánico, electrónico, magnético, electroóptico, por fotocopia o por cualquier otro medio presente o futuro, sin la autorización previa de Unión Editorial para la Formación (UEF).


IFCD0210

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB

Módulo Formativo 0492_3

Programación web en el entorno servidor

Unidad Formativa 1845 Acceso a datos en aplicaciones web del entorno servidor


Acceso a datos en aplicaciones web del entorno servidor REFERENCIA AL CERTIFICADO DE PROFESIONALIDAD............................................................................................ 8 INTRODUCCIÓN...................................................................................................................................................................... 9 OBJETIVOS................................................................................................................................................................................. 11 MAPA CONCEPTUAL............................................................................................................................................................. 12 unidad didáctica 1. Modelo de datos.............................................................................................................14 1.1 Concepto de dato. Ciclo de vida de los datos..............................................................................16 1.2 Tipos de datos.........................................................................................................................................................18 1.2.1 Básicos....................................................................................................................................................................19 1.2.2 Registros................................................................................................................................................................19 1.2.3 Dinámicos..............................................................................................................................................................20 1.3 Definición de un modelo conceptual................................................................................................22 1.3.1 Patrones.................................................................................................................................................................23 1.3.2 Modelo genéricos................................................................................................................................................24 1.4 El modelo relacional......................................................................................................................................25 1.4.1 Descripción...........................................................................................................................................................26 1.4.2 Entidades y tipos de entidades..........................................................................................................................28 1.4.3 Elementos de datos. Atributos..........................................................................................................................28 1.4.4 Relaciones. Tipos, subtipos. Cardinalidad........................................................................................................29 1.4.5 Claves. Tipos de claves........................................................................................................................................30 1.4.6 Normalización. Formas normales.....................................................................................................................31 1.5 Construcción del modelo lógico de datos................................................................................33 1.5.1 Especificación de tablas.......................................................................................................................................33 1.5.2 Definición de columnas......................................................................................................................................36 1.5.3 Especificación de claves......................................................................................................................................36 1.5.4 Conversión a formas normales. Dependencias.............................................................................................37 1.6 El modelo físico de datos. Ficheros de datos.................................................................................40 1.6.1 Descripción de los ficheros de datos..............................................................................................................43 1.6.2 Tipos de ficheros..................................................................................................................................................43 1.6.3 Modos de acceso..................................................................................................................................................45 1.6.4 Organización de ficheros...................................................................................................................................46


1.7 Transformación de un modelo lógico en un modelo físico de datos....................47 1.8 Herramientas para la realización de modelos de datos......................................................49 unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)..............................................52 2.1 Definición de SGBD..............................................................................................................................................53 2.2 Componentes de un SGBD. Estructura.................................................................................................56 2.2.1 Gestión de almacenamiento..............................................................................................................................62 2.2.2 Gestión de consultas...........................................................................................................................................63 2.2.3 Motor de reglas....................................................................................................................................................64 2.3 Terminología de SGBD.......................................................................................................................................65 2.4 Administración de un SGBD..........................................................................................................................66 2.4.1 El papel del DBA..................................................................................................................................................66 2.4.2 Gestión de índices...............................................................................................................................................67 2.4.3 Seguridad................................................................................................................................................................69 2.4.4 Respaldos y replicación de bases de datos....................................................................................................72 2.5 Gestión de transacciones en un SGBD................................................................................................74 2.5.1 Definición de transacción..................................................................................................................................74 2.5.2 Componentes de un sistemas de transacciones...........................................................................................78 2.5.3 Tipos de protocolos de control de la concurrencia.....................................................................................78 2.5.4 Recuperación de transacciones........................................................................................................................81 2.6 Soluciones de SGBD............................................................................................................................................83 2.6.1 Distribuidas...........................................................................................................................................................83 2.6.2 Orientadas a objetos...........................................................................................................................................86 2.6.3 Orientadas a datos estructurados (XML)......................................................................................................88 2.6.4 Almacenes de datos (datawarehouses)...........................................................................................................91 2.7 Criterios para la selección de SGBD comerciales.......................................................................94 unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL............... 106 3.1 Descripción del estándar SQL................................................................................................................. 108 3.2 Creación de bases de datos...................................................................................................................... 109


3.2.1 Creación de tablas. Tipos de datos................................................................................................................ 109 3.2.2 Definición y creación de índices. Claves primarias y externas............................................................... 109 3.3 Gestión de registros en tablas............................................................................................................... 113 3.3.1 Inserción.............................................................................................................................................................. 113 3.3.2 Modificación....................................................................................................................................................... 116 3.3.3 Borrado............................................................................................................................................................... 117 3.4 Consultas............................................................................................................................................................... 118 3.4.1 Estructura general de una consulta............................................................................................................... 120 3.4.2 Selección de columnas. Obtención de valores únicos.............................................................................. 121 3.4.3 Selección de tablas. Enlaces entre tablas...................................................................................................... 121 3.4.4 Condiciones. Funciones útiles en la definición de condiciones.............................................................. 123 3.4.5 Significado y uso del valor null....................................................................................................................... 126 3.4.6 Ordenación del resultado de una consulta................................................................................................. 126 3.5 Conversión, generación y manipulación de datos................................................................ 127 3.5.1 Funciones para la manipulación de cadenas de caracteres...................................................................... 127 3.5.2 Funciones para la manipulación de números.............................................................................................. 133 3.5.3 Funciones de fecha y hora.............................................................................................................................. 136 3.5.4 Funciones de conversión de datos................................................................................................................ 140 3.6 Consultas múltiples. Uniones (joins)................................................................................................... 141 3.6.1 Definición de producto cartesiano aplicado a tablas................................................................................ 141 3.6.2 Uniones de tablas (joins). Tipos: inner, outer, self, equi, etc...................................................................... 144 3.6.3 Subconsultas....................................................................................................................................................... 148 3.7 Agrupaciones....................................................................................................................................................... 149 3.7.1 Conceptos de agrupación de datos.............................................................................................................. 149 3.7.2 Funciones de agrupación................................................................................................................................. 151 3.7.3 Agrupación multicolumna............................................................................................................................... 153 3.7.4 Agrupación vía expresiones............................................................................................................................ 153 3.7.5 Condiciones de filtrado de grupos............................................................................................................... 154 3.8 Vistas........................................................................................................................................................................... 155 3.8.1 Concepto de vista (view)................................................................................................................................ 155 3.8.2 Criterios para el uso de vistas....................................................................................................................... 155 3.8.3 Creación, modificación y borrado de vistas................................................................................................ 156 3.8.4 Vistas actualizables............................................................................................................................................ 158


3.9 FUNCIONES AVANzADAS. .................................................................................................................................. 158 3.9.1 Restricciones. Integridad de bases de datos. ............................................................................................. 158 3.9.2 Disparadores..................................................................................................................................................... 161 3.9.3 gestión de permisos en tablas...................................................................................................................... 163 3.9.4 Optimización de consultas............................................................................................................................. 165 UNIDAD DIDáCTICA 4. LENgUAJES DE MARCAS DE USO COMúN EN EL LADO SERVIDOR ............. 168 4.1 ORIgEN E hISTORIA DE LOS LENgUAJES DE MARCAS. EL ESTáNDAR XML. ................................. 168 4.2 CARACTERíSTICAS DE XML............................................................................................................................... 175 4.2.1 Partes de un documento XML: marcas, elementos, atributos, etc........................................................ 175 4.2.2 Sintaxis y semántica de documentos XML: documentos válidos y bien formados. .......................... 180 4.3 ESTRUCTURA DE XML.......................................................................................................................................... 184 4.3.1 Esquemas XML: DTD y XML Schema......................................................................................................... 184 4.3.2 hojas de estilo XML: el estándar XSLT y XSL. ......................................................................................... 188 4.3.3 Enlaces: XLL....................................................................................................................................................... 192 4.3.4 Agentes de usuario: XUA. .............................................................................................................................. 193 4.4 ESTáNDARES BASADOS EN XML. .................................................................................................................... 193 4.4.1 Presentación de página: XhMTL................................................................................................................... 193 4.4.2 Selección de elementos XML: Xpath y XQuery. ...................................................................................... 195 4.4.3 Firma electrónica: XML-Signature y Xades. ............................................................................................... 196 4.4.4 Cifrado: XML-Encryption. .............................................................................................................................. 197 4.4.5 Otros estándares de uso común.................................................................................................................. 198 4.5 ANáLISIS XML........................................................................................................................................................... 206 4.5.1 herramientas y utilidades de análisis........................................................................................................... 206 4.5.2 Programación de análisis XML mediante lenguajes en servidor............................................................ 209 4.6 USO DE XML EN EL INTERCAMBIO DE INFORMACIÓN......................................................................... 209 4.6.1 Codificación de parámetros. ......................................................................................................................... 210 4.6.2 Ficheros de configuración basados en XML. ............................................................................................ 211 RESUMEN ................................................................................................................................................................................ 212 BIBLIOgRAFíA........................................................................................................................................................................ 213 gLOSARIO .............................................................................................................................................................................. 214


Referencia al certificado de Profesionalidad CERTIFICADO DE PROFESIONALIDAD:

(IFCD0210) DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB (RD 1531/2011, de 31 de octubre)

MÓDULO FORMATIVO: MF0492_3: Programación web en el entorno servidor UNIDAD FORMATIVA: UF1845: Acceso a datos en aplicaciones web del entorno servidor


Introducción Introducción Una base de datos es una entidad donde se pueden almacenar datos de forma estructurada, con la menor redundancia posible. Diferentes programas usuarios deben poder usar estos datos. Así, base de datos se relaciona con el concepto de red ya que se debe poder compartir esta información, de ahí viene el término base. Sistema de información es el concepto general utilizado para la estructura global que incluye los mecanismos necesarios para compartir datos. Una base de datos da a los usuarios el acceso a los datos, que pueden visualizar, introducir o actualizar, de acuerdo con los derechos de acceso que se les hayan dado. Se hace más útil según crece la cantidad de datos almacenados. Las aplicaciones informáticas de los años sesenta se daban totalmente por lotes y fueron pensadas para una tarea muy específica que se relaciona con muy pocas entidades tipo. Cada aplicación usaba ficheros de movimientos para actualizar o para consultar uno o varios ficheros maestros. En aquella época cada programa trataba como mucho un fichero maestro, que solía estar en una cinta magnética, así se trabajaba con un acceso de forma secuencial. Cuando se le quería añadir una aplicación que precisaba el uso de algunos de los datos que ya existían así como de otros nuevos, se diseñaba un nuevo fichero con todos los datos requeridos (lo que provocaba redundancia) para evitar que los programas necesitasen leer muchos ficheros. Al ir introduciendo las líneas de comunicación, discos y terminales, se fueron también escribiendo programas que permitían a varios usuarios consultar los mismos ficheros de forma simultánea y on-line. Más adelante surgió la necesidad de posibilitar la actualización on-line. Al integrar las aplicaciones, se debieron interrelacionar sus ficheros y se hizo necesario eliminar la redundancia. El nuevo grupo de ficheros se debía diseñar de forma que estuviesen interrelacionados; mientras que las informaciones redundantes (como el nombre y dirección de los clientes, o el identificador y precio de los productos), que constaban en los ficheros de varias aplicaciones, ahora debían estar en un único lugar. El uso eficiente de las interrelaciones, así como el acceso on-line exigían estructuras físicas que dotasen con un acceso rápido, así como las multi-listas, los índices, las técnicas de hashing, etc.


Estos conjuntos de ficheros con estructuras complejas y que son compartidos entre varios procesos simultáneamente (unos por lotes y otros de forma on-line), recibieron al comienzo el nombre de Data Banks, y luego, en los años setenta, el de Data Bases. El software de gestión de ficheros era en aquella época muy elemental para poder satisfacer todas estas necesidades. Así el tratamiento de las interrelaciones no fue entonces previsto, no era posible que varios usuarios actualizaran simultáneamente los datos. El uso de estos grupos de ficheros por los programas de aplicación fue excesivamente compleja, haciendo que sobre todo durante la segunda mitad de los años setenta, fuese saliendo al mercado software más sofisticado: los “Data Base Management Systems”, que son los sistemas de gestión de bases de datos (SGBD). Una base de datos puede ser local, es decir, utilizarla sólo un usuario en un equipo, o puede ser distribuida, es decir, que su información se puede acceder a ella a través de una red ya que se almacena en equipos remotos.

La ventaja fundamental del uso de bases de datos es que varios usuarios pueden simultáneamente acceder a ellas. En este tiempo la necesidad de contar con un sistema de administración para poder controlar los usuarios como los datos. La administración de bases de datos se efectúa con un sistema llamado DBMS (Database management system, o Sistema de Administración de Bases de Datos). El DBMS es un grupo de aplicaciones de software que permiten administrar bases de datos, que posibilita: - el acceso a los datos por parte de múltiples usuarios. - un acceso a datos sencillo. - la manipulación de los datos que hay en la base de datos (con acciones como insertar, editar y eliminar).


Objetivos Objetivos Objetivo General - Desarrollar componentes que permitan el acceso y la manipulación de las informaciones soportadas en bases de datos y otras estructuras. Objetivos Específicos - Crear componentes software utilizando objetos o componentes de conectividad específicos para acceder a informaciones almacenadas en bases de datos y otras estructuras. - Integrar sentencias SQL en los componentes software para acceder y manipular la información ubicada en bases de datos. - Acceder a datos soportados en bases de datos u otras estructuras de almacenamiento. - Determinar las características principales de un lenguaje estándar de marcas extendido para compartir información entre componentes software y bases de datos u otras estructuras. - Integrar características de un lenguaje estándar de marcas extendido en el desarrollo de componentes software para compartir la información soportada en bases de datos u otras estructuras.


Mapa conceptual Mapa conceptual BASE DE DATOS Especificación de Requisitos

diseño conceptual Alto Nivel Esquema Conceptual Indepentiente del SGBD Modelo Conceptual: leguaje para esquema conceptual NORMALIZACIÓN

diseño lógico

Esquema Lógico

Estructura la BD según el SGBD en uso Modelo Lógico: lenguaje para esquema lógico

diseño físico Esquema Físico

––Estructura de Almacenaje ––Método de Acceso ––Se adapta al SGBD en uso ––SQL


01 MODELO DE DATOS 1.1 Concepto de dato. Ciclo de vida de los datos 1.2 Tipos de datos 1.2.1 Básicos 1.2.2 Registros 1.2.3 Dinámicos 1.3 Definición de un modelo conceptual 1.3.1 Patrones 1.3.2 Modelo genéricos 1.4 El modelo relacional 1.4.1 Descripción 1.4.2 Entidades y tipos de entidades 1.4.3 Elementos de datos. Atributos 1.4.4 Relaciones. Tipos, subtipos. Cardinalidad 1.4.5 Claves. Tipos de claves 1.4.6 Normalización. Formas normales 1.5 Construcción del modelo lógico de datos 1.5.1 Especificación de tablas 1.5.2 Definición de columnas 1.5.3 Especificación de claves 1.5.4 Conversión a formas normales. Dependencias 1.6 El modelo físico de datos. Ficheros de datos 1.6.1 Descripción de los ficheros de datos 1.6.2 Tipos de ficheros 1.6.3 Modos de acceso 1.6.4 Organización de ficheros 1.7 Transformación de un modelo lógico en un modelo físico de datos 1.8 Herramientas para la realización de modelos de datos


14

Unidad didáctica 1. Modelo de datos

1. Modelo de datos El modelo de datos es un instrumento para asegurar la abstracción de la información a los usuarios de las bases de datos. Esta abstracción hace transparente al usuario la forma en que los datos se organizan y como se almacenan. El modelo de datos se define como un conjunto de reglas y de conceptos que servirán para describir los datos, las relaciones que hay entre los datos y las restricciones sobre los datos. También contendrá un conjunto de operaciones para realizar consultas y actualizar los datos. La clasificación de los modelos de datos dependen de los conceptos que se usen para describir la base de datos. Así los podemos clasificar en: ––Modelos conceptuales: para su representación se usarán entidades, atributos e interrelaciones. Son los modelos más cercanos al usuario y son independientes del SGBD. Nunca se carga en el ordenador. ––Modelos lógicos: representan los datos por medio de estructuras de registros, de forma que también se pueden llamar “modelos orientados a los registros”. Son modelos implementados por el propio SGBD. Los modelos lógicos manejan conceptos como las relaciones, campos, registros, etc. Que son conceptos que pueda entender y usar habitualmente el usuario final. Los modelos lógicos ocultarán detalles de cómo los datos son almacenados. ––Modelos físicos: dotan de conceptos que incluyen los detalles sobre cómo se almacenan los datos en el sistema. ––Generalmente los modelos de datos también contienen un conjunto de operaciones básicas para permitir realizar lecturas y actualizaciones de la base de datos. Un modelo de datos permite describir: ––Las estructuras de datos de la base: son el tipo de los datos que hay en esa base y cómo estos datos se relacionan. ––Las restricciones de integridad: Es el conjunto de condiciones que los datos deben cumplir para poder reflejar correctamente la realidad que se desea. ––Operaciones de gestión de los datos: operaciones como la inserción, modificación, borrado, y recuperación de los datos de la base de datos.


Unidad didáctica 1. Modelo de datos

15

Otro punto de vista es pensar que un modelo de datos permitirá describir los elementos de la realidad que intervienen en un problema dado y cómo éstos se relacionan entre sí. No hay que olvidar que una Base de Datos se enfoca a resolver un cierto problema, por lo que los ambos enfoques propuestos son necesarios en cualquier desarrollo de software. PARTES DE UN MODELO ––Estructura: definen las reglas que determinan cómo se colocan los datos, sin especificar su significado y cómo se usará la base. ––Operaciones: Son las que permiten realizarse sobre los datos. Suelen estar determinadas por la propia estructura de los datos. ––Restricciones: Son de aplicación en cualquier estructura dentro del modelo de datos para las cuales aplican. Estas pueden ser de dos tipos: -- Implícito; -- Explícito. CUALIDADES DE UN MODELO ––Expresividad: El disponer de una amplia gama de ideas hace posible una representación más extensa de la realidad, por lo que los modelos con más conceptos serán también los más expresivos. ––Formalidad: Requiere que todos los conceptos del modelo cuenten con una interpretación precisa, única y bien definida. ––Simplicidad: Debe ser lo mas simple posible. ––Minimalidad: Cada concepto tendrá un significado único y distinto respecto al resto (ningún concepto puede expresarse mediante otro). PRESENTACION GRAFICA ––Facilidad de lectura: un modelo es sencillo de leer si sus conceptos se representan con símbolos diferentes. ––Completud gráfica: un modelo es completo “gráficamente” si todos sus conceptos poseen una representación gráfica, que debe completarse con una representación lingüística.

recuerde El modelo de datos es el conjunto formado por la estructura, restricciones y reglas que servirán para describir los datos, las relaciones que hay entre los datos y las restricciones sobre los datos.


16

Unidad didáctica 1. Modelo de datos

1.1 Concepto de dato. Ciclo de vida de los datos. Un dato es una representación simbólica (que puede ser numérica, alfabética, alfanumérica, algorítmica, etc.) de un atributo o característica de una cierta entidad. Los datos describen ocurrencias, hechos probados y entidades. La base de datos o banco de datos es un grupo de datos relacionados entre sí y almacenados para su posterior uso. Así una biblioteca podrá considerarse una base de datos compuesta por documentos indexados para su consulta. Actualmente la mayoría de las bases de datos están en formato electrónico, necesitando gran cantidad de sistemas que las diseñen, implementen y gestionen. CICLO DE VIDA DEL DISEÑO DE LA BASE DE DATOS ––Planificación del proyecto. ––Definición del sistema. ––Análisis y Toma de requisitos. ––Diseño de la base de datos. ––Selección del Sistema Gestor de Bases de Datos. ––Diseño del software. ––Creación del prototipo. ––Transformación y carga datos. ––Prueba. ––Mantenimiento. Estas etapas no son necesariamente secuenciales. Modelo de base de datos determinará la estructura lógica de una base de datos, concretando especialmente la forma de almacenar, organizar y manipular los datos. Entre los modelos lógicos más frecuentes para bases de datos se encuentran: ––modelo relacional ––modelo entidad/relación ––modelo entidad/relación extendido ––modelo entidad/atributo/valor ––modelo en red ––modelo jerárquico ––modelo de objetos ––modelo en estrella ––modelo documental


Unidad didáctica 1. Modelo de datos

Los modelos físicos, para el almacenamiento de datos de datos, cuentan con: ––fichero plano ––índice invertido Otros modelos lógicos podrán ser: ––semántico ––asociativo ––BBDD XML ––multidimensional ––grafo etiquetado ––triplestore ––multivalor El ciclo de vida de un sistema de información puede contener las etapas de: ––Planificación; ––Análisis; ––Diseño; ––Implementación; ––Pruebas; ––Instalación; ––Mantenimiento. La planificación se centra realizar las siguientes actividades para el proyecto: ––Estimación del proyecto; ––Análisis de riesgos; ––Planificación temporal; ––Estudio de viabilidad del proyecto; ––Asignación de recursos. El análisis define el qué realizar, centrándose en: ––Especificación de requisitos Funcionales y No Funcionales. ––Modelado de Procesos y de Datos El diseño permitirá definir cómo realizar: ––Estudio de alternativas; ––Diseño arquitectónico; ––Diseño de aplicaciones; ––Diseño de la base de datos.

17


18

Unidad didáctica 1. Modelo de datos

La implementación permite: ––La creación e integración de los recursos necesarios para que funcione el sistema; ––La adquisición de componentes. ––Las pruebas pueden ser: ––Pruebas Alfa; ––Pruebas Beta; ––Unitarias; ––De Integración; ––Prueba de Aceptación.

recuerde La mejor forma de tener almacenada la información de la empresa es en bases de datos. De su correcto diseño y gestión dependerá el beneficio derivado de su uso.

La instalación y el despliegue se centra en la fase de uso y mantenimiento, e incluye: ––Mantenimiento correctivo; ––Mantenimiento perfectivo; ––Mantenimiento adaptativo. 1.2 Tipos de datos. El primer paso para crear una base de datos es planificar qué tipo de información se quiere almacenar en ella, teniendo en cuenta la información disponible y la información que realmente necesitamos. Una base de datos se compone de tablas donde almacenamos los distintos registros, catalogados en función de distintas características (campos). Un aspecto a considerar al inicio es la naturaleza de los valores que se incluirán en dichos campos. Debido a que una base de datos trabaja con todo tipo de datos, es especialmente importante especificar qué tipo de valores le estamos introduciendo de forma que, por un lado, facilite la posterior búsqueda, mientras que por otro se optimicen los recursos relativos a la memoria. La planificación de la estructura de la base de datos (concretamente de las tablas) es vital para la correcta gestión de la misma. El diseño de la estructura de una tabla será la descripción de cada campo que componga el registro y los datos o valores cada uno de esos campos que va a contener.

recuerde Al diseñar la base de datos se definen qué tipos de datos contendrá cada elemento.

Los campos son los distintos tipos de datos que componen la tabla, por ejemplo: producto, descripción, precio. Para definir un campo se deben conocer sus propiedades, tales como nombre, tipo ancho, etc.


Unidad didáctica 1. Modelo de datos

19

1.2.1 Básicos. Dependiendo del lenguaje de programación o tipo de base de datos que se use, contaremos con una serie de datos básicos o pre-establecidos con los que determinarán los tipos de datos para los registros. Los tipos de datos básicos más típicos son: ––Alfanuméricos: permite almacenar cualquier tipo de texto, tanto caracteres (normales y especiales) como dígitos. Tiene una longitud máxima establecida. Se suele utilizar para almacenar datos como nombres, direcciones, códigos postales, etc. ––Memos: se utiliza para textos mayores de la longitud máxima establecida por el tipo texto. ––Número: para datos numéricos usados en cálculos matemáticos. Este tipo se suele dividir en varios otros, con diferente tamaño máximo. Así los tipos Byte, Entero y Entero largo sirven para almacenar números sin decimales; los tipos Simple, Doble y Decimal sirven para decimales, etc. ––Booleano: valores Sí y No, y campos que contengan valores booleanos, así uno de entre dos valores (Sí/No, Activado/desactivado,Verdadero/Falso). ––Auto-numeración: número secuencial (que se incrementa de uno en uno) único. ––Fecha/ Hora: para la introducción de fechas y horas. ––Cálculo: Un campo calculado tiene como valor el resultado de una operación lógica o aritmética que se realiza usando otros campos. ––Etc. 1.2.2 Registros. Los registros son la información que se contiene en los campos de la tabla, así por ejemplo: el nombre del usuario, el apellido del usuario y la dirección de éste. Aunque puede haber otros, por lo general los distintos tipos de campos que pueden almacenarse son los siguientes: ––Texto (caracteres alfanuméricos), ––Hora / Fecha, ––Numérico (caracteres numéricos), ––Lógico.

recuerde Los tipos de datos básicos son utilizados en la mayoría de las ocasiones, cuando no se requiere un formato más específico.


20

Unidad didáctica 1. Modelo de datos

Pudiendo encontrar los siguientes tipos de registros: ––Registros de longitud variable: uno o más de los campos que lo forman tienen longitud variable, pero con una dimensión máxima que no debe sobrepasarse. ––Registros de longitud fija: todos los campos que lo integran tienen una longitud fija. ––Registros de longitud indefinida: es imposible determinar su longitud. Incluye marcas de final del registro y del campo. Para comprender bien el concepto de registro cabe destacar la definición de Campo: Campo es el lugar físico que se destina a almacenar información de forma independiente. El tipo de campo determina que clases de datos pueden introducirse y los tipos de operaciones que pueden realizarse. Tipos de campos: ––Alfabéticos: formados únicamente por letras del alfabeto; ––Alfanuméricos: formados tanto por letras como por números; ––Numéricos: formados únicamente por números decimales; ––De Control: se utilizan para el control de las unidades a las que van destinadas. Los campos se pueden clasificar según su función en el registro, diferenciando entre:

recuerde Los registros será la información contenida en los campos de las tablas de la base de datos.

––Claves; ––Literales; ––Punteros; ––Códigos; ––Numéricos; ––Indicadores. 1.2.3 Dinámicos. Los datos dinámicos son aquellos cuya estructura puede variar a lo largo de la ejecución de un programa. La variación de la estructura de los mismos puede ser tan sólo en el número de elementos (como en el caso de un string), o variando también en la relación entre ellos (como podría ser un árbol sintáctico). Los tipos de datos dinámicos se pueden almacenar en estructuras de datos estáticas, pero tratándose de un conjunto de datos, han de ser vectores, o matrices multidimensionales.


Unidad didáctica 1. Modelo de datos

Las estructuras de datos estáticas son lo opuesto a las dinámicas. Es decir, son aquellas en que tanto el número de los datos como su interrelación no variará durante toda la ejecución del correspondiente programa. Así un vector tendrá siempre una determinada longitud y todos sus elementos, excepto el primero y el último, tendrán un elemento precedente y otro siguiente. Si almacenamos las estructuras de datos dinámicas en estructuras estáticas se debe comprobar si se conoce el número máximo y la media de datos que pueden tener. Si ambos valores son similares, se puede usar una variable estática o automática. Si son diferentes, o se desconocen, conviene ajustar el tamaño al número de elementos que haya en un momento dado en la estructura de datos y así almacenar el vector en una variable dinámica. Las estructuras de datos dinámicas se suelen almacenar usando variables dinámicas. Así se puede ver una estructura de datos dinámica como una colección de variables dinámicas cuya relación se establece por medio de punteros. De esta manera se podrá modificar fácilmente tanto el número de datos de la estructura (por la creación o eliminación de las variables que los contienen) como por la propia estructura, cambiando las direcciones que contienen los punteros de sus elementos. En este caso es habitual que todos los elementos sean tuplos, conocidos como nodos. En los apartados siguientes se verán estos dos casos: estructuras de datos dinámicas almacenadas en estructuras de datos estáticas y como grupos de variables dinámicas. En el primer caso, se tratará de cadenas de caracteres, ya que son las estructuras de datos dinámicas más empleadas. En el segundo caso se tratará de las listas, así como de sus aplicaciones. CADENAS DE CARACTERES Las cadenas de caracteres constituyen una particularización de los vectores donde los elementos son caracteres. Ha de emplearse una marca de final (el carácter NUL o ‘\0’ ) que marcará la longitud real de la cadena que se representa en el vector. LISTAS Las listas son uno de los tipos dinámicos de datos más usados y son secuencias homogéneas de elementos sin un tamaño fijo. Al igual que ocurre con las cadenas de caracteres se pueden almacenar en vectores siempre que se sepa su tamaño máximo y la longitud media durante la ejecución. De no ser así se emplearán variables dinámi-

21


22

Unidad didáctica 1. Modelo de datos

cas “enlazadas” entre sí (variables que contengan punteros a otras dentro de la misma estructura dinámica de datos). La gran ventaja de representar una lista en un vector es que elimina la necesidad de que un campo apunte al siguiente. Sólo es posible aprovecharla si no se produce un excesivo consumo de memoria, y cuando el programa no tenga que hacer inserciones y borrados frecuentes de elementos en cualquier posición de la lista. Una lista de elementos debe permitir realizar las operaciones siguientes:

recuerde Los datos dinámicos son los que varían con el tiempo. Hay varios tipos de datos que pueden ser definidos como dinámicos.

––Insertar un nuevo nodo. ––Acceder a un nodo determinado. ––Eliminar un nodo existente. Al realizar estos programas es conveniente realizar un esquema de la estructura de datos dinámica sobre el que indiquemos los efectos que conllevan las distintas modificaciones, en la misma. 1.3 Definición de un modelo conceptual. Un modelo conceptual es un modelo muy general y abstracto que se encarga de dar una visión general del negocio o empresa. Este modelo consiste en generar una representación usando una notación del modelo de datos logrado y el uso de herramientas de apoyo al desarrollo de software (herramientas CASE). Se trata de un proceso asociado al análisis y resolución de un problema en el que se gestiona información. El objetivo final de este proceso es un modelo de datos sobre la realidad analizada. Vamos a definir unos conceptos básicos para poder entender este modelo: ––Entidad: se trata de objetos conceptuales, tangibles, intangibles, que tienen ciertos atributos o características que definen a la entidad. Desde el punto de vista de los datos podremos asociar a dichas entidades reales, que se denominan Entidades de Datos o lo que es lo mismo, un conjunto de atributos de una determinada entidad que interesan en el contexto de un cierto problema. ––Ocurrencia: una entidad en el mundo real concierne a individuos, y a cada uno de estos le corresponde una ocurrencia. Así una entidad de datos de una persona, se referirá a un cliente con atributos nombre y dirección, siendo los diferentes clientes ocurrencias de la entidad de datos.


Unidad didáctica 1. Modelo de datos

23

El modelado de datos debe verse como un proceso que va desde una visión general del sistema, pasa por una representación conceptual y termina en una implementación física del mismo. Es muy importante realice con una metodología, ya que si no se realiza así es probable que se llegue a un modelo de datos incorrecto. Existen diferentes tipos de modelos conceptuales: ––Basados en registros ––Entidad-relación: los datos se organizan en conjuntos interrelacionados de objetos (llamados entidades) con atributos asociados; ––Jerárquico: datos en registros, relacionados con punteros y que se organizan como grupos de árboles; ––Relacional: datos en tablas que se relacionan por el contenido de ciertas columnas; ––Basados en objetos; ––Redes: datos en registros que se relacionan por punteros y se organizan en gráficos arbitrarios; ––Orientado a objetos: los datos se ven como instancias de objetos (incluyendo a sus métodos) Se trata de un esquema conceptual a partir de los requisitos recopilados. El esquema conceptual se trata de una descripción concisa de los requisitos de los usuarios y contiene descripciones detalladas sobre los tipos de datos, restricciones y los vínculos.

1.3.1 Patrones. Generalmente, antes de lanzar el modelo por primera vez, ya habrá concebidas algunas expectativas sobre el comportamiento del sistema, las cuales suelen resultar del mismo conocimiento en que nos basamos para desarrollar el modelo conceptual y sobre lo aprendido del sistema en el desarrollo del modelo conceptual. Para formalizar las ideas que tenemos sobre estos patrones esperados se suelen dibujar gráficos en los que se representan los cambios por medio de los valores temporales de las variables más importantes para poder usarlos como puntos de referencia durante la evaluación del modelo y así estar seguros de que el modelo incluye las predicciones que nos permitan abordar directamente estas cuestiones. Durante esta evaluación del modelo se compara su comportamiento con los patrones inicialmente esperados de su comportamiento, para así comparar formalmente las predicciones del modelo con los datos logrados en el sistema real.

recuerde Aunque hay diferentes tipos de modelos conceptuales, todos ellos darán una visión de alto nivel al sistema requerido.


24

Unidad didáctica 1. Modelo de datos

recuerde Un patrón es una plantilla previamente evaluada como responsable de resolver un problema, y que será la guía para apoyarse en realizar el trabajo. Los patrones de diseño de bases de datos permiten al usuario crear una base de datos más fortalecida partiendo de una guía.

Debido a que frecuentemente el conocimiento sobre el sistema no se reduce únicamente a los datos disponibles, hay que usar una información más amplia para describir los patrones esperados sobre las variables más importantes. Esto nos permite concluir una evaluación más exhaustiva sobre el comportamiento del modelo. En el uso del modelo se analizarán e interpretarán los patrones previstos por el modelo para las variables de interés concernientes al marco de diferentes estrategias de uso o sobre las condiciones ambientales para cumplir con los objetivos propuestos. Es por esto que normalmente conviene describir los patrones que se esperan para las variables que representan las hipótesis que queremos probar. Así los patrones esperados sobre el comportamiento del modelo es con frecuencia una representación gráfica sobre los objetivos del modelo. 1.3.2 Modelo genéricos. Para enfrentarse al diseño y desarrollo de un sistema de software de bases de datos será necesario estudiar en detalle la dinámica y la propia estructura de la organización donde la misma funcionará. Con esto se conseguirá obtener una lista de requisitos del sistema más propicia. Modelar los procesos de negocio es una parte primordial del proceso de desarrollo de la base de datos que permite a los analistas definir qué hace el negocio y a partir de ello definir los requisitos del sistema. Para este fin se propone construir el modelo de negocio como primera etapa de la metodología de desarrollo de software, denominada Proceso Unificado, analizando cada uno de los artefactos del modelo y cómo ellos se relacionan, y especificamos un conjunto de reglas de negocio que el modelo debe verificar. Dentro de este modelo encontramos todos los elementos de uso común, son: ––gestión del identificador único, ––esquema temporal, ––esquema parcial, ––modelo de red genérico, ––etc.

recuerde El modelo genérico sirve para esbozar de una forma muy básica la base de datos.

El modelo genérico se centrará así en definir las características básicas de la base de datos, sin entrar en ningún detalle de lenguaje ni característica propia que dé detalles de su implementación, se centra en definir cómo operarán de forma armónica los datos. El modelo genérico tiene como finalidad establecer las bases para especificar un modelo concreto, es decir, permite definir instancias de modelos de negocio a un problema real.


Unidad didáctica 1. Modelo de datos

1.4 El modelo relacional. Según una teoría, los sistemas de bases de datos se deben dotar a los usuarios con una visión de los datos organizados relaciones, que son estructuras que se definen como conjuntos de filas, y no como secuencias o series de objetos, donde el orden no es importante. Así detrás de una relación puede haber cualquier estructura de datos compleja que vaya a permitir una respuesta rápida a múltiples consultas. El usuario de un sistema relacional sólo debe preocuparse por el qué consultar y no el cómo se estructura el almacenamiento (el modelo físico). Codd afirmó: “Los usuarios futuros de grandes bancos de datos deben ser protegidos de tener que saber cómo están organizados los datos en la máquina la representación interna. […] Las actividades de los usuarios en sus terminales y la mayoría de programas de aplicación no debería verse afectados cuando se cambia la representación interna de los datos o incluso cuando se cambian algunos aspectos de la representación externa. Se necesitará cambiar la representación de los datos a menudo como resultado de los cambios en el tráfico de las consultas, actualizaciones e informes y como consecuencia del crecimiento natural en los tipos de información almacenada.” Aunque puedan resultar extrañas, las ideas de Codd no fueron bien recibidas en IBM, donde Codd realizaba sus labores de investigación, según asegura Harlwood Kolsky, un físico y antiguo compañero de Codd; “fue un enfoque revolucionario”, recuerda Kolsky. Este nuevo enfoque de Codd, que se basa en la teoría matemática de conjuntos, no tuvo un inmediato en IBM, que prefirió centrarse en IMS (un producto al que había invertido una gran cantidad de esfuerzo y dinero). Un grupo de trabajo de la Universidad de Berkeley en California, encabezado por Michael Stonebreaker, formuló el modelo relacional desarrollando un sistema, Ingres, cuya primera versión se situó en 1974, siendo el primer gestor relacional de bases de datos funcional. Esto conllevó que IBM reaccionara, instaurando otro sistema relacional, el System R con características de multiusuario y un lenguaje de consulta estructurado, el SEQUEL que luego se llamaría SQL (Structured Query Language). En ese momento Larry Ellison había aventajado la idea de Codd para crear un nuevo producto y una nueva empresa, que se conoce como Oracle. Codd publicó en 1985 las famosas doce reglas sobre el modelo relacional de bases de datos, las cuales son un resumen de sus características principales. y algunas de las cuales siguen siendo actualmente de implementación complicada para los fabricantes de gestores de bases de datos relacionales . Codd es el padre del modelo relacional y además participó en el modelo multidimensional de análisis de datos, nombrado OLAP (On Line Analytical Processing), y en 1993 Codd, junto con otros compañeros, publicaron las “12 reglas para OLAP”.

25


26

Unidad didáctica 1. Modelo de datos

recuerde En este modelo todos los datos son almacenados en relaciones, y como cada relación es un conjunto de datos, el orden en el que éstos se almacenen no tiene relevancia.

El Dr. Codd recibió numerosos reconocimientos, así en 1981, la ACM (Association for Computer Machinery), otorgó a Codd el “Premio Turing”, uno de los más prestigiosos en el campo de la informática. Hoy en día muchos de sus seguidores han contribuido, y siguen haciéndolo, a fortalecer este modelo que es el más utilizado como sistema de bases de datos. 1.4.1 Descripción. La estructura principal del modelo relacional es la relación, es decir una tabla bidimensional constituida por filas y columnas. Las relaciones serán las entidades consideradas como interesantes en la base de datos. Cada instancia de la entidad tendrá su lugar en una fila (tupla) de la relación (atributo), y los atributos de la relación serán las propiedades de la entidad. Aunque las tuplas se conocen como filas, la relación se conoce como tabla, y los atributos como columnas, de dónde deriva el nombre del modelo. Las tuplas en una relación constituyen un conjunto, matemáticamente hablando, es decir una colección desordenada de diferentes elementos. Para distinguir las tuplas se recurre a la idea de “llave primaria”, lo que es un atributo o conjunto de atributos que permiten identificar sin error una tupla en una cierta relación. En una relación puede haber más combinaciones de atributos que sirvan para identificar sin equívoco una tupla (“claves candidatas”), pero entre éstas se elegirá una para ser usada como llave primaria. Los atributos de la llave primaria no podrán asumir el valor nulo (que constituye un valor indeterminado), y no permitirían identificar una cierta tupla en una relación. Esta propiedad sobre las relaciones y sus claves primarias se conoce como integridad de las entidades. En una relación cada atributo se caracteriza por un nombre y por un dominio. El dominio indica los valores que pueden ser asumidos por una cierta columna de la relación. Frecuentemente un dominio se define por medio de la definición de un tipo para el atributo (por ejemplo diciendo que se trata de una cadena de veinte caracteres), pero también es posible definir dominios de más complejidad y precisión. El motor de datos se encargará de controlar que en los atributos de las relaciones incluyan únicamente los valores permitidos por sus dominios. La principal característica de los dominios de una base de datos relacional es que sean “atómicos”, lo que es lo mismo, que los valores que contienen los atributos no puedan separarse en valores de dominios menos complejos. Más formalmente se indica que no es posible tener atributos con múltiples valores.


Unidad didáctica 1. Modelo de datos

La normalización se usa para evitar la repetición no necesaria de datos (lo que se conoce como redundancia). Una solución a este problema es repartirlos entre varias relaciones y usar referencias por valor entre ellas. Este procedimiento ahorra mucho espacio de almacenamiento, eliminando la redundancia, y optimizando el rendimiento, impidiendo así las modificaciones incompletas o parciales que podrían desencadenar en inconsistencias. Existen hasta seis formas normales aunque se suele usar es la tercera forma normal. El Dr. Codd propuso también el álgebra relacional, que consiste en un lenguaje formal cuyos operadores trabajarán sobre las relaciones para concluir otra relación resultado que no cambie las relaciones originales. Así todos los operandos y los resultados serán relaciones, haciendo que la salida de una operación pueda ser la entrada de otra. Esto permitirá anidar expresiones del álgebra igual que se pueden anidar las expresiones aritméticas. Originalmente Codd propuso ocho operandos de los que sólo cinco se hacen imprescindibles, y estos son: proyección, restricción, unión, producto cartesiano, y diferencia, que permitirán realizar la mayoría de las operaciones para obtener los datos. Como operadores no imprescindibles tenemos la concatenación, división, e intersección, que se pueden indicar partiendo de los cinco operadores fundamentales. La restricción y la proyección son operaciones unitarias, ya que operan sobre una sola relación, y el resto de las operaciones serán binarias ya que trabajan sobre pares de relaciones. El primer lenguaje relacional, llamado ALPHA sentó las bases para el desarrollo de lenguaje SQL (originalmente SEQUEL). Existen otros lenguajes relacionales de consulta, tales como el QBE19, que se basan en el álgebra relacional definida en su momento por el Dr. Codd. En las fases de desarrollo del modelo relacional se definió la separación en tres niveles de los sistemas gestores de bases de datos: externo, interno y conceptual, que redundaron en lo que se conocen como esquemas lógicos, físicos y externos. Así tendremos los modelos conceptual, lógico y físico. Fue el Dr. Codd el que estableció los fundamentos para esta separación con ideas como la independencia física y lógica de los datos, de independencia, distribución e integridad. A partir del modelo relacional el usuario no tendrá que preocuparse de los aspectos técnicos de la base de datos, únicamente sus necesidades de información se van a satisfacer de acuerdo a su perspectiva de los datos. De esta forma los programadores de aplicaciones no tienen que pelearse con el modelo físico, lo que será exclusivo del administrador de bases de datos quien, si así lo determina, podrá modificar el modelo físico de datos sin

27


28

Unidad didáctica 1. Modelo de datos

afectar al modelo lógico. Muchos de estos conceptos fundamentales se confunden por analistas, desarrolladores y clientes que no han comprendido o podido implementar un modelo relacional de bases de datos de forma real y eficiente. El concepto de modelo entidad-relación frente al modelo relacional puede resultar confuso, debido a que ambos comparten casi esas mismas palabras. El objetivo del modelo relacional es crear un esquema, que consiste de un conjunto de tablas que representan relaciones entre los datos. Estas tablas, se pueden construir de diversas maneras: ––Creando un grupo de tablas iniciales y realizando normalizaciones hasta conseguir el mejor esquema. ––Convertir el diagrama E/R a forma de tablas, para luego aplicar también operaciones de normalización hasta conseguir el mejor esquema.

recuerde El modelo relacional es el modelo más usado actualmente para implementar bases de datos previamente planificadas. Permiten establecer interconexiones (relaciones) entre los datos (previamente guardados en tablas), y por medio de dichas conexiones relacionar los datos de las tablas.

La segunda técnica es mucho más reciente que la primera, por lo que es mucho más conveniente en varios aspectos: ––Partiendo de un diagrama visual es muy útil para poder apreciar los detalles, por eso se llama modelo conceptual. ––El crear las tablas iniciales es mucho más sencillo por medio de las reglas de conversión. ––Cabría pensar que es igual, ya que al final hay que normalizar las tablas igualmente, pero la ventaja de partir del modelo E-R es que la normalización es generalmente mínima. ––Esto tiene otra ventaja, aún cuando se normalice deficientemente, se garantiza un esquema aceptable, mientras que con la primer técnica no es así. 1.4.2 Entidades y tipos de entidades. Se debe crear una tabla con el mismo nombre y conjunto de atributos para cada tipo de entidad que no sea débil. 1.4.3 Elementos de datos. Atributos. Los atributos son características por las que se puede describir una entidad. Así en la entidad cliente podemos asignarle atributos como: nombre, apellido,


Unidad didáctica 1. Modelo de datos

29

dirección, teléfono, y su campo llave que puede ser: numero de cliente, CIF de empresa, o un código cualquiera. Este modelo de datos relacional representa y organiza los datos en forma de tablas o relaciones. REPRESENTACIÓN LÓGICA

REPRESENTACIÓN FÍSICA

MODELO RELACIONAL

Tabla

Archivo secuencial

Relación

Fila

Registro

Tupla

Columna

Campo

Atributo

El concepto de relación, atributos, tuplas y dominios. ––Atributo (Ai): Elemento que puede tomar valores (cada columna de la tabla). ––Dominio (Di): Grupo de valores que puede tomar un atributo (suele ser finito). ––Tupla: Cada elemento que contiene una instancia de la relación (filas). 1.4.4 Relaciones. Tipos, subtipos. Cardinalidad. La Relación escribe una cierta dependencia entre las entidades, permitiendo y delimitando la asociación de las mismas. Una relación tiene sentido expresando las entidades que relaciona. HERENCIA Estos conceptos parten de la teoría del modelo Entidad-Relación extendido. Así tenemos: ––Subtipo (o subclase), es un sub-conjunto de entidades en el grupo de entidades con atributos que serán distintos de otros sub-conjuntos. ––Supertipo (superclase), un conjunto genérico de entidades con una interrelación con uno o más subtipos. Los subtipos heredan los atributos del supertipo con el que se relaciona. Una instancia de un subtipo será también una instancia de un supertipo. Las instancias de un subtipo participan en una interrelación que sea exclusiva para dicho subtipo. En este caso la interrelación se muestra al nivel de subtipo.

recuerde Los atributos son las propiedades que definen una entidad.


30

Unidad didáctica 1. Modelo de datos

CARDINALIDAD El tipo de cardinalidad se representa por una etiqueta fuera de la relación: “1:1”, “1:N” y “N:M”, aunque esta notación puede variar dependiendo del lenguaje utilizado, actualmente la que más se usa es el unificado. Otra forma de expresar la cardinalidad es posicionando un símbolo cerca de la línea que conecta una entidad con una relación, que serían: ––“0” si las instancias de la entidad no están obligadas a participar en la relación. ––“1” si todas las instancias de la entidad se obliga a participar en la relación y únicamente participa una vez. ––”N” , “M”, ó “*” si las instancias de la entidad no están obligadas a participar en la relación y pueden hacerlo un número de veces cualquiera. Ejemplos de cardinalidad de relaciones: ––Cada marido (entidad) está casado (relación) con una sóla mujer (entidad) y viceversa. Es una relación 1:1. ––Una factura (entidad) se emite (relación) a una empresa (entidad) y sólo una, pero una empresa puede tener varias facturas emitidas a su nombre. Todas las facturas se emiten a nombre de una empresa. Es una relación 1:N. ––Una persona (entidad) puede alquilar (relación) varias casas (entidad) y una casa puede ser alquilada por varias personas distintas. Es una relación N:M.

recuerde El modelo Entidad-Relación nos permite establecer las bases para especificar cómo se inter-comunican y las dependencias de las distintas entidades de la misma.

Restricciones de participación: Del conjunto de relaciones, donde participa un cierto conjunto de relaciones, su participación puede ser de estos tipos: ––Parcial: cuando haya al menos una entidad no participe en ninguna de las relacines del conjunto de relaciones; ––Total: cuando todas las entidades participen en al menos una relación del conjunto de relaciones. 1.4.5 Claves. Tipos de claves. Es necesario la identificación unívoca y no ambigua de los datos. La clave candidata se refiere a uno o varios atributos que identifican unívocamente a todas las posibles tuplas de una tabla. Se debe tener en cuenta que:


Unidad didáctica 1. Modelo de datos

31

––El número de atributos debe estar comprendido entre uno y los que tenga la tabla. ––No se deben permitir que haya atributos inútiles o superfluos. ––De elminar atributos de la clave candidata, ésta ya no será candidata. ––Siempre habrá como mínimo una clave candidata. Clave principal o primaria: se escoge ésta de entre las claves candidatas. Suele elegirse la de menor tamaño. Claves alternativas: el resto de claves candidatas que no son elegidas como clave primaria. Atributo primo: aquel que es parte de la clave primaria. Clave foránea o ajena: uno o varios atributos de la tabla que es a su vez clave primaria de otra tabla. Es un una forma de relacionar y enlazar información. Los atributos de una clave foránea pueden (o no) formar parte de la clave primaria de la tabla a la que pertenecen. No es obligatoria la existencia de claves ajenas. 1.4.6 Normalización. Formas normales. El análisis relacional de datos se focaliza en el estudio de las características del modelo E/R y de la estructura del modelo lógico. El diseño de bases de datos relacionales conlleva la creación de un conjunto de tablas que se relacionan entre si. El modelo que se obtiene puede presentar unos problemas como la redundancia de datos y ambigüedad, según se trabaja con ellas. Con este problema, se definió una teoría que indica unas restricciones se han de aplicar sobre el modelo para obtener un modelo normalizado, que evita los problemas que se plantean. Para poder realizar el proceso de normalización se deben tener claros algunos conceptos: ––Un atributo es atómico cuando no puede tener más de un valor; cuando un atributo puede tener varios valores se dice que es un atributo multivaluado.

recuerde De entre las claves candidatas (definen unívocamente a las entradas de la base) se elige la clave primaria (que contiene el atributo primo) , siendo el resto las claves alternativas..


32

Unidad didáctica 1. Modelo de datos

––Las claves son atributos que identifican de forma unívoca a las entidades. Existen varios tipos de clave: 1. Superclave: se forma por uno o más atributos que identificarán unívocamente a una entidad. 2. Clave candidata: es una superclave mínima, o sea, una superclave que sin uno de sus atributos deja de ser superclave. 3. Clave primaria: es la clave candidata que se ha elegido para diferenciar las entidades. ––Hay que tener en cuenta es el de dependencia funcional. Existen varios tipos: 1. Dependencia funcional: dado un conjunto B, que dicho conjunto depende funcionalmente de otro conjunto A si para un valor de A, correspondiéndole un único valor de B. Se denomina “A B”. 2. Dependencia funcional completa: decimos que un conjunto B depende funcionalmente de forma completa respecto a otro conjunto A, si depende de ese conjunto en su totalidad y no de una de sus partes. Se denomina “A => B”. 3. Dependencia transitiva: se dice que un conjunto B depende transitivamente de otro conjunto A, si hay un conjunto Z que depende funcionalmente de A y B depende funcionalmente de Z. Se denomina “A Z B”. Las principales formas normales son: ––Primera forma normal (1FN): una tabla está en 1FN si todos sus atributos no clave, dependen funcionalmente de la clave (o sea, si dada una clave se puede obtener el valor de todos sus atributos), o lo que es igual, no hay grupos repetitivos para un valor de clave. ––Segunda Forma Normal (2FN): Una tabla está en segunda forma normal si además de estar en primera forma normal, todos los atributos fuera de la clave dependen totalmente y de forma funcional a ella. Así de una tabla en primera forma normal, y cuya clave esta compuesta por un único atributo, está en segunda forma normal. ––Tercera Forma Normal (3FN): Una tabla esta en tercera forma normal si está esta en segunda forma normal y además no existen atributos no claves que dependan en forma transitiva de la clave, o sea, que no debe haber atributos no clave que dependan de otros atributos no primos (los que no pertenecen a la clave).


Unidad didáctica 1. Modelo de datos

Existen otras formas normales, como la Forma normal Óbice Codd (FNBC), la cuarta y quinta formas normales, pero a partir de todas estas formas normales se puede producir perdida de dependencias. 1.5 Construcción del modelo lógico de datos.

33

recuerde El objetivo de la normalización es la homogeneización de la información, en estructuras y en contenidos.

El objetivo de esta fase es convertir el esquema conceptual, para adaptarlo al modelo de datos en el que se apoya el SGBD que se va a usar. Para realizar el diseño de una base de datos se puede empezar en distintos puntos del ciclo de vida, así: ––Comenzar por el análisis: creando un modelo a partir del cual tengamos la base de datos; ––Comenzar por un nuevo diseño: para empezar directamente por la fase de diseño, esto exige también un cierto análisis previo; ––Comenzar en el diseño de base de datos existente. Para la transformación del modelo conceptual al modelo lógico de datos el primer paso es realizar un diseño de la base de datos, convirtiendo la información del modelo en un primer diseño de los datos. 1.5.1 Especificación de tablas. Se deben definir un conjunto de relaciones (tablas) destinadas a cada esquema lógico local en dónde se vayan a representar las entidades y relaciones entre ellas, que se describen en cada vista que los usuarios tienen de la empresa. Cada relación de la base de datos ha de tener un nombre. A continuación se muestra cómo las relaciones (tablas) del modelo relacional representan las entidades y relaciones que pueden aparecer en los esquemas lógicos. Entidades fuertes: se debe crear una relación para cada entidad fuerte, de forma que se incluya todos sus atributos simples. De los atributos compuestos se ha de incluir tan sólo sus componentes. Cada identificador de la entidad constituirá una clave candidata. De entre las claves candidatas se debe escoger la clave primaria y el resto serán claves alternativas. Para escoger la clave primaria entre las claves candidatas se deben seguir estas indicaciones. Escoger la clave candidata:

recuerde El diseño lógico de los datos permite que estos se puedan representar usando eficientemente posibles recursos de estructuración de datos, y modelar restricciones disponibles en el modelo lógico.


34

Unidad didáctica 1. Modelo de datos

––que tenga menos atributos. ––que sea de tipo texto con el mínimo tamaño. ––más facil de usar para los usuarios. ––con valores que no deban cambiar en el futuro. ––con valores que no deban perder unicidad en el futuro. Entidades débiles: se debe crear una relación para cada entidad débil, incluídos todos sus atributos simples. De los atributos compuestos sólo se precisa incluir los componentes. También se debe incluir a la entidad de la que depende una clave ajena, para lo que a la entidad padre se le debe incluir la clave primaria de la relación que representa en la nueva relación que se crea para la entidad débil. Por último se debe diferenciar la clave primaria de esta nueva relación. Relaciones binarias de uno a uno: Se incluyen los atributos de la clave primaria de la entidad padre en la relación (tabla) que representa a la entidad hijo, para cada relación binaria, de forma que actúe como una clave ajena. La entidad hijo participa de forma total (obligatoria) en la relación, y la entidad padre es la que participe parcialmente (es opcional). Si ambas entidades participan total o parcialmente en la relación, la elección de padre e hijo es arbitraria. Además, cuando ambas entidades participen de forma total en la relación, se opta por integrar las dos entidades en una sola relación (tabla). Esto se suele hacer si una de las entidades no participa en más relaciones. Relaciones binarias de uno a muchos: Igual que en las relaciones de uno a uno, se incluyen los atributos de clave primaria de la entidad padre en la relación (tabla) que represente a la entidad hijo, para poder actuar como clave ajena. De forma que cada padre pueda tener muchos hijos y cada hijo un solo padre. Jerarquías de generalización: En las jerarquías, se conoce como entidad padre a la entidad genérica y entidades hijo a las consideradas como subentidades. Hay tres opciones que permiten definir las jerarquías, eligiendo la más adecuada en función de su tipo (exclusiva/superpuesta, total/parcial). Estas tres opciones son: ––Crear una relación por cada entidad, de forma que las relaciones de las entidades hijo hereden como clave primaria la de su entidad padre. Así la clave primaria de las entidades hijo será también una clave ajena al padre. Esto sirve para todos los tipos de jerarquía, sea exclusiva o superpuesta, parcial o total. ––Crear una relación por cada entidad hijo, de forma que se hereden los atributos de la entidad padre. Esto sólo va a servir para jerarquías de tipo exclusivo y total. ––Integrar todas las entidades en una relación que incluya los atributos de la entidad padre, los atributos de sus hijos y un atributo de tipo discriminativo que


Unidad didáctica 1. Modelo de datos

indique el caso al que pertenece la entidad a considerar. Esta opción sirve para cualquier tipo de jerarquía. Si la jerarquía es superpuesta su atributo discriminativo será evaluado múltiple. Una vez obtenidas las relaciones con sus claves primarias y claves ajenas y con los atributos, sólo queda actualizar los datos con los nuevos atributos que se identificaron en este paso. Validación de cada esquema por medio de la normalización La normalización se usa para mejorar el esquema lógico, haciendo que satisfaga ciertas restricciones que eviten la duplicidad de los datos. La normalización asegura que el esquema resultado esté próximo al modelo de la empresa, que debería ser consistente y tener una mínima redundancia y una máxima estabilidad. La normalización permite dilucidar a qué entidad pertenece cada atributo. Uno de los conceptos básicos del modelo relacional es aquel por el que los atributos se agrupan en relaciones (tablas) ya que están relacionados a nivel lógico. En muchas ocasiones, una base de datos normalizada no da la máxima eficiencia, pero el objetivo ahora es lograr una base de datos normalizada debido a que: Un esquema normalizado organiza los datos de acuerdo a sus dependencias funcionales, es decir, de acuerdo a sus relaciones lógicas. El esquema lógico no tiene que ser necesariamente el esquema final. Este esquema debe representar lo que el diseñador entienda sobre los datos de la empresa. Si se establecen unos objetivos sobre las prestaciones, el diseño físico cambiará adecuadamente el esquema lógico. Una posibilidad es que se desnormalicen algunas relaciones normalizadas, pero la desnormalización no implicará que se malgaste tiempo en ella, ya que por este proceso se aprende más sobre el significado de los propios datos. Así la normalización obliga a entender totalmente cada atributo que ha de representarse en la base de datos. Un esquema normalizado será robusto y carecerá de redundancias, por lo que el sistema está libre de ciertas anomalías que pueden provocar cuando se actualiza la base de datos. Los equipos informáticos actuales son mucho más potentes, por lo que muchas veces es más razonable realizar

35


36

Unidad didáctica 1. Modelo de datos

recuerde Una tabla es donde se guardan los datos recogidos por un programa, y se usan para organizar y presentar información. Se componen de filas y columnas de celdas rellenables con textos y gráficos.

bases de datos normalizadas sencillas de manejar, por medio de un tiempo adicional de proceso. La normalización incluye bases de datos cuyos esquemas son flexibles haciendo que puedan ampliarse fácilmente. 1.5.2 Definición de columnas. Las columnas de las tablas se conocen como campo, es un grupo de valores de datos de un tipo particular simple. Las columnas dotan de la estructura por la que se componen las filas.

recuerde

El término campo es equivalente al de columna, aunque en muchos casos será más correcto usar el término campo para llamar en concreto al elemento simple que hay en la intersección entre una fila y una columna.

Cada columna o campo es para un único tipo de datos.

1.5.3 Especificación de claves. Una clave primaria es una columna o combinación de ellas que identifican de unívocamente un registro en la tabla. Este tipo de claves no permite valores nulos y debe ser única en cualquier dominio. Sólo una de las claves candidatas puede ser clave primaria. El escoger la mejor clave primaria depende del diseñador de bases de datos que debe aplicar ciertas reglas para obtener claves primarias estables que permitirán un mejor rendimiento del motor, tanto en consultas, como en integridad y estabilidad de los datos. Reglas de selección para las claves primarias: Se debe elegir siempre una clave que no contenga valores desconocidos (NULL). En el caso, que una clave candidata pueda contener en algún momento, por raro que éste sea, este tipo de valores, se debe descartar como clave primaria. Se debe seleccionar una clave única y que no se repita nunca en el tiempo. Puede que las claves candidatas que son únicas puedan contener valores duplicados en otro instante. Este tipo de claves candidatas no deben ser elegidas como clave principal.


Unidad didáctica 1. Modelo de datos

Las claves primarias no pueden cambiar en el tiempo. Los valores de clave primaria no deben cambiar en el tiempo. Es conveniente que los valores almacenados en la columna de la clave primaria sean estáticos. Hay que tener en cuenta que un cambio en los valores afecta negativamente la integridad de la base de datos, los índices primarios y los secundarios, ya que las claves primarias referencian a muchos puntos de la base de datos. La selección de una clave primaria se debe realizar concienzudamente, ya que una mala elección puede afectar negativamente al diseño, normalización y funcionamiento de la bases de datos. Hay que tener en cuenta que luego raramente se cambia las claves primarias. 1.5.4 Conversión a formas normales. Dependencias. Partiendo de un conjunto de relaciones N:N. Lo primero que se debe realizar es la eliminación de los atributos no atómicos, que son los grupos repetitivos. Para esto debe sacarse el grupo completo y crearse una nueva tabla cuya clave primaria será una clave que se compone por la clave primaria original de la relación y por un discriminador que va a referir al conjunto repetitivo. Los atributos de esta nueva tabla son los que componen el grupo. Pasar a 1FN Pasos a seguir: 1. A partir de la tabla inicial se crea una nueva tabla con los atributos que dependen funcionalmente de la clave (con la misma clave que la tabla inicial). Esta tabla estaría ya en primera forma normal. 2. Se crea una nueva tabla con los restantes atributos, escogiendo de entre estos uno como clave de la tabla (o mas de una). Para la elección de la clave se usará el criterio que se expusieron para los tipos de clave. 3. Se comprueba si esa tabla se encuentra en primera forma normal. De ser así, la tabla inicial ya esta normalizada y termina el proceso. Si no, se tomará esta tabla como tabla inicial volviendo al inicio (punto 1).

37

recuerde Dedicar un tiempo al estudio concienzudo de las mejores claves primarias no es una pérdida de tiempo, sino una inversión.


38

Unidad didáctica 1. Modelo de datos

Pasa a 2FN Pasos a seguir: 1. Se crea partiendo de la tabla inicial una nueva tabla con los atributos que dependen funcionalmente de forma completa de la clave (con la misma clave que la tabla inicial). Esta tabla ya está en segunda forma normal. 2. Se debe crear una nueva tabla con el resto de los atributos, siendo su clave el subconjunto de atributos de la clave inicial, de los que tienen una dependencia total. 3. Se comprueba si la tabla esta en segunda forma normal. De ser así, la tabla inicial ya esta normalizada y finaliza el proceso. Si no, se tomará esta tabla como tabla inicial volviendo al inicio (punto 1). Pasa a 3FN Pasos a seguir: 1. A partir de la tabla inicial se crea una nueva tabla con los atributos que no poseen dependencias transitivas (con la misma clave que la tabla inicial). Esta tabla ya está en segunda forma normal. 2. Se debe crear una nueva tabla con el resto de los atributos, siendo su clave el subconjunto de atributos de la clave inicial, de los que tienen una dependencia total. 3. Se debe crear una nueva tabla con los dos atributos que no son clave (son los que intervienen en la dependencia transitiva) seleccionando de entre ambos al que cumpla los requisitos de clave. Esta nueva tabla está ya en tercera forma normal.


Unidad didáctica 1. Modelo de datos

EJEMPLO Ejemplo de Normalización a 3FN. TICKET.CTC(n°folio_ticket, nombre_cliente, dirección_cliente, comuna_cliente, n°ticket, {glosa_resumen, valor_resumen}, fecha_emisión, fecha_vencimiento, total_pagar, {glosa_SLM, n°llamadas_SLM, unidad_cargo, valor_SLM}, total_llamadas_SLM, total_unidades_cargo_SLM, total_valor_ SLM, {glosa_abono, valor_abono}, total_abonos, {glosa_cargos, valor_cargos}, total cargos, {n°portador, {ciudad_llamado, n°teléfono, fecha_llamada, cód_llamada, valor_llamada}, total_portador}, total_larga_distancia). 1FN TICKET.CTC(n°folio_ticket, nombre_cliente, dirección_cliente, comuna_ cliente, n°ticket, fecha_emisión, fecha_vencimiento, total_pagar, total_llamadas_SLM, total_unidades_cargo_SLM, total_valor_SLM, total_abonos, total cargostotal_larga_distancia). RESUMEN_TICKET(n°ticket + n°línea resumen, glosa_resumen, valor_resumen) SLM.TICKET(n°ticket + correlativo SLM, glosa_SLM, n°llamadas_SLM, unidad_cargo, valor_SLM) ABONO.TICKET(n°ticket + correlativo abono, glosa_abono, valor_abono) CARGOS.TICKET(n°ticket + cód.cargo, glosa_cargos, valor_cargos) ** Supone, cargos estan tipificados en otra tabla** DETALLE.LARGA.DISTANCIA(n°ticket + n°portador, {ciudad_llamado, n°teléfono, fecha_llamada, cód_llamada, valor_llamada}, total_portador) DETALLE.LARGA.DISTANCIA(n°ticket + n°portador, total_portador) DETALLE PORTADOR(n°ticket + n°portador + n°llamada, ciudad_llamado, n°teléfono, fecha_llamada, cód_llamada, valor_llamada) 2FN CARGOS.TICKET(n°ticket + cód cargo, valor_cargo)

39


40

Unidad didáctica 1. Modelo de datos

recuerde Los datos redundantes desperdician el espacio de disco y crean problemas de mantenimiento. La normalización incluye reglas para organizar la base de datos y así evitar el desperdicio de espacio.

CARGOS(cód.cargo, glosa_cargo) 3FN TICKET.CTC(n°ticket + rut_cliente, n°folio_ticket, nombre_cliente, dirección_cliente, comuna_cliente, fecha_emisión, fecha_vencimiento, total_pagar, total_llamadas_SLM, total_unidades_cargo_SLM, total_valor_SLM, total_abonos, total cargostotal_larga_distancia). CLIENTE(rut cliente, nombre_cliente, dirección_cliente, comuna_cliente)

1.6 El modelo físico de datos. Ficheros de datos. El Diseño Físico de la Base de Datos se basa en el modelo de datos de lógica global y la documentación que describe el modelo lógico. La metodología comienza refinando los modelos conceptuales locales para construir los modelos de datos lógicos locales y posteriormente usar los modelos lógicos para derivar un grupo de relaciones. Los modelos lógicos y las relaciones derivadas se validaron usando la normalización, y contra las transacciones que deben soportar los usuarios. La fase del diseño de la Base de Datos lógica se terminó con la fusión de los modelos de datos locales (con el criterio de cada usuario de la empresa) así como la creación de un modelo de datos global (representado por todos los criterios del usuario de la empresa). En la tercera fase de la metodología del diseño de la Base de Datos el diseñador de la misma debe decidir como trasladar su diseño (las entidades, atributos, relaciones y fuerzas) a un diseño de la Base de Datos física. El diseñador también debe poder seleccionar una estrategia adecuada para el almacenamiento de acuerdo con su uso. El diseño físico de la base de datos se basa en la elaboración de una descripción, implementación, almacenamiento secundario de la Base de Datos, y describe el almacenamiento de estructuras y métodos de acceso que se usan para conseguir un acceso eficiente a los datos. El Diseño Físico de la Base de Datos constituye la última etapa del proceso de diseño donde, teniendo presentes los requisitos


Unidad didáctica 1. Modelo de datos

de los procesos, las características del Sistema operativo, el Hardware y el propio SGBD se tratan de conseguir los siguientes objetivos: ––Disminuir los tiempos de respuesta. ––Optimizar el uso de recursos. ––Evitar la reorganización. ––Dotar de la máxima seguridad. ––Minimizar el espacio de almacenamiento. En resumen lo que se trata de alcanzar es que se cumplan los objetivos de sistema y así lograr optimizar el ratio coste/beneficio. Así no existe un modelo formal para el Diseño Físico (por ejemplo, el modelo relacional para el diseño lógico), pero el Diseño Físico es altamente dependiente del producto comercial que se realiza hasta ese momento. El Diseño Físico está formado por entradas y salidas. En las entradas cabe destacar, además de los objetivos del Diseño Físico, los recursos lógicos, los recursos de una máquina, el esquema lógico y la información existente sobre las aplicaciones (tiempos de seguridad y respuesta). Partiendo de las entradas, se obtendrá una salida con las normas de seguridad, especificaciones relativas al el ajuste y estructura interna. El problema del Diseño Físico para el administrador de la Base de Datos consiste en dotar de un conjunto eficiente de estructuras que permitan el acceso optimizado para la toma de decisiones. Entre los instrumentos más adecuados del Diseño Físico se encuentra el problema de la correcta selección de los índices secundarios. Tras diseñar las aplicaciones se debe conocer cuales son las consultas más frecuentes y prioritarias a la Base de Datos, por lo que se debe crear un índice secundario que ayude a la localización de las filas seleccionadas en esas consultas para así reducir los accesos a disco. Uno de los objetivos del Diseño de la Base de Datos Física es el óptimo almacenamiento de datos. Así hay un número de factores que debemos usar para medir de forma eficiente: ––Introducción de transacción: se pueden procesar un cierto número de transacciones en un intervalo de tiempo. En ciertos sistemas, por ejemplo en reservas de líneas de aviones, al introducir una transacción grande, será crítico el éxito total del sistema en un tiempo razonable.

41


42

Unidad didáctica 1. Modelo de datos

––Tiempo de reacción: es el tiempo transcurrido para finalizar una sola transacción. Desde el punto de vista de los usuarios se querrá minimizar el tiempo de reacción tanto como sea posible. Hay algunos factores que influyen en el tiempo de reacción sobre los que el diseñador no tendrá control. ––Almacenamiento en disco: es la cantidad de espacio necesario para el almacenamiento de los ficheros de la Base de Datos. El diseñador querrá minimizar la cantidad usada de almacenamiento del disco. El diseñador debe estudiar todas las opciones para conseguir un balance razonable. Por ejemplo, al aumentar la cantidad de datos almacenados, debe disminuir el tiempo de respuesta, o bien introduciendo una transacción. El diseño inicial de la Base de Datos Física no se considerará como estática, pero se considerará como una estimación de su funcionamiento operacional. Para mejorar el funcionamiento del diseño físico de la Base de Datos se debe ser consciente de cómo interactúan y afectan al funcionamiento del sistema los componentes básicos del Hardware, que son:

recuerde Mientras que en el diseño lógico se especifica qué se va a guardar en la base de datos, en el diseño físico se especifica cómo se guardan los datos. El diseñador debe conocer perfectamente toda la funcionalidad del SGBD concreto que se vaya a utilizar. El diseño físico no es una etapa aislada, y algunas decisiones que se tomen durante su desarrollo pueden provocar una reestructuración del esquema lógico.

––Memoria principal: El acceso a la memoria principal es mucho más rápido que el acceso al almacenamiento secundario. Se debe contar siempre con tener un mínimo del 5% de la memoria principal disponible, sin sobrepasar el 10% disponible, ya que de otra forma la memoria principal no se está usando de forma óptima. Cuando hay insuficiente memoria para acomodar todos los procesos el sistema operativo transfiere las páginas solicitadas, el sistema operativo deberá transferirlas desde el disco. Algunas veces se vuelve necesario intercambiar los procesos desde la memoria al propio disco y liberar memoria. También hay problemas con la memoria principal al ejecutar un intercambio o realizar una paginación. ––CPU: la CPU controla el proceso de ejecución y las tareas de recursos de otros sistemas. El principal objetivo de este componente es la prevención del argumento en cada proceso cuando se espera la CPU. La CPU se encuentra saturada cuando cada sistema operativo realiza demasiadas llamadas a los programas en la CPU. Esto suele ser el resultado de una excesiva paginación o intercambio. ––Disco de Entradas y Salidas: en bases de datos grandes hay una cantidad importante del disco I/O para el almacenamiento y recuperación de datos. El uso del disco (disk) I/O tiene una velocidad recomendable, cuando esta velocidad es excedida se produce una saturación. La forma en la que los datos se organizan en el disco puede tener un mayor impacto, especialmente en el funcionamiento del disco. Se recomienda que el almacenamiento se distribuya uniformemente por el almacenamiento en los drivers para así reducir la posibilidad de que haya problemas.


Unidad didáctica 1. Modelo de datos

1.6.1 Descripción de los ficheros de datos. El diseñador es el encargado de especificar las estructuras de los ficheros que se usan para representar cada relación. Hay distintos tipos de ficheros involucrados, así: ––El fichero del sistema operativo debe estar separado del fichero de la Base de Datos. ––El fichero de recuperación debe estar separado del resto de la Base de Datos. ––El fichero de la Base de Datos Principal debe estar separado de los ficheros indexados. El objetivo de este diseño es el de seleccionar un fichero óptimo para la empresa, para cada relación. 1.6.2 Tipos de ficheros. Veremos los principios para seleccionar el mejor fichero para la organización basada en los siguientes tipos de ficheros: ––Heap. ––Hash. ––Árboles B ––Método de Acceso Secuencial Indexado (ISAM). Heap El fichero de organización Heap es una estructura de almacenamiento que se presenta como buena en las siguientes situaciones: ––Cuando los datos cargan el volumen dentro de la relación. Por ejemplo, para introducir datos en una relación tras ser creada; se deben insertar un conjunto de registros en la relación. Al seleccionar Heap como el fichero inicial de la organización se debe ser más eficiente para la correcta reestructuración del fichero después de que las inserciones fueran completadas. ––Cuando cada tupla en la relación fue recuperada (en algún cierto orden) se accede a la relación cada tiempo. Por ejemplo, para recuperar las direcciones de todos los propietarios de una casa.

43


44

Unidad didáctica 1. Modelo de datos

––Cuando la relación es solo unas pocas páginas. En este caso, el tiempo para localizar un cierto registro es corto, aún si la relación completa fue buscada. ––Cuando la relación incluye una estructura de acceso adicional, de igual forma que ocurre con una clave indexada, el almacenaje Heap puede usarse para mantener espacio. Los ficheros Heap son inadecuados cuando solo son accesibles las tuplas seleccionadas de una relación. Hash Los ficheros Hash es una buena estructura de almacenamiento cuando las tuplas se recuperan basadas en un modelo exacto del campo valor. Método de Acceso Secuencial Indexado (ISAM) El fichero de organización secuencial indexado es una estructura de almacenamiento mucho más versátil que la técnica de hashing. Esto supone recuperaciones que se basen en un modelo de clave exacta, llamado modelo patrón, que tiene un rango de valores, y parte de la especificación de la clave. El índice ISAM es estático, creándose en la definición del fichero. Esta forma de funcionamiento de un fichero ISAM se deteriora al actualizar la relación. La actualización también causa perder el acceso de la clave secuencial en el fichero ISAM. Así que recuperar correctamente la clave de acceso puede ser más lento. Estos dos problemas se vencen por los ficheros de organización árboles B+ . Debido a que el índice es estático, los árboles B+, para acceder a la indexación pueden ser fácilmente dirigidos. Arboles B+ El fichero de organización Arboles B+ es también más versátil que Hashing. Este modelo supone recuperaciones que se basan en el modelo exacto de clave, en el modelo patrón, con rango de valores, y parte de la especificación de la clave. Los Árboles B+ tienen índices dinámicos, crecen cuando la relación crece. También el ISAM es distinto, el funcionamiento de un fichero Arbol B+ no se deteriora cuando se actualiza la relación.


Unidad didáctica 1. Modelo de datos

Los árboles B+ también mantienen el orden de la clave de acceso cuando el fichero es actualizado. Al recuperar las tuplas en el orden de la clave de acceso es más eficiente que ISAM. Si la relación no es frecuentemente actualizada, la estructura ISAM será más eficiente cuando se tiene un nivel menos de índices que en los árboles B+, y los nodos hojas contienen los registros punteros. La elección para organizar los ficheros deben estar totalmente documentados, junto con las razones de la elección. La importancia de documentar radica en la necesidad de seleccionar un estándar donde existen algunas alternativas. 1.6.3 Modos de acceso. Llamamos organización de ficheros a la forma en que se sitúan los datos que se encuentran en los registros en el soporte informático (cinta, disco duro,..) durante su grabación (forma de implantación física del fichero sobre el soporte). Puede ser: ––Directa, aleatoria, relativa. ––Secuencial. ––Indexada. Conocemos como modo de acceso al proceso a seguir para poderse colocar en un registro en concreto y posibilitar realizar una operación de grabación o lectura del mismo. Puede ser: ––Directo. ––Secuencial. Organización secuencial: los registros se graban de forma secuencial, o sea, uno a continuación de otro, sin dejar huecos entre ellos. ––Correspondencia absoluta entre orden lógico y físico lógico ––Para llegar a la posición N se deben leer N-1 registros ––Ordenados por algún campo para hacer las operaciones más sencillas

45


46

Unidad didáctica 1. Modelo de datos

––No posibilita la inserción de registros entre los previamente grabados ––Ficheros con índice de uso muy elevado y estables ––Aprovechamiento del espacio: sin dejar huecos entre los registros ––Acceso veloz al siguiente registro y permite consultar de varios registros ––Dispositivos de acceso directo y secuenciales ––- Muy extendido entre los lenguajes de programación Organización Directa: ––Dota de independencia entre la posición en el soporte y el orden de alta de registros. ––Desperdicia el espacio al dejar huecos entre registros. ––Sólo es posible en dispositivos de acceso directo. ––El espacio se divide en celdas, con un acceso directo a los registros ––Tiempo acceso rápido a cualquier registro sin necesidad de pasar por anteriores. ––Posibilita la inserción de cualquier registro intermedio.

recuerde

La Posición del registro dependerá del campo clave:

Según las características que queramos de la BBDD debemos elegir entre el modo de acceso a los ficheros, que sea directo, secuencial o bien indexado.

––Técnicas de direccionamiento: convierten el valor incluido en la clave en la dirección de la celda donde el registro se guarda. ––Elección de la técnica óptima. ––Sencillo de aplicar. ––Hay pocos huecos entre registros. ––No produce colisiones sinónimos que den lugar a sobreflujos. 1.6.4 Organización de ficheros. El almacenamiento de los datos en un almacenaje permanente es de total importancia para poder guardar adecuadamente y de forma segura la información de una Base de Datos. Un archivo se organiza de forma lógica como una secuencia de registros; siendo los grupos de registros los que se asignan a bloques del disco. Por lo general se usará el esquema de archivos con registros de longitud fija. Se debe contar con una visión lógica tipo multi-lista para terminar como: ––Directo. ––Secuencial. ––Relativo.


Unidad didáctica 1. Modelo de datos

47

Los sistemas relacionales de bases de datos almacenan todas sus relaciones en un archivo. Esto es cómodo y sencillo, pero al incrementar el tamaño de la Base de Datos se provoca que este enfoque sea menos satisfactorio, debido a que la mayoría de las tareas de entrada y salida quedan encargados al Sistema Operativo. En sistemas de Base de Datos de gran tamaño no se dependerá del Sistema Operativo; ya que el Sistema Operativo visualiza la Base de Datos como un repositorio donde almacenar todas sus relaciones, abandonando la gestión de los archivos a manos del sistema gestor de la Base de Datos. Esto conllevará muchas menos operaciones de entrada y salida, y más transparencia entre la memoria principal y el buffer. También cabe indicar que es preciso almacenar el diccionario de datos que realmente es una base de datos que contiene: ––Nombre de los atributos. ––Nombre de las relaciones. ––Dominio de los atributos. ––Nombres y definiciones de las vistas. ––Restricciones de integridad. ––Estadísticas. ––Perfiles de acceso y usuarios. ––Índices: ––Nombre del índice ––Tipo de índice. ––Atributos. ––Nombre de la Relación.

1.7 Transformación de un modelo lógico en un modelo físico de datos. El diseño de las bases de datos del sistema se podrá realizar la arquitectura de tres niveles, según la que partiendo del modelo conceptual se puede llegar al esquema físico o interno.

recuerde Se pueden definir archivos de longitud fija o variable.


48

Unidad didáctica 1. Modelo de datos

El esquema conceptual representa los recursos que hay en el sistema y se define sin considerar cuestiones físicas. Para definir este esquema podemos contar con la ayuda de herramientas de modelado, tales como los diagramas, como el modelo Entidad/ Relación (E/R) y el modelo E/R extendido. Los componentes del modelo E/R son: ––Entidades: representan un objeto real o abstracto sobre el que almacenar información. ––Relación: define una asociación entre entidades. ––Atributos: estos representan características o propiedades de una relación o entidad. ––Cardinalidad: número máximo de ocurrencias de una entidad que participan en una relación. La cardinalidad puede ser de uno a uno, de uno a muchos o de muchos a muchos. ––Grado de una relación: número de entidades que participan en una relación, que pueden ser reflexivas (una entidad se puede relacionar con sí misma), binaria (en la que participan dos entidades) y n−aria (en la que participan n entidades). Dentro del modelo E/R extendido aparecen otros conceptos: ––Exclusividad: es un tipo de relación peculiar en la que una entidad se asocia a varias entidades, relacionando una entidad con otra de entre las posibles. ––Agregación: conversión de una relación junto con sus entidades relacionadas, en una misma entidad para que pueda relacionarse con otra entidad. ––Jerarquía: una entidad mantendrá una relación de super-tipo con otras entidades. Es el caso de la especialización y la generalización. Una vez que se tenga el modelo conceptual (representado en el diagrama E/R) se debe transformar en un modelo lógico. La secuencia de pasos que se deben aplicar para lograr dicha transformación son: ––Cada entidad se debe transformar en una tabla y sus atributos se deben transformar en atributos de la tabla.


Unidad didáctica 1. Modelo de datos

––Las relaciones de uno a muchos propagan la clave principal de la entidad con la cardinalidad uno a la entidad con cardinalidad n. Las relaciones de muchos a muchos se deben transformar en tablas cuya clave se forma por la clave primaria de las entidades relacionadas. Otra herramienta usada para el diseño lógico de datos es el diagrama de estructura de datos, dónde están los diferentes registros que forman la base de datos y las relaciones entre los mismos. Pueden establecerse una correspondencia entre los diagramas E/R y los diagramas de estructura de datos, permitiendo el paso de un tipo de diagrama a otro.

49

recuerde A través de diversas técnicas de refinamiento se puede llegar del modelo lógico al modelo físico, que se usa para describir datos en un nivel más bajo, más cercano al SGBD.

1.8 Herramientas para la realización de modelos de datos. Las herramientas CASE (Computer Aided Software Engineering, o su traducción: Ingeniería de Software Asistida por Ordenador) son aplicaciones informáticas cuyo fin es aumentar la productividad en el desarrollo de software mientras que buscan una reducción en el coste de tiempo y dinero, de las mismas. Estas herramientas nos ayudarán en todos los aspectos del ciclo de vida del desarrollo del software para realizar tareas tales como la realización del diseño del proyecto, calculo de costes, implementación automática de parte del código, la compilación automática, incluso la documentación o la detección de errores. La idea principal es facilitar la comunicación entre distintos componentes de un equipo de trabajo. La herramienta CASE debe generar el código base de una base de datos física. La herramienta CASE se basa en estándares, y debe alertar e impedir que el diseñador incurra en malas prácticas. Estas herramientas nos permiten elaborar los modelos de datos siguiendo unos pasos guiados por un asistente, así por ejemplo: ––Definir el tipo de modelo; ––Crear las entidades; ––Asignar los atributos; ––Crear las relaciones; ––Crear el modelo físico partiendo del modelo lógico; ––Crear la base de datos a partir del modelo físico.

recuerde Las herramientas CASE serán de gran ayuda para ciertas fases de la definición de la base de datos.



02 SISTEMAS DE GESTIÓN DE BASES DE DATOS (SGBD) 2.1 Definición de SGBD 2.2 Componentes de un SGBD. Estructura 2.2.1 Gestión de almacenamiento 2.2.2 Gestión de consultas 2.2.3 Motor de reglas 2.3 Terminología de SGBD 2.4 Administración de un SGBD 2.4.1 El papel del DBA 2.4.2 Gestión de índices 2.4.3 Seguridad 2.4.4 Respaldos y replicación de bases de datos 2.5 Gestión de transacciones en un SGBD 2.5.1 Definición de transacción 2.5.2 Componentes de un sistemas de transacciones 2.5.3 Tipos de protocolos de control de la concurrencia 2.5.4 Recuperación de transacciones 2.6 Soluciones de SGBD 2.6.1 Distribuidas 2.6.2 Orientadas a objetos 2.6.3 Orientadas a datos estructurados (XML) 2.6.4 Almacenes de datos (datawarehouses) 2.7 Criterios para la selección de SGBD comerciales


52

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

2. Sistemas de gestión de bases de datos (SGBD) Para que una base de datos tenga éxito, su administrador debe ser eficiente. Se deben perseguir dos objetivos: Administración de los Datos. Administración de la Base de Datos. El Administrador de los Datos (A.D.) es el responsable de la implementación y administración de los planes, políticas, procedimientos y prácticas para la protección, organización y uso eficiente de los datos. Esta función suele ser asignada a un grupo de personas de alto rango en la organización, personas que conozcan las necesidades de información en todos los niveles de la organización, en especial a nivel de gerencia. El Administrador de Base de Datos (DBA) es el responsable de administrar la base de datos durante su ciclo de vida. Debido a que el objetivo del DBA es administrar la base de datos en sí, y no los datos, se debe preocupar de las políticas de seguridad, recuperación, backups, etc. Se llama sistema gestor de base de datos distribuido (SGBD) a un sistema software que gestiona la base de datos distribuida de forma que dicha distribución sea transparente para sus usuarios. Un SGBD se compone de una sola base de datos lógica, y que físicamente se dividen fragmentos situados en distintos nodos, que están interconectados por una red de comunicaciones. Así van a existir aplicaciones locales que sólo accederán a los datos que se almacenan en el mismo nodo, y otras aplicaciones globales que acceden a datos de varios nodos. Así el SGBD ejecutará las funciones necesarias para dar servicio a este tipo de aplicaciones.

recuerde Hay muchos tipos de SGBD diferentes según los tipos y tamaños de datos distintos que gestionan, la memoria de las máquinas y sus propias características.

Además de la fragmentación, en el contexto de la base de datos distribuida se hablará también de replicación, que consiste en mantener réplicas de fragmentos en varios nodos, según la política de replicación de la empresa, que puede ir desde una replicación mínima (un fragmento se replica en otro nodo) a una replicación total (todos los fragmentos se replican). El SGBD debe asegurar la consistencia de los fragmentos que son replicados (una actualización en un fragmento debe desencadenar la actualización en todas sus réplicas). Un caso de replicación son los conocidos como almacén de datos, que son repositorios que proporcionan soporte para consultas complejas, ayudando a la decisión para numerosas fuentes de datos, ya que almacena una copia de todos los datos en un mismo lugar. Los almacén de datos se pueden ver como un caso de replicación asíncrona con una actualización poco frecuente.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

2.1 Definición de SGBD. Un Sistema Gestor de Bases de Datos es una aplicación que permite definir, crear y mantener las bases de datos. Por medio de un lenguaje de definición de los datos se podrá definir los tipos de datos, la estructura de la base de datos y las restricciones entre los datos. A través de un lenguaje de gestión de datos se podrá insertar, consultar, actualizar, eliminar datos y otras operaciones que nos permitan realizar el programa. Todo esto se realiza usando un lenguaje no procedural, con el que el usuario sólo tiene que especificar qué datos se deben obtener sin ser especificados como obtenerlos. Suele usarse el lenguaje SQL (Structure Query Language, o Lenguaje de consultas estructurado), que es un lenguaje no procedural estandarizado que usan los sistemas gestores de bases de datos relacionales. Objetivos de un sistema gestor de datos: ––Seguridad: la seguridad es la protección de la base de datos frente a usuarios no autorizados. ––Integridad de los datos: se refiere a un conjunto de reglas y acciones precisas para mantener la validez de los datos. El sistema gestor de la base de datos se encargará de mantener dichas restricciones. Las autorizaciones podrán ser de varios tipos (consulta, modificación, borrado,…) Dichas autorizaciones se administran por medio de contraseñas. ––Control de la concurrencia de datos: cuando dos o más usuarios quieren acceder a un mismo dato de forma concurrente el primero que acceda a él bloqueará el acceso a éste al resto de los usuarios para así asegurar que si actualiza dicho dato, el resto de usuarios accedan ya al dato actualizado. ––Redundancias mínimas: permiten que no se repitan los datos.

53


54

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Abstracción de la información: el sistema gestor de la base de datos dota de una visión abstracta sobre cómo se almacenan la información en la base de datos. ––Independencia de los datos: los datos son independientes de los programas a los que aplica. ––Tiempo de respuesta: asegura un tiempo de respuesta reducido en la gestión de los datos. ––Respaldo y recuperación de los datos: un sistema gestor de bases de datos dota de las herramientas necesarias para la conservación de copias de seguridad de cada fichero como prevención ante las posibles caídas del sistema. Al proceso de copia de los datos de la base de datos se denomina backup. Al proceso contrario, el de devolver los datos de las copias se denomina recuperación.

recuerde Pese a los posibles inconvenientes que deriva el uso de un SGBD, se hace mucho mejor su uso para el correcto funcionamiento y gestión de la(s) base(s) de datos.

––Consistencia de los datos: cuando hay dos datos repetidos en diferentes archivos el sistema gestor de la base de datos garantiza que los datos se actualicen en ambos ficheros. Inconvenientes de los sistemas gestores de bases de datos: ––Complejidad; ––Coste; ––Espacio que ocupa en el disco. Generalmente los sistemas gestores de bases de datos se clasifican dependiendo del modelo lógico en el que se basan. Respecto a los modelos lógicos hay tres tipos de modelo lógicos usados más frecuentemente en los SGBD comerciales.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Modelo relacional: es un modelo que se basa en la idea de relación que se representa gráficamente con una tabla. La base de datos es vista por el usuario mediante un grupo de tablas cargadas con datos y las relaciones entre ellos se manifiestan en forma de asociación. Las relaciones tienen un nombre unívoco y un conjunto de columnas. ––Modelo jerárquico: fue el primer modelo de datos que se creó, y se basa en el almacenaje de los datos en una serie de registros en forma de árbol. Para crear un enlace entre los distintos registros se usan relaciones padre/ hijo, y no se permiten relaciones entre hijos ya que se estructura en forma de árbol. Cada registro dota de los datos relacionados con él mismo. Este modelo proporciona un alto rendimiento frente a las inserciones, modificaciones y eliminación de los registros. ––Modelo en red: se llama así porque tiene los datos representados en forma una red de registros. Permite relaciones entre hijos. Como desventajas presenta que: ––no tiene un lenguaje de consultas de alto nivel (para esto habría que indicarle al SGBD como obtener los datos), ––es un modelo de dificil manipulación ya que se conocen las direcciones físicas de los datos, ––no proporciona independencia lógica ni física, ––no proporciona abstracción de la información. Atendiendo al número de usuarios existen dos tipos: ––SGBD multiusuario: dan servicio a varios usuarios simultáneamente. ––GBS monousuarios: dan servicio a un solo usuario de forma simultánea, y normalmente se instala en los PCs. Atendiendo a la distribución de la base de datos: hay varios tipos de arquitecturas, siendo la mas frecuente la arquitectura Cliente/ Servidor. La arquitectura cliente/ servidor es un sistema centralizado. Los SGBD centralizados podrán atender a más de un usuario, pero el SGBD y la base de datos se almacenan totalmente en un sólo servidor. En el lado servidor, el motor de la base de datos se responsabiliza de la administración de los recursos, de la administración de la seguridad, de la administración de los datos, de las consultas y especialmente de la integridad de los datos. Este

55


56

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

recuerde Elegir el modelo adecuado dependerá de las características propias de cada sistema, pero sobre todo de la experiencia y soltura del desarrollador de la base de datos.

SGBD está diseñado para aceptar consultas en SQL desde una aplicación generalmente en forma de consultas que devuelven un grupo de resultados al cliente. En el lado cliente se instalarán unas aplicaciones que permitirán acceder a los recursos de la base de datos. Para comunicar la base de datos con el SGBD se hará por medio de un lenguaje como el SQL. Los clientes realizan funciones como la generación de informes y consultas, la captura y validación de los datos de entrada, la gestión de los periféricos. El cliente no conoce la lógica del servidor, sólo conocerá un interfaz para acceder al servidor. El cliente no dependerá de la ubicación física del servidor ni del sistema operativo del servidor. Los cambios en el servidor conllevan pocos o ningún cambio en el cliente. 2.2 Componentes de un SGBD. Estructura. Los SGBD deben realizar tres funciones para ser considerarse válidos. Estas funciones son: DESCRIPCIÓN O DEFINICIÓN Permite al diseñador de la base de datos crear las adecuadas estructuras para integrar de forma adecuada los datos. Esta función es la que permite definir las tres estructuras de la base de datos, que se relaciona con sus tres esquemas. ––El nivel interno describe la estructura física del almacenamiento de la base de datos. El esquema que contiene usa un modelo físico de los datos, e identifica los caminos de acceso para la base de datos y describe también los detalles para su correcto almacenamiento. ––El nivel conceptual contiene un esquema conceptual que describe la estructura de toda la base de datos para un conjunto de usuarios. El esquema conceptual se ocupa de ocultar los detalles de las estructuras físicas de almacenamiento y se centra en describir tipos de datos, vínculos, entidades, restricciones y las operaciones de los usuarios. A este nivel se puede usar un modelo de datos de alto nivel o uno de implementación. ––El nivel externo incluye varios esquemas externos, y cada uno de ellos describe la parte de la base de datos que atañe a un grupo de usuarios, además de ocultar a ese grupo el resto de la base de datos. En este nivel se podrá usar un modelo de datos de implementación o uno de alto nivel. Los tres esquemas son descripciones de los datos; mientras que los datos realmente se encuentran en el nivel físico.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

En un SGBD se basa en la arquitectura de tres esquemas, cada conjunto de usuarios referencia a su propio esquema externo; así, el SGBD debe transformar una solicitud en términos del esquema conceptual, para luego hacerlo a una solicitud en el esquema interno que se va a procesar sobre la base de datos que se almacena. Si la solicitud se materializa en la obtención de datos, será necesario cambiar el formato de los datos que se extraen de la base de datos almacenada para que coincida con la vista externa del usuario. El proceso de transformar las solicitudes y resultados, de un nivel a otro se conoce como correspondencia. Esta arquitectura (de tres esquemas) puede servir para explicar el concepto de independencia respecto a los datos, que se pueden definir como la capacidad para modificar el esquema de un nivel del sistema de base de datos sin que se deba modificar el esquema del nivel inmediato superior. Se pueden definir dos tipos de independencia, respecto a los datos: ––La independencia física respecto a los datos es la posibilidad de modificar el esquema interno sin deber alterar el esquema conceptual o los externos. Será preciso modificar el esquema interno para poder reorganizar ciertos archivos físicos para así poder mejorar el rendimiento de las operaciones de actualización o de obtención. Si la base de datos contiene aún datos idénticos, no será necesario modificar el esquema conceptual. ––La independencia lógica respecto a los datos es la posibilidad de modificar el esquema conceptual sin deber alterar ni los esquemas externos ni los programas de aplicación. Se podrá modificar el esquema conceptual para ampliar la base de datos (al añadir un nuevo tipo de registro o un elemento de información), o bien para reducir la base de datos (al eliminar un elemento de información o un tipo de registro). Para el segundo caso, los cambios no deben influir en los esquemas externos, porque solo se refieren a los datos restantes. Esta función se realiza usando el lenguaje de descripción de datos (DDL). Por medio de este lenguaje: ––Se definirán las estructuras de datos ––Se definirán las reglas que deben cumplir los datos ––Se definirán las relaciones entre los datos

57


58

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

MANIPULACIÓN

recuerde El SGBD da independencia física y lógica de los datos. Se hace necesario usar un lenguaje para poder realizar las diferentes funciones de la gestión.

Permite usar y también modificar los datos de la base de datos. Se realiza por medio del lenguaje de modificación de datos (DML). Usando este lenguaje se puede: ––Buscar datos ––Añadir datos ––Modificar datos ––Eliminar datos Para poder realizar consultas, o lo que es lo mismo, buscar datos en la base de datos, se usan lenguajes de consulta de datos (DQL). FUNCIÓN DE CONTROL Por medio de esta función los administradores tienen mecanismos que les permiten proteger las visiones de los datos para cada usuario, además de dar permisos de creación y modificación de esos usuarios. Aquí se suelen incluir las funciones de carga de ficheros, copia de seguridad, protección ante ataques, configuración,... Para implementar esta función se utiliza el lenguaje de control de datos o DCL. Sistema operativo Se trata de una capa externa al SGBD, que será la única capa que realmente acceda a los propios datos. Estructura Multicapa El proceso que realiza un SGBD está formado por varias capas que actúan como interfaces entre los datos y el usuario. Fue el organismo ANSI, con su modelo X3/SPARC la que en 1998 introdujo una mejora de su modelo de bases de datos por medio de un grupo de trabajo llamado UFTG (User Facilities Task Group, o lo que es lo mismo, Grupo de Trabajo para las Facilidades de Usuario). Este modelo tiene se centra en el usuario habitual de la base de datos, modelando el funcionamiento de la base de datos en una sucesión de capas cuyo fin es proteger y ocultar la parte interna de las bases de datos. Desde este punto de vista para poder llegar a los datos se debe pasar una serie de capas que van desde la parte más externa, entrando más en la realidad física de la base de datos. Diccionario de Datos Este elemento posee todos los metadatos. Esta capa traduce las solicitudes de


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

los clientes en instrucciones que referenciarán al esquema interno de la base de datos. Facilidades de Usuario Son las herramientas que permiten un acceso más sencillo a los datos. Actúan de interfaz entre la base de datos y el usuario, siendo el único elemento que gestiona el usuario. Capa de Acceso a Datos La capa de acceso a datos permite comunicar al diccionario de datos con las aplicaciones de usuario, usando las herramientas de gestión de datos que incorpora el SGBD. Estandarización Es uno de los aspectos que todavía no ha sido determinado al completo, sigue en estudio. Desde que llegaron los primeros gestores de base de datos se intentó estandarizar, poder llegar a un acuerdo para que hubiera una estructura común para ellos, para así realizar un mejor y más eficiente aprendizaje y gestión de este software. Este acuerdo nunca se ha materializado, y aun no hay estándares totalmente aceptados. Aunque hay propuestas de estándares que sí funcionan como tales. El organismo ANSI ha sido el referente como constructor de SGBD. ANSI profundiza definición de cómo debe ser el proceso de creación y utilización de los niveles de los SGBD. En el modelo ANSI incluye hay tres modelos, siendo modelo el grupo de normas que permite crear esquemas (diseños) de la base de datos. Estos modelos pueden ser: externo, conceptual e interno. ––Los esquemas externos incluyen la información preparada para el usuario final, el esquema conceptual tendrá las relaciones y los datos de la base de datos y el esquema interno incluye la preparación de los datos para ser almacenados. ––El esquema conceptual incluye la información lógica de la base de datos. Su estructura y las relaciones existentes entre los datos. ––El esquema interno contiene información sobre cómo se almacenan los datos en disco. Es el esquema más cercano de la organización real de los datos.

59


60

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

El modelo ANSI es la propuesta teórica más importante sobre como debiera funcionar un sistema gestor de bases de datos. Núcleo El núcleo de la base de datos se encarga de traducir las instrucciones necesarias, para luego prepararlas para su adecuada interpretación por el sistema. Realiza también la traducción física de todas las peticiones. Un SGBD se divide en módulos que se ocupan de tareas específicas. Normalmente el sistema operativo da una serie de funciones básicas que se usarán por el SGBD para realizar tareas más complejas. Los componentes principales del SGBD son: Gestor de ficheros (File System o File Manager) Se encarga de asignar espacio en disco, así como de mantener la estructura de los ficheros que almacenará los datos. Será también el responsable de localizar el bloque de información que se precisa, por medio de una solicitud al Gestor de discos del sistema operativo, y también proporcionarlo al Gestor de Datos. Puede ser que el SGBD tenga uno propio, o se puede implementar como un interfaz al Gestor de Ficheros del Sistema Operativo. Gestor de datos (Data Manager) Constituye el principal componente del SGBD, siendo sus principales funciones:

recuerde Usar estándares siempre nos ayudará a mantener bajo control nuestro sistema, ya sea de base de datos o de cualquier otro tipo.

––Da acceso a los datos interactuando con el sistema operativo o con el gestor de ficheros propio. ––Interviene en operaciones de backups y recuperaciones. ––Sincroniza las operaciones de los usuarios que accedan de forma concurrente a la base de datos. ––Garantiza que se siguen y mantienen los requisitos de consistencia e integridad de los datos, además de controlar la seguridad. Compilador de Lenguaje de Definición de Datos (DDL, Data Definition Languaje). Transforma las ordenes de definición de esquemas en tablas, almacenando dicha información en el DDL. Ficheros de datos, que guardan los datos de la base de datos. Procesador de consultas (Query Processor) Interpreta las consultas (queries) de los usuarios para convertirlos en una serie


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

de operaciones que se enviarán al Gestor de Datos para su posterior ejecución. Entre sus funciones se encuentran la optimización de dichas operaciones, manejando la información del diccionario de datos y hallando una estrategia eficiente para su ejecución (plan de ejecución). Pre-compilador de Lenguaje de Manipulación de Datos (DML, Data Manipulation Languaje). Convierte las ordenes en LMD en una aplicación a llamadas a procedimientos en el lenguaje elegido. El precompilador interactúa con el procesador de consultas para la generación del código válido. Aunque no forma parte del sistema gestor de bases de datos, resulta interesante invocar al software que permite comunicarse online a los usuarios de un sistema y el sistema gestor de bases de datos, ya que éste interactúa con él estrechamente. Este software, conocido como programa de control de comunicaciones o sistema de telecomunicaciones es el intermediario que transmite los mensajes desde el usuario al sistema de bases de datos y las respuestas. Por ejemplo, programas de este tipo son TALKMASTER, CICS, IDMSDC, etc. Además, se requieren unas estructuras de datos para que los módulos del sistema gestor de bases de datos puedan implementar correctamente sus funciones; entre estas encontramos: Diccionario de datos (catálogo del sistema), almacena la información de la estructura de la base de datos. Consiste en una base de datos usada para documentar los propios datos. Es usada continuamente. Además de esta información suele contener información de auditorias y estadísticas que nos ayuden a optimizar el acceso a los datos, permitiendo el acceso rápido a elementos de información con determinados valores. Vistas de los datos ––La Vista Conceptual es la representación abstracta y total de los datos que componen la base de datos; logrando la formalización de esta por medio del Esquema Conceptual. ––Una Vista Externa, que da una visión particular de un usuario o un grupo de ellos sobre la Base de Datos. Representa una forma de definir o formalizar esta vista externa.

61


62

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––La Vista Interna es a muy bajo nivel, corresponde con el almacenaje físico de los datos de la base, realizandose sobre un Esquema Interno que constituye la formalización de los índices, de los tipos de registros almacenados, etc. Las correspondencias se definen como la asociación de representaciones diferentes para un mismo dato. El Administrador de Bases de Datos (DBA) es la persona o grupo de personas que se encarga del control general del sistema de la base de datos.

recuerde Conocer los componentes del SGBD elegido es básico para asegurarnos de que servirá para el sistema al que va a ser dedicado.

Un DSL es un lenguaje de datos, más bien es la combinación de dos lenguajes: un lenguaje de manipulación de Datos (DML) y un lenguaje de definición de datos (DDL). Este lenguaje es un enlace entre el Sistema de Base de Datos y otro lenguaje. El DSL dota de herramientas a los lenguajes tradicionales para conseguir que se integren al Sistema de Base de Datos. Podrá haber distintos tipos de DSL para un mismo sistema. DBMS corresponde al Software que gestiona todos los accesos a la Base de Datos, así cada solicitud de acceso de un usuario al sistema gestor de bases de datos se interpreta e inspecciona las correspondencias para dar una respuesta coherente a las necesidades de la consulta. 2.2.1 Gestión de almacenamiento. Un SGBD permite el almacenamiento, consulta y manipulación de los datos relativos a una base de datos que se organiza en uno o varios ficheros. La base de datos relacional, constituyen el modelo más extendido, y forman un conjunto de tablas entre las que se crean relaciones. Aunque ambos gestionen tablas, hay una serie de diferencias fundamentales entre un SGBD y una hoja de cálculo, pero lo más claro es que un SGBD permite: ––En lugar de favorecerse la visualización de todos los datos, el objetivo principal es permitir consultas complejas, con una resolución optimizada, que se expresan por un lenguaje formal. ––La forma de almacenamiento y el programa usado como servidor (el que gestiona los datos) son independientes del programa cliente (desde donde se realizan las consultas). ––El acceso concurrente a los datos por parte de varios usuarios autorizados, realizando consultas, actualizaciones de los mismos para garantizar la ausencia


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

de problemas de seguridad por accesos no autorizados, o de integridad por pérdida de datos debido al intento de varios usuarios de acceder al mismo fichero al mismo tiempo. ––El almacenamiento de los datos se hace más eficientemente aunque oculte al usuario y tenga, al contrario de lo que ocurre con las hojas de cálculo, poco que ver con la estructura con la que datos se presenta al usuario.

63

recuerde El almacenamiento se realiza en ficheros, hacia donde se lanzarán las consultas, adiciones, modificaciones y borrados.

2.2.2 Gestión de consultas. Las consultas son elementos que nos permiten realizar la búsqueda, así como mostrar y modificar datos de una o varias tablas. El gestor de consultas será el principal componente de un SGBD, que se ocupa de transformar las consultas en un grupo de instrucciones de bajo nivel dirigidas al gestor de la base de datos. El gestor de la base de datos hace de interfaz entre las aplicaciones de los programas y las consultas de los usuarios. El gestor de la base de datos va a aceptar y examinar consultas, examinando los esquemas conceptual y externo para poder determinar los registros requeridos para poder satisfacer la petición. Así el gestor de la base de datos realizará una llamada al gestor de ficheros para poder ejecutar la petición. Diseño de consulta: aquí se puede seleccionar y personalizar cada una de las partes que componen la consulta. Asistente de consultas: aquí se presentarán varios tipos de consultas predefinidas, de entre las cuales se selecciona la óptima para los datos a buscar.

recuerde Definir correctamente la consulta a realizar nos permitirá obtener los resultados esperados de la misma.


64

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

2.2.3 Motor de reglas. Un sistema de bases de datos activas es un sistema de gestión de bases de datos que contiene otro sistema destinado a la gestión y definición de reglas activas de producción. Las reglas se basan en el modelo evento–condición–acción (modelo ECA), donde cada regla reacciona ante un evento, evalúa una condición y, si es cierta, ejecutará una acción. La ejecución de las reglas se realiza bajo el control de un sistema autónomo, llamado motor de reglas, que será responsable de comprobar los eventos que ocurren y de planificar las reglas para que se ejecuten. El modelo ECA se comporta de forma sencilla e intuitiva: cuando el evento salta, si la condición es verdadera, ejecuta la acción. El disparador se activa por evento, se verificará su condición y si la condición es verdadera se ejecuta. En cambio hay diferencias importantes sobre cómo cada sistema define la activación y ejecución de disparadores. En el modelo ECA cada regla tiene tres componentes: ––Los eventos que disparan la regla. Pueden ser operaciones de actualización o consulta que se aplican sobre la base de datos. Podrán también ser eventos de caracter temporal u otro tipo de eventos externos que se definan por el usuario. ––La condición que comprueba si la acción de la regla se ejecutará.Tras ocurrir el evento disparador se evaluará una condición. ––Si no se especifica ninguna condición, la acción se ejecuta al suceder el evento. ––Si se especifica alguna condición, la acción se ejecuta sólo si ésta es verdadera. ––La acción a realizar puede ser un programa externo que se ejecute de forma automática o una transacción sobre la base de datos. Muchos sistemas relacionales tienen reglas activas simples llamadas triggers o disparadores que se basan en el modelo ECA: ––La acción es un conjunto de sentencias SQL, que pueden estar en un lenguaje de programación que se integra en el producto que se utiliza (como PL/SQL en Oracle).


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––La condición es un predicado booleano (verdadero/ falso) en lenguaje SQL. ––Los eventos son sentencias SQL para la gestión de datos (INSERT, UPDATE, DELETE). Los disparadores relacionales cuentan con dos niveles de granularidad: ––A nivel de sentencia: la activación ocurre una única vez para cada orden SQL, refiriéndose a todas las tuplas invocadas, y se comporta de forma orientada a conjuntos; ––A nivel de fila: la activación ocurre para cada tupla envuelta en la operación siendo un sistema orientado a tuplas. Los disparadores pueden ser de ejecución inmediata o diferida. La evaluación de los disparadores inmediatos suele suceder justo después del evento que lo activa. 2.3 Terminología de SGBD. La información en una base de datos se clasifica en tablas relacionadas, de forma que tengan un campo en común entre las mismas. Son las clases de entidades u objetos. Así serán estructuras de datos que contengan información común, que se clasifica en: ––Registros/ tuplas o filas: son las entidades; ––Campos, las columnas: son los atributos; ––Datos o valores: son la intersección entre fila y columna, que forman parte de un dominio o tipo de dato determinado. Entidades: Es un objeto que representa un tipo de información sobre un objeto real (bien tangible o intangible) una misma materia, el nombre de este objeto que se representa como una tabla, así suele ser un sustantivo y el identificado de la tabla. Atributos: Son las características o propiedades de todas las tablas, son los datos o campos (de un tipo concreto) que tiene cada objeto abstraído de la realidad, por lo que estos datos tienen unos valores.

65


66

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Identificador de entidad clave: Es la clave que identifica unívocamente a esta ocurrencia de la tabla, sin que haya dos ocurrencias con los identificadores claves repetidos. Clave candidata: Se llama así a cada campo candidato a identificar esa ocurrencia de esa tabla. Clave primaria: Se llama así a la que se ha elegido de entre las claves candidatas para referirse a la ocurrencia de la entidad tabla. Clave alternativa o secundaria: Es el resto de candidatas que no se han elegido como clave primaria. Descriptor de entidad: Detalla la entidad pero sin identificarla inequívocamente del resto, permite repetir con estos mismos valores de campo. Dominio: Conjunto de valores posibles que podrá tomar un atributo. Relaciones: Una relación se refiere a una asociación entre entidades. Suele nombrarse como un verbo. Al igual que ocurre en las entidades se podrá hablar de ocurrencias relacionales, que serán la asociación entre dos entidades.

recuerde Conocer las características de los sistemas es el factor más importante para la elección óptima del mismo.

Grado de relación: Número de entidades sobre las que se produce la asociación. Cardinalidad de la relación: Número máximo y mínimo de ocurrencias de una entidad en una relación. Correspondencia: El número máximo de ocurrencias de la entidad que pueden suceder en la relación. 2.4 Administración de un SGBD. 2.4.1 El papel del DBA. Los administradores de bases de datos administran dos recursos: el primero es la misma base de datos y el segundo es el sistema gestor de la base de datos y el software con el que se relaciona. El DBA se encarga de dar autorización al acceso a la base de datos, de vigilar coordinar su uso, así como de comprar los recursos necesarios de hardware y software. El DBA es el responsable cuando haya problemas como una respuesta lenta del sistema o violaciones de seguridad.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

67

Es el encargado de controlar totalmente el sistema de base de datos, siendo sus funciones principales: ––Definición de la estructura de almacenaje de la forma de acceso: Se crean las estructuras de almacenaje y de acceso correctas por medio de un conjunto de definiciones que se traducen por el compilador del lenguaje de almacenaje, así como la definición de datos. ––Definición de esquema: Es el esquema original de la base de datos se crea por medio de un conjunto de definiciones que se traducen por el compilador de DDL a un grupo de tablas que se almacenan en el diccionario de datos de forma permanente. ––Especificación de limites de integridad: Se refiere a un conjunto de restricciones que se almacenan en una estructura especial del sistema, que es consultada por el gestor de base de datos al realizar una actualización al sistema. ––Autorización para el acceso a los datos: Haciendo que sea el administrador quien regule las partes de las bases de datos podran accederse por varios usuarios. 2.4.2 Gestión de índices. Se conoce como índice a un conjunto de archivos auxiliares cuyo objetivo es el de optimizar el acceso a los archivos de datos y ordenarlos. Muchas consultas referencian únicamente a una parte de los registros de un archivo. Para reducir este gasto extra que supone la búsqueda de los registros se puede: ––Definir funciones hashing (funciones picadillo o funciones resumen) para los archivos de la Base de Datos. ––Elaborar índices para los archivos de la Base de Datos. Hay diferencias técnicas para elaborar índices y para definir funciones de hashing. Estas funciones deben ser evaluadas en términos de: ––Espacio extra necesario. ––Tiempo de acceso. ––Tiempo de inserción. ––Tiempo de eliminación.

recuerde El DBA es el responsable de la correcta gestión de la base de datos.


68

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Cada archivo suele tener varios índices o funciones de hashing asociadas. El conjunto de atributos que se usa para buscar los registros se conoce como clave de búsqueda. Una posible clasificación de los índices es la que los diferencian entre en cluster y no-cluster. Si hay un índice cluster en un atributo, el número de conjuntos que almacenan tuplas con un cierto valor, será aproximadamente el número de bloques sobre que estas tuplas podrán ser empaquetadas. Con un índice no-cluster se debe asumir que las tuplas que cuyo valor se corresponda con el índice se encuentran en bloques separados. Así el número de accesos a bloque precisos para encontrar la condición será igual al número de tuplas a enumerar. Entonces el costo de listar tuplas es bastante superior si el índice es no-cluser a si es cluster. Para permitir un acceso aleatorio y rápido a un registro se usa una estructura de índices. Cada estructura tendrá asociada una clave de búsqueda. Se conoce como índice primario al índice que especifica el orden natural del archivo, y el resto serán los índices secundarios. La clave de búsqueda de un índice primario será la clave primaria. Hay dos tipos de índices: ––Escaso: con entradas sólo para algunos registros. ––Denso: con una entrada en el índice para cada valor de la clave en el archivo. Existen también diversas técnicas de indexación: ––Archivos secuencialmente indexados (su rendimiento se decrementa con el tamaño) ––B - trees. B-Trees: Los B-árboles son estructuras en forma de árbol, cuyos nodos pueden incluir un número múltiple de hijos. Un B-árbol es de orden m si sus nodos pueden incluir un máximo de m hijos. Si un árbol es de orden m significa también que el mínimo número de hijos que puede incluir es m + 1 (m claves).


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

69

El conjunto de claves que hay en un nodo cumplen con que los nodos que cuelgan del primer hijo tendrán una clave con un valor inferior que K1, los que cuelgan del segundo tienen una clave con valor superior que K1 e inferior que K2, y así sucesivamente. Así los que cuelgan del último hijo tienen una clave con valor superior que la última clave (se debe tener en cuenta que el nodo podrá tener menos de m hijos y por consiguiente menos de m-1 claves). Las características que debe cumplir un árbol-B serán: ––Orden (m), que es el número máximo de ramas que pueden salir de un nodo. ––El número máximo de claves por nodo es m-1. ––El número mínimo de claves por nodo es (m/2)-1. ––Si n es el número de ramas que parten de un nodo de un árbol-b, este nodo contendrá n-1 claves. ––Todos los nodos terminales, conocidos como nodos hoja, están en el mismo nivel. ––Todos los nodos intermedios, excepto el nodo raíz, deben tener entre m/2 y m ramas no nulas. ––La profundidad (h) se refiere al número máximo de consultas para encontrar una clave. ––El árbol debe estar ordenado. 2.4.3 Seguridad. La base de datos debe contar con una protección contra pérdidas, alteración o destrucción accidental o intencionada de los datos que contiene. El DBA debe gestionarla, ya que puede ocurrir que los datos se destruyan y no percatarse de la situación sólo hasta que el problema sea grave. Para la gestión de la seguridad se dispone de : ––Esquema externo: limita la visión de la BD, haciendo que el usuario tenga una visión de los datos que realmente le competen. ––Autorizaciones y controles: permite identificar los usuarios y definir las acciones que pueden realizar. Se busca cómo definir elementos que participen en la autorización y control, que serán: ––Objetos ––Acciones ––Sujetos ––Restricciones

recuerde Las diversas técnicas de gestión de índices ayudan a optimizar la gestión de las bases de datos de tamaño medio y grande.


70

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Los Sujetos serán las entidades de la organización, como por ejemplo un individuo, aplicación, terminal, departamento de la organización. Son los que de cualquier forma pueden llegar a la base de datos. Cada sujeto ha de tener identificación correspondiente. Los Objetos se corresponden con entidades de la base de datos, como datos, registros, relaciones, programas, etc. Las Acciones se corresponden con una acción que un sujeto va a realizar sobre un objeto, lo que puede ser lectura, creación, modificación, inserción, eliminación y destrucción de objetos. Las Restricciones son elementos que van a limitar la acción. Podemos establecer matrices, como por ejemplo: SUJETO

OBJETO

ACCION

RESTRICCION

Usuario 1

Cliente

Lectura

Ninguno

(password)

Deudas

Inserción

Cantidad < 27

Como alternativas de implementación de matrices tenemos: ––Matriz separada por sujeto Ejemplo: Sujeto es el Vendedor Registro cliente

Registro orden

LEER

S

S

INSERTAR

S

S

MODIFICAR

S

N

ELIMINAR

N

N

––Matriz separada por objetos Ejemplo: Objeto es el registro orden


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Vendedor PCU 1

Almacén PCU 2

Contador PCU 3

LEER

S

S

S

INSERTAR

S

S

N

MODIFICAR

N

S

S

ELIMINAR

N

N

S

––Existencia de procedimientos pre-definidos que apoyen el ingreso mediante una clave. ––Esquemas de Auto-Identificación, que se usen para identificar unívocamente a una persona (huellas dactilares, iris del ojo, etc.). Para este fin se trabaja con esquemas biométricos. ––Encriptación. CONTROL DE LA CONCURRENCIA Por definición, una base de datos es multiusuario y debe tener bajo control la concurrencia. Puede ocurrir que más de un usuario acceda a un determinado registro a la vez. El principal problema es la modificación de registros. Casos que generan inconsistencias: ––Dependencia de una transacción no realizada. ––Análisis de Inconsistencias. ––Actualización perdida. Se hace un mecanismo que evite que otros usuarios actualicen información mientras alguno esté realizando esta tarea. Uno de los mecanismos más usados es el bloqueo, por medio del que se hace buena parte del control de la concurrencia. Dependiendo del DBMS puede haber varios tipos de bloqueos, como: ––Bloquear la tabla o el archivo. ––Bloquear el registro. ––Bloquear la base de datos. ––Bloquear el dato.

71


72

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Para realizar el bloqueo se debe conocer: ––Los límites de la transacción (inicio y fin). ––La operación a realizar (modificación).

recuerde Cuanto más importante sea el sistema, más necesario se hace planificar el control contra pérdidas, alteración o destrucción de datos.

Se debe intentar bloquear lo mínimo, siendo lo más recomendable realizarlo a nivel de registro o de elemento de datos. Si se bloquea a nivel de tabla se degradará el rendimiento de la base de datos (no posibilitando hacer ninguna otra operación sobre la tabla). Si se bloquea la base de datos, da la sensación de inestabilidad. El mecanismo de bloqueo más utilizado se llama Protocolo de Commit en dos Fases (two-phase commit protocol). Es importante indicar que el bloqueo, al igual que otros algoritmos de sistemas críticos, tiene un problema: pueden ocurrir abrazos mortales (deadlocks). 2.4.4 Respaldos y replicación de bases de datos. Se debe contar con elementos que permitan recuperar la información cuando ésta se pierda o se introduzca algún dato erróneo. Un DBMS debe dotar de las siguientes facilidades: ––Backup periódico: El DBMS debe dotar de un sistema que produzca una copia de la base de datos, que debe almacenarse en un lugar seguro. La periodicidad de creación de backups depende de la importancia de los datos. ––Facilidad para los Check-Points: El DBMS detiene el proceso manualmente por comando o automáticamente, sincroniza la base de datos con la bitácora de transacciones, generando un registro en un archivo en el que se guarde la información sobre el estado de la base de datos sobre una determinada transacción. ––Registro de las Transacciones : Contiene una bitácora de todas las transacciones que se realizan sobre los registros con los principales datos usados en la transacción. Contiene los cambios que se produjeron, teniendo una imagen del registro antes de que fuese modificado, así como una imagen del registro tras ser modificado (lo conocido como archivo pre-imagen y archivo post-imagen). Una transacción exitosa producirá cambios en la base de datos, en cuyo caso se llama transacción realizada. Si la transacción no fue exitosa se dice que fue abortada, y en cuyo caso no producen cambios en la base de datos. Para mantener la


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

integridad de la transacción se debe dar facilidades para que el programador o el usuario de la aplicación defina los límites de la transacción. La administración de la recuperación corresponde a un modelo dónde se restaure la base de datos a un estado correcto cuando se produzca algún error. Para esto existen los siguientes procedimientos de recuperación: ––Reprocesamiento (Restore and Rerun): implica un reprocesamiento total de todas las transacciones diarias, es decir, tomando todas las transacciones realizadas, se ejecutan de nuevo, reprocesándolas tras el último backup exitoso. Este proceso presenta los siguientes inconvenientes: ––Elevado tiempo de reproceso. ––Al ejecutarse se difiere el procesado de las nuevas transacciones. ––No se garantiza que la secuencia de transacciones a realizarse se ejecuten en el orden en el que fueron originalmente ejecutadas. ––Recuperación hacia atrás (Backward o Rollback): elimina los cambios que se producen en la base de datos por medio de una transacción que fue abortada. Con ella se pierden todos los cambios hechos en una base de datos, producto de la ejecución parcial de una transacción. ––Recuperación hacia delante (Forward o Rollforward): considera la copia más temprana de la base de datos y el archivo de transacciones post-imagen que contiene las transacciones exitosas, de forma que base de datos se restaura en un estado más adelante. Es diferente al procedimiento Restore and Return, por que éste primero ejecuta la transacción, mientras que el Rollforward tomará el resultado de las transacciones. Así el Rollforward tendrá algunas similitudes con el Restore and Rerun, pero es más rápido debido a que: ––No da problemas con la secuencia de transacciones ––No repite el tiempo de proceso. ––Sólo necesita las imágenes posteriores o post-imagen. La recuperación se produce dependiendo de los tipos de fallos, que pueden ser: ––Transacciones abortadas: se pueden producir por una entrada de datos errónea, fallo del hardware, un error

73


74

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

humano o un abrazo mortal. Al darse estas situaciones, el procedimiento de recuperación más adecuado es el Rollback. ––Datos incorrectos: esto es una situación más compleja porque no sabe si un dato es correcto o no (puede que se detecte ya muy tarde). Se pueden adoptar las siguientes formas para recuperación: ––Si el error se descubre rápidamente se puede realizar una recuperación Rollback, asegurando que se corrijan las consecuencias del error, al conocer las transacciones ejecutadas con posterioridad a la entrada del dato incorrecto. ––Se pueden usar transacciones compensatorias si se descubren errores que no podrán recuperarse, por ejemplo cuando se produce una cadena de ocurrencias por una transacción y se descubre mucho tiempo tras el error. ––Se puede restaurar desde el último Checkpoint. Aquí se puede aplicar el Rollforward o el Restore and Return, dependiendo del caso.

recuerde Es conveniente hacer copias periódicas de las bases de datos, y establecer puntos de recuperación, siguiendo un plan acorde a la importancia que se le dé al sistema.

––Fallos de sistema: pueden producirse por problemas de suministro de energía, por problemas en las comunicaciones, por error de operación, por fallos del software, etc. Cuando se producen este tipo de fallos suelen existir transacciones en proceso. En estos casos se podrá aplicar un procedimiento RollBack, y si el fallo afectase a muchas transacciones y hubiese problemas con la información que se obtenga, se debe utilizar una recuperación desde el último Checkpoint, usando una recuperación del tipo RollForward. Se puede pensar que la base de datos puede recuperarse ante cualquier fallo siempre que tenga el respaldo de la base de datos, entradas de Checkpoint y los procedimientos para restaurar según el caso. Muchos de estos procedimientos se gestionan desde el software y otros son automáticos (como el Checkpoint y Rollback de transacciones no exitosas). 2.5 Gestión de transacciones en un SGBD. 2.5.1 Definición de transacción. Una transacción en un Sistema de Gestión de Bases de Datos es el grupo de órdenes que se ejecutan en forma de forma indivisible o atómica. Un SGBD se denomina transaccional si puede mantener la integridad de los datos; por medio de estas transacciones no se pueden terminar en un estado intermedio.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Cuando por el sistema debe terminar la transacción, se empieza a deshacer las órdenes ejecutadas hasta terminar la base de datos en su punto de integridad o estado inicial, como si nunca se hubiese realizado la transacción. Para este fin el lenguaje de consulta de datos SQL (Structured Query Language) dota de los mecanismos que ayudan a especificar que un grupo de acciones ha de constituir una transacción. BEGIN TRAN: Especifica que una transacción va a comenzar. COMMIT TRAN: Le indica al motor que la transacción puede considerarse como completada con éxito. ROLLBACK TRAN: Indica que se ha encontrado un fallo y debe restablecerse la base al punto de integridad. De forma ideal las transacciones deben garantizar las propiedades ACID, en la práctica muchas veces alguna de estas propiedades se deteriora o simplifica para obtener un mejor rendimiento. Operaciones básicas que pueden incluir las transacciones: ––Leer(X): lectura de un elemento de la base de datos sobre una variable de programa del mismo nombre; ––Escribir(X): actualización del contenido del dato X de la base, usando la variable del programa de igual nombre leer(X), para ello hay que ejecutar la siguiente secuencia de pasos: ––búsqueda de la dirección del bloque que contenga el dato X ––copia del bloque en un buffer en memoria ––copia del dato X (contenido en el buffer) a la variable X del programa El grupo de lectura de una transacción (read-set) es el conjunto de todos los elementos que puede leer escribir(X), para ello hay que ejecutar la siguiente secuencia de pasos: ––Si no se leyó antes, buscar la dirección dentro del bloque de fichero que contenga el dato X, y copiar el bloque en un buffer en memoria

75


76

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Copiar el dato X de la variable X a la correcta posición del buffer ––Copiar el bloque actualizado, del buffer al disco. El grupo de escritura de una transacción (write-set) es el conjunto de todos los elementos que la transacción escribe. PROBLEMAS Existen diversos problemas, de entre los que cabe destacar: ––Problema por pérdida de actualización Las transacciones acceden a los mismos datos de la base y tienen operaciones interpoladas de forma que hace que algunos datos de la base sean incorrectos. Antes de deshacer la actualización se debe intentar acceder al dato actualizado. ––Problema de la lectura irrepetible Una transacción ejecuta dos lecturas del mismo elemento, y entre ellas dicho elemento se modifica por otra transacción, así la primera transacción tendrá dos valores distintos del mismo elemento. ––Problema de la suma incorrecta Una transacción ejecuta una suma sobre varios registros, mientras que otra los modifica. ––Problema de lectura sucia Esta cuestión salta cuando una transacción actualiza un dato de la base y termina con un fallo.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

77

El DBMS es responsable de: ––Que su efecto se grabe permanentemente en la base de datos. ––No dejar que algunas operaciones sobre la base de datos tengan efecto (unas sí y otras no). Esto ocurre cuando la transacción falla tras realizar algunas actualizaciones. ––Garantizar que todas las operaciones de la transacción se completen correctamente. Posibles causas de fallo de una transacción: ––Fallo en disco: durante la ejecución de la transacción se produce un error de disco, como que se descuelguen las cabezas de lectura y escritura del disco; ––Problemas físicos: tales como una inundación, un fallo de corriente eléctrica,… ––Error de la transacción: alguna operación de la transacción falla, como la división por cero, desbordamiento de un entero,… ––Errores locales a la transacción: hay condiciones que hacen que la transacción no pueda ejecutarse, como por ejemplo no encontrar un dato. ––Caída del sistema: la transacción fallará por un error en el hardware, software o en la red. ––Control de concurrencia: la transacción puede fallar porque no se cumplan las condiciones de control de concurrencia. Hay una serie de propiedades ACID que deben ser implementadas por los métodos de recuperación o por el control de concurrencia, como son: ––Durabilidad: Los cambios de una transacción confirmada deben ser permanentes ; ––Aislamiento: Los cambios de una transacción no confirmada son invisibles para el resto de transacciones; ––Consistencia: Una correcta ejecución de una transacción debe conllevar a la base de datos desde un estado consistente a otro que también sea consistente; ––Atomicidad: O se ejecutan correctamente todas las operaciones de la transacción o no se ejecuta ninguna de ellas.

recuerde Para definir las transacciones se deben estudiar las características críticas del sistema que pueden llevarle a fallo.


78

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

2.5.2 Componentes de un sistemas de transacciones. Cada base tendrá su propio gestor local de transacciones, cuya función es la de asegurar las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) de las transacciones que se ejecutan en ese lugar. Los diferentes gestores de transacciones deben estar enlazados para colaboran para la mejor ejecución de las transacciones globales. El gestor de transacciones es el encargado de gestionar la ejecución de las transacciones que accedan a los datos almacenados en un emplazamiento local. Ha de tenerse en cuenta que cada transacción puede ser local (una transacción que sólo se ejecute en ese sitio) o parte global (una transacción que se ejecute en varios sitios). Las funciones del gestor de transacciones serán:

recuerde El gestor de transacciones se ocupará de manejar las transacciones que accedan a los datos de la base.

––Mantener un histórico o tabla de modificaciones para realizar las recuperaciones; ––Participar en un esquema de control de concurrencia adecuado para coordinar la ejecución entrelazada de las transacciones de ese nodo. Debe garantizar así que la ejecución simultánea de transacciones sea serializable. El coordinador de transacciones coordinará la ejecución de las transacciones locales y globales iniciadas en ese lugar. 2.5.3 Tipos de protocolos de control de la concurrencia. De entre los distintos protocolos para el control de la concurrencia cabe destacar los siguientes: MODELO TRANSACCIONAL SIMPLE Una transacción consiste en una secuencia de instrucciones LOCK y UNLOCK; LOCK implica una lectura de un elemento y UNLOCK una escritura. Que se presente secuencialidad en este modelo implica que también se presenten en modelos más complejos. Para diseñar protocolos y planificadores se precisa relacionar la semántica de las transacciones con una prueba que determine si será secuenciable un conjunto de pasos de transacciones entrelazadas.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Primero se ha de comprobar que la semántica es adecuada (una semántica conservadora puede restringir planificaciones secuenciables y no permitir las que no lo sean). Luego se debe hacer corresponder la semántica con un grafo de ejecución que permita decidir si una planificación es secuenciable. El problema se reduce a la búsqueda de rutas en un grafo dirigido Para determinar que un planificador es correcto se demuestra que todas las planificaciones que admita sean secuenciables. Se ha de examinar la planificación respecto al orden en que se bloquean los elementos. Este orden ha de ser consistente con la planificación secuencial a la que equivalga. Cuando hay dos secuencias con diferentes órdenes de transacciones, ambos órdenes no serán consistentes con la planificación secuencial. PROTOCOLO DE BLOQUEO DE DOS FASES Todos los bloqueos deben preceder a los desbloqueos. En una primera fase se realizan los bloqueos y en una segunda los desbloqueos. Según este protocolo no existirán planificaciones legales no secuenciables. PROTOCOLOS BASADOS EN GRAFOS En muchas ocasiones es de gran utilidad ver el conjunto de elementos de datos de la base como un grafo. Así por ejemplo cuando: ––Se definen elementos de varios tamaños, donde los grandes engloban a los pequeños; ––Cuando hay una organización física o lógica de los elementos. ––Cuando hay un control de concurrencia efectivo. Se podrán diseñar protocolos que, aunque no sean de dos fases, que aseguren la secuencialidad. Aunque hay varios tipos, los más usados son los protocolos de árbol, dónde los grafos serán árboles con raíz.

79


80

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

El protocolo de árbol además de garantizar la ausencia de interbloqueos, también garantiza la secuencialidad con respecto a los conflictos. El protocolo de bloqueo de árbol tiene la ventaja sobre el protocolo de bloqueo de dos fases de que los desbloqueos pueden darse antes. Desbloquear antes puede conllevar a unos tiempos de espera menores y a un aumento de la concurrencia. Este protocolo también garantiza que no se necesiten retrocesos, debido a que el protocolo no tiene interbloqueos. Pero este protocolo tiene también el inconveniente de que, en algunas ocasiones una transacción puede deber bloquear elementos de datos a los que no acceda. Hay planificaciones que pueden realizarse usando el protocolo de bloqueo de dos fases que no se podrán realizar usando el protocolo de árbol y viceversa. Sin un conocimiento previo de los elementos de datos que se precisa bloquear, las transacciones han de bloquear la raíz del árbol, lo que puede reducir notablemente la concurrencia. Puede haber planificaciones secuenciables que no se obtengan por el protocolo de árbol. PROTOCOLOS BASADOS EN MARCAS TEMPORALES Se usan cuando no se imponen bloqueos pero se asegura la secuencialidad. Este protocolo garantiza que se ejecuten todas las operaciones de lectura y escritura conflictivas, en el mismo orden que las marcas temporales. El protocolo de ordenación por marcas temporales garantiza la secuencialidad. Las operaciones conflictivas se procesan junto con la ordenación de las marcas temporales. Asegura la ausencia de interbloqueos, al no necesitar esperar por ninguna transacción. PROTOCOLOS OPTIMISTAS Cuando los conflictos entre las transacciones sean extraños se evitarán los protocolos anteriores, que son más costosos, para pasar a aplicar las técnicas optimistas. Estas técnicas asumen que no haya conflictos en las planificaciones y eviten los costosos bloqueos. Al intentar comprometer una transacción se determinará si hubo o no conflicto. En caso de que lo haya, la transacción se retrocederá y se reiniciará.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

81

Si los conflictos son extraños también lo serán los retrocesos, por lo que el nivel de concurrencia se incrementará, aunque también se debe que tener en cuenta el coste de los posibles retrocesos en términos temporales debido a que todas las actualizaciones se realizan en memoria, sin haber retrocesos en cascada, ya que los cambios no se hacen en la base de datos. Fases del protocolo de control de concurrencia optimista: ––Fase de lectura: va desde el inicio de la transacción hasta antes de su compromiso. Las actualizaciones se ejecutan en memoria y no en la propia base de datos. ––Fase de validación: es la siguiente fase a la de lectura. Se comprueba que no se viole la secuencialidad. Puede haber dos casos: ––Transacciones de sólo lectura: comprueban que los valores en la base de datos sean los mismos que inicialmente se leyeron. ––Transacciones con actualizaciones: comprueban si la base de datos queda en un estado consistente tras la transacción. En cualquier caso, si la secuencialidad no se conserva la transacción se reinicia y se retrocede. ––Fase de escritura: se produce cuando se mantiene la secuencialidad, y consiste en escribir cambios producidos en la base de datos en la copia local. ––Fase de validación: toda transacción recibe una marca temporal al comenzar su ejecución, otra al iniciar su validación y otra al finalizar. 2.5.4 Recuperación de transacciones. Podemos encontrar las siguientes causas de aborto tras las transacciones: ––Error de hardware o de software; ––Abrazo mortal, o deadlock; ––Algoritmos de secuencialidad; ––Propio fallo de la transacción: fallo aritmético, interrupción por el usuario, control de acceso... Para evitar las consecuencias de estos abortos se aconseja establecer puntos de recuperación por copias de seguridad.

recuerde El objetivo de los métodos de control de concurrencia es garantizar la no inferencia de transacciones que se ejecutan concurrentemente.


82

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

También cabe diferenciar entre dos tipos de caídas: ––Error de memoria permanente; ––Error de memoria volátil. Se debe asegurar la atomicidad de las escrituras de las transacciones, pudiendo haber una caída del sistema previa a que se hayan escrito todos los datos que se modificaron por una transacción. La recuperación se basa en registro (log), siendo ésta la técnica más habitual, y consiste en almacenar secuencialmente los cambios de la base de datos y el estado de cada transacción. Se establecen tuplas de cuatro elementos, que son: Transacción, Elemento, Valor nuevo,Valor anterior. Se suele crear un almacenamiento permanente con el registro histórico. Hay dos técnicas de implementación de esta recuperación: modificación diferida e inmediata de la base de datos. Modificación Diferida de las Bases de Datos Esta técnica se ejecuta en los siguientes pasos: ––Todas las escrituras se anotan en el registro histórico.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

83

––Cuando la transacción está parcialmente comprometida (se realizaron todas sus operaciones pero no se modificó la base de datos) se realizan las escrituras pendientes teniendo en cuenta el registro histórico. ––Ya se puede anotar la transacción como comprometida. Si hay una caída entre las escrituras se puede deshacer la transacción. Modificación Inmediata de la Base de Datos Esta técnica se ejecuta en los siguientes pasos: ––Todas las escrituras se anotan en el registro histórico. ––Después de cada operación de escritura se realiza la propia escritura, de forma que no se comprometan las modificaciones. ––Ya se puede anotar la transacción como comprometida. Si hay una caída entre las escrituras se puede deshacer la transacción. Y por último, frente a un fallo de Memoria Permanente hay dos posibles soluciones: ––Backups periódicos de la base de datos. ––Backups periódicos de la instalación. 2.6 Soluciones de SGBD. 2.6.1 Distribuidas. Se conoce como bases de datos distribuidas a una colección lógicamente interrelacionada de datos compartidos, junto con la descripción de dichos datos, que son distribuidos por una red informática. Será el propio sistema software que gestione la base de datos distribuida y haga que dicha distribución sea transparente para los usuarios. Un sistema gestor de bases de datos distribuidas se compone por una única base de datos lógica que se divide en porciones. Cada una de estas porciones se almacena en uno o más ordenadores, conectados por una red de comunicaciones, y se controlan por un SGBD independiente. Los usuarios podrán acceder a la base de datos distribuida por medio de una serie de aplicaciones, que pueden ser:

recuerde Se debe establecer un plan de recuperación en caso de fallo, así como tener presente los posibles puntos de fallo.


84

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Aplicaciones locales: no requieren datos de otras instalaciones. ––Aplicaciones globales: requieren datos de otras instalaciones. Un SGBD Distribuido debe tener, por lo menos, las siguientes características: ––Un conjunto de datos compartidos lógicamente relacionados. ––Los datos se dividen en una serie de fragmentos. ––Los fragmentos pueden ser copiados, y cada fragmento tiene asignas distintas instalaciones. ––El SGBD de cada instalación podrá manipular las aplicaciones locales automáticamente. ––Cada SGBD participa en una aplicación global, al menos. ––Las instalaciones están conectadas por medio de una red de comunicaciones. ––Los datos de cada instalación se controlan por un SGBD. PROCESAMIENTO DISTRIBUIDO Una base de datos centralizada es aquella a la que se puede acceder por medio de una red informática. Se puede confundir fácilmente con una base de datos distribuida, si bien hay diferencias. En un SGBD distribuido el sistema se compone por los datos físicamente distribuidos entre los nodos de la red. Si los datos están centralizados, aunque se pueda acceder a ellos por la red simplemente se considera un sistema de procesamiento distribuidos no que se trate de un SGBD distribuido. En el esquema centralizado solo tendrá una base de datos central en un nodo, al contrario que en el esquema distribuido, que tendrá varios nodos, y cada uno de ellos con su propia base de datos.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

SISTEMAS HOMOGENEOS Y HETEROGENEOS Un sistema homogéneo es aquel en que todos sus nodos utilizan el mismo SGBD. Un sistema heterogéneo es aquel en que los nodos pueden usar diferentes SGBD y éstos pueden basarse en diferentes modelos de datos. Para un sistema heterogéneo se requiere una traducción para que los SGBD puedan comunicarse entre sí. Pudiendo darse el caso que tengamos: ––Hardware y software son distintos. ––Un hardware distinto e igual SGBD. ––Diferentes SGBD e igual hardware. Los sistemas homogéneos son más sencillos de diseñar y de mantener. Hay cuatro componentes principales en un SGBD: ––SGBD local: se trata de un SGBD estándar que será el responsable de controlar los datos locales en cada nodo con una base de datos. Tendrá su propio catálogo local del sistema que almacena información sobre los datos que contiene dicho nodo. En un sistema homogéneo todos los SGBD locales serán el mismo software copiado en cada nodo; mientras que en uno heterogéneo, habrá al menos dos nodos con SGBD y plataformas diferentes. - Componente de Comunicación de Datos (CD): El software permite que todos los nodos se comuniquen entre si y contiene información sobre los nodos y los enlaces. - Catalogo Global del Sistema (CGS): Con igual funcionalidad que el catálogo de un sistema centralizado. Contiene información específica sobre la naturaleza distribuida del sistema, tales como esquemas de copia, asignación y fragmentación. El propio catalogo se puede manejar como una base de datos distribuida, por lo que puede estar distribuido y fragmentado, copiado o centralizado. ––SGBD Distribuido. Debe tener por lo menos la funcionalidad de uno centralizado, pero se espera que proporciones la siguiente funcionalidad adicional: ––Proceso avanzado de consultas; ––Control avanzado de seguridad;

85


86

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

recuerde Las bases de datos distribuidas presentan una notable mejora en muchos casos, si bien hay que estudiar bien si merece la pena, ya que también implica una mayor complejidad.

––Servicios avanzados de recuperación, que tendrá en cuenta los fallos de los nodos individuales y de los enlaces de comunicaciones ––Servicios avanzados de comunicaciones para dar acceso a nodos remotos y permitir transferir consultas y datos entre los nodos; ––Mecanismos avanzados de control de concurrencia para conservar la coherencia de los datos distribuidos y, posiblemente, copiados; 2.6.2 Orientadas a objetos. Las Bases de Datos Orientadas a objetos (BDOO) permiten describir los tipos de objetos más importantes del dominio de esos tipos de objetos. Estos tipos de objetos definen las clases que contienen la definición de la BDOO. Hay tres enfoques principales para la construcción de las BDOO: ––El primer enfoque nos permite usar el código actual de los sistemas de administración de las bases de datos, que suele ser muy complejo, de forma que la BDOO se implante sin tener que comenzar de cero. Las técnicas orientadas a objetos se pueden usar como métodos para el diseño sencillo de sistemas complejos. Los sistemas se constituirán partiendo de componentes previamente probados, con un cierto formato enfocado a las solicitudes de las operaciones del componente. ––Otro enfoque considera a la BDOO como una extensión de las bases de datos relacionales. Así se permitirá usar las técnicas, herramientas, y experiencia de la tecnología relacional para construir un nuevo sistema. También permite añadir punteros a las tablas relacionales, para ligarlas con objetos binarios de gran tamaño. La base de datos también debe dotar a las aplicaciones clientes de un acceso aleatorio y a grandes objetos por partes, para que sólo sea necesario recuperar la parte solicitada de los datos a través de la red. ––El tercer enfoque estudia la arquitectura de los sistemas de bases de datos para producir una nueva arquitectura mejorada, que debe cumplir las necesidades de la tecnología orientada a objetos. Éste enfoque determina que la tecnología relacional es un subconjunto de otra más general. Las BDOO no relacionales son casi el doble de rápidas que las bases de datos relacionales, permitiendo almacenar y recuperar información más rápidamente. La Arquitectura de Versant se enfoca en soportar el enfoque Cliente/Servidor con acercamiento distribuido; el servidor procesará una aplicación de Cliente cualquiera, usando las EDT y los servidores que pueden cooperar en una base


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

de datos distribuida de Versant. Las bases de datos pueden diseñarse como un sistema m-Cliente/n-Servidor. Un servidor en el entorno de Versant es una máquina que ejecuta los procesos del servidor, soporta accesos concurrentes por múltiples usuarios a una o más bases de datos. Un cliente es un proceso de que tiene acceso a espacios de trabajo de bases de datos privadas y que además pueden acceder a varias bases de datos sobre servidores concurrentes con otras aplicaciones de cliente. En las bases de datos orientadas a objetos el Gestor de Datos Objeto (ODMG) representa el la totalidad de las BDOO industriales y ha formado un lenguaje estándar para la definición (ODL - Lenguaje de Definición de datos) y para la manipulación (OQL - Lenguaje de consulta) de bases de datos, que equivalen a SQL. Respecto a las bases de datos relacionales relacionales, todas añaden algunos aspectos de la orientación a objetos. ANSI, el Instituto Nacional Estadounidense de Estandararización, define el SQL-3, que incorpora aspectos de la orientación a objetos. El futuro del SQL-3 es incierto, ya que ODMG ha cedido a ANSI su estándar para que siente la base para un nuevo SQL, para llegar a un único estándar de base de datos. El grupo ODMG nació de un grupo más grande, llamado “Grupo Manejador de Objetos (OMG)”, donde se representa todo lo relativo al sector. Este grupo define un estándar universal para los objetos. Este estándar va a permitir que un objeto sea programado en cualquier lenguaje y cualquier sistema operativo. Esto facilitará enormemente el desarrollo de sistemas cliente-servidor abiertos. Una subclase heredará todos los atributos y características que son propias de la definición original, especializándose en la especificación de los nuevos campos requeridos, así como las formas de modificación de dichos campos. Se generan los espacios para almacenar la información de los nuevos campos. Esto será una ventaja adicional que una BDOO puede usar únicamente el espacio de los campos que es necesarios, eliminando el desperdicio de espacio por registros con campos que nunca usan. Otra ventaja de una BDOO es que gestiona datos complejos en forma ágil. La estructura de la base de datos se da por referencias o punteros lógicos entre objetos. La inmadurez del mercado de BDOO puede ser una posible fuente de problemas por lo que se debe analizar en detalle la presencia con la que cuenta el proveedor en el mercado, para adoptar su producto en una línea de producción. El segundo problema es la falta de estándares en la industria orientada a objetos aunque, como se comentó antes, es un tema actualmente en proceso.

87


88

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

recuerde Los bases de datos orientadas a objetos son una buena elección para los sistemas que necesitan un buen rendimiento en la gestión de tipos de datos complejos.

La implantación de una nueva tecnología requiere que los usuarios que primero lo usen acepten ciertos riesgos. No servirá para dar muchos resultados a corto plazo y de forma barata. Sin embargo, para los usuarios que planean una gran tecnología en su empresa en el futuro, el uso de tecnología orientada a objetos compensará a largo plazo todos los riesgos. 2.6.3 Orientadas a datos estructurados (XML). Un SGBD XML-enabled es un SGBD que cuenta con capacidad para la obtención y gestión de documentos XML. Hay que tener en cuenta que los grandes fabricantes de SGBD aumentan las capacidades de tratamiento XML de sus productos, incluyendo características nativos SGBD XML, por lo que en un futuro cercano el límite estos dos tipos de gestores puede que quede diluida. Las bases de datos son imprescindibles en todos los sistemas de información, ya que en ellas se almacena información importante para el adecuado desempeño de las organizaciones. XML (eXtensible Markup Language, o Lenguaje de Marcas Extensible) estimula que surjan de nuevas tecnologías, como una nueva generación de bases de datos, que aunque se encuentran en una fase de investigación y desarrollo, en un futuro cercano podrán ser una alternativa a las bases de datos relacionales. Las Base de Datos XML surgen de la necesidad de almacenar y recuperar datos que estén poco estructurados, con la misma eficiencia de las Base de datos convencionales. Este tipo de bases de datos son totalmente distintas a las relacionales, que actualmente cuentan con soporte para XML, pero aún almacenan toda la información de forma relacional en forma tabular (registros, tablas y columnas), la principal característica de estas bases de datos es que pueden obtener los resultados de las consultas en formato XM, por lo que estas bases de datos pertenecen a la categoría de “XML-enabled database”. Las bases de datos relacionales se centran en los Datos, almacenándolos de forma atómica. La base de datos nativa en XML no almacena datos atómicos ni tiene campos, almacena documentos XML por lo que a este tipo se les conoce como bases de datos centradas en documentos. Mientras que los Sistemas de administración de base de datos XML desglosan un documento XML en su modelo de objetos o relacional, los SGBD XML Nativos respetan la estructura de documento, posibilitando realizar consultas sobre esta estructura y recuperan el documento igual que originalmente se insertó.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

El procesamiento de datos en bases de datos XML no es algo tan beneficioso como originalmente se pensó, debido a la forma jerárquica en el que se almacena la información y debido también a que aún no hay un lenguaje estándar que permita la inserción, actualización o eliminación de los elementos de un documento XML. Además, este tipo de bases de datos no usan SQL como lenguaje de consulta, sino que usan Xpath. Algunas bases de datos posibilitan la seleccion de los elementos que contengan los índices, mientras otras bases de datos indexan todo lo que contiene del documento. El problema de las búsquedas en este tipo de bases de datos es que no permiten hacer búsquedas muy complejas, como puede ser un ordenamiento y unión cruzada, ya que Xpath no fue concebido para realizar búsquedas en bases de datos, sino para realizar únicamente búsquedas en un único documento. Como áreas potenciales de aplicación tenemos: ––Bases de datos personalizadas ––Portales de información de empresa ––Datos médicos ––Información de catálogos de productos ––Bases de datos en partes de fabricación Entre los productos comerciales más importantes encontramos: dbXML, 4 Suite, Tamino XML Server, OpenLink, eXist, RDM XML, x-Hive/DB, BirdStep, Berkeley DB de Oracle, entre otros. En resumen, este tipo de base de datos será perfecta para las empresas que mantienen su información en distintos formatos, ya que les permitirá pasar su información a formato XML rápidamente, usando la aplicación que elija, para así almacenarla en una de estas bases de datos y evitar la conversión el proceso de

89


90

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

un formato a otro. Además, teniendo en cuenta que aún no existe un lenguaje estándar para el procesado de datos, estas bases de datos son las óptimas para realizar consultas sobre los documentos que se almacenan. XQuery Languaje (XQL) Da una forma flexible de consulta para posibilitar la extracción datos de los documentos XML. Los archivos XML pueden ser virtuales o reales, o lo que es lo mismo, que otras fuentes puedan ser vistas como datos XML. Entre estas fuentes se incluyen ASCII, hojas de cálculo, bases de datos,... La idea es que desempeñe un papel similar al SQL en las bases de datos relacionales, permitiendo acceder a las colecciones de documentos XML como si fueran una base de datos. Se basa en varias propuestas previas de lenguajes previas, como Quilt,YATL, XMLQL, Lorel. Existiendo un cierto solape con XSLT y una integración con XPath (versión 2.0). Una consulta se puede referir a más de un documento, y es una expresión que: ––Lee los valores atómicos o la secuencia de fragmentos XML y ––Devuelve los valores atómicos o la secuencia de fragmentos XML. Los principales tipos de expresiones son: ––Constructores de elementos. ––Condicionales (IF, THEN ELSE) para elaborar el resultado en base a una condición. ––Expresiones XPath, que permiten la navegación por los documentos. ––Listas a las que aplicar funciones (AVG) y operadores (UNION). ––Con cuantificadores (SOME, ANY) para comprobar la existencia de ciertos elemento que cumpla una condición. ––FLWR (FOR,WHERE, RETURN, LET) para iterar en los elementos de un grupo. XML Path Language (XPath) Es un lenguaje declarativo usado para la localización de fragmentos (de tipo texto, atributos, elementos) y nodos en el árbol del documento XML.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

91

Este lenguaje se usa por otros para: ––“Pattern matching” (XQuery, XSLT); ––Direccionamiento (XSLT, XLink, XPointer) Se basa en el Modelo de datos XPath, donde un documento XML es un árbol jerárquico con siete tipos de nodos (raíz, texto, elemento, atributo, instrucción de procesamiento, espacio de nombres y comentario). Otros conceptos importantes: ––Caminos de situación, capitulo, libro, párrafo; ––Predicados XSL (eXtensible Stylesheet Language) Este lenguaje además de permitir la definición del estilo a aplicar a cada elemento XML, permite transformar documentos XML. El resultado podrá ser un documento de diversos tipos, como HTML,WML (para aplicaciones WAP), PDF, texto plano, RTF, o incluso otro documento XML. Para referir partes de documentos XML se usa el XPath. Una hoja de estilo XSL es una serie de reglas que calculan cómo ocurrirá la transformación. Cada regla incluye una plantilla (template) y un patrón de localización (pattern). 2.6.4 Almacenes de datos (datawarehouses). Uno de los grandes problemas de las empresas se debe a que los sistemas de procesamiento de datos y la continua inversión en tecnologías informáticas no se corresponde con una mejora adecuada en la calidad y disponibilidad de datos críticos para facilitar la toma de decisiones. El problema se acentúa en las empresas con sistemas informáticos heterogéneos, que muchas veces son incompatibles entre sí. En estas ocasiones la información, pese a estar registrada, no podrá ser usada ni compartida por otras aplicaciones diferentes a aquella en la que inicialmente se registró.

recuerde Una base de datos con capacidad XML se adapta mejor allí donde la mayoría de los datos no están en XML, para los sistemas en los que la mayoría de los datos están en XML se adaptará mejor una base de datos nativa XML.


92

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Estas limitaciones pueden tendrán importancia en los sistemas que gestionan el funcionamiento de la empresa (sistemas operacionales o transaccionales), los procesos de toma de decisiones precisarán grandes volúmenes de datos de distintas áreas funcionales. Aquí surge la necesidad de facilitar al analista una visión sintética y global de la actividad de la empresa que salve las barreras entre los sistemas heterogéneos; y con ella el concepto de almacén de datos (DW) o almacén de datos. La idea más inmediata que tenemos al oír hablar de almacén de datos es la de una única base de datos situada en la red de la empresa, desde dónde cualquier usuario, por medio de una plataforma cliente-servidor, podrá acceder a un gran volumen de datos organizados eficientemente. El almacén de datos intenta solventar el problema relativo a la integración de datos que provienen de los diferentes sistemas transaccionales de la empresa, salvando la distancia entre intervalos de decisión y secuencias de proceso. Hasta hace poco más de un año ninguna empresa ofrecía una solución integral para la construcción de un almacén de datos, por lo que los responsables debían configurar su propio sistema por medio de herramientas de diferentes empresas que, de forma conjunta, permitiesen superar problemas puntuales. Pueden establecerse numerosos modelos de DW, siendo los principales: 1. Nivel operacional El punto de partida será un conjunto de bases de datos, seguramente incompatibles, que registran los datos que están asociados con procesos bien definidos de negocio en el conjunto de actividades que realiza la empresa. Estos sistemas se conocen como nivel operacional, o de base de datos externa. 2. La base de datos central Con cierta periodicidad cada sistema volcará los datos que registró en una base de datos central, el Almacén de datos. Gran parte del éxito de los sistemas relacionales se centra en su capacidad de manejar transacciones concurrentemente. Pero estas características de las bases de datos relacionales son las más acordes con los requisitos de un sistema que se orienta a la toma de decisiones. Se abre así una línea de debate entre la conveniencia de cada esquema, aunque no se debe olvidar que el concepto de almacén de datos es independiente de cualquier modelo de base de datos.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Aunque no haya una vinculación entre los almacenes de datos y ninguna tecnología en concreto, los productores de SGBD multidimensionales se lanzan al mercado del almacenaje de datos pensando que sus sistemas son los más apropiados para satisfacer las exigencias del concepto. 3. Herramientas para el acceso del usuario final El principal objetivo del almacén de datos es que el usuario trabaje con la información que registre, sirviéndose de aplicaciones con las que está familiarizado, evitando los problemas relativos a las curvas de aprendizaje. Las mejores opciones las relativas a la eliminación de la necesidad de conocer lenguajes de consulta complejos, como el SQL. Debe tenerse presente que la rentabilización y productividad del almacén de datos va a depender de la facilidad con la que el analista acceda a los datos. 4. Transferencia y homogeneización de datos Hay una serie de transformaciones que afectan a los datos al pasar de las bases de datos transaccionales al almacén de datos, y de éste al software final. 5. Abstracción de datos Tras grabar e integrar en el almacén de datos los datos de los distintos sistemas transaccionales, se pasa a transformar en un formato que adecue el análisis de la toma de decisiones y ofrezca una visión global de la actividad de la compañía. Hay tres técnicas de abstracción: ––Sumarización: consiste en la agregación de datos operacionales siguiendo varios criterios y niveles jerárquicos; ––Desnormalización: consiste en el proceso inverso al que obtuvo un esquema normalizado; ––Fragmentación: consiste en, partiendo de una única tabla, generar diversas tablas conforme a algún criterio de selección horizontal. Esta técnica es la menos utilizada pese a que disminuye los tiempos de respuesta para ciertas preguntas, ya que para otras obliga a realizar complejas uniones, requiriendo un conocimiento efectivo de la distribución de los datos que referencian una misma entidad o proceso, de forma tabular.

93


94

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

6. La función de los metadatos Para que sea posible la gestión y administración de un almacén de datos se hace imprescindible mantener un directorio para los distintos tipos de datos que circulan por la estructura de la empresa, haciendo que se pueda acceder a los mismos de forma transparente. El directorio de metadatos de un almacén de datos se puede considerar como un conjunto de los datos de sistema que encontramos en cualquier SGBD.

recuerde Para el almacén de datos se debe diseñar su arquitectura dependiendo de la estructura interna de los datos que almacena y sobre todo del tipo de consultas a realizar.

El principal problema sobre los metadatos es que no hay formatos uniformes. Hasta ese momento cada aplicación presenta sus propias alternativas. En un entorno configurado a partir de sistemas heterogéneos, como es el del almacén de datos, esta inconsistencia puede generar serios problemas, por lo que las principales empresas comerciales dedicadas al almacenaje de datos han creado el grupo “MetaData Council” para la definición de estándares. Algunas empresas de software trabajan en la definición de metadatos propios, como es el caso de Oracle, que muestra reticencias a la integración en el MetaData Council. 2.7 Criterios para la selección de SGBD comerciales. El mercado de gestores de bases de datos es grande y tiene demasiadas alternativas a la hora de elegir el software que se va a utilizar; para tomar una decisión relativa a la herramienta por la cual inclinarlos, cual me ofrece mejores garantías en el desarrollo específico, cual es la herramienta óptima, qué detalles de implementación se debe tener en cuenta para la elección del sistema de gestión de bases de datos, convirtiéndose en una gran responsabilidad y preocupación por conocer las características, las ventajas y las desventajas. Se sabe que las herramientas forman un aspecto fundamental para desarrollar una implementación o un proyecto, las características de los mismos, de las empresas o las necesidades que hacen prioritario el que estas herramientas se ajusten a los requisitos específicos. Por estos motivos se deben indagar las alternativas que están al alcance, evitando posteriores desventajas como son la pérdida de tiempo, de dinero o lo que suele ser más grave: comprometer la credibilidad profesional avalando un concepto técnico sin contar con el suficiente conocimiento y soporte. Entre las ventajas existentes, destacan:


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Disponibilidad Al aplicar la metodología de bases de datos cada usuario deja de ser propietario de los datos, ya que éstos se comparten entre las aplicaciones, habiendo una mejor disponibilidad para todos los que los necesiten, siempre tengan acceso autorizado. Una de las ventajas de las nuevas tecnologías de desarrollo es el desarrollo de aplicaciones cuyo objetivo es acceder a esa información desde cualquier lugar, usando Internet. ––Facilidad de Uso Hay diversas maneras de extraer los datos almacenados en una base de datos, por ejemplo, usando instrucciones SQL, por aplicaciones desarrolladas en una organización o bien extraer la información con herramientas existentes; todo esto con dos valores añadidos: precisión y velocidad. ––Coherencia de los resultados Dado que la información de la base de datos se toma y almacena una sola vez, se debe intentar que en todos los programas se usen los mismos datos, de forma que los resultados sean coherentes y perfectamente comparables. Si se consigue evitar la redundancia en los datos, se evitará el inconveniente de las divergencias que hay en los resultantes de las actualizaciones no simultáneas de los ficheros. ––Confidencialidad en el manejo de los datos La información se puede centralizar en un único punto, pudiendo acceder a ella dependiendo del perfil con que se entra al sistema. ––Globalización de la información Permite considerar la información como un recurso de la empresa sin dueños específicos. Pero no todo son ventajas, entre las desventajas del uso de bases de datos encontramos:

95


96

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Instalación costosa La implantación de un sistema de bases de datos puede conllevar un costo elevado, tanto a nivel físico (nuevas instalaciones o ampliaciones de las existentes), como en el lógico (programas, compiladores, sistemas operativos, etc...). Existen medidas para reducir en gran medida los costos. ––Personal especializado

recuerde Primero se debe valorar si merece la pena usar un SGDB, ya que no todo son ventajas. Los costes (tiempo y dinero) de implantación pueden, o no, compensar los resultados.

Los conocimientos imprescindibles para una utilización eficaz y correcta, y para la gestión de las bases de datos, conllevan la necesidad de personal especializado que será difícil de encontrar, y de formar. El problema de la contratación y formación de este personal es clave para crear un sistema de base de datos. ––Falta de rentabilidad a corto plazo: La implantación de un sistema de bases de datos, tanto por su costo en equipos, como en personal, como por el tiempo que tarda en entrar en operación, no se considera rentable a corto plazo. Puede calcularse que para un sistema de tamaño medio, la rentabilidad empieza a apreciarse tras varios meses de su iniciación; para instalaciones grandes el plazo puede llegar a ser de varios años. El SGBD se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta. Las funciones de un SGBD son: ––Como función fundamental, debe dotar de la capacidad de almacenar datos en la base de datos, consultarlos y actualizarlos. ––Debe también proporcionar un catálogo con las descripciones de los datos, que sea accesible. Este catálogo se llama diccionario de datos y contiene información que describe los datos de la base (metadatos). Un diccionario de datos suele almacenar: ––Nombre, tipo y tamaño de los datos. ––Nombre de las relaciones que hay entre los datos. ––Nombre de los usuarios con autorización para el acceso a la base de datos.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Esquemas externos, conceptuales e internos, así como la correspondencia entre los esquemas. ––Restricciones de integridad sobre los datos. ––Estadísticas de uso, como la frecuencia de las transacciones y el número de accesos a los objetos de la base de datos. Algunos de los beneficios del diccionario de datos son: ––La información se puede almacenar de forma centralizada. Esto ayuda controlar los datos, como recurso que son. ––El significado de los datos se puede definir, que ayudará a entender el propósito de los datos. ––La comunicación se facilita, ya que se conserva el significado exacto. El diccionario de datos permite también la identificación del usuario que posee o accede a los datos. ––Las inconsistencias y redundancias se identifican fácilmente al estar centralizados los datos. ––Se puede contar con un historial de los cambios sobre la base de datos. ––El impacto de un cambio se concreta antes de ser implementado, ya que el diccionario conserva información relativa a cada tipo de dato, sus relaciones y sus usuarios.

97


98

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Se puede garantizar la seguridad y la integridad. ––Se puede dar información para las auditorias. Otras características a tener en cuenta para la elección del SGBD: Un SGBD debe garantizar que todas las actualizaciones correspondientes a una transacción se realicen, o bien que no se realice ninguna. Un SGBD debe dar un mecanismo para asegurar que la base de datos se actualice cuando varios usuarios la actualicen concurrentemente. Uno de los principales propósitos de los SGBD es el permitir que varios usuarios tengan acceso simultáneo a los datos que comparten. El acceso simultáneo es relativamente fácil de manejar si todos los usuarios se dedicasen a leer datos ya que esta actividad no interfiere unos con otros. Pero cuando dos o más usuarios acceden a la base de datos y al menos uno de ellos los actualiza, puede ocasionar inconsistencias en la base de datos. El SGBD debe garantizar de que las interferencias no se produzcan. Un SGBD debe dar un mecanismo para restablecer la base de datos si algo la daña, volviendo a un estado consistente. Un SGBD debe dar un mecanismo para garantizar que sólo los usuarios autorizados puedan acceder a la base de datos; esta protección debe ser contra accesos no autorizados. Un SGBD debe dar los medios para garantizar que tanto los datos de la base de datos, así como los cambios que se realizan sobre dichos datos, sigan ciertas reglas. La integridad de la base de datos requiere de consistencia y de validez de los datos almacenados. Esto se puede considerar como otra forma de protección de la base de datos que, además de tener que ver con la seguridad, tendrá otras implicaciones. La integridad se encarga de la calidad de los datos. Este concepto suele expresarse mediante restricciones, que son una serie de reglas que no debe violar la base de datos. Un SGBD debe dar herramientas para la administración efectiva de la base de datos. Dichas herramientas deben dotar de: ––Analizador de logs


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

99

––Analizadores estadísticos que permitan examinar las prestaciones o estadísticas de uso. ––Herramientas para reorganización de índices. ––Herramientas para la administración de usuarios ––Administrador de procesos ––Herramientas para exportar e importar datos. ––Herramientas de monitorización del funcionamiento y uso de la base de datos. HERRAMIENTAS DE SGBD DE SOFTWARE LIBRE Software libre, no significa software no comercial. Un software libre debe estar disponible para su uso, desarrollo y distribución comercial. El software comercial libre es un campo comercial muy importante hoy en día. Software libre es aquel que puede ser utilizado, modificado, distribuido y copiado de forma legal. Debe acompañarse del código fuente para hacer efectivas las libertades que lo caracterizan. Dentro de software libre hay también matices que se deben tener en cuenta. No debe confundirse software libre con software gratuito. El software gratuito no cuesta nada, pero esto no lo convierte en software libre, ya que no es una cuestión de precio, sino de libertad. La licencia de software es un contrato donde se especifican las normas y cláusulas que rigen el uso de un cierto programa, y dónde se estipulan los alcances de su uso, instalación, copia y reproducción del software. Al instalar y usar un determinado software se lleva implícito que se aceptan las cláusulas estipuladas en el contrato de cada programa. Hay tres razones principales por las cuales una determinada empresa podría elegir este modelo: ––Optando por el modelo de distribución y desarrollo libre, la empresa podrá utilizar la gran cantidad de herramientas libres que hay disponibles. Esto no sólo implica la ejecución de esas herramientas, sino la modificación de las mismas para ser adaptadas a casos particulares, así como la exploración de sus funciones para ser reutilizadas en futuros desarrollos. Así se obtiene una significativa ventaja respecto de las empresas que basan su negocio en el modelo cerrado o propietario, que no podrán usar este tipo de conocimiento y herramientas.

recuerde Para sistemas medios o grandes se hace casi imprescindible adoptar un SGDB.


100

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

––Liberar un programa facilita mucho su publicidad y distribución. Así no será necesario invertir mucho dinero en marketing y campañas publicitarias para lograr competir con productos ya existentes en el mercado. ––Si el producto tiene suficientes ventajas, despertará el interés de muchos usuarios, desarrolladores y otras empresas en todo el mundo, que contribuirán en su extensión, desarrollo y depuración. Hay muchos casos donde pequeños programas han culminado en productos de gran envergadura y nivel técnico. Las primeras necesidades para optimizar servicios y productos son la rapidez y la efectividad en los procesos y en los grandes flujos de datos. Con la gran demanda de soluciones informáticas surgieron muchos de gestores de bases de datos, que son programas que permiten gestionar la información de forma sencilla y que prestarán servicios para el desarrollo y la gestión de las bases de datos. Con la comercialización de múltiples entornos de desarrollo la clave radica en conocer las características, ventajas e inconvenientes de cada herramienta existente. Los productos comerciales más destacados son Microsoft SQL Server, Oracle, y Borland Interbase, sin embargo entre el software libre hay opciones tan completas como son MySQL, y PostgreSQL. A continuación pasamos a analizar estos programas, considerados como los más importantes actualmente en este sector. PostgreSQL PostgreSQL fue diseñado como una base de datos orientada a objetos. Esto implica que las tablas no son tablas, sino objetos, y las tuplas serán instancias de dicho objeto. Se pueden crear nuevos tipos de datos, realizar herencias entre los objetos, y además PostgreSQL ofrece transacciones, vistas, integridad referenciada y otras muchas funcionalidades, si bien hay que tener en cuenta que es lento y pesado. PostgreSQL incorpora la llamada MVCC (MultiVersion Concurrency Control) que propicia que los bloqueos de escritura actúen sólo en la sesión de su cliente y no en las de los demás clientes. También da soporte Full-


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

Text-indexing por medio de un trigger que se incluye en la distribución, y se ha arreglado el límite de 8k por fila, pasando a ser de 32k. PostgreSQL usa un modelo cliente-servidor que se conoce como proceso por usuario. Una sesión de PostgreSQL contiene en los siguientes programas, que consisten en procesos cooperantes de Unix: ––Un demonio supervisor (proceso llamado postmaster) ––La aplicación sobre la que trabaja el usuario (llamada frontend) ––Uno o varios servidores de base de datos que se encuentran en segundo plano (el progreso PostgreSQL) MySQL Server MySQL Server es la base de datos libre más usada del mundo. Fue creada por MySQL AB. MySQL AB, empresa cuyo negocio se basa en dar servicios basados en servidor de bases de datos MySQL. Su origen se debe a la búsqueda de los fundadores de crear un gestor de bases de datos que fuese rápido, aún más rápido que mSQL. Así surgió MySQL, que fue inicialmente un producto de la empresa y con posterioridad un software de dominio público. El servidor MySQL se desarrolló inicialmente para gestionar grandes bases de datos mucho más rápidamente que las soluciones previas, y se usa de forma exitosa ambientes de producción muy exigentes. Aunque se encuentre en constante desarrollo, el servidor MySQL ofrece hoy un rico y útil grupo de funciones. Su velocidad, seguridad y conectividad hacen de MySQL un servidor adecuado para acceder a las bases de datos usando Internet. SOFTWARE DE LICENCIA COMERCIAL Cuando una empresa de software distribuye un producto comercial sólo entregará al comprador una copia ejecutable del programa, junto con la licencia (autorización) de ejecutar dicho programa en un cierto número de máquinas. En el contrato que suscriben comprador y vendedor, conocido como “licencia” del producto, se expresa claramente que lo que el cliente adquiere es únicamente la posibilidad de usar dicho programa en un cierto número de ordenadores (esto dependerá de la cantidad que haya abonado). Así la licencia deja claro que la pro-

101


102

Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

piedad del programa se sigue manteniendo por la empresa que lo produce y que el usuario no está licitado a realizar ningún cambio sobre él. La corrección de errores o la adición de nuevas funciones en un programa sólo puede realizarse si se dispone del código fuente; para el caso del software comercial, es la empresa proveedora la única que dispone del código fuente. Sólo esta puede atender a los requisitos de un cliente insatisfecho con el producto del que adquirió una cierta licencia de uso. Esto hace que el usuario dependa claramente del proveedor. Si el programa contiene algún defecto se debe aceptar las condiciones establecidas por la empresa productora, en el caso de que la empresa reconozca y acceda a reparar el error. En muchos casos los programas propietarios de gran difusión se producen por empresas multinacionales, que tienen distribuidores o representantes en cada país, siendo uno de los argumentos adoptados por dichas empresas para justificar el alto costo de las licencias la disponibilidad de contar con un soporte técnico especializado. Este servicio técnico supondrá un respaldo para el usuario de cara a la solución de problemas que pudieran darse durante el uso del software adquirido, aunque la realidad nos demuestra que en muchos casos todo lo que se puede esperar del soporte técnico son instrucciones de uso, instalación y configuración. La reparación de errores detectados en el software por lo general no está al alcance de quien da el soporte, que no dispone del código fuente del software. Interbase Se trata de una buena herramienta de base de datos con amplia experiencia en el sector de las bases de datos comerciales, y que además tiene muchas herramientas de pago para ella. Casi todos los gestores de backup aceptan Interbase. Cuenta además con gestores en remoto de alta calidad para Windows; estas funcionalidades hacen de Interbase un producto muy competitivo, apto para su uso en cualquier proyecto medio que necesite de una base de datos fiable. Interbase tiene muchas de las funciones de una base de datos comercial: funciones como triggers, backup en línea, bases de datos de solo lectura (para permitir pasar a CD-ROM, escalabilidad, integridad referencial en cascada. Dispone también de soporte directo para PHP.


Unidad didáctica 2. Sistemas de gestión de bases de datos (SGBD)

103

Oracle La unión entre Dell y Oracle es uno de los principales encuentros tecnológicos actuales en cuanto a servicios informáticos orientados a la gestión empresarial. Hay más de 22000 instalaciones de software Oracle usando equipos Dell. La herramienta ha demostrado ser las preferidas a una amplia gama de clientes, como son Electronic Arts, Lighting Group de Acuity Brands, etc. Sql Server 2000 Sql Server es el sistema de gestión de base de datos de la multinacional Microsoft. Actualmente las empresas demandan diferentes tipos de soluciones de base de datos, haciendo críticas características como el rendimiento, la confiabilidad y la escalabilidad. Así mismo será crítica para el éxito comercial de un programa la anticipación al mercado. Además de estas cualidades empresariales básicas, SQL Server 2000 dota de gran agilidad a sus operaciones de administración y análisis de datos al permitir la rápida y fácil adaptación de la empresa para obtener una ventaja competitiva en un entorno de constantes cambios.

recuerde El uso de un sistema de licencia libre o un sistema de licencia comercial ha de ser valorado en términos tanto económicos como de precisar características propias y soporte técnico.



03 LENGUAJES DE GESTIÓN DE BASES DE DATOS. EL ESTÁNDAR SQL 3.1 Descripción del estándar SQL 3.2 Creación de bases de datos 3.2.1 Creación de tablas. Tipos de datos 3.2.2 Definición y creación de índices. Claves primarias y externas 3.2.3 Enlaces entre bases de datos 3.3 Gestión de registros en tablas 3.3.1 Inserción 3.3.2 Modificación 3.3.3 Borrado 3.4 Consultas 3.4.1 Estructura general de una consulta 3.4.2 Selección de columnas. Obtención de valores únicos

3.6 Consultas múltiples. Uniones (joins) 3.6.1 Definición de producto cartesiano aplicado a tablas 3.6.2 Uniones de tablas (joins). Tipos: inner, outer, self, equi, etc 3.6.3 Subconsultas 3.7 Agrupaciones 3.7.1 Conceptos de agrupación de datos 3.7.2 Funciones de agrupación 3.7.3 Agrupación multicolumna 3.7.4 Agrupación vía expresiones 3.7.5 Condiciones de filtrado de grupos 3.8 Vistas 3.8.1 Concepto de vista (view)

3.4.3 Selección de tablas. Enlaces entre tablas

3.8.2 Criterios para el uso de vistas

3.4.4 Condiciones. Funciones útiles en la definición de condiciones

3.8.3 Creación, modificación y borrado de vistas

3.4.5 Significado y uso del valor null 3.4.6 Ordenación del resultado de una consulta 3.5 Conversión, generación y manipulación de datos 3.5.1 Funciones para la manipulación de cadenas de caracteres 3.5.2 Funciones para la manipulación de números 3.5.3 Funciones de fecha y hora 3.5.4 Funciones de conversión de datos

3.8.4 Vistas actualizables 3.9 Funciones avanzadas 3.9.1 Restricciones. Integridad de bases de datos 3.9.2 Disparadores 3.9.3 Gestión de permisos en tablas 3.9.4 Optimización de consultas


106

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

3. Lenguajes de gestión de bases de datos. El estándar SQL Los programas en red son cada día más versátiles y numerosos. En muchas ocasiones el esquema básico de operación consiste en una serie de scripts que gestionan el comportamiento de una base de datos. Dada la diversidad de bases de datos y de lenguajes existentes, la forma de comunicarse entre ellos sería muy complicada de gestionar, de no ser por la existencia de estándares que nos permiten realizar las operaciones básicas de una forma comúnmente establecida. De esto radica la importancia del Structured Query Language, que no es mas que un lenguaje estándar de comunicación para las bases de datos. Así será un lenguaje normalizado que nos permita trabajar con cualquier tipo de lenguaje (PHP o ASP), combinados con cualquier tipo de base de datos (SQL Server, MySQL, MS Access...). El lenguaje estructurado de consulta o SQL (“Structured Query Language”) es un lenguaje de acceso a bases de datos relacionales que permite la definición de varios tipos de operaciones en ellas. Una de sus características propias es el manejo del cálculo relacional y del álgebra, que permiten realizar consultas para poder recuperar fácilmente información interesantes de bases de datos, así como hacer modificaciones en ella. Al hablar de lenguaje declarativo esto significa que sólo hay que indicar qué es lo que se quiere hacer, al contrario de los lenguajes procedimentales, en los que se debe indicar cómo se quiere hacer la acción sobre la base de datos. El hecho de que SQL sea estándar no implica que sea idéntico para cada base de datos. Así para determinadas bases de datos se usan funciones específicas que no necesariamente tienen que funcionar en otras. Además de esta universalidad, SQL incluye otras dos características muy importantes: ––potencia y versatilidad adecuadas; ––accesibilidad de aprendizaje. Los orígenes del SQL están estrechamente ligados a los de las bases de datos relacionales. En 1970 Codd propuso el modelo relacional y asociado a éste, un sub-lenguaje de acceso a los datos que se basaba en el cálculo de predicados. A partir de estas ideas IBM implementó el lenguaje SEQUEL (“Structured English Query Language”) que más adelante será implementado por el sistema de ges-


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

107

tión de bases de datos (SGBD). Sin embargo, fue Oracle quien lo usó por primera vez en 1979 integrándolo en un programa comercial. El SEQUEL terminaría siendo el origen de SQL, siendo éste una versión evolucionada del primero. El SQL pasa a ser el lenguaje más importante de los sistemas de gestión de bases de datos relacionales que surgieron en los años siguientes, y que ya, por fin, fue estandarizado en 1986 por ANSI, dando lugar a la primera versión estándar de este lenguaje, el “SQL1””SQL-86”. Al siguiente año este estándar fue adoptado también por la ISO. Este primer estándar no ataja todas las necesidades de encuentran los desarrolladores y contiene funcionalidades que posibilitan la definición de almacenamiento donde se consideró suprimirlas. Así en 1992, se lanzó al mercado un nuevo estándar ampliado y revisado del SQL llamado “SQL2” o “SQL-92”. Actualmente el SQL es el estándar más usado por la inmensa mayoría de los SGBD comerciales. Y, aunque hay una gran diversidad de agregados particularizados que incluyen las distintas implementaciones del lenguaje, el soporte al estándar SQL-92 por lo general muy grande. Se pueden distinguir tres niveles dentro del SQL-92: ––El nivel introductorio: incluye el SQL-89, así como las definiciones de clave primaria y clave foránea para crear una tabla.

recuerde

––El nivel intermedio: además del SQL-89, incluye algunas ampliaciones del SQL-92.

SQL es el lenguaje más frecuentemente usado en la gestión de bases de datos.

––El nivel completo: que contiene todas las ampliaciones del SQL-92.


108

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

El modelo relacional cuenta como estructura de almacenamiento de los datos las relaciones. El esquema o intensión de una relación consiste en el nombre que se le dio a la relación, así como un conjunto de atributos. La extensión de una relación será un conjunto de tuplas. 3.1 Descripción del estándar SQL. El SQL es un lenguaje que permite acceder a bases de datos para explotar la potencia y flexibilidad de los sistemas relacionales, posibilitando gran variedad de operaciones. Es un lenguaje declarativo de alto nivel y no procedimental que debido su fuerte base teórica y que está orientación la gestión de los registros permite una gran productividad en la orientación a objetos y en la codificación. Así, una única sentencia puede equivaler a uno o varios programas que se pueden usar en un lenguaje de bajo nivel orientado a registros. SQL tiene las siguientes características: ––Lenguaje interactivo de manipulación de datos: incluye lenguajes de consultas que se basan en cálculo relacional de tuplas, así como en álgebra relacional. ––Definición de vistas: con comandos para definir las vistas. ––Control de transacciones: SQL incluye comandos para la especificación del inicio y del fin de una transacción. ––Autorización: con comandos para la especificación de los derechos de acceso a las relaciones, así como a las vistas.

recuerde SQL tiene unas características lo suficientemente buenas y completas como para ser elegido como lenguaje de administración de bases de datos.

––Lenguaje de definición de datos: proporciona comandos que permiten definir los esquemas relacionales, modificaciones de los esquemas relacionales y borrado de relaciones. ––SQL incorporado y dinámico: se pueden añadir sentencias de SQL en distintos lenguajes de programación, como por ejemplo: C++, Cobol, Java, Pascal, etc. ––Integridad: incluye comandos que permiten la especifiación de las restricciones de integridad que han de cumplir los datos que almacenan la base de datos.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

109

3.2 Creación de bases de datos. 3.2.1 Creación de tablas. Tipos de datos. Cada base de datos define tipos de valores de campo propios, que no estarán presentes en otras bases. Sin embargo hay un conjunto de tipos que están presentes en la totalidad de las bases de datos. Los tipos de datos incluidos en SQL incluyen muchos de estos tipos comunes, que ya vimos en el tema anterior. SQL incluye los siguientes tipos: ––Texto (alfanuméricos): Contienen cifras y letras. Presentan una longitud limitada (255 caracteres); ––Numéricos: Existen de varios tipos, principalmente, enteros (sin decimales) y reales (con decimales). ––Boléanos: con dos formas: verdadero (sí) y falso (no). ––Memos: Son campos alfanuméricos de longitud ilimitada. Presentan el inconveniente de no poder ser indexados (veremos más adelante lo que esto quiere decir). ––Autoincrementales: Son campos numéricos enteros que incrementan en una unidad su valor para cada registro incorporado. Su utilidad resulta más que evidente: Servir de identificador ya que resultan exclusivos de un registro. ––Date: Almacenan fechas facilitando posteriormente su explotación. Almacenar fechas de esta forma posibilita ordenar los registros por fechas o calcular los días entre una fecha y otra... en formato AAAA MM DD (A: año, M: mes, D: día). ––Time: hora del día en formato MM SS (M: minutos, S: segundos, siendo el valor predeterminado 0). ––Timestamp: es la combinación de Date y Time. 3.2.2 Definición y creación de índices. Claves primarias y externas. La mayoría de las bases de datos cuentan con potentes editores que permiten la rápida y sencilla generación de cualquier tipo de tabla y con cualquier tipo de formato. Pero una vez que la base de datos está en el servidor podrá ocurrir que queramos introducir una nueva tabla que puede tener carácter temporal (por ejemplo

recuerde SQL incluye todos los tipos básicos de datos, que daran flexibilidad a la hora de definir el tipo de datos de cada campo.


110

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

para gestionar un carrito de compra en una tienda online) o bien de carácter permanente, por las necesidades concretas de nuestra aplicación. En todos estos casos, se parte de una sentencia SQL desde la que crear la tabla con el formato deseado, lo que nos facilita el trabajo. Este tipo de sentencias son muy útiles para bases de datos del tipo MySQL, que trabajan directamente con comandos SQL sin usar editores. Para crear una tabla se deben especificar varios datos: ––El nombre a asignar, ––Los nombres de los campos ––Las características de los campos. ––La especificación de si los campos serán índices, y el tipo del que lo serán (opcional). La sintaxis de creación puede variar de una base de datos a otra, ya que cada uno aceptará diferentes tipos de campo, y es que estos no están estandarizados (al menos no totalmente). A continuación se ejemplifica la sintaxis de estas sentencias:


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

EJEMPLO Create Table nombre_tabla ( nombre_campo_1 tipo_1 nombre_campo_2 tipo_2 nombre_campo_n tipo_n Key(campo_x,...) )

EJEMPLO Create Table compra ( id_compra INT(4) NOT NULL AUTO_INCREMENT, id_cliente INT(4) NOT NULL, id_producto INT(4)NOT NULL, fecha DATE, cantidad INT(4), total INT(4), KEY(id_compra,id_cliente,id_producto) ) En este caso se crean los campos identificación, los que se consideran de tipo entero, y de una cierta longitud, que se determina por el número que figura entre paréntesis. Para id_pedido necesitamos que ese campo se incremente automáticamente (AUTO_INCREMENT) de una en una unidad, en cada introducción de un nuevo registro para así automatizar su creación. Para evitar un mensaje de error se precisa que los campos que se definan como índices no sean nulos (NOT NULL). El campo fecha se almacena con formato de fecha (DATE) para permitir su correcta explotación a partir de las funciones previstas para ello. También se definen los índices por medio de enumeraciones entre paréntesis, precedidos de la palabra KEY o INDEX.

111


112

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Igualmente se podría crear la tabla de artículos con una sentencia semejante a la siguiente:

EJEMPLO

recuerde Como en cualquier otro lenguaje de programación hay que definir correctamente las instrucciones, conocer su sintaxis es imprescindible.

Create Table productos ( id_producto INT(4) NOT NULL AUTO_INCREMENT, nombre VARCHAR(50), tipo VARCHAR(25), marca VARCHAR(25), precio REAL, KEY(id_producto) ) En este caso puede verse que los campos alfanuméricos se introducen igual que los numéricos. En tablas con campos comunes es de imprescindible definir estos campos igual, para el buen funcionamiento. 3.2.3 Enlaces entre bases de datos. Cuanto más extensas son las bases de datos, más atención requerirán a la hora de organizar sus contenidos. Al trabajar con tablas de cientos o miles de registros, la búsqueda de un dato en concreto puede ser un proceso largo que ralentice mucho la creación de la página. Se deben tener en cuenta los aspectos fundamentales para el buen funcionamiento de la base de datos. Elección y gestión de los índices Los índices son campos que se eligen al azar por el diseñador de la base de datos, que permiten la búsqueda partiendo de ese campo a alta velocidad. Esta ventaja está contrarrestada por ocupar mucha más memoria y de requerir para su actualización e inserción, así como un superior tiempo de proceso. No se podrá indexar todos los campos de una extensa tabla, ya que se dobla el tamaño de la base de datos. Por otro lado no sirve indexar todos los campos


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

113

en una pequeña tabla, ya que las selecciones se pueden efectuar rápidamente de todos modos. Un ejemplo en el que los índices resultan muy útiles es al realizar peticiones simultáneas sobre diversas tablas. En este caso la selección se puede acelerar aun más al indexar los campos que forman el nexo entre las dos tablas. Los índices pueden llegar a ser a veces contraproducentes si son introducidos sobre campos triviales con los que no se realiza ninguna petición ya que plantea un problema de memoria además de ralentizar otras tareas de la base de datos como son la inserción, borrado y edición. Se debe estudiar a conciencia el tema de la indexación antes de indexan campos que no merezcan la pena. Gestión de las uniones entre tablas El enlace entre tablas es uno de los puntos más delicados pudiendo llegar a ralentizar el funcionamiento de la base de datos. Supongamos que trabajamos con una base de datos pequeña formada, por ejemplo, por dos tablas de tres mil registros cada una. Al elegir una selección simultánea en la que se impone la condición de que el valor un cierto campo de la primera sea igual a de una segunda, algo muy frecuente. En este caso la base de datos leerá y comparará cada valor de campo de una con los campos de la otra. Esto implicaría tres millones de lecturas. Este hecho se agravaría al consultar una tercera tabla a la vez, pudiendo ser catastrófico sabiendo que la base de datos es consultada por varios usuarios de forma simultánea. Para evitar colapsos se hace necesario indexar todos los campos que hacen de enlace entre esas tablas. Resulta de vital importancia administrar de forma lógica estos y otros aspectos de la base de datos. 3.3 Gestión de registros en tablas.

recuerde

3.3.1 Inserción.

El uso de enlaces nos permitirá realizar un acceso más veloz a los datos de los campos.

La sentencia INSERT de SQL añade uno o varios registros de cualquier tabla única de una base de datos relacional.


114

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

En su forma básica tiene la siguiente sintaxis: INSERT INTO table (columna1 [, columna2, columna3 ... ]) VALUES (valor1 [, valor2, valor3 ... ]) El número de columnas y valores debe ser el mismo. Si no se especifica una columna, se utilizará.

EJEMPLO INSERT INTO agenda (nombre, NUMBER) VALUES (‘Luis’, ‘626451010’); También se puede utilizar una forma acortada, aprovechando el orden de las columnas cuando se creó la tabla. En esta forma no será necesario especificar todas las columnas de la tabla desde cualquier otra columna tomarán sus valores por defecto o permanecer nulo: el valor predeterminado de la columna. Los valores especificados por la sentencia INSERT deberán permitir que se apliquen todas las restricciones (tales como claves principales, restricciones CHECK y NOT NULL). Si se produce un error de sintaxis o si se violan las restricciones propuestas, no se añade la nueva fila a la tabla y se devolverá un error. INSERT INTO table VALUES (valor1, [valor2, ... ]) Esto en cuanto a la forma básica de la instrucción. Además SQL cuenta con las siguientes formas avanzadas:

EJEMPLO INSERT INTO TABLE (columna-a, [columna-b, ...]) VALUES (valor-1a’, [valor-1b’, ...]), (valor-2a’, [valor-2b’, ...]), ...

Inserción multifila Desde SQL-92 se permite el uso de constructores de valores de filas para insertar varias filas a la vez en una única sentencia SQL. Esta instrucción también cuenta con su forma resumida en dos sentencias:


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

EJEMPLO INSERT INTO agenda VALUES (‘Luis’, ‘630551102’); INSERT INTO agenda VALUES (‘Pedro’, ‘923245120’); ... Hay que tener en cuenta que las dos declaraciones separadas pueden tener semántica diferente (especialmente con respecto a la declaración de triggers) y no pueden proporcionar el mismo rendimiento que una sola inserción de varias filas. Hay que tener también en cuenta que esto no es una instrucción SQL válido de acuerdo con el estándar SQL (SQL: 2003), debido a la cláusula de sub-selección incompleta. Copia de Filas de otras tablas Una sentencia INSERT también puede usarse para recuperar datos de otras tablas, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningún proceso intermedio en la aplicación cliente. Una sub-selección se utiliza en lugar de la cláusula VALUES. La sub-selección puede contener combinaciones, llamadas a funciones, e incluso puede consultar la misma tabla en la que los datos se inserta. Lógicamente, la selección se evalúa antes de que se inicie la operación real de inserción. Un ejemplo es la siguiente.

EJEMPLO INSERT INTO agenda2 SELECT * FROM agenda WHERE nombre IN (‘Pedro’, ‘Luis’).

La instrucción SELECT produce una tabla temporal, cuyo esquema debe coincidir con el de la tabla donde se introducen los datos.

115


116

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Devolución de la Clave Los diseñadores de bases de datos pueden utilizar una clave suplente como clave principal para cada tabla ejecutarán en el escenario, ya que de vez en cuando necesitan recuperar automáticamente la clave principal de la base de datos. La mayoría de los sistemas no permiten instrucciones INSERT de SQL para devolver los datos de fila. Se precisa aplicar una solución en estos escenarios. Las definiciones más comunes incluyen: ––El uso de un procedimiento almacenado de base de datos específica que genera la clave sustituta, realiza la operación INSERT, y finalmente devuelve la clave generada. Por ejemplo, en Microsoft SQL Server, la clave se recuperará a través de la función especial SCOPE_IDENTITY (), mientras que en SQLite la función se llama last_insert_rowid (). ––Uso de una sentencia SELECT en una base de datos define en una tabla temporal que contenga la última fila insertada (s). DB2 ejecuta esta función de la siguiente manera:

EJEMPLO SELECT * FROM NEW TABLE ( INSERT INTO agenda VALUES ( ‘Luis’,’650221250’ ) ) AS t.

Si se definen disparadores (triggers) sobre la tabla en la que opera la sentencia INSERT, los factores desencadenantes se evalúan en el contexto de la operación. BEFORE INSERT desencadena permitir la modificación de los valores que se insertará en la tabla. Los desencadenatnes AFTER INSERT no modifican los datos de más, pero se puede utilizar para iniciar acciones en otras tablas, por ejemplo, para poner en práctica un mecanismo de auditoría. 3.3.2 Modificación. Una instrucción UPDATE de SQL modifica los datos de uno o más registros de una tabla. Cualquiera de las filas o un subconjunto de ellas podrán ser actualizadas, pueden elegirse usando condiciones.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

La sintaxis de esta instrucción es: UPDATE nombre_tabla SET nombre_columna = valor [,nombre_columna = valor ...] [WHERE condicion] Para que la actualización tenga éxito, el usuario debe tener privilegios de manipulación de datos (privilegio UPDATE) en la tabla o columna, y el valor actualizado no debe entrar en conflicto con todas las restricciones aplicables (restricciones tales como claves principales, índices únicos, restricciones limitaciones CHECK y NOT NULL). En algunas bases de datos, tales como PostgreSQL, cuando se incluye una cláusula FROM, la tabla de destino se une a las tablas mencionadas en el fromlist, y cada fila de salida representa una operación de actualización para la tabla de destino. Al utilizar FROM, se debe asegurar de que la combinación produce como mucho una fila de salida para cada fila que desea modificar. En otras palabras, una fila de destino no debe unirse a más de una fila de la otra tabla(s). Si lo hace, sólo una de las filas de combinación se utilizará para actualizar la fila de destino. Es posible que algunos tipos de sentencias UPDATE para convertirse en un bucle infinito cuando la cláusula WHERE y una o varias cláusulas utilicen índices entrelazados.

EJEMPLO Establecer el valor de la columna C1 en la tabla T a 1, sólo en aquellas filas donde el valor de la columna C2 sea “c” UPDATE T SET C1 = 1 WHERE C2 = ‘c’.

3.3.3 Borrado En la base de datos de lenguaje estructurado de consultas (SQL), la instrucción DELETE elimina uno o más registros de una tabla. Se puede definir un subconjunto para ser eliminado mediante una condición. Algunos lenguajes como MySQL, permiten eliminar filas de varias tablas con una sentencia DELETE (esto a veces se le llama multi-tablas DELETE).

117


118

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Esta instrucción tiene la siguiente sintaxis: DELETE FROM nombre_tabla [WHERE condicion]; Tras ejecutar la instrucción, las filas que cumplen la condición WHERE se eliminan de la tabla. Si se omite la cláusula WHERE, se eliminan todas las filas de la tabla. La instrucción DELETE debe utilizarse con mucha precaución. La instrucción DELETE no devuelve ningún resultado. La ejecución de una instrucción DELETE puede usar disparadores para su ejecución, causando que se eliminen en otras tablas.Así por ejemplo, si dos tablas están vinculadas por una clave externa y las filas en la tabla referenciada se eliminan, siendo común que las filas de la tabla referenciadas también tendrían que ser eliminadas para mantener la integridad referencial.

EJEMPLO Borrar de la fila helados donde la columna sabor sea ron con pasas. DELETE FROM helados WHERE sabor=’Ron con pasas’;

3.4 Consultas. Las consultas en SQL se realizan con la sentencia SELECT, que devuelve un grupo de resultados de los registros de una o más tablas. Una instrucción SELECT retorna cero o más filas de una o más tablas de la base de datos. En la mayoría de las aplicaciones, SELECT es el comando más usado de manipulación del lenguaje de datos (DML). Como SQL es un lenguaje de programación declarativo, las consultas SELECT definen el grupo de resultados, pero no cómo se ha de calcular. La base de datos convierte la consulta en un “plan de consulta”, que puede variar con las ejecuciones, las versiones de bases de datos y la versión del software de la base de datos. Esta funcionalidad se llama el “optimizador de consultas”, ya que es responsable de encontrar el plan de ejecución óptimo para realizar la consulta, dentro de los límites aplicables.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

La sentencia SELECT tiene diversas cláusulas opcionales: ––WHERE Especifica qué filas se quieren recuperar. ––ORDER BY se especifica el orden en que se devuelven las filas. ––GROUP BY grupos de filas que comparten una propiedad para que una función de agregación se puede aplicar a cada grupo. ––HAVING selecciona entre los grupos definidos por la cláusula GROUP BY. ––AS proporciona un alias que se pueden utilizar para cambiar el nombre temporalmente tablas o columnas. Con frecuencia conviene indicar un número máximo de filas que se devuelven. Esto puede ser usado para realizar pruebas o para evitar el consumo de recursos excesivos si la consulta devuelve más información de lo esperado. El método para hacer esto a menudo varía según el proveedor. En ISO SQL: 2003, los conjuntos de resultados pueden estar limitadas por el uso de cursores, o mediante la introducción de la función de ventana SQL a la sentencia de selección. VENTANA DE FUNCIÓN ROW_NUMBER() Se puede usar por una tabla sencilla sobre las que devolver filas, en el ejemplo para un valor no mayor a diez.

EJEMPLO SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY sort_key ASC) AS ROW_NUMBER, COLUMNS FROM nombre_tabla ) foo WHERE ROW_NUMBER <= 10

ROW_NUMBER () puede ser no determinístico: si sort_key no es único, cada vez que se lance la consulta es posible obtener diferentes números de filas asig-

119


120

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

nadas a las filas donde sort_key es el mismo. Cuando sort_key es único, cada fila siempre obtendrá un número de fila única. VENTANA DE FUNCIÓN RANK() Funciona como ROW_NUMBER, pero puede devolver más de n filas en caso de que se aniden condiciones. En el ejemplo, para devolver las veinte personas más jóvenes. Este código puede devolver más de veinte filas si hay varias personas de la misma edad.

EJEMPLO SELECT * FROM ( SELECT RANK() OVER (ORDER BY edad ASC) AS ranking, persona_id, persona_nombre, edad FROM persona ) foo WHERE ranking <= 20

CLAUSULA FETCH FIRST Desde la ISO SQL: 2008 los límites del resultado se pueden especificar usando una cláusula FETCH FIRST. La sentencia de la misma es: SELECT * FROM T FETCH FIRST 10 ROWS ONLY 3.4.1 Estructura general de una consulta. De forma general se puede indicar que la instrucción SELECT consta de tres cláusulas: SELECT, FROM y WHERE.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

121

SELECT se corresponde con la operación de proyección del álgebra relacional. El listado de los atributos incluidos en el resultado de una consulta. FROM se corresponde con el producto cartesiano relativo al álgebra relacional. Define las relaciones que a usar como origen en la consulta. WHERE se corresponde con el predicado de selección del álgebra relacional. Consta de un predicado con atributos de las relaciones de la cláusula FROM. SELECT A1, …, An Describe la salida con: - Identificación de columnas - Funciones de columnas - Funciones escalares - Literales - Expresiones aritméticas FROM T1, …,Tn WHERE P Nombres de las vistas y tablas y condiciones de selección de filas. GROUP BY Ai1, …, Ain HAVING Q Nombre de las columnas y condiciones de selección de grupo. ORDER BY Aj1, …, Ajn Nombre de las columnas.

recuerde Aunque hay varios modificadores, la palabra clave en las consultas en SQL es SELECT.

3.4.2 Selección de columnas. Obtención de valores únicos. Debido a la ingente cantidad de tiempo que conlleva eliminar los duplicados, SQL los permite. Para eliminar las tuplas repetidas se incluye la cláusula DISTINCT. También es posible solicitar inclusión de tuplas repetidas por medio de la cláusula ALL. 3.4.3 Selección de tablas. Enlaces entre tablas. Las tablas se relacionan entre sí de forma que hay información de la fila que se va a guardar en varias tablas. Para proceder a la unión las filas se usará la clave primaria en la tabla “padre”, y la clave secundaria en la tabla “hija”.

recuerde SQL permite valores duplicados, si bien se puede seleccionar que no lo permita.


122

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

La sentencia join de SQL permite la combinación de registros de varias tablas en una única base de datos relacional. En SQL hay tres tipo de sentencia JOIN: cruzado, interno y externo. Hay en casos especiales una los que una tabla puede unirse a sí misma, de forma que se produzca una auto-combinación (SELF-JOIN). La combinación interna de las tablas puede hacerse por medio de la propiedad conmutativa y de la asociativa, de forma que el usuario sólo va a crear la consulta y el sistema de base de datos determinará la forma más eficiente de ejecutar la operación. Esta decisión es tomada el optimizador de consultas, que evalúa dos puntos de cierta importancia: –– El orden de las combinaciones: al ser las combinaciones conmutativas, el orden en que se combinan las tablas no modificará el resultado de la consulta. Por el contrario, sí que tendrá un gran impacto sobre el coste de la operación, de forma que elegir el orden de combinaciones óptimo es de gran importancia. ––El método de la combinación: a partir de dos tablas y una condición de combinación, habiendo una serie de algoritmos que posibilitan la devolución del resultado de la combinación. Qué algoritmo sea el más eficiente va a depender del tamaño de la tablas de entrada, del número de filas que satisfacen la condición de combinación y de las operaciones necesarias por el resto de la consulta. Con la operación Inner Join, derivada de la operación Join, se halla el producto cruzado de todos los registros; de forma que cada registro de la tabla A se combina con cada registro de la tabla B; permaneciendo sólo los registros en la tabla combinada que satisfacen las condiciones especificadas. Inner Join es el tipo de JOIN más usado, por lo que es muchas veces considerado como el tipo de combinación predefinido. Se especificarán dos diferentes maneras de expresar estas combinaciones. La primera, conocida como forma explícita, usará el término JOIN, mientras que la segunda es implícita y usará ‘,’ para realizar la separación de las tablas que se van a combinar en la sentencia FROM de la instrucción SELECT. Así se generará el producto cruzado del que se seleccionan las combinaciones que cumplan con lo que indica la sentencia WHERE.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Ejemplo INNER JOIN Explícito SELECT Campos FROM vecinos INNER JOIN bloque ON vecinos.IDBloque = bloque.IDBloque

Ejemplo INNER JOIN Implítico SELECT Campos FROM vecinos, bloque WHERE vecinos.IDBloque = bloque.IDBloque

3.4.4 Condiciones. Funciones útiles en la definición de condiciones. Cuando se quieran definir las condiciones de búsqueda se ha de tener la precaución de realizar sólo las operaciones aritméticas sobre tipos de datos que sean numéricos y hacer comparaciones únicamente entre tipos de datos que sean compatibles. Así no se puede comparar series de números con texto. Para especificar más de una condición se pueden encadenar con AND, con lo que se permite especificar tantas condiciones como se desee. Para construir condiciones complejas para realizar consultas se usarán predicados cuantificados. Los predicados permiten definir condiciones para que sólo se procesen las filas que cumplen dichas condiciones. Los predicados básicos son: IN, BETWEEN, LIKE, EXISTS. IN El predicado IN permite comparar un valor con otros (varios) valores. Adicionalmente se podrán usar los operadores IN y NOT IN cuando una sub-consulta devuelva un grupo de valores.

123


124

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Ejemplo Esta función devolverá el apellido de los encargados del proyecto PROY1 y PROY2: SELECT APELLIDO FROM EMPLEADOS WHERE NUM_EMP IN (SELECT RESP_EMP FROM PROYECTO WHERE PROY_NO = ©PROY1© OR PROJNO = ©PROY2©)

BETWEEN El predicado BETWEEN comparará un único valor con un rango de valores inclusivo (citado en el predicado BETWEEN).

Ejemplo Esta función devolverá el apellido de los empleados cuyo salario está entre 10000 y 20000: SELECT APELLIDO FROM EMPLEADO WHERE SALARIO BETWEEN 10000 AND 20000

LIKE Se utilizará el predicado LIKE para buscar cadenas de caracteres que cuentan una determinada composición. Esta composición se especifica por medio de signos de porcentaje y de guiones bajos. ––El carácter de guión bajo (_) representa un carácter individual cualquiera. ––El signo de porcentaje (%) representa una cadena de varios caracteres o la ausencia de carácter. ––Cualquier otro carácter se va a representar por sí mismo.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Ejemplo Esta función devolverá el nombre de los empleados cuyo nombre tiene seis letras y comienza por C: SELECT NOMBRE FROM EMPLEADO WHERE NAME LIKE ©C _ _ _ _ _©

EXISTS Con este predicado se permite realizar una sub-consulta para verificar que exista una fila que cumple una cierta condición. Así, la sub-consulta se enlazará con la consulta de nivel externo por medio del predicado EXISTS o NOT EXISTS. Al enlazar una sub-consulta con una consulta externa por medio del predicado EXISTS, la sub-consulta no devuelve ningún valor sino que el predicado EXISTS resultará verdadero si el grupo resultante de la sub-consulta contiene una o más filas, y resultará falso si no contiene ninguna fila. El predicado EXISTS se utiliza a menudo con sub-consultas correlacionadas.

Ejemplo Este ejemplo lista los departamentos que actualmente no tienen proyecto asignado: SELECT DEPT_NO, DEPT_NAME FROM DEPARTMENTO X WHERE NOT EXISTS (SELECT * FROM PROYECTO WHERE DEPT_NO = X.DEPT_NO) ORDER BY DEPT_NO

125


126

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

recuerde NULL se usa para trabajar con valores nulos de las tablas.

3.4.5 Significado y uso del valor null. Null (nulo) es una palabra especial y de uso reservado, que se emplea en (SQL) para indicar que no existe valor dentro de una base de datos o de un cierto campo de ésta. Cuando haya columnas en una tabla SQL que aceptan datos NULL (esto no siempre es válido) y se quiera realizar un SELECT de dicha tabla, de forma que el resultado sea las filas que contengan datos nulos o no nulos, se podrán realizar los siguientes acciones: SELECT * FROM TABLA WHERE ColumnaVacia IS NULL Esto nos devolverá las filas en las que la columna ColumnaVacia no contiene información. SELECT * FROM TABLA WHERE ColumnaVacia IS NOT NULL Esto nos devolverá las filas en las que la columna ColumnaVacia contiene información. 3.4.6 Ordenación del resultado de una consulta. SQL utiliza la cláusula ORDER BY para ordenar las filas del resultado de una consulta de una o más columnas. Esta cláusula no es la última por casualidad, siempre debe situarse al final de una consulta, siendo la última acción que realizará el motor SQL, a efectos lógicos, antes de devolver el resultado. Una consulta con esta cláusula devuelve un conjunto de resultados donde las filas están ordenadas por los valores de una o más columnas. Los criterios de ordenación no se indicarán en los resultados. Los criterios de ordenación pueden ser expresiones, incluyendo nombres de las columnas (sin ningún límite), funciones definidas por el usuario, operaciones aritméticas, o expresiones CASE. Las expresiones se evalúan y los resultados se usan para la clasificación. La estructura ORDER BY … DESC permite realizar un ordenamiento decreciente.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Ejemplo SELECT * FROM Empleados ORDER BY Apellido, Nombre

3.5 Conversión, generación y manipulación de datos. 3.5.1 Funciones para la manipulación de cadenas de caracteres. SQL usa funciones que se utilizan principalmente para la manipulación de cadenas. A continuación se incluyen las funciones principales sobre cadenas de caracteres (strings): ASCII(str) Devuelve el valor numérico del carácter más a la izquierda de la cadena str. Devuelve 0 si str es una cadena vacía. Devuelve NULL si str es NULL. ASCII () funciona con caracteres de valores numéricos que van de 0 a 255. BIN(n) Devuelve un string que representa el valor binario de N, donde N es un entero largo (BIGINT). Esto es equivalente a CONV (N, 10,2). Devuelve NULL si N es NULL. BIT_LENGTH(str) Devuelve la longitud de la cadena str en bits. CHAR(N,... [USING nombre_charset]) CHAR () interpreta cada argumento N como un entero y devuelve un string formado por los caracteres dados por los valores de los códigos en forma de números enteros. Los valores NULL se pasan por alto. CHAR_LENGTH(str) Devuelve la longitud de la cadena str, medida en caracteres. Un carácter multibyte se tratará como un solo carácter. Esto significa que para una cadena que contiene cinco caracteres de dos bytes, LENGTH () devuelve 10, mientras que CHAR_LENGTH () devuelve 5. CHARACTER_LENGTH(str) CHARACTER_LENGTH() es un sinónimo de CHAR_LENGTH(). CONCAT(str1,str2,...)

127


128

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Devuelve el string que resulta de concatenar los argumentos. Puede tener uno o más argumentos. Si todos los argumentos son strings no binarios, el resultado es un string no binario. Si los argumentos incluyen cualquier string binario, el resultado es un string binario. Un argumento numérico se convierte a su forma de string binario equivalente, si se quiere evitar eso, puedes utilizar un tipo de conversión explícita, CONCAT_WS(separador,str1,str2,...) CONCAT_WS() significa Concatenate Con Separador y es una forma especial de CONCAT(). El primer argumento es el separador para el resto de los argumentos. Se añade el separador entre las cadenas a ser concatenadas. El separador puede ser una cadena, al igual que el resto de los argumentos. Si el separador es NULL, el resultado es NULL. CONV(N,from_base,to_base) Convierte números entre diferentes bases numéricas. Devuelve una representación de cadena del número N, convertido de una base a otra from_base to_base. Devuelve NULL si algún argumento es NULL. El argumento N se interpreta como un entero, pero puede ser especificada como un entero o una cadena. La base mínima es de 2 y la base máxima es de 36. Si to_base es un número negativo, N es considerado como un número con signo. De lo contrario, N se trata como sin signo. CONV () funciona con una precisión de 64 bits. ELT(N,str1,str2,str3,...) Devuelve cad1 si N = 1, cad2 si N = 2, y así sucesivamente. Devuelve NULL si N es menor que 1 o mayor que el número de argumentos. ELT () es el complemento de FIELD (). EXPORT_SET(bits,on,off[,separador[,numero_de_bits]]) Devuelve una cadena tal que para cada bit se establece en los bits de valor, se obtiene una cadena en y para cada bit no se establece en el valor, se obtiene una cadena. Los bits en bits se examinan de derecha a izquierda (de menor orden de bits de orden superior). Las cadenas se añaden al resultado de izquierda a derecha, separados por el separador de cadena (el valor predeterminado es el carácter de coma.,.). El número de bits examinados se obtiene por number_of_bits (por defecto es 64). FIELD(str,str1,str2,str3,...) Devuelve el índice (posición de partida con 1) de str en el cadena1, cadena2, str3, ... lista. Devuelve 0 si no se encuentra str.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

FIND_IN_SET(str,strlist) Devuelve un valor en el rango de 1 a N si la cadena str está en la lista de cadenas strlist que consiste de N subcadenas. FORMAT(X,D) Formatea el número X a un formato decimal dado, Redondeado a D decimales, y devuelve el resultado como una cadena. Si D es 0, el resultado no tiene punto decimal o parte fraccional. Ejemplo: SELECT FORMAT(12332.123456, 4); devuelve 12,332.1235 HEX(N_or_S) Si N_OR_S es un número, devuelve una cadena que representa el valor hexadecimal de N, donde N es un número largo (BIGINT). Esto es equivalente a CONV (N, 8, 14). Si N_OR_S es una cadena, devuelve una representación de cadena hexadecimal de N_OR_S donde cada carácter en N_OR_S se convierte a dos dígitos hexadecimales. INSERT(str,pos,len,newstr) Devuelve la cadena str, con la subcadena comenzando en la posición pos y len, reemplazando caracteres por la cadena newstr. Devuelve la cadena original si pos no está dentro de la longitud de la cadena. Reemplaza el resto de la cadena desde la posición pos si len no está dentro de la longitud del resto de la cadena. Devuelve NULL si algún argumento es NULL. INSTR(str,substr) Devuelve la posición de la primera ocurrencia de la subcadena substr en la cadena str. Esta es similar a la forma de dos argumentos de LOCATE(), excepto que el orden de los argumentos se invierte. LCASE(str) LCASE() es sinónimo de LOWER(). LEFT(str,len) Devuelve los len caracteres más a la izquierda de la cadena str, o NULL si algún argumento es NULL. LENGTH(str) Devuelve la longitud de la cadena str, medido en bytes. Un carácter multi-byte como múltiples bytes. Esto significa que para una cadena que contiene cinco caracteres de dos bytes, LENGTH() devuelve 10, mientras que CHAR_LENGTH() devuelve 5.

129


130

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

LOAD_FILE(file_name) Lee el archivo y devuelve el contenido del archivo como una cadena. Para utilizar esta función, el archivo debe estar ubicado en el host del servidor, debe especificar la ruta completa al archivo, y debe tener el privilegio FILE. El archivo debe ser legible por todos, y su tamaño menor que max_allowed_packet bytes. Si el archivo no existe o no se puede leer porque una de las condiciones anteriores no se cumple, la función devuelve NULL. A partir de SQL 5.0.19, la variable sistema character_set_filesystem controla la interpretación de los nombres de archivo que se administran como cadenas literales. LOCATE(substr,str), LOCATE(substr,str,pos) La primera sintaxis devuelve la posición de la primera ocurrencia de la subcadena substr en la cadena str. La segunda sintaxis devuelve la posición de la primera ocurrencia de la subcadena substr en la cadena str, comenzando en la posición pos. Devuelve 0 si substr no se encuentra en str. LOWER(str) Devuelve la cadena str con todos los caracteres cambiados a minúsculas según el mapeo del conjunto de caracteres actual. LPAD(str,len,padstr) Devuelve la cadena str, relleno a la izquierda con la cadena padstr a una longitud de len caracteres. Si str es mayor que len, el valor devuelto se acorta a len caracteres. LTRIM(str) Devuelve la cadena str con los espacios en blanco eliminados. MAKE_SET(bits,str1,str2,...) Devuelve un valor de ajuste (una cadena que contiene subcadenas separadas por caracteres) Que consiste en las cadenas que tienen el bit correspondiente en bits establecidos. cad1 corresponde al bit 0, str2 al bit 1, y así sucesivamente. Valores NULL en str1, str2, ... no se anexan al resultado. MID(str,pos,len) MID(str,pos,len) es un sinónimo de SUBSTRING(str,pos,len). OCT(N) Devuelve una cadena que representa el valor octal de N, donde N es un entero largo (BIGINT). Esto es equivalente a CONV (N, 10,8). Devuelve NULL si N es NULL


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

OCTET_LENGTH(str) OCTET_LENGTH() es un sinónimo de LENGTH(). ORD(str) Si el carácter más a la izquierda de la cadena str es un carácter multi-byte, devuelve el código de ese carácter, calculado a partir de los valores numéricos de los bytes constituyentes utilizando una fórmula. Si el carácter más a la izquierda no es un carácter multi-byte, ORD() devuelve el mismo valor que la función ASCII(). POSITION(substr IN str) POSITION(substr IN str) es un sinónimo de LOCATE(substr,str). QUOTE(str) Citas una cadena para producir un resultado que se puede utilizar como un valor de los datos correctamente escapado en una sentencia SQL. La cadena se devuelve encerrado por comillas simples y con cada instancia de comilla simple (‘..), La barra invertida (. \.), ASCII NUL, y Control-Z precedido de una barra invertida. Si el argumento es NULL, el valor de retorno es la palabra. NULL. sin incluir las comillas simples. expr REGEXP pattern Esta función realiza una comparación de patrón de expr contra pattern. Retorna 1 si expr coincide con pattern, de lo contrario, devuelve 0. Si cualquiera de expr o pat es NULL, el resultado es NULL. REGEXP no distingue entre mayúsculas y minúsculas, excepto cuando se usa con cadenas binarias. REPEAT(str,count) Devuelve una cadena formada por la cadena str repetida count veces. Si el recuento es inferior a 1, devuelve una cadena vacía. Retorna NULL si str es NULL o recuento. REPLACE(str,from_str,to_str) Devuelve la cadena str con todas las ocurrencias de la cadena from_str reemplazado por el to_str cadena. REPLACE () realiza un encuentro entre mayúsculas y minúsculas en la búsqueda de from_str. REVERSE(str) Retorna la cadena str con el orden de los caracteres invertidos.

131


132

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

RIGHT(str,len) Devuelve los len caracteres más a la derecha de la cadena str, o NULL si algún argumento es NULL. RPAD(str,len,padstr) Devuelve la cadena str, haga acolchado con el padstr cadena a una longitud de len caracteres. Si str es mayor que len, el valor retornado se acorta a len caracteres. RTRIM(str) Retorna la cadena str con los espacios en blanco de cola extraídos. SOUNDEX(str) Devuelve una cadena soundex de str. Dos cuerdas que suenan casi igual debe tener cadenas soundex idénticas. Una cadena soundex estándar es de cuatro caracteres de longitud, pero la función SOUNDEX() devuelve una cadena de longitud arbitraria. Puede usar SUBSTRING() en el resultado para obtener una cadena soundex estándar. Se omiten todos los caracteres no alfabéticos en str. Todos los caracteres alfabéticos internacionales fuera del rango AZ se tratan como vocales. expr1 SOUNDS LIKE expr2 Es sinónimo a SOUNDEX(expr1) = SOUNDEX(expr2). SPACE(N) Devuelve una cadena formada por un espacio de N caracteres. STRCMP(str1, str2) Compara dos cadenas y devuelve 0 si ambas cadenas son iguales, devuelve -1 si el primer argumento es menor que el segundo acuerdo con el orden actual de lo contrario, devuelve 1. SUBSTRING(str,pos) / SUBSTRING(str,pos,len) SUBSTRING(str FROM pos FOR len) / SUBSTRING(str FROM pos) Las formas sin un argumento len devuelven una subcadena de la cadena str comenzando en la posición pos. Las formas con un argumento len devuelven una subcadena len caracteres de largo de cadena str, comenzando en la posición pos. Las formas que utilizan DE son la sintaxis SQL estándar. También es posible utilizar un valor negativo para la pos. En este caso, el principio de la subcadena es pos caracteres desde el final de la cadena, en lugar de al principio. Un valor negativo puede ser utilizado para POS en cualquiera de las formas de esta función. SUBSTRING_INDEX(str,delim,count) Devuelve la subcadena de la cadena str antes de count ocurrencias del delimitador delimitador. Si el recuento es positivo, se devuelve todo a la izquierda del delimitador final (contando desde la izquierda). Si el recuento es negativo, se


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

devuelve todo a la derecha del delimitador final (contando desde la derecha). SUBSTRING_INDEX() realiza un encuentro entre mayúsculas y minúsculas en la búsqueda de delimitador. TRIM([remstr FROM] str) TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) Retorna la cadena str con todos los prefijos o sufijos remstr eliminado. Si ninguno de los especificadores BOTH, LEADING, o TRAILING se da, se presupone BOTH. remstr es opcional y, si no se especifica, se eliminan los espacios. UCASE(str) UCASE() es un sinónimo de UPPER(). UNHEX(str) Realiza la operación inversa de HEX(str). Es decir, se interpreta cada par de dígitos hexadecimales del argumento como un número y lo convierte en el carácter representado por el número. Los caracteres resultantes se devuelven como una cadena binaria. UPPER(str) Retorna la cadena str con todos los caracteres cambiados a mayúsculas según el mapeo del conjunto de caracteres actual. 3.5.2 Funciones para la manipulación de números. En SQL las funciones numéricas se utilizan principalmente para la manipulación numérica y cálculos matemáticos. A continuación se mostrarán las principales funciones numéricas: ABS () Devuelve el valor absoluto de la expresión numérica. ACOS () Devuelve el arco coseno de expresión numérica. Devuelve NULL si el valor no está en el rango de -1 a 1. ASIN () Devuelve el arcoseno de expresión numérica. Devuelve NULL si el valor no está en el rango de -1 a 1. ATAN () Devuelve el arco tangente de expresión numérica.

133

recuerde SQL cuenta con numerosas funciones para el tratamiento de cadenas de caracteres. Es conveniente tener presente esta amplia variedad para poder solventar todos los problemas que se presenten.


134

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

ATAN2 () Devuelve el arco tangente de las dos variables que se le pasan. BIT_AND () Devuelve la función Y todos los bits de expresión. BIT_COUNT () Devuelve la representación de cadena del valor binario que se le pasa. BIT_OR () Devuelve el OR bit a bit de todos los bits en la expresión pasada. CEIL () Devuelve el valor entero más pequeño que no es menor que la expresión numérica pasada CEILING () Devuelve el valor entero más pequeño que no es menor que la expresión numérica pasada CONV () Convertir expresión numérica de una base a otra. COS () Devuelve el coseno de la expresión numérica pasada. La expresión numérica debe expresarse en radianes. COT () Devuelve la cotangente de expresión numérica pasada. DEGREES () Devoluciones expresión numérica convertido de radianes a grados. EXP () Devuelve la base del logaritmo natural (e) elevado a la potencia de la expresión numérica pasada. FLOOR () Devuelve el valor entero más grande que no es mayor que la expresión numérica pasada. FORMAT () Devuelve una expresión numérica redondeado a un número de posiciones decimales.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

GREATEST () Devuelve el valor máximo de las expresiones de entrada. INTERVAL () Toma varias expresiones exp1, EXP2 y exp3 etc .. y devuelve 0 si exp1 es menos de exp2, devuelve 1 si exp1 es menos de exp3 y así sucesivamente. MINUS () Devuelve el mínimo de entrada de valor cuando se administra dos o más. LOG () Devuelve el logaritmo natural de la expresión numérica pasado. LOG10 () Devuelve el logaritmo en base 10 de la expresión numérica pasado. MOD () Devuelve el resto de una expresión por medio de buceo por otra expresión. (OCT) Devuelve la representación de cadena del valor octal de la expresión numérica pasado. Devuelve NULL si el valor pasado es NULL. PI () Devuelve el valor de pi POW () Devuelve el valor de una expresión elevado a la potencia de otra expresión POWER () Devuelve el valor de una expresión elevado a la potencia de otra expresión RADIANS () Devuelve el valor de la expresión pasada convertido de grados a radianes. ROUND () Devoluciones expresión numérica redondeado a un entero. Puede ser utilizado para completar una expresión a un número de decimales SIN () Devuelve el seno de la expresión numérica dada en radianes. SQRT () Devuelve la raíz cuadrada no negativa de la expresión numérica.

135


136

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

recuerde SQL cuenta con numerosas funciones para el tratamiento de datos de tipo numérico. Es conveniente tener presente esta ámplia variedad para poder solventar todos los problemas que se presenten.

STD () Devuelve la desviación estándar de la expresión numérica. STDDEV () Devuelve la desviación estándar de la expresión numérica. TAN () Devuelve la tangente de la expresión numérica expresada en radianes. TRUNCATE () Devoluciones numéricos exp1 truncan a EXP2 decimales. Si exp2 es 0, entonces el resultado no tendrá punto decimal. 3.5.3 Funciones de fecha y hora. SQL permite incluye varias funciones para gestionar los datos de fecha y hora. A continación se mostrarán las principales funciones de este tipo: ADDDATE () Añadir fechas ADDTIME () Añadir tiempo CONVERT_TZ () Convertir de una zona horaria a otra CURDATE () Devuelve la fecha actual CURRENT_DATE () Es un sinónimo de CURDATE () CURRENT_TIME () Es un sinónimo de CURTIME () CURRENT_TIMESTAMP () Es un sinónimo de NOW () CURTIME () Devuelve la hora actual DATE_ADD () Añadir dos fechas


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

DATE_FORMAT () Formato de fecha tal como se especifica DATE_SUB () Restar dos fechas DATE () Se extrae la parte de la fecha de una fecha o una expresión de fecha y hora DATEDIFF () Restar dos fechas DAY () Es un sinónimo de DAYOFMONTH () DAYNAME () Devuelve el nombre del día de la semana DAYOFMONTH () Devuelve el día del mes (1-31) DAYOFWEEK () Devuelve el día de la semana, de lunes a viernes del argumento DAYOFYEAR () Devuelve el día del año (1-366) EXTRACT () Extrae parte de una fecha FROM_DAYS () Convertir varios días a una fecha FROM_UNIXTIME () Formato de fecha como timestamp UNIX HOUR () Extraer la hora LAST_DAY () Devuelve el último día del mes para el argumento LOCALTIME (), Es un sinónimo de NOW ()

137


138

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

LOCALTIMESTAMP () Es un sinónimo de NOW () MAKEDATE () Cree una fecha del año y el día de año MICROSECOND () Devuelve los microsegundos del argumento MINUTE () Devuelve el minuto de la argumentación MONTH () Devuelve el mes de la fecha actual MONTHNAME () Devuelve el nombre del mes NOW () Volver a la fecha y hora actuales PERIOD_ADD () Agregar un período de un año-mes PERIOD_DIFF () Devuelve el número de meses entre los períodos TRIMESTRE () Devuelve el trimestre con respecto al argumento de fecha SEC_TO_TIME () Convierte los segundos a “HH: MM: SS ‘ SEGUNDO () Devuelve el segundo (0-59) STR_TO_DATE () Convertir una cadena a una fecha SUBDATE () Cuando se invoca con tres argumentos sinónimo de DATE_SUB () SUBTIME () Resta la hora


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

SYSDATE () Devuelve la hora a la que la función se ejecuta TIME_FORMAT () Formato como el tiempo TIME_TO_SEC () Devuelve el argumento convertido en segundos TIME () Extracto de la parte de la hora de la expresión pasó TIMEDIFF () Reste el tiempo TIMESTAMP () Con un solo argumento, esta función devuelve la fecha o la expresión de fecha y hora. Con dos argumentos, la suma de los argumentos TIMESTAMPADD () Añadir un intervalo de una expresión de fecha y hora TIMESTAMPDIFF () Restar un intervalo de una expresión de fecha y hora TO_DAYS () Devuelve el argumento fecha convertida en días UNIX_TIMESTAMP () Devuelve una marca de tiempo UNIX

139


140

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

recuerde SQL cuenta con numerosas funciones para el tratamiento de datos de tipo fecha/ hora. Es conveniente tener presente esta ámplia variedad para poder solventar todos los problemas que se presenten.

UTC_DATE () Devuelve la fecha actual UTC UTC_TIME () Devuelve la hora UTC actual UTC_TIMESTAMP () Devuelve la fecha y hora UTC actual WEEK () Devuelve el número de la semana DÍA DE LA SEMANA () Devuelve al índice de lunes a viernes WEEKOFYEAR () Devuelve la semana del calendario de la fecha (1-53) YEAR () Devuelve el año YEARWEEK () Devuelve el año y la semana 3.5.4 Funciones de conversión de datos. SQL incluye dos funciones: CAST y CONVERT, cuyo fin es el de convertir datos de un tipo a otro. Ambas funciones son muy similares y su sintaxis es la siguiente: ––CAST Utilizaremos CAST, según se indica, para convertir explícitamente una expresión que no quiere o necesita para dar formato a los resultados: CAST( expresion AS tipo_de_datos) En sentido estricto, es probable que no se convierta sólo convertir para eliminar un formato, pero es bueno saber que se puede eliminar el formato y convertir en un solo paso. Esta función no es compatible con los tipos de datos definidos por el usuario.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

––Convertir a formato CONVERT permite convertir y dar formato en un solo paso de la siguiente manera, donde el estilo especifica el formato: CONVERT (tipo_de_datos, expresion , estilo ) Como CAST, tipo de datos debe ser el sistema de apoyo, ya que no funciona con los tipos de datos definidos por el usuario. 3.6 Consultas múltiples. Uniones (joins). 3.6.1 Definición de producto cartesiano aplicado a tablas. El producto cartesiano es una composición de tablas. Si se tienen dos tablas y se aplica el producto cartesiano a ellas, el resultado es una tabla en las que las columnas resultantes son las columnas de la primera tabla unidas a la de la segunda y en la que las filas resultantes son las filas de la primera tablas unidas a las filas de la segunda tabla. Así si la primera tablas tiene f1 filas y c1 columnas y la segunda tabla tiene f2 filas y c2 columnas, el producto cartesiano de ambas será una tablas con f1 x f2 filas y c1 + c2 columnas. Se explica mejor con el siguiente ejemplo: Tabla1 llamada Empleados Id_empleado

Nombre

Cargo

1

José

Técnico

2

Técnico

Contable

3

Luisa

Administrativa

Tabla2 llamada Despachos Id_despacho

Metros

Color_pared

1

45

Blanco

2

60

Gris

141

recuerde SQL permite la conversión de los datos de un tipo a otro, si bien para tipos de datos definidos por el usuario puede que estas funciones no sirvan.


142

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Tabla resultante del producto cartesiano de Empleados y Despachos: Al ser rel producto cartesiano de una tabla Empleados de dimensiones de 3x3 y otra tabla Despachos de dimensiones 2x3, la tabla resultante del producto cartesiano tendrá unas dimensiones de 6x6 Id_empleado

Nombre

Cargo

Id_despacho

Metros

Color_pared

1

José

Técnico

1

45

Blanco

1

José

Técnico

2

60

Gris

2

Pedro

Contable

1

45

Blanco

2

Pedro

Contable

2

60

Gris

3

Luisa

Administrativa

1

45

Blanco

3

Luisa

Administrativa

2

60

Gris

Para realizar este producto cartesiano, SQL realiza las siguientes acciones: ––Toma el primer registro de la tabla Empleados y con él recorre la tabla Despachos, asociándole todos sus registros, es decir, se une el empleado de Nombre José con todos los despachos. ––Después toma el segundo registro de la tabla Empleados y de igual forma le asocia todos los despachos. ––Realiza la misma operación con todos los registros de la tabla Empleados hasta llegar al final, de forma que a cada registro le asocia todos los registros de la tabla Despachos.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

La sentencia SQL equivalente para este producto cartesiano es la siguiente: SELECT * FROM Empleados, Despachos En la práctica, lo más habitual a la hora de usar el producto cartesiano es que una de las tablas tenga como columna, la clave principal de la otra, entonces se usa el producto cartesiano con la cláusula WHERE para mostrar los datos de forma correcta. En el ejemplo anterior, si en la tabla Empleados, existe una columna llamada id_despacho que contenga el despecho de cada empleado. Es decir: Tabla1 llamada Empleados Id_empleado

Nombre

Cargo

despacho

1

José

Técnico

1

2

Pedro

Contable

2

3

Luisa

Administrativa

2

Tabla2 llamada Despachos Id_despacho

Metros

Color_pared

1

45

Blanco

2

60

Gris

Si se hiciese el producto cartesiano sin más, resultaría una tabla de 7 columnas y 6 filas: Id_empleado Nombre

Cargo

despacho

Id_despacho Metros

Color_pared

1

José

Técnico

1

1

45

Blanco

1

José

Técnico

1

2

60

Gris

2

Pedro

Contable

2

1

45

Blanco

2

Pedro

Contable

2

2

60

Gris

3

Luisa

Administrativa

2

1

45

Blanco

3

Luisa

Administrativa

2

2

60

Gris

143


144

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Este producto cartesiano se ejecutaría con la misma sentencia SQL: SELECT * FROM Empleados, Despachos Si en cambio, se desease seleccionar los despachos de cada empleado se usaría la sentencia anterior con WHERE de esta forma: SELECT * FROM Empleados, Despachos WHERE Empleados.despacho=Despachos.Id_despacho De esta forma, la tabla resultante tendría 3 filas y 7 columnas y sería la relación de cada registro de la tabla Empleados con su registro correspondiente de la tabla Despachos, es decir, que el campo despacho del registro de la tabla Empleados coincida con el campo Id_despacho de la tabla Despachos. Esta sería la tabla resultante: Id_empleado

Nombre

Cargo

despacho

Id_despacho

Metros

Color_pared

1

José

Técnico

1

1

45

Blanco

2

Pedro

Contable

2

2

60

Gris

3

Luisa

Administrativa

2

2

60

Gris

3.6.2 Uniones de tablas (joins). Tipos: inner, outer, self, equi, etc. En álgebra relacional, una unión o join es la multiplicación de dos conjuntos de datos y una restricción del resultado de tal forma que sólo se devuelve la intersección de los dos conjuntos de datos. El propósito de la unión es fusionar horizontalmente dos conjuntos de datos, que por lo general son tablas, y producir un nuevo conjunto de resultados haciendo coincidir las filas en una fuente de datos con las filas de la otra fuente de datos. Con una unión se obtendría el mismo resultado que la anterior consulta: SELECT * FROM Empleados, Despachos WHERE Empleados.despacho=Despachos.Id_despacho Pero una unión es mucho más eficiente. A continuación se explicar a ver los diferentes tipos de uniones.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

EQUI-JOIN La combinación Equi Join es una combinación que usa el signo de igualdad como operador de comparación con la cláusula JOIN. Esta combinación se divide en dos tipos: ––Inner Join ––Outer Join INNER JOIN o COMBINACION INTERNA Se trata de la combinación más común. Esta combinación sólo devuelve las filas que representan una coincidencia entre los dos conjuntos de datos. El INNER JOIN permite emparejar filas de distintas tablas de forma más eficiente que con el producto cartesiano cuando una de las columnas de emparejamiento está indexada. Ya que en vez de hacer el producto cartesiano completo y luego seleccionar la filas que cumplen la condición de emparejamiento, para cada fila de una de las tablas busca directamente en la otra tabla las filas que cumplen la condición, con lo cual se emparejan sólo las filas que luego aparecen en el resultado. En SQL este tipo de unión se expresa de la siguiente forma:

SELECT * FROM Tabla1 [INNER] JOIN Tabla2 ON Tabla1.columna = Tabla2.columna

Al ser el tipo de JOIN predeterminado éste, la palabra INNER es opcional.

Ejemplo de uso de INNER JOIN SELECT * FROM Empleados INNER JOIN Despachos ON Empleados.despacho=Despachos.Id_despacho

145


146

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Esta construcción es igual en cuanto a resultado que la consulta con WHERE pero mucho más eficiente, rápida y consume muchos menos recursos. OUTER JOIN O COMBINACION EXTERNA Una combinación interna sólo contiene la intersección de los dos conjuntos de datos, mientras que una combinación externa además de los datos coincidentes, contiene los datos no coincidentes de izquierda a derecha. En SQL esta combinación se construye con la siguiente sintaxis:

SELECT * FROM Tabla1 LEFT|RIGHT [OUTER] JOIN Tabla2 ON Tabla1.columna = Table2.columna

La palabra OUTER es opcional ya que con las palabras RIGHT o LEFT se indica ya que es una combinación externa. En ambos tipos de combinaciones se incluyen los datos coincidentes. En una combinación LEFT JOIN devuelve los valores coincidentes de la tabla izquierda con la tabla derecha, en el caso de que no haya correspondencia devuelve NULL. En una combinación RIGHT JOIN, la operación es la inversa de la anterior: devuelve los valores coincidentes de la tabla derecha con la tabla izquierda y para el caso de no correspondencia, retorna el valor NULL. FULL JOIN Esta combinación es equivalente a usar LEFT JOIN y RIGHT JOIN a la vez. Se usar para obtener todas las filas de una combinación tengan o no correspondencia. Mediante esta combinación se obtienen las filas comunes en ambas tablas y también aquellas que no tengan correspondencia sean de la tabla que sean.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

La sintaxis es la siguiente:

SELECT * FROM Tabla1 FULL Tabla2 ON Tabla1.columna = Table2.columna

SELF-JOIN O AUTOCOMBINACION Una Self-Join es una combinación que se refiere a la misma tabla. Este tipo de relación unaria se suele usar para extraer datos de una relación reflexiva o recursiva. Para construir una self-join se debe incluir una segunda referencia a la tabla mediante una tabla alias. una vez que en las instrucción está disponible dos veces la misma tabla, la unión se hace de forma similar a que hubiese dos tablas. Ejemplo de self-join Si se tiene una tabla ejemplo como ésta llamada Peliculas, en la cual se tienen películas y directores, en la cual hay películas dirigidas por dos directores: Nombre_pelicula

Director

Fargo

Joel Coen

Fargo

Ethan Coen

Matrix

Larry Wachowski

Matrix

Andy Wachowski

La instrucción SQL para realizar una self-join que obtenga para cada pelicula la pareja de directores sería: SELECT Tabla1.Nombre_pelicula,Tabla1.Director,Tabla2.Director FROM Peliculas Tabla1, Peliculas Tabla2 JOIN Tabla1. Nombre_pelicula = Tabla2. Nombre_pelicula

147


148

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

El resultado de la consulta sería el siguiente: Nombre_pelicula

Director

Dirctor

Fargo

Joel Coen

Joel Coen

Fargo

Joel Coen

Ethan Coen

Fargo

Ethan Coen

Joel Coen

Fargo

Ethan Coen

Ethan Coen

Matrix

Larry Wachowski

Larry Wachowski

Matrix

Larry Wachowski

Andy Wachowski

Matrix

Andy Wachowski

Larry Wachowski

Matrix

Andy Wachowski

Andy Wachowski

Como se puede observar la pareja de directores se repiten en cada una de las películas, para evitar esto se podría haber añadido otra condición de esta forma: SELECT Tabla1.Nombre_pelicula,Tabla1.Director,Tabla2.Director FROM Peliculas Tabla1, Peliculas Tabla2 JOIN Tabla1. Nombre_pelicula = Tabla2. Nombre_pelicula AND Tabla1.Director > Tabla2.Director

3.6.3 Subconsultas. En ocasiones se usa una instrucción SELECT dentro de otra SELECT. A la instrucción SELECT interna se la denomina subselección. Los resultados de esta subselección se usan en la instrucción externa para determinar el contenido de la tabla de resultados final. Si se usa una subselección en las clausulas WHERE y HAVING de una instrucción externa, a la instrucción SELECT interna se le denomina subconsulta o consulta anidada. Existen tres tipos de subconsultas: ––Subconsulta escalar es áquella que devuelve una sola fila y una sola columna, es decir, un solo valor.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

––Subconsulta de fila, en la que se devuelven múltiples columnas, pero una sola fila ––Subconsulta de tabla devuelve varias filas y una o más columnas. Ejemplo de subconsulta Si se tiene la siguiente tabla: Id_empleado

Nombre

Cargo

Sueldo

1

José

Técnico

850

2

Pedro

Contable

1200

3

Luisa

Administrativa

1100

La siguiente subconsulta obtendrá la lista de empleados cuyo sueldo sea igual al resultado de seleccionar el máximo de los sueldos de toda la tabla, dicho de otra forma, obtendrá aquellos empleados cuyo sueldo sea el máximo de todos los sueldos de la tabla. En este caso devuelve el registro de Id_empleado=2.

SELECT Id_Empleado, Nombre FROM Empleados WHERE Sueldo = (SELECT MAX(Sueldo) FROM Empleados);

3.7 Agrupaciones. 3.7.1 Conceptos de agrupación de datos. A veces es necesario agrupar los datos de las tablas, generando una fila resumen para cada grupo, es decir, hacer unos subtotales. Esto se realiza con la cláusula GROUP BY y las consultas que la emplean se denominan consultas agrupadas. Las columnas empleadas en la cláusula GROUP BY se denominan columnas de agrupamiento. Al usar GROUP BY, cada elemento de la lista SELECT debe tener un único valor para cada grupo. La instrucción SELECT con la cláusula GROUP BY sólo puede contener:

149


150

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

––Constantes ––Funciones de agregación ––Nombre de columnas ––Expresión con los elementos anteriores Ejemplo de agrupación de datos con GROUP BY Si se tiene la siguiente tabla de empleados de una oficina: Id_empleado 1 2 3 4 5

Nombre María Pedro Luisa José Marta

Cargo Contable Contable Administrativa Técnico Telefonista

Sexo Mujer Hombre Mujer Hombre Mujer

Si se emplea la siguiente consulta agrupada: SELECT Id_Empleado, Nombre FROM Empleados WHERE Sueldo = (SELECT MAX(Sueldo) FROM Empleados); Se obtiene el siguiente resultado: Sexo Hombre Mujer

Num_empleados 2 3

Lo que hace esta consulta es seleccionar el sexo y crea un campo llamado Num_ empleados que contiene el número de registros de cada fila obtenida. Las filas se agrupan por el campo Sexo, por lo que se va a obtener una fila diferente por cada valor del campo Sexo distinto, en este caso Sexo tiene dos valores posibles: Hombre y Mujer, por lo que se va a obtener dos filas y en cada una de ellas el campo Num_empleados indica cuántos registros con el campo Sexo idéntico hay. En este ejemplo concreto hay dos registros con el campo Sexo igual a Hombre y tres registros con el campo Sexo igual a Mujer. La consulta hace un subtotal por el campo Sexo.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Sino se hubiese incluido la función agregada COUNT en SELECT el resultado en cuando a agrupamiento hubiese sido igual pero bastante menos aclaratorio, es decir, si la instrucción hubiese sido SELECT sexo from EMPLEADOS GROUP BY sexo El resultado hubiese sido:

Sexo Hombre Mujer Por eso, aunque no es obligatorio en la agrupación de datos se suele usar una función de agrupación. Si no se usa, no existen los valores de resumen, aunque los campos sigan agrupados. Se ha visto con el ejemplo anterior, que la cláusula GROUP BY combina los registros con valores idénticos en los campos que se especifican en una única fila. Para cada una de esas filas agrupadas se crea un subtotal si se incluye una función de agrupación en la instrucción SELECT. La sintaxis de la cláusula GROUP BY es: SELECT campos FROM nombre_tabla WHERE criterios GROUP BY camposporlosqueseagrupan En los campos GROUP BY los valores NULL se agrupan igual. Pero estos valores nos e evalúan en las funciones agregadas. Un campo de la lista de campos de GROUP BY puede referirse a cualquier campo de la cláusula FROM, excepto un dato Memo un objeto OLE. 3.7.2 Funciones de agrupación. Las funciones de agrupación que se pueden usar con la cláusula GROUP BY se enumeran a continuación. En todos las funciones, los operandos de su argumento pueden ser una constante, el nombre de un campo de una tabla, una función intrínseca o una función de definida por el usuario. Lo que no puede contener son otras de las funciones de agrupación.

151


152

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

AVG Esta función sirve para calcular la media aritmética (suma de los valores divididos por el número de valores) del campo especificado como argumento. En el cálculo de la media aritmética no se incluyen los campos NULL. COUNT Esta función sirve para calcular el número de registros del campo especificado como parámetro. Esta función puede contabilizar cualquier tipo de datos (texto, Memo...), ya que COUNT simplemente cuenta el número de registros, sin tener en cuenta los datos almacenados en los mismos. Si se usa el carácter comodín asterisco (*), COUNT cuanta todos los registros incluyendo los de valor NULL, en caso de que no se usa el asterisco, los registros con valor NULL, no los contabiliza. Si en el parámetro de COUNT aparecen varios campos, los nombre de los campos deben separarse por ampersand (&) y la función solo cuenta aquellos registros en los que al menos uno de los campos sea diferente de NULL. MAX Devuelve el máximo de los valores que especifica el parámetro de la función. MIN Devuelve el mínimo de los valores que especifica el argumento de la función. SUM La función SUM devuelve la suma de los valores que especifica su parámetro. STDEV Devuelve la desviación estándar del total de registros especificados en su argumento. Para calcular la desviación estándar la consulta debe tener al menos dos registros, en caso contrario devuelve NULL, indicando que no es posible calcularse. STDEP Devuelve la desviación estándar de una muestra aleatoria del total de registros especificados en su argumento. La consulta debe tener al menos un argumento, ya que en caso contrario no se puede calcular y devuelve NULL.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

VAR Devuelve la varianza del total de registros especificados en su argumento. Para calcular la desviación estándar la consulta debe tener al menos dos registros, en caso contrario devuelve NULL, indicando que no es posible calcularse. VARP Devuelve la varianza de una muestra aleatoria del total de registros especificados en su argumento. Al igual que en la anterior función, si el número de registros es menor que dos, devuelve NULL, ya que no se puede realizar el cálculo. 3.7.3 Agrupación multicolumna Se puede agrupar por varias columnas, en lugar de usar sólo una para el agrupamiento. Para realizar esto, se indican las columnas separadas por coma y en orden de menor a mayor agrupación. SQL permite incluir hasta diez columnas como máximo. Ejemplo de agrupación por varias columnas SELECT * FROM Empleados GROUP BY Cargo, Sueldo

En esta agrupación se obtendría una fila por todas las filas en las que se cumplan que los calores del campo Cargo y del campo Sueldo son iguales. 3.7.4 Agrupación vía expresiones. Al usar GROUP BY se puede agrupar por un campo y aunque en SQL no se puede usar expresiones en esta cláusula se puede solucionar esto usando un alias. Ejemplo de uso de expresiones usando un alias SELECT identificador ,FLOOR(porcentaje/100) AS valor FROM nombre_tabla GROUP BY identificador, valor ORDER BY val;

153


154

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

3.7.5 Condiciones de filtrado de grupos. En la instrucción GROUP BY, en lugar de la cláusula WHERE se puede usar la cláusula HAVING. Después de agruparse los registros usando GROUP BY, HAVING indica los que se van a mostrar. La diferencia es que se usa WHERE para no incluir determinadas filas en la agrupación y se usa HAVING para hacer un filtro de los registros, pero una vez que están ya agrupados. Por lo explicado, WHERE no puede contener funciones de agrupación, mientras que HAVING suele contener funciones de agrupación. Si en una cláusula HAVING no se usan algunas de estas funciones, sería válida, pero sería equivalente a una cláusula WHERE, por lo que no se debe usar así, ya que es más eficiente usar WHERE. Ejemplo de uso de WHERE en cláusula GROUP BY SELECT sexo, COUNT(*) as Num_empleados FROM Empleados WHERE Id_empleado >2 GROUP BY sexo En este ejemplo, WHERE filtra las filas que no se desean incluir en la agrupación, en este caso las filas con Id_empleado menor o igual que dos no se incluyen, por lo que sólo se incluyen las filas 3, 4 y 5 y el resultado de la anterior instrucción sería: Sexo Hombre Mujer

Num_empleados 1 2

Ejemplo de uso de HAVING en cláusula GROUP BY SELECT sexo, COUNT(*) as Num_empleados FROM Empleados GROUP BY sexo HAVING Num_Empleados>2 Sin la cláusula HAVING el resultado era: Sexo Hombre

Num_empleados 2


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Mujer

3

Usando la clausula HAVING de la forma indicada en el ejemplo, se filtran los registros una vez agrupados, de forma que se muestran áquellos cuyo campo Num_empleados es mayor que dos, en este caso, sólo un registro, por tanto el resultado sería: Sexo Mujer

Num_empleados 3

3.8 Vistas. 3.8.1 Concepto de vista (view). Una vista es (view) una instrucción de selección SQL almacenada que puede ser referenciado como una tabla, por lo que las vistas son llamadas también “tablas virtuales”. Si la tabla en la que se basa la vista se borra, la vista queda invalidada. Las vistas pueden ser aplicadas tanto a tablas como a consultas. 3.8.2 Criterios para el uso de vistas. Hay tres formas de trabajar con vistas, según los desarrolladores consultados: ––No usarlas nunca si es posible, ya que pueden causar problemas de rendimiento y también tienen problemas con la actualización. En este caso las aplicaciones son limpias y rápidas pero los usuarios de las mismas no se benefician de las vistas. ––Usarlas en todo momento, de forma que haya proyectos basados totalmente en vistas. Cada acceso del cliente a la aplicación se hace mediante una vista. Esto está bien de cara al usuario, pero hacen que la base de datos vaya más lenta. ––El término medio es el correcto: se den usar las vistas para simplificar las consultas complejas y otras operaciones que las requieran.

155


156

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

3.8.3 Creación, modificación y borrado de vistas. CREACION DE VISTAS La sintaxis para la creación de vistas a partir de una tabla es la siguiente. CREATE VIEW nombre_de_la_vista AS SELECT nombre_columnaS FROM nombre_tabla WHERE condicion/es [WITH CHECK OPTION] Ejemplo de creación de tablas Si tenemos una tabla llamada Empleados con las columnas id_empleado, nombre, cargo, edad, domicilio, teléfono y email se puede crear una vista en la que aparezcan sólo los campos nombre y edad de la siguiente forma: CREATE VIEW VISTA_EMPLEADOS AS SELECT nombre, edad FROM Empleados;

Una vez creada la vista, se puede usar igual que una tabla. Por ejmeplo se puede seleccionar campos de la misma de esta forma: Se pueden crear vistas a partir de múltiples tablas sin más que añadirla en la sintaxis anteriormente indicada. Ejemplo de uso de una vista como si fuese una tabla SELECT nombre FROM VISTA_EMPLEADOS La opción WITCH CHECK no es obligatoria dentro de la sentencia CREATE VIEW. Sirve para asegurar que cualquier inserción o modificación que se hagan a través de la vista satisfacen las condiciones de la definición de la vista. Si no se cumplen esos requisitos, las instrucciones INSERT o UPDATE devuelven un error.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Ejemplo de uso de la opción WITH CHECK

CREATE VIEW VISTA_EMPLEADOS AS SELECT nombre, edad FROM Empleados WHERE edad IS NOT NULL WITH CHECK OPTION;

Con esta sentencia se impiden que se inserten nuevos registros en los que el campo edad sea NULL. MODIFICACION DE VISTAS Si se intenta modificar una vista existente con el comando CREATE VIEW se produce un error. El comando correcto es ALTER con la siguiente sintaxis: ALTER nombre_vista AS sentencia_SQL Si se desease modificar la anterior vista para ampliar la selección de campos al campo Cargo se usaría la siguiente sentencia: Ejemplo de modificación de vistas

ALTER VISTA_EMPLEADOS AS SELECT nombre, edad, cargo FROM Empleados WHERE edad IS NOT NULL WITH CHECK OPTION;

BORRRADO DE VISTAS Para borrar una vista se debe usar el comando DROP VIEW con la siguiente sintaxis: DROP VIEW nombre_de_la_vista

157


158

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

3.8.4 Vistas actualizables. Existen ciertas condiciones para que una vista pueda actualizarse: ––La cláusula SELECT no puede contener: -- la cláusula ORDER BY -- la palabra clave DISTINCT -- funciones de agrupado ––La cláusula WHERE no puede contener subconsultas ––La consulta no puede contener GROUP BY o HAVING ––Las columnas calculadas no pueden actualizarse ––La cláusula FROM no puede contener múltiples tablas ––Todas las columnas con valor NOT NULL de la tabla en la que está basada la vista deben incluirse en la misma para que la instrucción INSERT funcione. Si una vista cumple todas las condiciones mencionadas, entonces puede actualizarse. 3.9 Funciones avanzadas. 3.9.1 Restricciones. Integridad de bases de datos. La integridad hace referencia al hecho de que los datos de la base de datos deben ajustarse a restricciones antes de almacenarse en ella. Una restricción de integridad es una regla que restringe el rango de valores para una o más columnas en la tabla. Hay cuatro tipos de restricciones de integridad: integridad de entidad, de dominio, referencial y definida por usuario. INTEGRIDAD DE ENTIDAD Define una fila como única en una tabla. Esta integridad exige la integridad de las columnas de los identificadores o la clave principal de una tabla, a través de índices y restricciones UNIQUE, o restricciones de clave primaria PRIMARY KEY. No se acepta que algún componente de la clave primaria acepte valores nulos.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Ejemplo de integridad de entidad CREATE TABLE Profesores (identificador integer Unique, Apellidos varchar (50),Nombre varchar(30)); La restricción UNIQUE asegura que la columna identificador no puede contener valores duplicados. INTEGRIDAD DE DOMINIO Viene dada por la validez de las entradas para una columna determinada. Se puede exigir la integridad de dominio para restringir el tipo de datos aceptados, el formato a través de restricciones CHECK y reglas, o el intervalo de valores posibles mediante restricciones FOREIGNKEY y CHECK, definiciones DEFAULT y NOT NULL y reglas. Ejemplo de integridad de dominio CREATE TABLE Profesores (identificador integer NOT NULL, Apellidos varchar (50)NOT NULL ,Nombre varchar(30) NOT NULL, Domicilio varchar (100)); La columna Domicilio puede aceptar valores NULL mientras que el resto no. Otro ejemplo de integridad de dominio CREATE TABLE Profesores(identificador integer CHECK (identificador >150),Apellidos varchar (50),Nombre varchar(30))

La columna identificador debe tener un valor mayor que 150. INTEGRIDAD REFERENCIAL Se refiere a un conjunto de normas que protegen las relaciones definidas entre las tablas, de forma que no se puedan eliminar o modificar datos de forma accidental. La integridad referencial se puede traducir en tres restricciones:

159


160

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

––No se podrá introducir un valor en la tabla relacionada si antes no ha sido introducida en la tabla principal. ––No se puede eliminar un registro de una tabla principal si existen registros coincidentes en la tabla relacionada. ––No se puede cambiar un valor de la clave primaria en la tabla principal si el registro tiene registros Por ejemplo si tenemos una base de datos de una clínica, en la cual tenemos los pacientes en una tabla cuya clave principal es el número de historial y los ingresos en otra tabla relacionada. Con la integridad referencial se aplican tres restricciones: ––No se permitirá usar un número de historial de un paciente en la tabla ingresos sino existe en la tabla pacientes. O lo que es lo mismo, hasta que no se dé de alta un paciente no podrá realizarse su ingreso. ––No se puede eliminar un paciente que tenga registros en la tabla ingresos. Es decir, si un paciente ha sido ingresado no se le puede eliminar; esto se hace para evitar que un ingreso quede huérfano, sin datos de pacientes. ––No se puede cambiar el número de historial en la tabla pacientes ya que está también en la tabla ingresos; esto se hace para evitar incoherencias. INTEGRIDAD DEFINIDA POR EL USUARIO Permite definir reglas establecidas por el diseñador de la base de datos y que corresponden a políticas o normas de la empresa, que no se pueden categorizar en ninguna categoría de integridad.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Algunas de estas reglas pueden especificarse en la base de datos, sin necesidad de definirlas en las aplicaciones. Un ejemplo de integridad definida por el usuario puede ser que en la base de datos de una biblioteca, no se podrá dar de alta como socio a un menor de 10 años. Para el modelo de datos sería indiferente que en la base de datos hubiese usuarios de menos de 10 años, pero por política de la empresa, en este caso la biblioteca, no se acepta. 3.9.2 Disparadores. Un disparador (trigger) es proceso que se ejecuta cuando una condición definida en una operación se cumple. Las ventajas de utilizar disparadores son: ––Proporcionan una manera alternativa de comprobar la integridad de los datos. ––Es otra forma de ejecutar las tareas programadas. Mediante el uso de disparadores, no hay que esperar para ejecutar las tareas programadas ya que los factores que las desencadenan son invocados de forma automática tras algún cambio en los datos de las tablas. ––Sirven para auditar los cambios de datos en las tablas. Por contra, las desventajas en el uso de los disparadores son: ––Los disparadores sólo pueden proporcionar una validación extendida y no pueden reemplazar todas las validaciones. Algunas validaciones simples tienen que ser hechas en la capa de aplicación. Por ejemplo, pueden validar las entradas del usuario en el lado del cliente usando JavaScript o en el lado del servidor utilizando lenguajes como JSP, PHP, ASP.NET, Perl, etc. ––Los disparadores se invocan y son ejecutados de forma invisible a las aplicaciones de cliente, por lo que es difícil saber lo que ocurre en la capa de base de datos. ––Pueden aumentar la sobrecarga del servidor de base de datos. De forma práctica, un disparador es un conjunto de sentencias SQL que se invoca automáticamente cuando se realiza un cambio en los datos de la tabla asociada. Un disparador puede ser definido para ser invocado ya sea antes o después de los datos se cambien mediante INSERT, UPDATE o DELETE.

161


162

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Algunos de los usos prácticos de los disparadores pueden ser: ––Enviar una alerta, por email u otro medio, al actualizar una tabla, indicando que se debe realizar una acción ––Validar los datos de entrada ––Registrar los cambios que se producen, guardando el usuario que los realiza Para definir un disparador es necesario definir: ––Nombre de la tabla sobre la que actuará el trigger ––Sentencia que activará el trigger (inserción, actualización o borrado) ––Acciones que realizará el trigger Ejemplo de instrucción para crear un disparador: CREATE {OR REPLACE} TRIGGER NombreDisparador [BEFORE|AFTER] [DELETE|INSERT|UPDATE {OF columnas}] [ OR [DELETE|INSERT|UPDATE {OF columnas}]...] ON NombreTabla [FOR EACH ROW [WHEN CondicionDisparador]] [DECLARE] -- Se declaran las variables locales BEGIN -- Cuerpo del disparador [EXCEPTION] -- Las instrucciones de excepción END;

Si una tabla tiene varios disparadores asociados, el orden en el que se ejecutan es el siguiente: ––Se ejecuta el disparador de tipo BEFORE y para cada fila a la que afecte la orden: ––Se ejecuta el disparador de tipo BEFORE con nivel de fila. ––Se ejecuta la orden


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

––Se ejecuta el disparador de tipo AFTER Se ejecuta, si existe, el disparador de tipo AFTER con nivel de orden. ––Se ejecuta el disparador de tipo AFTER ––Si alguno de los disparadores especificados no existe, se omite ese paso. Un disparador puede contener cualquier instrucción SQL con las siguientes excepciones: ––No puede declarar variables de tipo LONG ––Un disparador no puede emitir ninguna orden de control de transacciones, como ROLLBACK, SAVEPOINT o COMMIT. El disparador es activado como parte de la ejecución de la orden que provocó el disparo, y es parte de la misma transacción que dicha orden. Al confirmar o cancelar esa orden, se confirma o cancela el trabajo efectuado por el disparador. ––Ninguna función invocada por el disparador puede emitir órdenes de control de transacciones 3.9.3 Gestión de permisos en tablas. En SQL se puede asignar un conjunto de permisos en las tablas individuales y conceder a los usuarios combinaciones de estos permisos para definir el acceso a una tabla. Se puede usar el comando GRANT para otorgar los siguientes permisos en las tablas: ––El permiso ALTER permite a un usuario modificar la estructura de una tabla o para crear disparadores. El permiso REFERENCES permite a un usuario crear índices en una tabla y crear las claves externas. Estos permisos no se asignarán a la mayoría de los usuarios debido a . ––Los permisos DELETE, INSERT, y UPDATE otorgan la facultad de modificar los datos en una tabla. ––El permiso SELECT otorga autoridad para visualizar los datos en una tabla, pero no le da permiso para cambiarlo.

163


164

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

––El permiso ALL garantiza todos los anteriores permisos. ––Los permisos REFERENCES, SELECT y UPDATE se pueden limitar a un conjunto de columnas de la tabla o la vista. La sintaxis del comando GRANT es la siguiente: GRANT nombre_privilegio ON nombre_objeto TO {nombre_usuario |PUBLIC |nombre_rol} [WITH GRANT OPTION];

Se enumeran a continuación cada una de las partes usadas por el comando GRANT: ––nombre_privilegio es el derecho de acceso, permiso o privilegio concedido (por ejmeplo SELECT, ALL, etc) ––nombre_objeto es el nombre de un objeto de la base de datos. Lo habitual es que sea una tabla o una vista. ––nombre_usuario es el nombre del usuario al que se le concede el derecho. ––Se usa PUBLIC si se desea otorgar el derecho a todos los usuarios. ––nombre_rol es indica a qué rol se aplica el privilegio. Los roles son un conjunto de usuarios agrupados para administrar mejor los permisos. ––Con WITH GRANT OPTION se permite al usuario conceder derechos de acceso a otros usuarios.

Ejemplo GRANT DELETE ON tabla1 TO usuario1;

En este ejemplo se le otorga al usuario usuario1 el permiso DELETE en la tabla tabla1.


Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

Ejemplo GRANT UPDATE (columna1, columna2 ) ON tabla1 TO usuario1;

En este ejemplo se le otorga al usuario usuario1 el permiso UPDATE en las columnas columna1 y columna2 de la tabla tabla1. Los permisos de tabla se aplican en general a todos los datos de la tablas, excepto en el caso de los permisos REFERENCES, SELECT y UPDATE , los cuales se pueden conceder a un subconjunto de las columnas. 3.9.4 Optimización de consultas. La optimización de consultas es una tarea muy importante en la gestión y mantenimiento de una base de datos, ya que algunas consultas mal diseñadas pueden hacer crecer de forma exponencial la cantidad de registros devueltos , aunque sólo tuviese que devolver muchos menos. Algunas de las pautas a tener en cuenta para optimizar las consultas en bases de datos son: ––Suele ser frecuente que las bases de datos no estén bien diseñadas y que no estén normalizadas, lo cual puede afectar de forma grave a la velocidad de la base de datos. Una forma de evitarlo es aplicar las tres formas normales siempre, ya que la normalización en el momento del diseño se realiza hasta la tercera forma normal. Más adelante se puede ir más allá de esta tercera norma. ––A la hora de filtrar datos, se debe usar la cláusula WHERE y nunca SELECT *.Se deben especificar los campos necesitados, ya que esto hace la consulta más rápida y eficiente. ––Se debe usar con cuidado JOIN, ya que las expresiones JOIN consumen mucho tiempo, hay que asegurarse que se están usando todas las claves relativas a las tablas que se refieren y no debe aplicarse JOIN en tablas que no se necesiten: se deben tratar de unir campos anexados siempre que sea posible. Además, es fundamental elegir bien el tipo de JOIN: INNER, LEFT, RIGHT, etc.

165


166

Unidad didáctica 3. Lenguajes de gestión de bases de datos. El estándar SQL

––Es muy conveniente usar índices para las tablas, sobre todo si las consultas realizan búsquedas de tablas completas. Todas las claves primarias necesitan índices para realizar los joins más rápido. De forma especial es importante usar índices en campos tipo entero, booleano y numérico; pero en campos de tipo Blob o VarChar. Pero se debe tener cuidado al usar índices en tablas que se actualizan de forma constante, ya que el mantenimiento de los índices puede consumir más tiempo del que ahorran. Donde sí que son muy útiles los índices son en las tablas de tipo read-only, ya que es muy poco frecuente que necesiten mantenimiento. ––Se debe usar en la medida de lo posible procedimientos almacenados en lugar de consultas ya que son mucho más eficiente por los siguientes motivos: -- Los procedimientos almacenados son compilados y por tanto más rápidos, al ser el código SQL interpretado. -- Se pueden realizar varias consultas en un mismo procedimiento, el cual es mantenido en el servidor hasta obtener el resultado final, que es lo único que se envía al cliente. -- Al ejecutarse dentro del servidor los procedimientos almacenados, suelen ser más rápidos. -- Mantienen el código de acceso a la base de datos separado de la capa de presentación, y esto hace más fácil su y más segura frente tipo inyección SQL, ya que no se tiene acceso directo al código. Existen heramientas de optimización en la mayoría de SGBD. Por ejemplo, MySQL tiene la herramienta MySQL Query Analyzer. Ejemplo de consulta mal optimizada Select * from Alumnos; /* luego se muestra la información requerida con Aula=Ciencias Ejemplo de optimización de la consulta anterior Select Nombre, Email From Alumnos Where Aula=’Ciencias’; Otro ejemplo de consulta mal optimizada Select S.Nota, Alumnos.Nombre From Asignaturas S, Alumnos A; Ejemplo de optimización de la consulta anterior Select S.Nota, Alumnos.Nombre From Asignaturas S INNER JOIN Alumnos A ON S.AlumnoID=A.AlumnoID;


04 Lenguajes de marcas de uso común en el lado servidor 4.1 Origen e historia de los lenguajes de marcas. El estándar XML 4.2 Características de XML 4.2.1 Partes de un documento XML: marcas, elementos, atributos, etc 4.2.2 Sintaxis y semántica de documentos XML: documentos válidos y bien formados 4.3 Estructura de XML 4.3.1 Esquemas XML: DTD y XML Schema 4.3.2 Hojas de estilo XML: el estándar XSLT y XSL 4.3.3 Enlaces: XLL 4.3.4 Agentes de usuario: XUA 4.4 Estándares basados en XML 4.4.1 Presentación de página: XHMTL 4.4.2 Selección de elementos XML: Xpath y XQuery 4.4.3 Firma electrónica: XML-Signature y Xades 4.4.4 Cifrado: XML-Encryption 4.4.5 Otros estándares de uso común 4.5 Análisis XML 4.5.1 Herramientas y utilidades de análisis 4.5.2 Programación de análisis XML mediante lenguajes en servidor 4.6 Uso de XML en el intercambio de información 4.6.1 Codificación de parámetros 4.6.2 Ficheros de configuración basados en XML


168

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

4. Lenguajes de marcas de uso común en el lado servidor 4.1 Origen e historia de los lenguajes de marcas. El estándar XML. Los lenguajes de marcas se llaman también lenguajes de descripción de documentos o lenguajes de marcado. Estos lenguajes no son lenguajes de programación como PHP o JAVA, ni tampoco son lenguajes de formato de texto como pdf. Los lenguajes de marcas son lenguajes en los cuales sus partes se diferencian unas de otras mediante señales o etiquetas, las marcas. En un documento existen diferentes niveles de información: ––Los datos o contenido del documento ––Una información que estará junto al contenido: el etiquetado o marcado (markup) El lenguaje de marcado cumple con dos objetivos básicos para diseñar y procesar un documento digital: ––Indica los formatos que debe tener el contenido del documento, por ejemplo, poner los títulos en un tamaño grande y negrita. ––Separa y divide el texto en partes que pueden ser párrafos, capítulos, etc, es decir, su estructura. Los lenguajes de marcas aparecen por los problemas al intercambiar documentos debido a la gran variedad de formatos en diferentes programas y esto hacía que se perdiesen o cambiasen las características del formato. Por ejemplo, un redactor de un documento lo puede hacer en un procesador de textos como Word con fuentes especificas, tamaños, bordes, etc. Pero para imprimirlo, el maquetador usa otro programa diferente, que puede que no tenga las mismas fuentes, cambie o quite los bordes, etc. Y si bien algunos de los fabricantes de programas ofrecen opciones de exportación e importación para compatibilidad con otros, no siempre son totalmente compatibles y no siempre todos incluyen esto. Para evitar este problema, se necesitaba un lenguaje especial y normalizado.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

El primer planteamiento surgió en los años setenta por parte del Dr. C.F. Goldfard de la empresa IBM que buscaba un lenguaje que cumpliese los dos objetivos comentados anteriormente, respetar no sólo los formatos, sino también la estructura del documento. A raíz de sus investigaciones surgió el modelo GML (Generalized Markup Language). A raíz del trabajo con GML, a principio de los ochenta, se formó un comité ISO para definir un lenguaje que fuese estándar para los fabricantes. En 1986 y sobre la base de GML se desarrolló el estándar ISO 8879, conocido como SGML (Standard Generalized Markup Language), un lenguaje especial normalizado y de carácter internacional. Aunque desde la implementación de ese lenguaje SGML, hasta que se puso en marcha pasó bastante tiempo ya que era un lenguaje muy extenso y eran muy caras las herramientas para trabajar con él. Así, sólo a las empresas con un gran volumen de documentos les era rentable trabajar con este lenguaje. Los lenguajes de marcas se pueden usar para tres fines básicos diferentes: ––Para definir el formato, por ejemplo, en el caso de los procesadores de texto. ––Para indicar el contenido, como en el caso de las bases de datos. ––Para definir el formato e indicar el contenido como en HTML. LENGUAJE DE MARCAS HTML En realidad, SGML no es un lenguaje, sino un metalenguaje. De SGML derivó el lenguaje HTML (HyperText Markup Language, es decir lenguaje de marcado de hipertexto), que se hizo muy popular a raíz de la popularización de Internet desde los años ochenta, pues fue el lenguaje usado en las páginas web. Para entender las limitaciones de HTML y su relación con XML, se va a explicar de forma resumida las principales características del lenguaje HTML. ESTRUCTURA DE UN DOCUMENTO HTML Los documentos HTML usan etiquetas (tags) para conseguir los efectos deseados en el texto. Estas etiquetas se escriben entre el símbolo de apertura de etiqueta (“<”) y el símbolo de cierre de etiqueta (“/>”). Ejemplo de estructura de etiqueta HTML <etiqueta1>…..</etiqueta1>

169


170

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

En algunos casos se deben especificar ciertos atributos en la directiva inicial según este ejemplo: <etiqueta2 atributo1=”…” atributo2=”…”> …...</etiqueta2> Las etiquetas pueden ir anidadas unas dentro de otras, para hacerlo de foirma correcta, se deben ir cerrando en orden inverso a la apertura: es decir, primero se debe cerrar la última etiqueta abierta, luego se cerrará la penúltima etiqueta abierta y así hasta cerrar por último la primera etiqueta abierta. Ejemplo de etiquetas anidadas en HTML <etiqueta3><etiqueta4>……</etiqueta4></etiqueta3> Los tags pueden contener otros tags. La forma correcta de escribirlas es: <A><B></B></A> Las partes fundamentales de un documento HTML son: ––Etiquetas de inicio y fin del documento: <html> y </html>. Entre estas dos etiquetas debe incluirse todo el documento. ––La cabecera del documento delimitada por <head> y </head>. En esta cabecera se definen valores generales de todo el documento, por ejemplo el titulo del documento especificado entre las etiqueta <title> y </title> o las etiquetas meta para posicionamiento web (<meta …>) ––El cuerpo del documento delimitado por <body> y </body>, donde está la información del mismo. En el cuerpo del documento es donde más etiquetas aparecen para formatear el texto. A continuación se describen algunas de las etiquetas HTML más usadas clasificadas por categorías.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

PRINCIPALES ETIQUETAS HTML El conjunto de etiquetas existentes, sin entrar en más detalle, está representado en la tabla siguiente: Etiqueta

Significado

<h1>…</h1> <h2>…</h2> <h3>…</h3> <h4>…</h4> <h5>…</h5>

Etiquetas que especifican los tamaños de fuente del texto, siendo el h1 el mayor, h2 el siguiente y así hasta el h6. Se suelen usar para poner los títulos y subtítulos en las páginas.

<h6>…</h6> <img> …. </img>

Etiqueta para insertar imágenes en el documento html.

<a>…</a>

Sirve para insertar enlaces o hipervínculos. Estos enlaces se pueden colocar sobre un texto o una imagen.

<ul> …</ul>

Define una lista desordenada de artículos

<ol>…>/ol>

Delimita una lista ordenada de artículos

<li>…</li>

Sirve para insertar cada uno de los artículos de una lista, ordenada o desordenada

<table>…>/table>

Etiquetas de inicio y fin de una tabla. Entre ellas se incluyen los elementos de la tabla (filas, columnas y celdas)

<tr>…</tr>

Sirven para delimitar una fila dentro de una tabla.

<td>…</td>

Delimitan una celda que debe estar dentro de una fila de una tabla.

<form>….</form>

Se utilizan para definir un formulario con todos sus elementos dentro de ellas.

<input>…

Es una etiqueta que no tiene etiqueta de cierre (No existe >/input>). Sirve para incluir diversos elementos dentro de un formulario (cuadro de texto, botones de opción, casilla de verificación, botón de envío del formulario, etc) según los atributos que la sigan.

<select>…</select>

Dentro de un formulario, genera un cuadro de lista o cuadro combinado con uno o varios registros para seleccionar.

171


172

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

El siguiente ejemplo sirve para ver la estructura de un código HTML <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”> <title>Formulario</title> </head> <body bgcolor=”#FFFFFF”> <h2>Formulario con cuadro de texto</h2> <form method=”POST” action=”/cgi-bin/post”> <label for=”CApellido”>Apellido</label> <input type=”text” name=”CApellido” id=”CApellido” size=”20” value=”Pérez” tabindex=”1”><p> <label for=”CNombre”>Nombre</label> <input type=”text” name=”CNombre” size=”20” id=”CNombre” value=”José” tabindex=”2”><p> <input type=”submit” name=”BEnviar” value=”Enviar” tabindex=”3”> </form> </body> </html>

VERSIONES DE HTML No existe estándar HTML 1.0 cuando se decidió crear un estándar oficial, ya existían varios estándares. A finales de 1993 se creó el HTML 2.0 que fue la primera especificación formal de HTML y sirvió para distinguirla de los estándares previos no oficiales. En el año 1994 se fundó el Consorcio World Wide Web (W3C). Era una asociación internacional creada para desarrollar estándares Web, entre ellos HTML. Al año siguiente este Consorcio propuso el borrado de HTML 3.0. En este estándar de HTML se introdujeron facilidades para crear tablas o mostrar funciones matemáticas complicadas, entre otras, pero este estándar era demasiado complejo y fue abandonado y sustituido por HTML 3.2, que cambió muchas de las utilidades implementadas en HTML 3.0 (por ejemplo las fórmulas matemáticas quedaron integradas en otro estándar, MathLab). El HTML 4.0 empezó a depurar el HTML de todos los elementos de estándares anteriores.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

LENGUAJE DE MARCADO XML VERSIONES DE XML XML fue desarrollado en 1996 por un Grupo de Trabajo presidido por Jon Bosak de Sun Microsystems, organizado por W3C y con la participación del Grupo de Trabajo SGML. La primera recomendación xml 1.0 se emitió en 1998 y fue la primera revisión de XML 1.0 a la cual siguieron varias revisiones más, la última revisión de esta versión hasta la fecha es la quinta edición de XML 1.0 publicada en 2008. La versión 1.1 fue emitida como recomendación en 2004, siendo publicada la segunda y última revisión hasta la fecha en 2006. Ambas versiones están activas, siendo las principales diferencias entre amabas las siguientes: ––La versión 1.1 soporta una versión superior de Unicode, la 4.0 en lugar de la 2.0 que soporta XML 1.0. ––XML 1.1 tiene una política más liberal en los caracteres permitidos en los nombres: mientras que en la versión 1.0 todo lo que no está permitido está prohibido, en la versión XML 1.1 se permite que todo lo que no está prohibido. ––XML 1.0 intenta adaptarse a las convenciones de fin de línea de varios sistemas operativos modernos, aunque discrimina a las convenciones utilizadas en mainframes IBM y compatibles con IBM. Por ello, XML 1.1 añade NEL (# x85) a la lista de los caracteres de fin de línea y la línea de carácter separador de Unicode, # x2028, también es compatible.

173


174

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

––XML 1.1 define un conjunto de restricciones llamados “plena normalización” (full normalization)en documentos XML, que los creadores de documentos debe cumplir, y los procesadores de documentos deben verificar. OBJETIVOS DE XML XML tiene los siguientes objetivos de diseño: ––Es compatible con SGML, ya que en realidad XML es un subconjunto de SGML, por lo que cualquier fichero XML se puede expresar en SGML, pero en sentido inverso no sucede así. ––Debe poder ser usado en una gran variedad de aplicaciones, al ser una norma que no está vinculada a ninguna tecnología. ––Se debe poder usar directamente en Internet, es decir se debe poder transmitir entre un emisor y un receptores cualesquiera de la red de forma que sea legible para ambos. ––Los programas que operan con documentos XML deben ser fáciles de escribir (con un simple editor de texto se puede escribir un archivo XML, si bien hay programas muchos más complejos para este fin) ––Estos documentos XML deben ser claros, legibles por seres humanos (a diferencia de otros formatos que necesitan de la ayuda de otro programa para poderse interpretar) y fáciles de analizar (es muy fácil crear un analizador de XML sencillo, dado que un fichero XML se puede dividir en sus partes más simples para ser analizado)


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

––Las características opcionales del lenguaje deben mínimas, a ser posible ninguna. ––EL diseño de XML es formal y conciso(sigue la forma EBNF, Extended BackusNaur Form, usada para describir lenguajes de programación) y rápido de preparar. 4.2 Características de XML. 4.2.1 Partes de un documento XML: marcas, elementos, atributos, etc. Un documento XML puede tener tres partes: ––Prólogo: Es la primera parte del documento XML y no es obligatorio que aparezca. En esta parte se presenta el tipo de documento y la versión de XML entre otras cosas. Ejemplo de prólogo <? xml version=”1.0” ?> Estas instrucciones que van delimitadas entre símbolos “<?” y > “?>” se denominan instrucciones de proceso y contienen información sobre el documento. En este ejemplo se indica que el documento es xml y sigue las normas de la versión 1.0. ––Cuerpo: Esta parte es obligatoria para todos los ficheros XML y contiene los datos del documento. Si existen, debe aparecer después del prólogo y antes del epílogo. ––Epílogo: Al igual que el prólogo, no es obligatorio que aparezca en un documento XML y contiene otras instrucciones de proceso y comentarios. ETIQUETAS Las etiquetas delimitan los diferentes elementos del fichero XML y debe existir obligatoriamente una etiqueta de apertura y otra de cierre. Los nombres de las etiquetas deben cumplir una serie de normas: ––Deben estar delimitados por los símbolos “<” y “>”

175


176

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

––Deben comenzar por cualquier letra, o guión bajo o dos puntos. Además de contener cualquiera de estos caracteres, también puede contener números y el carácter guion medio. ––Al contrario que en HTML las etiquetas son sensibles a mayúsculas a y a minúsculas, lo cual quiere decir que <fichero> es diferente de <Fichero> Cada etiqueta de apertura debe tener su etiqueta de cierra de esta forma: <etiqueta1> Ejemplo </etiqueta1> Si una etiqueta está vacía se puede escribir de dos formas: <etiquetavacia></etiquetavacia> O bien se puede usar la forma abreviada: </etiquetavacia> COMENTARIOS A la hora de incluir un comentario en un fichero XML se debe seguir la siguiente sintaxis: <!—Ejemplo de comentario --> Estos comentarios se pueden usar para diferentes tareas: ––Incluir datos del autor del documento ––Especificar fecha de creación del documento ––Recomendaciones sobre si uso ––Ocultar parte del documento al analizador, por ejemplo si son elementos que se están revisando y se comentan para su revisión interna ATRIBUTOS Al igual que en HTML, en XML las etiquetas pueden llevar atributos que indica las propiedades del elemento, de la misma forma que la etiqueta indica su nombre. Estos atributos deben ser incluidos de forma obligatoria en la etiqueta de apertura, nunca se puede incluir un atributo en la etiqueta de cierre. El atributo está formado por:


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

––El nombre del atributo que debe cumplir las mismas normas que los nombre de las etiquetas ––El valor del atributo que debe estar entre comillas y es obligatorio que aparezca, al contrario que en HTML ––El nombre y el valor del atributo están separados por un signo de igualdad (“=”) Los atributos se pueden usar para elementos del mismo tipo, es decir, etiquetas con el mismo nombre se distinguen por sus atributos. Ejemplo de atributos <visita_obligada tipo=”edificio” >Catedral</ visita_obligada > <visita_obligada tipo=”lugar”> Campo Grande </ visita_obligada> En este ejemplo, la etiqueta visita_obligada que aparece dos veces, se distingue por su atributo de nombre tipo; en el primer caso este atributo tiene como valor edificio y en el segundo caso tiene como valor lugar. NODOS Un nodo en XML está compuesto por: ––Una etiqueta ––Los atributos de la etiqueta, si los tiene ––El contenido del nodo que es todo lo que está entre la etiqueta de apertura y la etiqueta de cierre. Es posible que el contenido de un nodo sea otro nodo. En este caso se habla de nodos descendientes y la estructura de los nodos se dice que es jerárquica y que

177


178

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

los nodos están anidados. Si un nodo tiene otro nodo en su interior el primero es el nodo padre y el segundo es el nodo hijo, o dicho de otra forma el primero es el ascendiente del segundo (o el segundo es el descendiente del primero). Ejemplo de XML con nodos anidados <?xml version=”1.0”?> <ciudad> Valladolid <ubicacion> Se encuentra en la mitad norte de la Península Ibérica, en el centro de la Meseta Norte. Las coordenadas de la ciudad son 41º 38’ Norte y 4º 43’ Oeste. </ubicacion> <poblacion>313500</poblacion> <visitas_obligadas> <visita_obligada tipo=”edificio” >Catedral</ visita_obligada > <visita_obligada tipo=”lugar”> Campo Grande </ visita_obligada> </ visitas_obligadas> </ciudad>

En este ejemplo, el primer nodo es ciudad, el cual tiene tres nodos descendientes: el nodo ubicacion, el nodo poblacion y el nodo visitas_obligadas. A su vez, el nodo visitas_obligadas tiene un nodo descendiente, visita_obligada. Se puede representar de forma gráfica esta jerarquía de nodos.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

CONTENIDO Respecto al contenido o texto que se puede incluir entre las etiquetas de apertura y cierre se debe tener en cuenta las siguientes consideraciones: ––El contenido puede ocupar más de una línea como en el caso del nodo ubicacion del ejemplo anterior y tampoco se tienen en cuenta los espacios o tabuladores en el contenido, por lo que en el contenido se pueden poner o no poner según se desee. ––Aunque se puede escribir cualquier carácter alfanumérico y los caracteres más usuales (puntos, comas, etc), hay ciertos caracteres especiales llamados entidades que no pueden ser interpretados directamente y hay que escribir sus caracteres equivalentes. Las entidades internas o predefinidas por XML son las cinco de la siguiente tabla: Carácter

Nombre del carácter

Entidad correspondiente

comillas dobles

"

comillas simples

'

<

menor que

<

>

mayor que

>

&

ampersand

&

Por ejemplo, el siguiente nodo estaría incorrecto y hace que el fichero XML no esté correcto: <estilo_musical> Rock & Roll </estilo_musical> Para solucionar el anterior error, habría que sustituir el carácter ampersand por su entidad, de la siguiente forma ilustrada en este ejemplo: <estilo_musical> Rock & Roll </estilo_musical> ––Respecto al juego de caracteres con el que trabaja XML y que implica los tipos de caracteres que podemos usar (por ejemplo si se pueden usar acentos, la

179


180

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

letra “ñ”, la diéresis, etc.) va a depende de la codificación indicada en el prólogo del documento xml mediante el atributo encoding. Estos son los valores más usados por ese atributo: -- Sino se especifica nada en el prólogo del archivo xml se usa la codificación utf-8. Es decir es lo mismo que indicar encoding=”utf-8”. Con esta codificación se puede usar cualquier letra de varios alfabetos, incluido el español. -- Si con utf-8 no reconociese los caracteres especiales se puede usar la codificación iso-8859-1, que reconoce los caracteres de los idiomas hispanos. También se puede usar iso-8859-15 que contiene los mismos caracteres que el anterior y otros ocho adicionales entre ellos el euro. ––Si se desea incluir en el contenido texto que no se desea que sea estudiado por el analizador se usa una sección CDATA. Esta sección debe empezar por “<! [CDATA[“ y terminar con “]]>”. Un ejemplo puede ser si se quiere incluir código de algún otro lenguaje de programación. <codigo_html> <! [CDATA[ <HTML> <HEAD> <TITLE> Titulo de la pagina </TITLE> </HEAD> <BODY> Ejemplo de web </BODY> </HTML> ]]> </codigo_html>

4.2.2 Sintaxis y semántica de documentos XML: documentos válidos y bien formados. A diferencia del SGML, no es necesario que un documento XML esté asociado a una DTD. Se puede hablar de dos tipos de ficheros XML, según si llevan asociada una DTD o si no la llevan. Así, se puede hablar de: ––Ficheros XML válidos, son aquéllos que siguen las reglas marcadas en una DTD especificada. ––Ficheros XML bien formados, son los que siguen las reglas del XML de forma estricta, si bien no es necesario que lleven una DTD asociada.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Con lo indicado anteriormente, todos los documentos XML válidos son bien formados, pero no todos los bien formados son válidos. A continuación se explican de forma detallada estos dos tipos de documentos XML. DOCUMENTOS XML BIEN FORMADOS Como se verá en otro apartado posterior, una DTD es es un conjunto de reglas que definen un documento XML, explicando los elementos, atributos y entidades que lo pueden formar, su estructura y relación. Un fichero XML no es obligatorio que use una DTD, pero sino la usamos un validador no puede indicar si el documento es válido ya que no tiene un patrón para comparar qué elementos o atributos son correctos y si el orden de los mismos es válido. En este caso, el validador indicará solamente si el fichero cumple las reglas sintácticas del lenguaje XML y por tanto, está bien formado. Un documento XML está bien formado, según la especificación de XML del W3C, si cumple los siguientes requisitos: ––Tomado como un todo, cumple la regla denominada “document”. ––Respeta todas las restricciones de buena formación dadas en la especificación. ––Cada una de las entidades analizadas que se referencia directa o indirectamente en el documento está bien formada.

181


182

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

LA REGLA “DOCUMENT” Una de las condiciones para que un fichero XML sea válido es que cumpla la regla “document”. Esto significa lo siguiente: ––Tiene que contener al menos un elemento. ––Tiene que tener un elemento, en el cual, ninguna parte aparece dentro del contenido de otro elemento. A este elemento se le denomina elemento raíz o documento y debe ser único. ––Exceptuando el elemento documento, en el resto de elementos, se debe cumplir que si la etiqueta de inicio está en el contenido de otro elemento, la etiqueta de fin debe estar en el contenido de ese mismo elemento. Es decir, se deben anidar de forma correcta los elementos. Ejemplo de documento XML que cumple la regla “document” <fichero> <parrafo>Ejemplo de documento XML</parrafo> </fichero>

Este ejemplo cumple las tres reglas mencionadas: tiene más de un elemento, el elemento fichero es el elemento documento al ser único, y no formar parte del contenido de otro elemento. Ejemplo de documento XML que no cumple la regla “document” <fichero> <parrafo>Otro ejemplo de <subrayar> XML </parrafo> </subrayar> </fichero>

Este ejemplo es muy similar al anterior, y al igual que áquel cumple que tiene más de un elemento y que tiene elemento raíz, el elemento fichero. Pero en cambio, al estar la etiqueta inicio del elemento subrayar dentro del elemento parrafo, la etiqueta final del elemento subrayar también debería estar dentro del elemento parrafo; al estar fuera incumple una de las condiciones de la regla document. Es decir la forma correcta sería:


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

<fichero> <parrafo>Otro ejemplo de <subrayar> XML </subrayar></parrafo> </fichero>

Además de la regla document mencionada para que un documento XML esté bien formado se deben cumplir las reglas de sintaxis del lenguaje y no incumplir algunas de las restricciones del mismo. SÍNTAXIS CORRECTA EN DOCUMENTOS XML Además de las otras reglas, para escribir documentos XML se debe seguir la sintaxis del lenguaje XML y algunas restricciones que la especificación impone. Ejemplo de documento XML mal formado <?xml version=”1.0”?> <documento> <p>Ejemplo <elemento_destacado importante=1>documento XML mal formado</elemento_destacado></p] <p>Comienza con la etiqueta <documento></p> <p>Elemento sin ningúncontenido</p> <imagen fichero=”imagenprueba.png”> </documento> En este documento hay cuatro errores: ––El valor del atributo “importante” no está entrecomillado. Al contrario que en HTML que es opcional entrecomillar el valor de los atributos, en XML es obligatorio. ––La etiqueta final del elemento “p”, está mal cerrada. No se debe escribir el carácter “]” , sino el símbolo “>”. ––Se está usando el símbolo e “<” sin que formar de la definición de una etiqueta. Al ser un carácter reservado, hay que “&lt”;. ––Se está escribiendo el elemento vacío “imagen” incorrectamente. Al ser un elemento sin contenido se debe escribir así: <imagen fichero=”imagenprueba. png”/>

183


184

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

4.3 Estructura de XML. 4.3.1 Esquemas XML: DTD y XML Schema. DEFINICION DEL TIPO DE DOCUMENTO (DTD) El fichero DTD (Definición del tipo de documento o en inglés, Document Type Definition) es donde se describen las posibles marcas que pueden aparecer en un documento XML y los atributos que las mismas pueden tener. Al inicio de cada documento XML se debe indicar el DTD usado mediante la marca <!DOCTYPE>. Ejemplo del uso de DOCTYPE <!DOCTYPE xbel PUBLIC “+//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML” “http://www.python.org/topics/xml/dtds/xbel-1.0.dtd”>

En ese ejemplo se indica que lo siguiente: ––Lo que aparece inmediatamente después en el fichero es una marca xbel (y pueden parecer todas sus submarcas) ––Se indica que esa marca ha sido definida en un fichero DTD llamado XML Bookmark Exchange Language 1.0. ––Se indica que el fichero DTD es reconocido por una entidad oficial (que es python.org) mediante la palabra clave IDN. ––El lenguaje del fichero DTD es inglés; esto se indica mediante la palabra clave EN. ––La sintaxis que se usa es en el fichero DTD es XML. ––El fichero DTD es XML Bookmark Exchange Language 1.0. El nombre de ese fichero debe ser exactamente igual al que exista en el catalogo SGML que tiene cada sistema.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

––La ruta del fichero DTD es indicada por la url: http://www.python.org/topics/ xml/dtds/ y el nombre de ese fichero es xbel-1.0.dtd Un fichero DTD es en realidad una o varias estructuras jerárquicas, con una marca principal, llamada marca padre y otras marcas que derivan de ella, hijos. El DTD puede especificar: ––Los elementos que deben ser obligatorios ––El número máximo de veces que un elemento puede aparecer ––El orden de los elementos Según las especificaciones del DTD en un documento XML se distinguen los siguientes tipos: ––Documento XML válido: Si un documento XML especifica el DTD usado y sigue las reglas que en él se han definido. Existen programas para comprobar si un documento XML es válido. ––Documento XML conforme: Si un documento no especifica ningún DTD, pero sigue las reglas mínimas del XML. XML SCHEMA Este tipo de documento es similar a un DTD ya que define los elementos que puede tener un documento XML, su organización y los atributos que pueden tener sus elementos. Las ventajas de los schemas respecto a los DTDs son: ––Se puede especificar los tipos de datos entre otros detalles, se puede decir que son más potentes. ––Son documentos XML: Al usar el mismo formato para el documento XML y para su descriptor, facilita la tarea. Por contra, una desventaja de schema frente a DTD es que no se pueden describir entidades mediante schemas, por lo que si se quieren usar se debe utilizar DTD.

185


186

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Ejemplo de documento XML que se valida contra un Schema <documento xmlns=”x-schema:personaSchema.xml”> <persona id=”fulano”> <nombre>Fulano Menganez</nombre> </persona> </documento> En este documento xml se hace referencia a un espacio de nombres (namespace) llamado “x-schema:personaSchema.xml”. Es decir, se está indicando que se debe validar este documento frente al schema “personaSchema.xml” Ejemplo del documento Schema

<Schema xmlns=”urn:schemas-microsoft-com:xml-data” xmlns:dt=”urn:schemas-microsoft-com:datatypes”> <AttributeType name=’id’ dt:type=’string’ required=’yes’/> <ElementType name=’nombre’ content=’textOnly’/> <ElementType name=’persona’ content=’mixed’> <attribute type=’id’/> <element type=’nombre’/> </ElementType> <ElementType name=’documento’ content=’eltOnly’> <element type=’persona’/> </ElementType> </Schema>

Se van a analizar los diferentes elementos del Schema: ––Se definen dos espacios de nombres mediante la etiqueta xmlns: -- Mediante la etiqueta xml-data se indica que es un schema -- Con la etiqueta datatypes y el prefijo dt, define el tipo de elementos y atributos. -- ElementType: Sirve para definir el tipo y el contenido de un elemento, incluyendo los sub-elementos que pueda contener. -- AttributeType: Asigna un tipo y condiciones a un atributo


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

-- attribute: Declara que un atributo previamente definido por AttributeType puede aparecer como atributo de un elemento determinado -- element: Declara que un elemento previamente definido por ElementType puede aparecer como contenido de otro elemento Tal como hemos visto, es necesario empezar el schema definiendo los elementos más profundamente anidados dentro de la estructura jerárquica de elementos del documentoXML. Es decir, tenemos que trabajar “de dentro hacia fuera”. Visto de otra manera, las declaraciones de tipo ElementType y AttributeType deben preceder a las declaraciones de contenido element y attribute correspondientes. Consulta la referencia de schemas XML de Microsoft (http://msdn.microsoft. com/xml/) para más información. PARTES DE UN ESQUEMA ––La declaración del esquema: Se especifica con el elemento schema. El atributo xmlns especifica la norma que seguirá el esquema. ––Elementos: Mediante el elemento element con el atributo name para el nombre y su tipo con el atributo type. ––Tipos intrínsecos de un esquema. Se visualizan en la siguiente tabla: Tipo

Descripción

Ejemplo

boolean

Valores lógicos

true, false

date

Fecha

13/05/2013

time

Hora

23:45

string

Cadena de texto

“Ejemplo de cadena”

byte, short, integer, long

Números enteros

-15 21 0

float, double, decimal

Números decimales

0 15,478 -4,2

187


188

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

4.3.2 Hojas de estilo XML: el estándar XSLT y XSL. XSL XLS (Extensible Style-sheet Language) es el lenguaje desarrollado por el consorcio W3C para dar formato a los documentos XML. Una página de estilo XSL modifica un fichero XML, el formato resultante de esta modificación puede ser múltiple: XML, HTML, etc. Además, un fichero XSL es también un documento XML con el DTD xsl:stylesheet. Ejemplo fichero XLS <?xml version=”1.0” encoding=”iso-8859-1” ?> <xsl:stylesheet version=”1.0” xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”> <xsl:output method=”html” encoding=”iso-8859-1”

En este ejemplo, se define otra una entidad que va a ser usada en el fichero HTML que se genere producido y se especifica la la información que debe aparecer en la marca DOCTYPE de ese fichero resultante. La especificación de marcas usadas en XSL, se define con el atributo xmlns:xsl. Todas las marcas de XSL comienzan con la secuencia xsl:. La marca básica que realiza el procesamiento del fichero XML, es la marca <xsl:template> , la cual indica la plantilla que se debe usar para producir la salida de datos.

Ejemplo <xsl:template match=”marcaprueba”> <ol> <xsl:apply-templates/> </ol> </xsl:template>

Esta plantilla va a ser aplicada cada vez que una marca <marcaprueba> aparezca en el documento XML; es decir, al texto que aparezca entre la etiqueta de


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

inicio <marcaprueba> y la correspondiente etiqueta de fin </marcaprueba>. En este ejemplo, se usa la marca <ol> que crea listas desordenadas en HTML. La marca <xsl:apply-templates/> sirve para que el procesamiento continúe, aplicando el resto de plantillas al contenido de la marca <marcapruerba> , el texto seleccionado. Se debe tener en cuenta que si se desea una marca sin cierre en el documento HTML, por ejemplo <br>, en la plantilla hay que escribir <br/>, ya que la plantilla forma parte de un documento XML y debe cumplir sus normas pero la salida aparecerá <br> al ser parte de un fichero HTML. XLS es imprescindible para presentar información, al no contar XML con información de información de formato. Entre las ventajas de XLS se pueden citar: ––Se centraliza la forma de presentación ––Se separa contenido de estructura ––Se pueden reutilizar datos ––Se pueden obtener diferentes formatos de salida desde un mismo fichero XML XSLT Extensible Stylesheet Language Transformations (XSLT) ha evolucionado de la norma Extensible Stylesheet Language (XSL). XSL especifica una definición de lenguaje para la presentación de datos XML y transformaciones de datos. Presentación de datos significa mostrar los datos en un formato o medio, sinedo la presentación de estilo. Transformación de datos significa analizar un documento XML de entrada en un árbol de nodos, y luego convertir el árbol de código fuente en un árbol de resultados. La transformación es sobre el intercambio de datos. Debido a que estas funciones tienen dos propósitos distintos, XSLT se propuso y fue posteriormente aceptada como una norma separada sólo para la transformación de datos XML.

189


190

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

XSL ahora se conoce generalmente como objetos de formato XSL (XSLFO), para distinguirlo de XSLT. Se puede decir que XSLT es un lenguaje de programación para el procesamiento de datos XML ,es decir, la transformación de documentos XML. Por lo tanto, es compatible con lo siguiente: –– Un pequeño conjunto de tipos flexibles de datos: Booleano, Numñerico, String, conjunto de nodos y objetos externos. –– Un conjunto completo de operaciones: <xsl:template>, <xsl:apply-templates>, <xsl:sort>, <xsl:output>, etc. ––Programación de control de flujo: <xsl:if>, <xsl:for-each>, <xsl:choose>, etc. XSLT adopta la sintaxis del lenguaje XPath para expresiones. También hay funciones personalizadas para crear expresiones para las consultas y transformaciones de datos XML integrado. Una hoja de estilo XSLT es un documento XML, lo cual significa que las instrucciones XSLT se expresan como elementos XML y una hoja de estilo XSLT puede transformar otras hojas de estilo XSLT, o incluso a sí misma. El siguiente ejemplo muestra un documento XML por una hoja de estilo XSLT. El documento XML de origen, prueba1.xml es el siguiente:

<?xml version=”1.0”?> <?xml-stylesheet type=”text/xsl” href=”prueba1.xsl”?> <documento> <persona>Programador</persona> <saludo>Buenas noches </saludo></documento>

Este documento contiene la instrucción de procesamiento para vincularlo a la hoja de estilo XSLT, prueba1.xsl. El archivo XSLT contiene instrucciones para transformar el documento de origen en un documento HTML.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

<?xml version=”1.0”?> <xsl:stylesheet xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” sion=”1.0”> <xsl:template match=”/documento”> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <H1> <xsl:value-of select=”saludo”/> </H1> <xsl:apply-templates select=”persona”/> </BODY> </HTML> </xsl:template> <xsl:template match=”persona”> <DIV>from <I><xsl:value-of select=”.”/></I></DIV> </xsl:template> </xsl:stylesheet>

ver-

Se puede ver en la hoja de estilo XSLT las características básicas que se requieren de cada hoja de estilo XSLT: ––Una hoja de estilo XSLT suele comenzar con la etiqueta <? Xml version? = “1.0”> instrucción de proceso, que lo declara como un archivo XML. ––El elemento raíz es <xsl:stylesheet>. El atributo versión especifica la versión de la especificación XSLT. Los atributos xmlns: xsl permiten definir un alias de espacio de nombres (xsl) para su uso con todos los elementos XSLT en el documento (por ejemplo, en lugar de simplemente <xsl:value-of> <value-of>). ––El contenido de este elemento raíz consta de un conjunto de reglas de plantilla declaradas dentro de los elementos <xsl:template>. Estas reglas especifican cómo diversos elementos del documento XML de origen deben ser transformados en elementos de resultado.

191


192

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

4.3.3 Enlaces: XLL. XLL (XML Linking Language ) o Lenguaje de Enlaces extendido, aglutina varias tecnologías relacionadas con los enlaces y el direccionamiento en XML. XLL define un nuevo tipo de enlace que es más general que los predecesores: el XLink. Con XLink, cualquier elemento puede ser un enlace, no sólo los elementos “A”. Además XLink posee características nuevas que los vínculos de HTML no poseen. Por ejemplo, estos vínculos pueden ser bidireccionales y se puede retornar a la página de procedencia. Además , los XLinks pueden vincular a posiciones arbitrarias en un documento y pueden insertar texto o gráfico de datos dentro de un documento en lugar de requerir al usuario activar el enlace (parecido a la etiqueta <IMG> pero más flexible). XLL está diseñado especialmente para su uso con documentos XML, pero algunas partes se puede utilizar con ficheros HTML también. Con XLL se puede hacer todo lo que se hace con los vínculos de HTML, pero además añade nuevas funcionalidades como que soporta enlaces multidireccionales, es decir, vínculos que se ejecutan en más de una dirección. Estos enlaces de XLL no tienen que estar en el mismo archivo que los documentos que vinculan. Todas estas características hacen que XLL sea adecuado para nuevos uso, pero también para otras tareas que se pueden hacer en HTML pero con mucho esfuerzo, como referencias cruzadas, notas al pie, notas finales, etc. En HTML, un enlace se define con la etiqueta <A>. Sin embargo, en XML, casi cualquier etiqueta puede ser un enlace. Los elementos que incluyen enlaces son llamados elementos de enlace. Éstos se identifican con un atributo xlink: form. Además, cada elemento de enlace contiene un atributo href cuyo valor es el URI del recurso que se está vinculado. Por ejemplo, estos son tres elementos de enlace:

<NOTAPIE xlink:form=”simple” href=”notaalpie1.xml”>7</NOTAPIE> <TEXTO xlink:form=”simple” inline=”true” href=”http://www.paginaprueba.com”>Ir a página de prueba </TEXTO> <IMAGE xlink:form=”simple” href=”mi_imagen.jpeg”/>

Los tres ejemplos indicados arriba, son XLinks simples, los cuales son similares a los enlaces de Html.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

En el primer ejemplo, el nombre del atributo de destino del enlace es href y su valor es la url relativa notalapie1.xml. El protocolo, host y directorio de este documento se toman del del protocoo, host y directorio del documento en el cual aparece este enlace. En el segundo ejemplo, el valor del atributo href es una url absoluta. y en el tercer ejemplo es una url relativa a una imagen. Los elementos de enlace pueden contener tres atributos opcionales que sugieren a las aplicaciones cómo el recurso remoto está asociado con la página actual. Estos elementos son: ––show: indica cómo se debe mostrar el contenido al activar el enlace, por ejemplo abrir ventana nueva para mantener el contenido. ––actuate: indica si el enlace puede ser activado de forma automática o si requiere de una petición especifica de usuario. ––behavior: contiene información detallada sobre la activación del enlace, por ejemplo, si debe haber algún tiempo de retardo. 4.3.4 Agentes de usuario: XUA. XUA (XML User Agent o Agente de usuario de XML),se trata de un estándar que se aplica a los navegadores para que todos compartan las especificaciones XML. 4.4 Estándares basados en XML. 4.4.1 Presentación de página: XHMTL. XHTML es un intento del W3C para hacer un HTML tan estricto como XML. Algunas de las reglas que en Html se dejaban libres, so estrictas en XHTML. Proporciona tres DTD para validar los documentos HTML, con los que se fijan el grado con el que el documento se va a ceñir a las reglas XHTML. ––Estricto para los nuevos documentos HTML

193


194

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

––De transición para documento Html antiguos pasados a Xhtml que pueden conservar etiquetas y características obsoletas ––Frameset para documentos que usan frames (marcos). Esto se realiza con las definiciones <!DOCTYPE> que deben colocarse delante de los elementos HTML: ––Estricto: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> ––De transición <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> ––Frameset <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”> Para crear un documento XHTML bien formado se deben seguir ciertas normas, las principales son: ––Las etiquetas deben anidarse de forma correcta, de forma que la última etiqueta que se abra debe ser la primera en cerrarse. ––Es obligatorio escribir en minúsculas los nombres de las etiquetas y atributos ––Las etiquetas no vacías siempre deben tener una etiqueta de cierre. ––Las etiquetas vacías deben cerrarse (por ejemplo <br />) ––Es obligatorio poner comillas dobles para encerrar los valores de atributo. ––Todos los atributos deben tener un valor, no puede haber atributos sin valor. Para pasar un documento HTML a un documento XHTML válido se puede hacer manualmente (subsanando los “errores” que html tenga para pasarlos a xhtml), pero también existen herramientas que facilitan esa tarea, por ejemplo html2xhtml y Tidy. También se puede usar el validador de W3C para comprobar si el documento XHTML es válido.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

4.4.2 Selección de elementos XML: Xpath y XQuery. XPATH XPath (XML Path Language) es un lenguaje para crear expresiones para recorrer y procesar un fichero XML. En XPath, todos los elementos de un fichero XML son nodos de diferentes clases: ––Nodo raíz: elemento principal del documento ––Instrucciones de proceso: Directivas que definen aspectos del fichero y lo declaran como XML ––Elementos ––Atributos o propiedades de los elementos ––Texto, incluido entre las etiquetas de inicio y fin ––Comentarios ––Al hacer consultas en Xpath pueden devolver diferentes valores: ––Datos lógicos (true o false) ––Cadenas de caracteres ––Números ––Lista de nodos XQUERY Es un nuevo lenguaje del W3C diseñado para grupos de consulta de datos XML. XQuery proporciona un mecanismo para poder extraer datos de forma fácil y eficiente desde un documento XML o, en general, desde cualquier origen de datos que se pueda visualizar como XML (por ejemplo las bases de datos relacionales). Xquery está basado completamente en expresiones. No existen sentencias en este lenguaje. Para ejecutar una fun-

195


196

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

ción, la expresión que hay dentro del cuerpo de la función se evalúa y ese valor resultante se devuelve. Por ejemplo para escribir una función que triplique el valor del argumento de entrada se escribe lo siguiente: declare function local:hallartriple ($valor1) { $valor1 * 3} Para poder ejecutar XQuery existen múltiples alternativas, algunas de las más usadas son: ––Ejecutar XQuery desde un archivo utilizando Saxon ––Saxon es uno de los mejores motores de código abierto ––Ejecutar XQuery desde Java usando XQJ 4.4.3 Firma electrónica: XML-Signature y Xades. XML-SIGNATURE XML-SIGNATURE define la sintaxis para usar XML con firmas digitales.Esta norma define un esquema para capturar el resultado de una operación de firma digital aplicada a datos XML. XML-Signature añade autenticación, integridad de los datos, y soporte para el no repudio de los datos que se firma. Sin embargo, a diferencia de otras normas, ésta ha sido diseñada para tener en cuneta y aprovechar las ventajas de Internet y XML.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Una característica fundamental de esta norma es la posibilidad de firmar sólo partes específicas del árbol XML en lugar del documento completo. Esto es importante si en un documento diferentes partes de autorías diferentes. Cada firma se corresponde con sus elementos correspondientes. Esta flexibilidad también es importante para asegurar la integridad sólo de ciertas partes de un documento XML. Una firma XML puede firmar más de un tipo de fuente. Por ejemplo, una sola firma XML puede abarcar datos HTML, los datos codificados en binario (JPG), los datos codificados en XML y una sección específica de un archivo XML. XADES XADES (XML Advanced Electronic Signatures) o Firma electrónica avanzada XML son una serie de extensiones a las recomendaciones XML-DSig para la firma electrónica avanzada. Especifica perfiles para usarse con firma electrónica reconocida. Estos perfiles se diferencian según el nivel de protección ofrecidos: desde el más básico que sólo cumple con los requisitos legales de la Directiva, hasta otro que añade campo para proteger contra el no repudio, referencias a listas de revocación, timestamping (mecanismos online para verificar que los datos no han sido alterados en un tiempo determinado).etc. 4.4.4 Cifrado: XML-Encryption. XML Encryption es una recomendación de W3C que explica el proceso de encriptar datos y representar esos datos en XML para su envío. TSL (Transport Layer Security), el estándar para la comunicación segura a través de Internet, es un protocolo de seguridad que sigue el protocolo SSL (Secure Socket Layer). y que es un protocolo muy seguro y confiable. XML-Encryption no es un sustituto de SSL / TLS, sin que se proporciona un mecanismo para los requisitos de seguridad que no están cubiertos por SSL, como por ejemplo: encriptar parte de los datos que están siendo intercambiados y conexiones seguras entre más de dos partes. Mediante XML-Encryption cada parte puede mantener estados seguros o no sesguros con cualquiera de las partes que se comunican. Tanto los datos seguros como los no seguros se pueden intercambiar en el mismo documento. Además, XML-Encryption puede manejar tanto datos XML como datos que no sean XML .

197


198

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

4.4.5 Otros estándares de uso común. Los conocimientos que implicó la estandarización XML han servido de base para otros muchos estándares que, basándose en él, especializan sus prácticas y técnicas para implementarlas en campos específicos de la informática y campos relacionados. A continuación presentamos una serie de estándares que se basan en XML y cuyo único fin es observar cómo XML sirvió y sigue haciéndolo para la creación otros muchos estándares. En este capítulo veremos estándares de distintos ámbitos, tanto propios de la informática, como para otros ámbitos de la vida. ESTÁNDARES PARA EL MUNDO INFORMÁTICO Additive Manufacturing File Format (AMF) es un estándar abierto para la descripción de objetos para los procesos de fabricación aditiva, tal como la impresión 3D. El estándar oficial ASTM F2915 es un formato basado en XML diseñado para permitir que cualquier software de diseño asistido por ordenador pueda describir la forma y la composición de un objeto 3D que será fabricado en cualquier impresora 3D. A diferencia de su predecesor formato STL, AMF tiene soporte nativo de colores, materiales, celosías, etc. AS4 es un perfil de Conformidad de la especificación OASIS 3.0 del ebMS y representa un estándar abierto para el intercambio seguro y la carga útil de documentos Business-to-business que utilizan los servicios Web. El intercambio seguro de documentos se rige por los aspectos de WS-Security, incluido el cifrado XML y firmas digitales XML. La carga útil se refiere al tipo de documento (por ejemplo, órdenes de compra, facturas, etc), que no debe estar atado a ninguna acción SOAP definida u operación. El proyecto AS4 ha sido recientemente aceptada por el Comité de Servicios de Mensajería ebXML. La mayoría de los puntos que trata el AS4 limitan la especificación ebMS 3.0 y se basan en los requisitos funcionales de la especificación AS2. Por reducción progresiva al ebMS 3.0, utilizando AS2 como modelo, AS4 proporciona un nivel de entrada para servicios Web B2B, simplificando la complejidad de los servicios Web. Binary Format Description (BFD) el lenguaje es una extensión de XSIL que ha añadido condicionales y capacidad para hacer referencia a los archivos de sus números de stream, en lugar de por sus direcciones URL públicas. Una plantilla de escrito en el lenguaje de BFD se puede aplicar a un archivo de datos binarios para producir un archivo con el que los datos formateados con etiquetas XML descriptivos. Tales datos etiquetados-XML son legibles por humanos y por lo general por un amplio conjunto de programas informáticos que puedan leer el archivo de datos original.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Context Management es un proceso dinámico que utiliza elementos de datos en una sola aplicación, para que apunte a los datos que se encuentren en una aplicación, independiente que también contenga el mismo tema. Permite a los usuarios elegir un tema, y tienen todas las aplicaciones que contienen información sobre el mismo tema en sintonía con los datos contenidos, evitando así la necesidad de seleccionar de forma redundante el tema en las diferentes aplicaciones. Un ejemplo es la industria de la salud, en el que se utiliza ampliamente Context Management, múltiples aplicaciones de funcionamiento en el contexto por medio del uso de un gestor de contexto permitiría a un usuario seleccionar un paciente (es decir, el sujeto) en una sola aplicación y cuando el usuario entra en la otra aplicación, la información del paciente que ya está exportada y presentada, obviando la necesidad de volver a seleccionar el paciente en la segunda aplicación. Content Management Interoperability Services (CMIS) es un estándar abierto que permite a los diferentes sistemas de gestión de contenidos para inter-operar a través de Internet. En concreto, CMIS define una capa de abstracción para el control de los diversos sistemas de gestión de documentos y repositorios utilizando protocolos web. CMIS define un modelo de dominio más servicios web y encuadernaciones (RFC5023) que puede ser utilizado por las aplicaciones. Extensible Application Markup Language (XAML) es un lenguaje declarativo basado en XML creado por Microsoft que se utiliza para inicializar los valores y objetos estructurados. Está disponible bajo “Promesa de Especificación Abierta” de Microsoft. Su nombre fue inicialmente Extensible Markup Language Avalon, siendo Avalon es el nombre en clave de Windows Presentation Foundation (WPF). Document Schema Definition Languages (DSDL) es un marco en el que múltiples tareas de validación de diferentes tipos se pueden aplicar a un documento XML con el fin de lograr resultados de validación más completos que los que conseguiríamos con sólo aplicar una única tecnología. Web Service Conversation Language (WSCL) consiste en una propuesta que define la entrada general y las secuencias de mensajes de salida para un servicio web

199


200

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

mediante un autómata de estados finitos (FSA) sobre el alfabeto de los tipos de mensajes. Web Services Description Language es el interfaz del lenguaje descriptivo basado en XML que se utiliza para describir la funcionalidad que ofrece un servicio web. Una descripción WSDL de un servicio web (también referido como un archivo WSDL) proporciona una descripción legible por máquina de cómo el servicio puede ser llamado, qué parámetros espera, y lo que las estructuras de datos que devuelve. Por lo tanto, sirve para un propósito que se corresponde más o menos a la de una firma de método en un lenguaje de programación. Web Services Endpoint Language (WSEL) fue un formato XML propuesto por IBM para la descripción de las características no operacionales de puntos finales de servicio, tales como la calidad del servicio, el coste o las propiedades de seguridad. Nunca ha contado con una amplia aceptación. XML Object Model (XOM) es un modelo de objetos de documento XML para el procesamiento de XML con Java que busca la exactitud y simplicidad. XML Metadata Interchange (XMI) es un estándar de OMG para el intercambio de información de metadatos a través de XML. Puede ser utilizado para cualquier metadato cuyo metamodelo puede ser expresado en Fondo MetaObjeto (MOF). El uso más común de XMI es como un formato de intercambio para los modelos UML, aunque también se puede utilizar para la serialización de modelos de otros idiomas (metamodelos). Programming Metadata Communications Protocol (PMCP) es un protocolo de código abierto, independiente del dispositivo, elaborado y publicado por el Advanced Television Systems Committee (ATSC) que se utiliza para comunicar los elementos de datos necesarios para crear PSIP y MPEG-2 PSI dentro de una instalación de transporte, y para comunicar los datos entre dos o más instalaciones de transmisión y otros puntos. Link contract es un método de control de datos para una red de intercambio de datos distribuidos. Los contratos de enlaces son una característica clave de las especificaciones de XDI, en desarrollo por OASIS. En XDI, un contrato de enlace es un documento XDI de lectura mecánica que rige el intercambio de otros datos XDI. A diferencia de un enlace web convencional, que es esencialmente una cadena unidimensional que “tira” un documento vinculado en un navegador, un contrato de enlace es un gráfico de los metadatos (típicamente en JSON) que puede controlar activamente el flujo de datos de un editor de un abonado por cualquiera de “push” o “pull”.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Solution Deployment Descriptor (SDD) es un esquema estándar basado en XML que define una forma estándar de expresar características de la instalación de software necesarios para la gestión del ciclo de vida en un entorno multiplataforma. El SDD define esquema para dos tipos de documentos XML: ––Descriptores de paquetes, que definen las características de un paquete se utiliza para implementar una solución. ––Descriptores de despliegue, que definen características del contenido de un paquete de soluciones, incluyendo los requisitos que son relevantes para la creación, la configuración y el mantenimiento del contenido de la solución. Standard Business Reporting es un grupo de programas internacionales promovido por varios gobiernos para reducir la carga administrativa de las empresas. La idea es hacer una centralización de negocios cuando se trata de gestionar la obligacion de realizar informes empresariales al gobierno. Las empresas llevan a cabo su propia administración financiera, las acciones y ventas que registran, y las decisiones que toman, y que se deben incluir en sus informes. El gobierno debe ser capaz de recibir y procesar esta información sin imponer restricciones indebidas a cómo las empresas administran sus finanzas. El método utilizado para lograr este objetivo es definir un lenguaje común o taxonomía, utilizando XBRL, para proporcionar sistemas de información de los procesos clasificado con la taxonomía. Synchronized Multimedia Integration Language (SMIL) es un lenguaje de marcas que se usa para describir presentaciones multimedia. Define marcas para medir el tiempo, el diseño, las animaciones, transiciones visuales, y la inclusión de medios, entre otras cosas. SMIL permite la presentación de elementos multimedia tales como texto, imágenes, video, audio, enlaces a otras presentaciones SMIL y archivos desde múltiples servidores web. SMIL marcado está escrito en XML, y cuenta con similitudes con HTML. Document Definition Markup Language (DDML) es un lenguaje de esquema XML propuesto en 1999 por diversos colaboradores de la lista de correo electrónico xml-dev. Se publicó sólo como una Nota W3C, no como un estándar, y nunca encontró el beneplácito de los desarrolladores. DDML comenzó como XSchema, una reformulación de DTD XML de forma que pasaban a ser documentos XML completos, de modo que los elementos y atributos se podrían utilizar para describir un esquema. Dado que el desarrollo continuó, el nombre fue cambiado a DDML, lo que refleja un alejamiento de la meta de reproducir toda la funcionalidad DTD, con el fin de concentrarse en proporcionar un marco sólido para la descripción de elemento básico y la jerarquía de atributos. DDML no ofrecía tipos de datos o funcionalidades más allá de lo que ya proporcionaba DTD, así que no había mucha ventaja a usar DDML lugar de DTD. DDML hizo,

201


202

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

sin embargo, informar el desarrollo de la próxima generación de lenguajes de esquema basados en ​​ XML. ESTÁNDARES PARA OTROS ÁMBITOS Advanced Distributed Learning Registry fue desarrollado por la empresa ADL y es el punto central de búsqueda para los objetos digitales relacionados con formación, la educación, el rendimiento DoD y la ayudar a tomar la decisión de que puede ser redistribuido, reorganizado, reutilizados, y reescrito. De la misma manera que un catálogo contiene información descriptiva sobre los libros en una biblioteca, el Registro ADL contiene todas las entradas registradas que contienen metadatos sobre el objeto digital en un repositorio. El Registro ADL proporciona información de búsqueda en el centro en que se encuentra y en la forma de registros de metadatos (objetos no reales). Attention Profiling Mark-up Language (APML) es un formato basado en XML para expresar los intereses y cosas que desagraden a una persona. BlogML es un formato abierto derivado de XML para almacenar y restaurar el contenido de un blog. Call Control eXtensible Markup Language (CCXML) es un estándar de XML diseñado para proporcionar soporte de telefonía basada en eventos asincrónos para VoiceXML. Su estado actual es el de una Propuesta a Recomendación del W3C, adoptada el 10 de mayo de 2011. Mientras que VoiceXML está diseñado para proporcionar una interfaz de usuario de voz a un navegador de voz, CCXML se diseñó para informar a la navegación mediante la voz a manejar el control telefónico del canal de voz. Las dos aplicaciones XML son totalmente independientes y una no requiere de la otra a implementar; aun así, han sido diseñados teniendo la interoperabilidad en mente. Digital Accessible Information System (DAISY) es un estándar técnico para audiolibros digitales, revistas y texto informatizado. DAISY está diseñado para ser un sustituto completo de audio para el material de impresión y está diseñado específicamente para su uso por personas con discapacidades, incluyendo la ceguera, problemas de visión, y la dislexia. Basado en MP3 y XML, el formato tiene características avanzadas, además de las de un libro de audio tradicional. Los usuarios pueden buscar, colocar marcadores, precisamente desplazarse línea a línea, y regular la velocidad del habla sin distorsión. DAISY también proporciona tablas auditivamente accesibles, referencias e información adicional. Como resultado, DAISY permite a los oyentes con discapacidad visual navegar por algo tan complejo como una enciclopedia o libro de texto, lo que sería imposible con grabaciones de audio convencionales.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Continuous Media Markup Language (CMML) es lo que al audio o vídeo lo que el HTML es al texto. CMML es esencialmente un codec de texto temporizado. Permite estructurar un archivo temporal de forma continua los datos muestreados, dividiéndolo en secciones temporales (llamados clips), y proporciona estos clips con alguna información adicional. Esta información es de tipo HTML y es esencialmente una representación textual del archivo de audio o video. LMMC permite búsquedas textuales en estos archivos binarios de otro modo. CMML es apropiado para su uso con todos los formatos como el OGG, para dar subtítulos y metadatos cronometrados. MusicXML es un formato de archivo basado en XML para la representación de la notación musical occidental. El formato es propietario, pero es totalmente abierto y documentado, y se puede utilizar libremente debido a su licencia pública. El API MetaWeblog es una interfaz de programación de aplicaciones creado por el desarrollador de software Dave Winer que permite a entradas de weblog que se introducen, editan y eliminan usando servicios web. El API se implementa como un servicio Web de XML-RPC con tres métodos cuyos nombres describen su función: metaweblog.newPost (), metaweblog.getPost() y metaweblog.editPost(). Estos métodos toman argumentos que especifican el nombre de usuario y la contraseña del blog del autor, junto con la información relativa a una entrada de blog individual. Muchas aplicaciones de software de blogs y sistemas de gestión de contenidos al igual que numerosos clientes de escritorio apoyan la API MetaWeblog. Open Scripture Information Standard (OSIS) es un esquema XML que define las etiquetas para el marcado de las Biblias, comentarios teológicos y otra literatura relacionada. El esquema es muy similar a la de la Iniciativa de Codificación de texto, aunque por una parte mucho más simple (por omisión de muchas construcciones que no sean necesarios), y también por la adición de metadatos mucho más detallada, y un sistema de referencia canónica formal para identificar los libros, capítulos, versos, y lugares específicos dentro de los versos. Los metadatos incluyen una “declaración de trabajo” para la obra en sí, y para cada obra que hace refe-

203


204

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

rencia. Una declaración de trabajo proporciona información de catálogo básico basado en el estándar Dublin Core, y le asigna un nombre corto local para el trabajo (similar a las declaraciones de espacio de nombres XML). Open XML Paper Specification (también conocida como OpenXPS), es una especificación abierta para una descripción de las páginas y un formato de documento fijo desarrollado originalmente por Microsoft como XML Paper Specification (XPS), y que más tarde fue normalizado por ECMA International como un estándar internacional ECMA-388. Es una especificación basada en XML (para ser exactos, basado en XAML), sobre la base de una nueva ruta de impresión y de la gestión del formato del color del documento que se basa en vectores, apoyando la independencia de dispositivos y la independencia de la resolución. Pronunciation Lexicon Specification (PLS) es una Recomendación del W3C, que está diseñado para permitir la especificación de interoperabilidad de la información de pronunciación para los dos motores de reconocimiento de voz y síntesis de voz en las aplicaciones de navegación por voz. El lenguaje está diseñado para ser fácil de usar por los desarrolladores. El lenguaje permite que que se especifique el uso de un alfabeto de pronunciación estándar o si es necesario el uso de alfabetos específicos del proveedor para uno o más pronunciaciones para una palabra o frase. Los pronunciaciones se agrupan en un documento PLS que puede ser referenciado desde otros lenguajes de marcas, como las especificaciones de reconocimiento de voz Gramática SRGS y la síntesis de voz Markup Language SSML. Remote Telescope Markup Language (RTML) es un dialecto XML para el control de telescopios remotos y usado para la robótica.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Job Definition Format (JDF) es una norma técnica que actualmente está desarrollando la industria de artes gráficas para facilitar la implementacion de cooperaciones entre de flujo de trabajo de proveedores para el dominio de aplicación. JDF es administrado actualmente por CIP4, la Cooperación Internacional para la Integración de Procesos de preimpresión, impresión y postimpresión Organización. JDF fue iniciado por Adobe Systems, Agfa, Heidelberg y MAN Roland en 1999, pero entregó a CIP3 en Drupa 2000. CIP3 luego cambió su nombre a CIP4. El enfoque inicial se centró en el conjunto de pliegos y flujo de trabajo de impresión digital, pero se ha ampliado para sistemas basados en web, para los flujos de trabajo diarios, embalaje,.... Job Submission Description Language es una especificación XML extensible del Global Grid Forum para la descripción de las tareas simples a los sistemas de ejecución de ordenador no interactivos. Actualmente se encuentra en la versión 1.0 (lanzada el 7 de noviembre de 2005), la especificación se centra en la descripción de las presentaciones de tareas computacionales, tanto en los sistemas informáticos de alto rendimiento tradicionales como programadores lotes. Marketing.xml es un estándar utilizado para la importación de datos de marketing desde un almacén de datos y fue desarrollado por Digital Jigsaw, que forma parte del Grupo Mobile Interactive. El estándar fue creado inicialmente en noviembre de 2010. Document Type Declaration (DOCTYPE) es una instrucción que asocia un documento SGML o XML en concreto (por ejemplo, una página web), con una definición de tipo de documento (DTD) (por ejemplo, la definición formal de una determinada versión de HTML). En la forma serializada del documento, se manifiesta como una cadena corta de marcado que se ajusta a una sintaxis particular. Document Type Definition (DTD) es un conjunto de declaraciones de marcas que definen un tipo de documento para un lenguaje de marcado SGMLfamilia (SGML, XML, HTML). Un DTD utiliza una sintaxis formal concisa que declara exactamente qué elementos y referencias pueden aparecer cuando en el documento del tipo particular, y qué contenidos y atributos de los elementos son. Una DTD también puede declarar entidades que pueden ser usados ​​en el documento de instancia. XML utiliza un subconjunto de SGML DTD. EasyTrade es una infraestructura de facturación electrónica danesa, desarrollado por la Agencia Nacional de Telecomunicaciones y TI y lanzado en 2007. EASYTRADE se basa en estándares abiertos (como el Business Language universal, confiable Perfil Secure asíncrono (RASP) y UDDI), con componentes de código abierto, y con certificados digitales. Fue lanzado como parte de una iniciativa de la Globalización Gobierno danés en 2005 bajo los auspicios del primer ministro.

205


206

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

Importante XML es importante, tanto como lenguaje por si mismo, como por haber servido de base para múltiples implementaciones particulares que permiten estandarizar lenguajes con utilidad en muchos y muy variados sectores.

El sector público en Dinamarca recibe más de 15 millones de facturas electrónicas cada año de aproximadamente 150.000 proveedores. Las facturas no electrónicas para una institución del sector público serán rechazadas. Hay más de 30.000 puntos finales de facturación electrónica del sector público. Un punto final puede ser todo lo concerniente a un municipio, a un jardín de infancia, o incluso a un departamento dentro de una institución del sector público. Los puntos finales se abordan a través de Números Mundiales de Localización oa través de números de registro de la empresa (llamada Números-RCV en Dinamarca). NeuroML es un modelo basado en el lenguaje XML que tiene como objetivo proporcionar un formato común de datos para la definición y el intercambio de modelos de la neurociencia computacional. El enfoque de NeuroML es en los modelos que se basan en las propiedades biofísicas y anatómica de las neuronas reales. Natural Language Semantics Markup Language es un lenguaje de marcas para el suministro de sistemas (tales como navegadores de voz) con interpretaciones semánticas para una variedad de entradas, incluyendo el lenguaje y la entrada de texto en lenguaje natural. Natural Language Semantics Markup Language forma actualmente un amplio borrador de trabajo del Consorcio Mundial de Web. 4.5 Análisis XML. 4.5.1 Herramientas y utilidades de análisis. A la hora de analizar un documento XML y comprobar si está bien formados existen cuatro tipos de herramientas: ––Un software ––Un servicio de comprobación online ––Un cliente web que entienda XML ––Programación de análisis XML mediante lenguajes en servidor Se van a explicar las primeras tres opciones en este apartado y la cuarta se explica en el siguiente apartado. SOFTWARE DE ANALISIS WEB Entre la multitud de programas que hay para analizar documentos XML se pueden destacar:


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

––XMLSpy: Potente editor para Windows que dispone de una opción en un submenú para comprobar si el XML está bien formado. ––Conglomerate: Con esta aplicación al intentar abrir u XML que noe sté bien formado, indica un error, con un mensaje explicativo. SERVICIO DE COMPROBACION ONLINE A través de la web del consorcio W3C se puede enviar un documento XML para que nos indique si está bien formado o no. Para usar este servicio se debe entrar en la url http://validator.w3.org/ y nos ofrece tres posibilidades: ––Indicar la url del archivo xml a analizar, por ejemplo si lo tenemos alojado en un servidor (con la pestaña “Validate by URI”) ––Subir el fichero xml (en la pestaña “Validate By FileUpload”) ––Escribir (o copiar) directamente el código del fichero XML. (a través de la opción “Validate By Direct Input”)

Con este validador y desplegando “More options” se le puede indicar ciertos parámetros para el análisis como el tipo de documento y la versión, la codifica-

207


208

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

ción usada. Si no se indica nada, el analizador intenta detectar estos parámetros a través del contenido del fichero. Este comprobador online no sólo sirve para analizar ficheros XML, sino también para otros tipos de ficheros como HTML y XHTML. Una vez analizado en la propia web nos indica: ––Si hay avisos (warnings) que no significa que no esté bien formado sino que hay algunas mejoras en el documento (por ejemplo que no esté especificada la codificación mediante el atributo encoding, que aunque no es obligatorio y por eso no indica error, si es recomendable). ––Si hay errores que impiden que el documento esté bien formado y que habría que corregir por tanto.

En este ejemplo, el analizador detecta dos errores y 6 avisos. Si se observa el código, el error es producido por no anidar bien los nodos nombre y Hombre.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

<personas> <Hombre> <apellido>Pérez</apellido> <nombre>José</nombre> </Hombre> <Hombre> <apellido>Sánchez</apellido> <nombre>Luis </Hombre></nombre> <Hombre> <apellido/> <nombre/> </Hombre> </personas>

CLIENTES WEB El cliente o navegador web funciona como interfaz entre el analizador y el usuario, de forma que al cargar el fichero XML el cliente web llama al analizador XML con el que trabaja, le pasa el documento y muestra la respuesta del analizador. El navegador web mostrará los mensajes que el analizador le pasa si hay algo erróneo en el documento XML. 4.5.2 Programación de análisis XML mediante lenguajes en servidor. Las bibliotecas de funciones que casi todos los lenguajes de programación tienen permiten comprobar si un fichero XML es o no válido. Algunos ejemplos son: ––Sablotron ––Xalan ––Libxslt ––taX 4.6 Uso de XML en el intercambio de información. XML también se ha concebido como un estándar para intercambiar información estructurada entre diferentes plataformas y puede ser usado en muchas utilidades: un mayorista de hoteles pasa la información de sus precios actualizada a las agencias de viajes para su publicación en su web en XML, la sindicación de conte-

209


210

Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

nidos de páginas web , RSS, XBRL deriva de XML y sirve para el intercambio de datos estadísticas y contables entre empresas. El uso de XML para intercambiar datos en el sector informática ha desplazado a los sistemas EDI (Electronic Data Interchange) como medio principal para este fin. 4.6.1 Codificación de parámetros. Para intercambiar información se usa el protocolo SOAP (Simple Object Access Protocol) cuyas principales ventajas son: ––Es independiente el sistema operativo ––Independiente desde el lenguaje de programación desde el que se use ––No depende de ningún modelo de objetos El intercambio de mensajes entre cliente y servidor mediante SOAP se realiza con formato XML. El proceso de intercambio de mensajes se realiza de la siguiente forma: ––El sistema del cliente prepara la petición en formato SOAP, en la cual se incluye una pregunta y los datos necesarios para su respuesta (parámetros). Por ejemplo si se desea realizar el producto de dos números, se deben enviar esos dos numeros. ––La petición en formato SOAP se envía por internet a la parte de destino, la cual extrae los datos necesarios para tratarla ––El destinatario realiza los procesos necesarios y envía la respuesta al remitente también en formato SOAP. El remitente sólo debe leer los diferentes campos incluidos en la respuesta. SOAP incluye un conjunto de reglas para la codificación de los parámetros. Éstos se dividen en dos categorías: los tipos escalares y tipos compuestos: ––Los tipos escalares contienen exactamente un valor, como por ejemplo un apellido, o la descripción del producto. ––Los tipos compuestos contienen múltiples valores, por ejemplo una lista de cotizaciones de bolsa. A su vez, los tipos de compuestos se subdividen en arrays y estructuras. El estilo de codificación de un mensaje SOAP se configura a través del atributo encodingStyle.


Unidad didáctica 4. Lenguajes de marcas de uso común en el lado servidor

4.6.2 Ficheros de configuración basados en XML. Un ejemplo de petición SOAP es el siguiente: <?xml version=’1.0’ ?> <env:Envelope xmlns:env=”http://www.w3.org/2003/05/SOAP-envelope”> <env:Header> </env:Header> <env:Body> <cms:ObtenerNumeroArticulos xmlns:cms=”http://www.mipagina.com/ cms”> <cms:categoria>Clasificados</cms:categoria> <cms:subcategoria>Ventas</cms:subcategoria> </cms:ObtenerNumeroArticulos > </env:Body> </env:Envelope>

211


212

Resumen Resumen En la actualidad contamos con numerosos sistemas que nos permiten diseñar, implementar y gestionar bases de datos. Han sido necesarios muchos años de estudio para concluir en herramientas y soluciones específicas para cada tipo de problema. Los sistemas de bases de datos pueden ser estudiados desde tres niveles distintos: 1.- Nivel Físico: Es el nivel real de los datos que están almacenados. Es decir son los datos como se fueron almacenados, en registros, o de otra forma. Este nivel se usa por pocas personas con ciertos conocimientos técnicos. Este nivel tiene asociada una representación de los datos denominado Esquema Físico. 2.- Nivel Conceptual: Es el que corresponde a una visión de la base de datos desde el punto de vista del mundo real. Se trata con un objeto o entidad representada, sin importar cómo se almacena o representa. Este nivel lleva asociado el Esquema Conceptual. 3.- Nivel Lógico: partiendo del esquema conceptual, y contando con los requisitos de entorno y de proceso, se desarrolla un esquema lógico que se apoyará en un modelo lógico, y que será el mismo modelo de datos que soportado, pero que no estará influenciado por las restricciones ligadas a ningún producto comercial. Así mismo hay múltiples herramientas gestoras para las bases de datos que se centran en facilitar la gestión de las bases de datos. En los temas de este módulo se han estudiado las características de estos sistemas, que se deben tener en cuenta para su elección en cada caso, así como los módulos que los componen y cómo se han de almacenar. En estos temas también se ha visto el lenguaje de marcas extensible XML da soporte a bases de datos, siendo útil cuando varias aplicaciones se deben integrar información o comunicarse entre sí. Hay dos grandes clases de bases de datos XML: - XML nativo: el modelo interno de estas bases de datos usa archivos XML como la forma elemental de almacenamiento, los que no han de almacenarse necesariamente en forma de texto. - XML habilitado: pueden mapear XML en estructuras tradicionales de bases de datos (como las bases de datos relacionales), aceptando XML como entrada y formateando en XML en la salida, o también soportando tipos XML nativos en


213

la propia base de datos, lo que implica que la base de datos procesa el XML de forma interna. Uno de los principales lenguajes de consulta para las bases de datos, que se usa hoy en día es el SQL (del inglés “structured query language”) que es un lenguaje de acceso a bases de datos relacionales que permitirá especificar varios tipos de operaciones en ellas. Una de sus principales características es el manejo del cálculo relacional y del álgebra, y permite realizar consultas para recuperar fácilmente información de interés relativa a bases de datos, así como el permitir realizar cambios en ella.

Bibliografía Bibliografía • Rob, Peter/ Coronel, Carlos. (2006). Sistemas de Bases de Datos – Diseño, implementación y administración. Ed. Thomson. • Beaulieu, Alan. (2009). Learning SQL. O’Reilly Media. • Powel, Gavin. (2006). Beginning XML databases. Wrox. • Fawcett, Joe, Ayers, Danny. (2012). Beginning XML. Wrox.


214

Glosario Glosario Almacén de datos Es una colección de datos para un cierto ámbito (empresa, etc.), no volátil, integrado y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la que se usa. Atributo en XML Un par nombre–valor dentro de una etiqueta que indica las propiedades del elemento Atributos en base datos Son las características o propiedades de todas las tablas, son los datos o campos (de un tipo concreto) que tiene cada objeto abstraído de la realidad, por lo que estos datos tienen unos valores. Base de datos La base de datos o banco de datos es un grupo de datos relacionados entre sí y almacenados para su posterior uso. Cardinalidad de la relación Número máximo y mínimo de ocurrencias de una entidad en una relación. Campo Es el lugar físico de almacenamiento destinado a contener información independiente. Clave alternativa o secundaria Es el resto de candidatas que no se han elegido como clave primaria. Clave candidata Se llama así a cada campo candidato a identificar esa ocurrencia de esa tabla. Clave primaria Se llama así a la que se ha elegido de entre las claves candidatas para referirse a la ocurrencia de la entidad tabla. Correspondencia El número máximo de ocurrencias de la entidad que pueden suceder en la relación. Dato Un dato es una representación simbólica (alfabética, numérica, algorítmica, etc) de una característica o atributo sobre una cierta entidad. Los datos describen sucesos, hechos empíricos y entidades. Descriptor de entidad Detalla la entidad pero sin identificarla inequívocamente del resto, permite repetir con estos mismos valores de campo.


215

Dominio Conjunto de valores posibles que podrá tomar un atributo. DTD Es un fichero en el cual son descritas las posibles marcas que pueden aparecer en un documento XML y los atributos que éstas pueden tener. Entidad se trata de objetos conceptuales, tangibles, intangibles, que tienen ciertos atributos o características que definen a las entidades. Esquema o Schema Es un documento similar a DTD pero permite definir tipos de datos, además de estar escrito en XML Grado de relación Número de entidades sobre las que se produce la asociación. Identificador de entidad clave Es la clave que identifica unívocamente a esta ocurrencia de la tabla, sin que haya dos ocurrencias con los identificadores claves repetidos. Procedimientos almacenados Son una secuencia ordenada de instrucciones SQL, que pueden recibir y proporcionar argumentos proporcionados por el usuario y se guardan en el servidor con un nombre, para que puedan ser invocados y ejecutados posteriormente. Relaciones Una relación se refiere a una asociación entre entidades. Suele nombrarse como un verbo. Al igual que ocurre en las entidades se podrá hablar de ocurrencias relacionales, que serán la asociación entre dos entidades. Registros son la información contenida en los campos de la tabla. Tupla es una secuencia ordenada de objetos, esto es, una lista con un número limitado de objetos. XLS Lenguaje que se usa para transformar datos basados en XML en otros formatos de presentación. W3C Organismo legislativo que establece las normas varias tecnologías Web, entre ellas XML y HTML.


Certificado de Profesionalidad

IFCD0210

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB

L

as competencias profesionales que se adquieren con este Certificado de Profesionalidad son desarrollar documentos y componentes software que constituyan aplicaciones informáticas en entornos distribuidos. Utilizando tecnologías web, partiendo de un diseño técnico ya elaborado, realizando la verificación, documentación e implantación de los mismos.

Módulos formativos y Unidades formativas MF0491_3: Programación web en el entorno cliente UF1841: Elaboración de documentos web mediante lenguajes de marca UF1842: Desarrollo y reutilización de componentes software y multimedia mediante lenguajes de guión UF1843: Aplicaciones técnicas de usabilidad y accesibilidad en el entorno cliente

UF1844: Desarrollo de aplicaciones web en el entorno servidor UF1845: Acceso a datos en aplicaciones web del entorno servidor UF1846: Desarrollo de aplicaciones web distribuidas MF0493_3: Implantación de aplicaciones web en entorno internet, intranet y extranet

ISBN: 978-84-16047-34-5

MF0492_3: Programación web en el entorno servidor


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.