martes, 20 de septiembre de 2011

Atributos y Dominio

ADMINISTRACION DE DATOS
Sin los datos y la capacidad para procesarlos, una organización no podría completar con éxito la mayor parte de sus actividades de negocios. Como ya se vio, los datos consisten de hechos son procesar, por ejemplo la cantidad de empleados y cifras de ventas.
LA JERRARQUIA DE LOS DATOS
Por lo general, los datos se organizan en una jerarquiza que se inicia con la pieza de datos más pequeña que utilizan las computadoras (un bit), y se desplaza a través de esa escala hasta una base de datos. Pro lo comoun un byte consiste de ocho bits.
Cada byte representa un carácter, que es la unidad de construcción de información básica. El carácter puede consistir de letras mayúsculas (A,B,C,.....Z), LETRAS NIMUSCULAS (a,b,c.....z), dígitos numéricos (0,1,2,....9), o símbolos especiales (.!+-/...).
Los caracteres se reúnen para formar un campo. Un campo por lo general es un nombre, un numero o una combinación de caracteres que describen un aspecto de un objeto de negocios. Un grupo de campos relacionados representa un registro.
Al combinar descripciones de varios aspectos de un objeto o actividad, de obtienen una descripción mas completa de estos.
Un conjunto de registros relacionados representan un archivo. Por lo general un archivo de inventarios es la suma de todos los registros de inventarios para una compañía u organización en particular.
ENTIDADES, ATRIBUTOS Y CLAVES DE LOS DATOS
Las entidades, atributos y claves son conceptos importante de la base de datos. Una entidad es una clase generalizada de personas, lugares o cosas (objetos), para los cuales se recopilan, almacenan y mantienen datos.
Un atributo es una característica de una entidad. El valor especifico de un atributo, conocido como elemento de datos , se puede encontrar con los campos de registro que describe una entidad. Como ya se planteo, un conjunto de campos de una objeto especifico representa un registro. Cuna clave es un campo o grupo de campos en un registro que se utiliza para identificar a este.
Un clave primaria es un campo o grupo de campos que identifica en forma única un registro. Ningún otro registro puede tener la misma clave primaria. La clave primaria se utiliza por distinguir registro con el fin de que se pueda tener acceso a ellos, organizarlos y manipularlos. En el caso del registro de una empleado, él numero de este representa un ejemplo de una clave primaria.
La localización de un registro en particular que cumpla con un grupo de criterios específicos quizá requiera del uso de una combinación de claves secundarias.
Por ejemplo, un cliente podría hacer una llamada telefónica a una complicación de clave secundaria.
EL METODO TRADICIONAL EN CONTRASTE CON EL METODO DE LA BASE DE DATOS
El método tradicional. Las organizaciones son sistemas en adaptación, con necesidades de datos e información en constante cambios. Para cualquier negocio en crecimiento o que esta experimentado cambios, la administración de datos se puede convertir en algo bastante complejo. Uno de los modos más básicos para manejar los datos es mediante los archivos.
Puesto que un archivo es un conjunto de registros relacionados, todos aquellos de estos últimos que se relacionan con una aplicación en particular se puede recopilar y administrar juntos en un archivo especifico de aplicaciones.
Uno de los puntos débiles de este método tradicional orientado hacia archivos, en cuanto a la administración de datos, es que gran parte de ellos, por ejemplo el nombre y la dirección del cliente, se duplica en dos o más archivos. Muchos sistemas de base de datos computarizados basados en el método tradicional de archivos, los datos se organizan para un programa de aplicaciones en particular.
El método de la base de datos.
Debido a los problemas que se vinculan con el método tradicional para la administración de datos, muchos gerentes buscaron un medio más eficiente y eficaz para organizar los datos.
El método de la base de datos.
En un método de la base de datos, una variedad de programa de aplicaciones comparten un grupo de datos relacionados. En lugar de tener archivos de datos independientes, cada aplicación utiliza una colección de datos que pueden estar unidos o relacionados en la base de datos. El método de la base de datos ofrece ventajas importantes en contraste con el método tradicional basado en archivos.
El método de la base de datos para la administración de datos incluye una combinación de hardware y software. Debido a las muchas ventajas del método de base de datos la mayor parte de las empresas utilizan bases de datos para almacenar datos referentes a clientes, perdidos, inventarios, empleados y proveedores.
Muchas de la base de datos modernos comprenden toda la empresa y abarcan gran parte de los datos de toda la organización. El desarrollo de base de datos para la empresa requiere un alto nivel de planeación y organización.
MODELADO DE DATOS Y MODELOS DE BASES DE DATOS
Debido a la cantidad de elementos con los que cuentan las empresas actuales, resulta esencial mantener organizados los datos para que se puedan utilizar con mas eficacia. Se debe diseñar la base de datos para que almacene toda los datos relevantes para la empresa y proporción acceso rápido.
MODELO DE DATOS
Entre las consideraciones fundamentales al organizar los datos en una base de datos se incluyen la determinación de los datos que se deben recopilar en la base de datos, de quien tendrá acceso a ella y como podrían desear utilizarlos.
El diseño lógico de una base de datos muestra un modelo abstracto de cómo se deben estructurar y ordenar los datos para cumplir con las necesidades de información de la organización. El diseño lógico de una base de datos incluye la identificación de las relaciones entre las diferentes sesiones de datos y su agrupamiento en una forma ordenada.
Una de las herramientas que usan los diseñadores de las bases de datos para mostrar la relación lógica entre los datos la constituye el método de datos. Un modelo de datos es un mapa o diagrama de entidades y sus relaciones, por lo general, el modelado de datos incluye la comprensión de un problema de negocios especifico y el análisis de los datos y la información necesarias para producir una solución.
Mediante diagramas ER también se pueden revelar relaciones de uno a uno, entre las entidades de datos en una base de datos estén estructuradas en forma lógica para que se puedan desarrollar programas de aplicaciones que satisfagan mejor las necesidades del usuario.
MODELOS DE BASE DE DATOS
En la mayor parte de las bases de datos, la estructura de las relaciones sigue uno de tres modelos lógicos de base de datos. Jerárquico de red y relacional. Estos vínculos muestran la forma en que los usuarios pueden tener acceso a los datos con los programas de aplicaciones. puesto que los diferentes modelos incluyen distintos vínculos entre datos, cada modelo tiene sus ventajas y desventajas únicas.
Modelos jerárquicos (de árbol).
En muchas situaciones , los datos siguen una estructura jerárquica, o en forma de árbol. El un modelo jerárquico de base de datos, los datos se organizan en una estructura descendente, o en forma de una árbol invertido. Consideramos un proyecto característico.
El modelo jerárquico es más conveniente para situaciones en donde las relaciones lógicas entre los datos se pueden presentar en forma apropiada con el enfoque de un padre-muchos hijos.
Si tiene acceso a los datos en forma lógica pasando a través de la "generaciones" apropiadas de padres para llegar al elemento de datos que se buscan, y solo hay una ruta de acceso a cualquier elemento particular de datos.
Modelos de red.
Un modelo de red es una ampliación del modelo jerárquico, sin embargo, en lugar de tener solo varios niveles de relaciones de uno a muchos, el modelo de red es una relación de propietario-miembro en la cual un miembro puede tener muchos propietarios.
En una base de datos estructurada como un modelo de red a menudo se puede tener acceso a un elemento de datos en particular a través de mas de una ruta.
Modelos relacionales.
Los modelos relacionales se han convertido en los modelos de base de datos de mayor demanda y su popularidad aumentara en el futuro. En el modelo relacional, cada fila de una tabla representa una entidad de dedos, mientras que las columnas de la tabla representan los atributos.
Cada atributo solo puede tomar ciertos valores. Los valores permisibles para dichos atributos se denominan el dominio. El dominio para un atributo en particular indica cuales valores se pueden colocar en cada una de las columnas de la tabla relacional.
Depuración de datos.
El propósito de la depuración de datos es buscar y arreglar estas y otras inconsistencias que pudieran ocasionar que aparezcan registros duplicados o incorrectos en la base de datos.
Una comparación de modelos de bases de datos.
Cada uno de los modelos de bases de datos que se han visto aquí se utiliza en diversas organizaciones, y cada uno de ellos tiene puntos fuertes y vulnerables. La principal ventaja del modelo jerárquico es la eficiencia del procesamiento. Su sistema de base de datos jerárquico puede requerir monos tiempo para manipular datos que otros modelos de bases de datos. Pues las relaciones entre los datos son menos complejas
Los modelos jerárquicos también son difíciles de cambiar y las bases de datos quizá presentan dificultades al momento de instalarse. El modelo de base de datos relaciona es con mucho le dé mas demanda. Es más fácil de controlar. Mas fexible e intuitivo que los otros pues organiza los datos en tablas.
El modelo relacional se puede usar también con sistemas de computadoras personales y macrocomputadoras.
SISTEMAS DE ADMINISTRACION DE BASES DE DATOS (DBMS)
La cracon y puesta en practica del correcto sistema de base de datos asegura que esta dará soporte a las actividades y objetivos de la empresa. Con independencia del modelo que respalden, los DBMS comparten algunas funciones comunes, tales secamente los datos en una base de datos, permitir la modificación de la base de datos, manipular datos y elaborar informes.
SUMINISTRO DE UNA VISTA DE DATOS PARA EL USUARIO
Puesto que el BDMS tiene la responsabilidad del acceso a una base de datos, uno de los primeros pasos para instalar y usar una base de datos incluye informarle a aquel la estructura lógica y física de los datos y de las relaciones entre estos en la base de datos.
El DBMS puede hacer referencia a un esquema para encontrar donde tener acceso a los datos solicitados con relacion a otra pieza de datos. El DBMS actúa también como una interfaz de usuario al proporcionar una vista de la base de datos.
Puede desarrollarse subesquema, que después de acceso al esquema por que a los programadores, gerentes y otros usuarios a menudo solo se les permite ver ciertas partes de la base de datos.
CREACION Y MODIFICACION DE LA BASE DE DATOS
Los esquemas y subesquemas se introducen al DBMS mediante un lenguaje de definición de datos.
En general, un DDL describe las rutas de acceso lógicas y los registros lógicos de la base de datos.
Otros pasos importantes en la creación de una base de datos es el establecimiento de un diccionario de datos, una descripción detallada de todos los datos utilizados en la base de datos.
Proporcionar una definición estándar de términos y elementos de datos.
Esto puede ayudar en el proceso de programación al proporcionar términos y variables consistentes para utilizar en todos los programas.
Ayudar a los programadores a diseñar y escribir programas.
Los programadores no necesitan conocer cuales dispositivos de almacenamiento se usan para almacenar los datos necesarios, aun mas importantes los programadores pueden usar el diccionario de datos para ver cuales programas usan ya una parte de los datos y si resulta conveniente.
Simplificar la modificación de la base de datos.
Si por alguna razón se necesita cambiar o eliminar un elemento de datos, el diccionario de datos señalaría los programas específicos que utilizan el elemento de datos que quizá sea necesario modificar.
Menor reducción de datos.
Al proporcional definiciones estándar de todos los datos, es menos probables que el mismo elemento de datos se almacene en diferentes lugares.
ALMACENAJE Y RECUPERACION DE DATOS
Como se acaba de describir, ser una interfaz entre un programa de aplicaciones y la base de datos es una de las funciones de DBMS. Este proceso sera el mismo si un gerente quiere obtener informacion de la base de datos. Primerio, el gerente solicita los datos al DBMS. Cuando dos o mas personas o programas intentan tener acceso al mismo registro, en la misma base de datos, al mismo tiempo, puede prosentarse un problema. Al mismo tiempo un programa de compras podria intentar incrementar en veite unidaddes el nivel de existencias del mismo producto por que se acaba de recibir. La necesidad de los usuarios de estar en osibilidad de lograr acceso y/o actualizar las bases de datos mediante internet va en aumento.
Esas bases de datos le permiten a las compañias crear un catalogo accesible en internet, lo que no es otra cosa mas que una base de datos de elementos, descipciones y precios.
MANIPULACION DE DATOS Y CREACION DE INFORMES
Una vez que se instala el DBMS, los empleados de todos los niveles pueden usar el sistema mediante comandos especificos en varios lenguajes de programacion.
Este lenguaje especifico, que se proporciona con el DBMS, les permite a los gerentes y a otros usuarios de la base de datos tener acceso, modificar y hacer consultas referentes a datos contendidos en la base de datos para crear informes.
Los informes de excepcion, progeramados y demanda, que se estudiaron por primera vez ponen en relieve los hechos que requieren atencion urgente de la administracion. Los programas de base de datos pueden producir literalmente cientos de documentos e informes.
SISTEMAS DE ADMINISTRACION DE BASE DE DATOS DE AMPLIO USO PARA USUARIOS FINALES
La mas reciente generacion de sistemas de administracion de base de datos les permite a los usuarios finales crear sus propias aplicaciones de bases de datos. Los usuarios finales ahora usan estas herramientas para enfrentarse a los problemas contidianos, tales como el modo de administrar una creciente informacion referente a empleados, clientes, inventarios, o ventas y cuestiones de entretenimiento como son las listas de videos. Estos sistemas de administracion de base de datos son una importante herramienta de productividad personal junto con el software para el procesamiento de texto, la hoja de calculo y las graficas. Un factor importante que facilita el uso de los DBMS por algunas bases de datos es la incorporacion de asistentes, los cuales ofrecen guias para crear bases de datos personalizadas, modificar aplicaciones listas para ejecutarse, usar las plantas aplicaciones tambien incluyen caracteristicas nuevas de gran capacidad, por ejemplo los sistemas de ayuda y las capacidades de publicacion en la web.
SELECCIÓN DE UN SISTEMA DE ADMINISTRACION DE BASE DE DATOS
La selección de mejor sistemas de administracion de datos se inicia con el analisis de las necesidades y caracteristicas de la base de datos. Las necesidades y caracteristicas de la base de datos. Las necesidades de informacion de la organización influyen en el tipo de datos que se recopilan y en el tipo de sistemas de administracion de base de datos que se usa.
Tamaño de la base de datos.
Las imensiones de la base de datos dependen del numero de registros o archivos que hayen en ella. El tamaño determina las necesidades generales de almacenamiento para la base de datos.
Cantidad de usuarios concurrentes.
La cantidad de usuarios simultaneos que pueden tener acceso a los contenidos de la base de datos tambien es un factor importante. En ocasiones se emplea el termino escalibilidad para describir que tan bien se desempeña una base de datos a medida que se aumenta el tamaño de esa y el numero de usuarios concurrentes.
Desempeño.
La rapidez con que la base de datos puede actualizar registros quiza sea el criterio de desempeño mas importante para algunas organizaciones.
Entre otas consideraciones de desempeño se incluyen la cantidad de usuarios concurrentes a los que se les puede dar soporte y cuanta memoria principal se requiere para ejecutar el programa de administracion de base de datos.
Integracion.
Un aspecto fundamental de cualquier sistema de administarcion de base de datos es su capacidad para integrarse con otras aplicacioes y bases de datos.
Una compañía industrial con cuatro plantas en tres sitios lejanos diferntes pude tener una base de datos independiente en cada localidad.
Caracteristicas.
Las caracteristicas del sistema de administracion de bases de datos tambien puede representar una gran diferencia. La mayor parte de los programas de base de datos cuaentan con procedimientos de seguridad, proteccion de la confidencialidad y deversas herramientas.
El proveedor.
La importancia, reputacion y estabilidad financiera de proveedor tambien deben tenerse en cuenta al tomar cualquier deciison para abrir la base de datos.
Costo.
Los paquetes de base de datos para computadoras personales pueden constar unos pocos cientos de dolares, mientras que los grandes sistemas de bases de datos para macrocoputadoras pueden tener un costo de cientos de miles de dolares.
Algunas compañias especializadas alquilan o arriendan se sofware de bases de datos.
DESARROLLOS DE LAS BASES DE DATOS
Los tipos de datos e informacion que necesitan los administradores se modifican conforme cambian los procesos de las empresas.
BASES DE DATOS DISTRIBUIDAS
Un procesamiento distribuido incluye colocar uniddes de procesamiento en diferentes ubicacioens y vincularlas a traves de equipos de telecomunicaciones.
La organizaciones encuentran a menudo que las bases de datos distibuidad proporcionan algunas de la misma ventajas del procesamiento distribuido.
A pesar de sus ventajas, el procesamiento distribuido plantea retos adicionales para mantener la seguridad exactidud oportunidad y cumplimiento de los estandares de los datos. Las bases de datos distribuidas permiten a mas usuarios tener acfceso directo en distintas ubicacioens.
Otro reto que plantean las bases de datos distrribuidad incluye la integracion de las diversas bases de datos.
ALMACENES DE DATOS, MERCADOS DE DATOS Y MINERIA DE DATOS
Los datos sin procesar necesarios para tomar decisiones de negocios bien fundamentadas se almacenan en diversas ubicaciones y formatos. Durante decadas, las organizaciones han recopilado datos de operaciones, de ventas y financieros mediante sus sistema de procesamiento de transacciones el linea.
Ademas los datos almacenados en sistemas OLTP son inconsistentes y estan en constante cambio. Las base de datos contiene las transacciones actuales necesarias para operar la empresa, incluyendo errores, entradas duplicadas y transacciones invertidas, que obstaculizan el trabajo de un analista de empresas que requiere datos estables. Asi, aunque los datos recopilados quienes toman las decisiones en las empresas. Estos son datos abundantes pero con escasa informacion.
Almacenes de datos. El concepto de almacen de datos es la evolucion actual de los sistemas de apoyo a las decisiones. Un almace de datos es un sistema de administracion de base de datos relacional creado especificamente para dar apoyo en las toma de decisiones administrativas, no para satisfacer las necesidades de los sistemas de procesamiento de transacciones.
Un almacen guarda datos historicos que se extrajeron de sistemas operacionales y de fuentes de datos externas. Los almacenes de datos por lo general se inician como bases de datos muy grandes que contienen millone, e incluso cientos de millones, de registros de datos. La informacion antigua que ya no se necesita se elimina del almacen de datos.
Las herramientas para depurar de datos pueden reunir datos de muchas fuentes en una base de datos, automatizar la recopilacion y verificacion de datos, eliminar los datos no deeacos y mantener los datos en un sistema de administracion de base de datos.
Mercado de datos. Un mercado de datos es un subconjunto de un almacen de datos. Traen consigo el concepto de almacen de datos. Los mercados de datos tienen mayor utilidad para grupos mas pequeños que desen acceder a datos detallados. Se usa un almacen para resumenes de datos que puedan ser usados para el resto de la compañía. Aunque se puede usar cualquier software de base de datos para establecer un almacen de datos, algunos proveedores proporcionan software de base de datos para establecer un almacen de datos.
Mineria de datos.
Otra nueva herramienta de analisis de informacion es la mimeria de datos. La mineria de datos es el descubrimiento automatizado de patrones y relaciones en un almacen de datos. Reppresenta ademas el paso siguiente de la evolucion de sistemas de apoyo a las decisiones. Existen miles de aplicaciones para la mineria de datos. Los emisores de tarjetas de creditos y los aseguradores exploran sus almacenes de datos en busca de patrones sutiles dentro de miles de transacciones de clientes para identificar el fraude, a menudo justo al momento en que ocurre. Los proveedore tradicionales de DBMS estan conscientes del gran potencial de la mineria de datos.
PROCESAMIENTO ANALITICO EN LINEA (OLAP)
En la actualidad. La mayor parte de las encuestas de la industria muestra que la mayoria de los usuarios de almacenes de datos se apoyan en hojas de calculo, herramientas para elaboracion de informes y analisis, o en sus propias aplicaciones personalizadas para recuperar datos de los almacenes y formatearlos a informes y graficas para la empresa. Durante casi dos decadas, las bades de datos multidimensionales y sus sistemas de exposicion de informacion analitica han proporcionado presentaciones de ventas y demostraciones atractivas en las ferias comerciales. Los servidores y las herramientas de escritorio de OLAP den soporte al analisis de alta velocidad de datos con relaciones complejas, tales como combinacioens de los productos de una compañía. Regtiones , canales de distribucion, unidades de presentacion de informes y periodos de tiempo. El OLAP, o analisi multidimensinal, requiere de gran cantidad de ingenio humano e interaccion con la base de datos para encontrar informacion en ella.
El software de OLAP le informa a los usuarios respecto a lo que ocurrio en sus negocios. La mineris de datos es direrente. Esta les de el porque . como usuario de una herramienta de mineria de datos no es necesario que se piense en que preguntas hacer.
Despues se puede aplcar este perfil a los datos de todas las transacciones que lleguen para identificar y detener el coportamiento fraudulento, que de lo contario pasaria inadvertido.
CONECTIVIDAD ABIERTA DE LA BASE DE DATOS (ODBC)
Los estandares de la ODBC ayudan a asegurar que el software escrito para cumplir con estos estandares se pueda utilizar con cualquier base de datos que cumpla con la ODBC. Esto hace mas facil transferir y tener aceso a datos entre base de datos diferentes.
La vinculacion le permite a una aplicación usar datos o un objeto almacenado en otr aplicación sin en realidad importar los datos o el objeto a ella.
Las aplicaciones que siguen el estandar de ODBC pueden usar estas caracteristicas de gran capacidad para copartir datos entre diferentes aplicaciones almacendnadas en distintos formatos. Los productos que cumplen con la ODBC sufren de su naturaleza de propositos multiples. Su desempeño general por lo comun es menos eficiente que el de los productos creados para utilizarse con una base de datos especifica. Las normas de la ODBC tamien hacen mas facil para las compañias en crecimiento integrar las bases de datos existentes, conectar mas usuarios a la misma base de datos, y mover programas de aplicaciones desde bases de datos orientadas a computadoras personales a bases de datos basadas en estaciones de trabajo mayores y viceversa.
SISTEMAS DE ADMINISTRACION DE BASE DE DATOS OBJETO-RELACIONAL
En la actualidad muchos de los programas de aplicacioens mas reciente requieren de la capacidad para manipular datos de audio, video y graficos. Un sistema de administacion de bases de datos convencionales no estan bien preparados para esto, pues tales datos no pueden almacenarse con facilidad en filas o tablas.
En tal base de datos, estos tipos de datos se almacenan como objetos, que contienen tanto los datos como las instucciones de procesamiento necesarias para completar la transaccion de la base de datos. Cada uno de los proveedores que ofrecen medios de ORDBMS proporcionan un grupo de interfaces de programacion de aplicaciones que permiten a los usuarios añadir definiciones y metodo de datos externos relacionados con aquellas definiciones en el sistema de base de datos.
Una cantidad cada vez mayor de datos que usan las organizaciones tienen la forma de inagenes, que se pueden almacenar en base de datos objeto-relaciones.
Los datos de imágenes tienen algunas desvbentajas, una de las cuales es el requerimiento de mayores requisitos de almacenamiento secundario. En la actualidad se desarrollan otra formas de crear indices y de referencias cruzadas de los datos.
Hipertexto. La base de datos objeto-relaciona proporciona mayuor flexibilidad para definir las relaciones entere datos. Se pueden crear las relaciones entre los datos de acuerdo con las especificaciones del usuario, en lugar de seguir uno de los modelos de base de datos mas estructurados.
Hipermedia. Hipermedia es una ampliacion de hipertaxto. Dichas notas podrian incluir material escrito acera de nuevos mercados, imágenes de productos y de folletos de publicidad, y anuncios comerciales. Comn el metodo de base de datos de hipermedia, chuchos de los tipos de datos se pueden organizar en red de nodos conectados.

Recursivas

Las listas tienen la propiedad de la clausura y pueden contener otras listas. Una lista jerárquica es una lista cuyos elementos son datos atómicos u otras listas jerárquicas. Por ejemplo, supongamos la siguiente lista:
((1 2 3) 4 5)
Esta lista define la siguiente estructura jerárquica de dos niveles:
*
       /|\
      * 4 5
     /|\
    1 2 3
En este tipo de jerarquía cada lista define un nodo que representa un nuevo nivel en la jerarquía. Los datos de la estructura definen los elementos finales de la jerarquía y los llamamos hojas.
Como sabes, los árboles son el tipo de datos típico que se usa en computación para representar estructuras jerárquicas. ¿Qué diferencia fundamental hay entre los árboles y las listas jerárquicas? En un árbol todos los nodos tienen un dato asociado, mientras que en las listas jerárquicas los datos sólo se encuentran en las hojas. Por esta razón, los árboles definidos por estas listas no son verdaderos y los llamaremos pseudo árboles.
La utilidad principal de las listas jerárquicas es doble. Por una parte definen una estructura relativamente sencilla en la que podemos definir y probar un conjunto de funciones que después van a ser directamente adaptables a los árboles. Por otra parte, representan una estructura de datos muy flexible con la que representar gran cantidad de objetos.
En los nombres de las funciones definidas para listas jerárquicas usaremos el sufijo pt (pseudo tree) para no confundirlas con las funciones que definiremos más adelante para árboles verdaderos. Por ejemplo, la función levels-pt contará el número de niveles de un pseudo árbol o lista jerárquica, mientras que la función levels-tree contará el número de niveles de un árbol genérico.
  • (leaf? dato): indica si un dato de una lista jerárquica es una hoja o no
  • (count-leaves-pt lista): devuelve el número de elementos atómicos de la estructura lista
  • (levels-pt lista): cuenta el número de niveles que contiene la lista jerárquica lista
  • (member-pt? dato lista): indica si el dato es un dato atómico que pertenece a la lista jerárquica lista
  • (map-pt f lista): devuelve una nueva lista jerárquica con la misma estructura que lista con los datos resultantes de aplicar f a los datos originales de lista
A continuación comentamos la implementación de cada una de estas funciones.
  • La función leaf? nos dice si un nodo es una hoja. No tenemos más que comprobar si se trata de una pareja o un dato atómico.
    (define (leaf? x)
       (not (pair? x)))
  • La función count-leaves-pt recorre todos los niveles de la lista jerárquica y devuelve el número de elementos atómicos que contiene. Utilizando la terminología de árboles, devuelve el número de hojas del pseudo árbol que se le pasa como argumento.
    (define (count-leaves-pt x)
       (cond
          ((null? x) 0)
          ((leaf? x) 1)
          (else (+ (count-leaves-pt (car x))
                   (count-leaves-pt (cdr x))))))
  • La función levels-pt devuelve el número de nives de la lista que se le pasa como argumento. Para su implementación, realiza una llamada recursiva con el primer dato de la lista y el resto de la lista, por lo que el argumento x puede ser un dato o un lista.
    (define (levels-pt x)
       (cond 
          ((null? x) 0)
          ((leaf? x) 0)
          (else (max (+ 1 (levels-pt (car x)))
                     (levels-pt (cdr x))))))
  • La función member-pt? recorre el pseudo árbol y comprueba si alguno de sus datos coincide con el argumento que le pasamos. La implementación realiza un recorrido del pseudo árbol llamando de forma recursiva a la propia función con el primer elemento de la lista (que puede ser, a su vez, otra lista jerárquica) y con el resto de la lista.
    (define (member-pt? x lista)
             (cond 
                 ((null? lista) #f)
                 ((leaf? lista) (= x lista))
                 (else (or (member-pt? x (car lista))
                           (member-pt? x (cdr lista))))))
  • La función square-pt construye una nueva lista jerárquica con los elementos de la que se le pasa como parámetro elevados al cuadrado. Llama a la función cons para montar la nueva lista con el resultado que devuelve las llamadas recursivas.
    (define (square-pt lista)
      (cond ((null? lista) '())
            ((leaf? lista) (square lista))
            (else (cons (square-pt (car lista))
                        (square-pt (cdr lista)) )) ))
  • La función map-pt generaliza la función anterior, ya que permite pasar como argumento la función que se aplica a los datos de la lista.
    (define (map-pt f lista)
      (cond ((null? lista) '())
            ((leaf? lista) (f lista))
            (else (cons (map-pt f (car lista))
                        (map-pt f (cdr lista)) )) ))
Un ejemplo de uso de listas jerárquicas es el propio Scheme. Las expresiones de Scheme son listas jerárquicas. Por ejemplo, la expresión
(let ((x 12)
      (y 5))
   (+ x y)))
representa la siguiente estructura jerárquica

Árboles binarios

Un árbol binario es una estructura que contiene tres elementos: un dato, un árbol binario izquierdo y un árbol binario derecho. Esta definición es recursiva y necesita un caso base. Es el siguiente: un árbol binario puede ser también un árbol-vacío, un símbolo especial (usaremos la lista vacíadatum-bt) que simboliza un árbol que no tiene datos ni hijos.
En nuestra implementación la estructura en la que se guarda los elementos del árbol es una lista de tres elementos.
Llamamos raíz al nodo inicial del árbol y rama izquierda y rama derecha a los árboles izquierdos y derechos.
Las funciones que definen la barrera de abstracción del tipo de datos son las siguientes.
Constructores:
  • (make-bt dato izq der): construye un árbol binario a partir de un dato y otros dos árboles binarios
  • empty-bt: define el árbol binario vacío
Selectores:
  • (empty-bt? btree): comprueba si un árbol binario es vacío
  • (datum-bt btree): devuelve el dato de la raíz del árbol y provoca un error si el árbol está vacío
  • (left-bt btree): devuelve el hijo izquierdo de la raíz del árbol y provoca un error si está vacío
  • (right-bt btree): devuelve el hijo derecho de la raíz del árbol y provoca un error si está vacío
  • (empty-bt? btree): comprueba si un árbol binario está vacío
La implementación en Scheme de estas funciones es como se muestra a continuación.
(define (make-bt dato izq der)
    (list dato izq der))
(define empty-bt '())

(define empty-bt? null?)
(define (datum-bt btree) (car btree))
(define (left-bt btree) (car (cdr btree)))
(define (right-bt btree) (car (cdr (cdr btree))))

(define (leaf-bt? btree)
   (and (empty-bt? (left-bt btree))
        (empty-bt? (right-bt btree))))
Supongamos el siguiente árbol binario, que representa una expresión matemática.
*
          / \
         +   8
        / \
       5   3
El siguiente código muestra cómo se construye este árbol binario con los constructores que hemos definido.
(define t1 (make-bt 5 empty-bt empty-bt))
(define t2 (make-bt 3 empty-bt empty-bt))
(define t3 (make-bt '+ t1 t2))
(define t4 (make-bt 8 empty-bt empty-bt))
(define t5 (make-bt '* t3 t4))
Veamos ahora algunas operaciones sobre árboles binarios.
  • La función bt-to-list construye una lista con los elementos contenidos en un árbol binario.
    (define (bt-to-list btree)
       (if (empty-bt? btree)
          '()
          (append (bt-to-list (left-bt btree)) 
                  (list (datum-bt btree))
                  (bt-to-list (right-bt btree)))))
    
    La recursión de esta función se basa en obtener el dato de la raíz, obtener la lista de elementos de la rama izquierda (confía en la recursión, ¿recuerdas?) y la lista de elementos de la rama derecha. La función append concatena todos los elementos. Dependiendo del orden en que los concatenemos aparecerán los elementos en pre-order, in-order o post-order.
  • La función insert-bt realiza una inserción de un dato en un árbol binario ordenado. El hecho de que el árbol es ordenado implica que todos los datos del hijo izquierdo son menores que el dato de la raíz y los del hijo derecho son mayores. Por eso la recursión de la función se basa en identificar en qué subárbol va el dato que estamos insertando. Si el dato es mayor que la raíz hay que ponerlo en el hijo derecho, por lo que construimos un nuevo árbol con la misma raíz e hijo izquierdo que el actual y como hijo derecho ponemos el resultado de la llamada recursiva de insertar un dato en el árbol derecho (¡confía en la recursión!). Si el dato es menor hacemos lo contrario.
    (define (insert-bt x bt)
       (cond
          ((empty-bt? bt) (make-bt x empty-bt empty-bt))
          ((< x (datum-bt bt))
             (make-bt (datum-bt bt) 
                        (insert-bt x (left-bt bt)) 
                        (right-bt bt)))
          ((> x (datum-bt bt))
             (make-bt (datum-bt bt)
                        (left-bt bt)
                        (insert-bt x (right-bt bt))))
          (else bt)))
    
    Es muy importante notar que en programación funcional no es posible modificar las estructuras de datos porque no existe el concepto de estado de la computacion. Por eso, las funciones siempre devuelven estructuras nuevas, creadas a partir de los parámetros de entrada. Esto tiene sus ventajas e inconvenientes.
    Entre las ventajas se encuentra la sencillez, mantenibilidad, reusabilidad y robustez del enfoque debido a la no existencia de efectos laterales en las funciones. En la computación procedural, donde existen estructuras de datos que pueden ser modificadas por distintos procedimientos, hay que tener mucho cuidado los efectos laterales provocados por que una función modifica una estructura en la que se basa otra función.
    Entre los inconvenientes se encuentra el coste temporal de la operación. Al no existir la posibilidad de modificar sólo una parte de la estructura se obliga a copiar todos sus datos en una estructura nueva recién creada. Esto impone un coste mínimo de O(n).
  • La función insert-list-bt se basa en la función anterior para insertar todos los elementos de una lista en un árbol binario. Al igual que en el caso anterior, hay que hacer notar que no existe tal inserción, sino que se construye un árbol nuevo que se devuelve como resultado.
    (define (insert-list-bt list bt)
       (if (null? list)
          bt
          (insert-list-bt (cdr list) 
              (insert-bt (car list) bt))))
    
  • La función list-to-bt se podría considerar un constructor de árboles binarios orddenados a partir de una lista. Está basado en las funciones anteriores. Otro posible nombre para esta función sería make-bt-from-list.
    (define (list-to-bt list)
       (if (null? list)
          list
          (insert-list-bt 
              (cdr list) 
              (make-bt (car list) 
                          empty-bt
                          empty-bt))))
    
  • La función member-bt? comprueba si un dato pertenece a un árbol binario ordenado. Está basada en la típica búsqueda binaria con coste log(n).
    (define (member-bt? x bt)
       (cond 
          ((empty-bt? bt) #f)
          ((= x (datum-bt bt)) #t)
          ((< x (datum-bt bt))
             (member-bt? x (left-bt bt)))
          (else
             (member-bt? x (right-bt bt)))))
    

Árboles genéricos

Los nodos de los árboles genéricos pueden tener un número variable de hijos, a diferencia de los nodos de los árboles binarios que sólo pueden tener dos hijos como máximo. Se usan en un gran número de dominios en los que es necesario representar estructuras jerárquicas: procesadores de lenguaje, documentos XML, documentos HTML, etc.
Definición del tipo de datos árbol:
  • Un árbol genérico está formado a partir de un nodo raíz que contiene un dato y una lista de hijos que, a su vez, son árboles genéricos. La lista de hijos puede ser vacía.
A diferencia de los árboles binarios, en los árboles genéricos no usamos el concepto de árbol-vacío. Un árbol o nodo hoja es un árbol cuya lista de hijos es una lista vacía.
En Scheme es muy fácil implementar un árbol genérico, construyendo una lista cuyo primer elemento es el dato del nodo y cuyo resto de elementos (cdr) son los hijos.
Constructores:
(define (make-tree dato lista-hijos)  (cons dato lista-hijos))
Selectores:
(define (datum-tree tree)  (car tree))
(define (children-tree tree)  (cdr tree))
Ejemplo de uso:
(define t1 (make-tree 4 '()))
(define t2 (make-tree 5 '()))
(define t3 (make-tree 3 '()))
(define t4 (make-tree '* (list t1 t2 t3)))
(define tree (make-tree '+ (list t3 t4)))
Un árbol binario usando esta implementación:
(define t1 (make-tree 9 '()))
(define t2 (make-tree 32 '()))
(define t3 (make-tree 52 '()))
(define t4 (make-tree 102 '()))
(define t5 (make-tree 28 (list t1 t2)))
(define t6 (make-tree 70 (list t3 t4)))
(define tree (make-tree 40 (list t5 t6)))
Algunas operaciones sobre árboles genéricos.
  • La función square-tree devuelve el árbol resultante a aplicar la función square a los números del árbol que se pasa como parámetro.
    Es importante notar, al igual que hacíamos cuando hablábamos de árboles binarios, que el árbol resultante es una copia del árbol que se pasa como parámetro y que no se pueden modificar directamente los datos del árbol original porque nos encontramos en el paradigma de programación funcional.
    (define (square-tree tree)
      (make-tree (square (dato tree))
                 (map square-tree (children-tree tree)) ))
    
    La implementación es bastante interesante. La recursión se basa en aplicar la propia función a cada uno de los hijos. Para ello se obtiene la lista de hijos con la función children-tree y se usa la función map para aplicar la propia función a todos los elementos de esa lista (que son árboles). La lista de árboles resultante se utiliza para construir el árbol que se devuelve añadiendo como dato el cuadrado del dato original.
  • La función tree-to-list devuelve una lista con todos los elementos del árbol.
    (define (tree-to-list tree)
       (if (null? (children-tree tree))
           (list (datum-tree tree))
           (cons (datum-tree tree)
                 (forest-to-list (children-tree tree)))))
    
    (define (forest-to-list forest)
       (if (null? forest)
           forest
           (append (tree-to-list (car forest))
                   (forest-to-list (cdr forest)))))
    La recursión de esta función es muy interesante, ya que se basa en una recursión mútua. La función tree-to-list obtiene la lista de hijos del nodo actual. A esta lista de árboles la llamamos forest (bosque). Se hace entonces una llamada a una función forest-to-list que devolverá una lista con todos los datos que haya en todos los árboles hijos. A su vez, esta función forest-to-list es una función recursiva que toma una lista de árboles y va construyendo una lista de datos a base de llamadas a la función tree-to-list para cada árbol de la lista.
  • Por último, la función map-tree es la generalización de la función square-tree y permite aplicar una función cualquiera de un argumento a todos los datos del árbol inicial, devolviendo el árbol resultante.
    (define (map-tree f tree)
       (make-tree (f (datum-tree tree))
                  (map-forest f (children-tree tree))))
    
    (define (map-forest f forest)
       (if (null? forest)
           forest
           (cons (map-tree f (car forest))
                 (map-forest f (cdr forest)))))
    La implementación de esta función tiene un patrón similar a tree-to-list.

Referencias

Para saber más de los temas que hemos tratado en esta clase puedes consultar las siguientes referencias:

Cardinalidad

Los modelos de datos.
En el proceso de abstracción que conduce a la creación de una base de datos desempeña una función prioritaria el modelo de datos. El modelo de datos, como abstracción del universo de discurso, es el enfoque utilizado para la representación de las entidades y sus características dentro de la base de datos, y puede ser dividido en tres grandes tipos (KORTH y SILBERSCHATZ, 1993: 6-11):
1. Modelos lógicos basados en objetos: los dos más extendidos son el modelo entidad-relación y el orientado a objetos. El modelo entidad-relación (E-R) se basa en una percepción del mundo compuesta por objetos, llamados entidades, y relaciones entre ellos. Las entidades se diferencian unas de otras a través de atributos. El orientado a objetos también se basa en objetos, los cuales contienen valores y métodos, entendidos como órdenes que actúan sobre los valores, en niveles de anidamiento. Los objetos se agrupan en clases, relacionándose mediante el envío de mensajes. Algunos autores definen estos modelos como "modelos semánticos".
2. Modelos lógicos basados en registros: el más extendido es el relacional, mientras que los otros dos existentes, jerárquico y de red, se encuentran en retroceso. Estos modelos se usan para especificar la estructura lógica global de la base de datos, estructurada en registros de formato fijo de varios tipos. El modelo relacional representa los datos y sus relaciones mediante tablas bidimensionales, que contienen datos tomados de los dominios correspondientes. El modelo de red está formado por colecciones de registros, relacionados mediante punteros o ligas en grafos arbitrarios. el modelo jerárquico es similar al de red, pero los registros se organizan como colecciones de árboles. Algunos autores definen estos modelos como "modelos de datos clásicos".
3. Modelos físicos de datos: muy poco usados, son el modelo unificador y el de memoria de elementos. Algunos autores definen estos modelos como "modelos de datos primitivos".
De lo anterior se deduce que el punto clave en la construcción de la base de datos será el modelo de datos. Se denomina modelo:
"...al instrumento que se aplica a una parcela del mundo real (universo del discurso) para obtener una estructura de datos a la que denominamos esquema. Esta distinción entre el modelo (instrumento) y el esquema (resultado de aplicar el instrumento) es importante... Es importante también distinguir entre mundo real y universo del discurso, ya que este último es la visión que del mundo real tiene el diseñador... podemos definir un modelo de datos como un conjunto de conceptos, reglas y convenciones que nos permiten describir los datos del universo del discurso." (MIGUEL y PIATTINI, 1993: 162)
Los objetivos del modelo de datos son dos:
1. Formalización: definir formalmente las estructuras permitidas y las restricciones a fin de representar los datos de un SI.
2. Diseño: el modelo resultante es un elemento básico para el desarrollo de la metodología de diseño de la base de datos.
Los diferentes modelos de datos comparten, aunque con diferentes nombres y notaciones, unos elementos comunes, componentes básicos de la representación de la realidad que realizan. Estos componentes se identifican gracias a la clasificación, y pueden identificarse conceptos estáticos y conceptos dinámicos. Los conceptos estáticos corresponden a:
1. Objeto: cualquier entidad con existencia independiente sobre el que almacenan datos. Puede ser simples o compuestos.
2. Relación: asociación entre objetos.
3. Restricción estática: propiedad estática del mundo real que no puede expresarse con los anteriores, ya que sólo se da en la base de datos; suele corresponder a valores u ocurrencias, y puede ser sobre atributos, entidades y relaciones.
4. Objeto compuesto: definidos como nuevos objetos dentro de la base de datos, tomando como punto de partida otros existentes, mediante mecanismos de agregación y asociación.
5. Generalización: se trata de relaciones de subclase entre objetos, es decir, parte de las características de diferentes entidades pueden resultar comunes entre ellas.
Por su parte, los conceptos dinámicos responden a:
1. Operación: acción básica sobre objetos o relaciones (crear, modificar, eliminar...).
2. Transacción: conjunto de operaciones que deben ejecutarse en su conjunto obligatoriamente.
3. Restricción dinámica: propiedades del mundo real que restringen la evolución en el tiempo de la base de datos.
El modelo jerárquico. Estructura. Relaciones padre-hijo. Propiedades del esquema. Arboles. Estructura de almacenamiento. Tipos de acceso. Integridad y seguridad del modelo. Definición completa de una base de datos jerárquica.
El modelo de red. Estructura. Registros. Campos y datos. Tipos y ocurrencias de sets. Limitantes de membresía (de inserción, retención y ordenamiento). Representaciones de ocurrencias. Set singular. Set de miembros múltiples. Set recursivo.
El modelo relacional. Conceptos básicos. Dominios, atributos, tuplas, relaciones, atributos llave, llaves foráneas. Algebra relacional. Operaciones. Cálculo relacional, Vistas. Esquema de base de datos relacional. Regla de unicidad. Regla de integridad referencial. Normalización.
Modelo entidad-relación. Atributos y entidades. Valores y dominios de los atributos. Tipos de entidades. Atributos llave. Tipos de relación. Instancias de rela-ciones. Restricciones estructurales. Entidad débil. Representación del modelo mediante diagramas. Generalización y especialización. Agregación. Conversión de los diagramas en tablas.
Diseño relacional. Requerimientos y análisis. Diseño conceptual. Esquema conceptual. Diseño lógico. Diseño físico e implantación. Problemas de redundancia. Valores nulos. Dependencias funcionales. Reglas de inferencia. Formas normales: primera, segunda, tercera, interpretación de la tercera forma normal, forma normal de Boyce-Codd. Proceso de normalización. Algoritmos de descomposición. Otros tipos de dependencias y formas normales. Dependencias multivaluadas.
Modelos alternativos. Modelo orientado a objetos: tipos abstractos de datos, herencia, identidad de objetos, modelado de datos y estrategias de diseño, persistencia, métodos especiales de acceso, consideraciones de seguridad. Bases de datos heterogéneas: tecnología para interoperabilidad, esquemas, renombramiento, consultas, resolución de conflictos, optimización de consultas globales.
CONCEPTOS BASICOS
    Una base de datos jerárquica consiste en una colección de registros que se conectan entre si por medio de ligas. Los registros y las ligas son similares a los del modelo de red, pero en el modelo jerárquico se organiza en forma de árbol con raíz (donde la raíz es nodo ficticio); de tal manera que una base de datos jerárquica es una colección de arboles de este tipo, formando un bosque.
A cada árbol con raíz con raíz se le denomina árbol de base de datos.
    En este modelo un registro puede tener que repetirse en varios sitios que puede ocasionarlos siguientes problemas:
  • Riesgos de la inconsistencia al llevar a cabo actualizaciones.
  • Inevitable desperdicio de espacio en el medio de almacenamiento secundario.
DIAGRAMAS DE ESTRUCTURAS DE ÁRBOL
    Un diagrama de estructura de árbol es el esquema de una base de datos jerárquica. Tiene dos componentes básicos:
REGISTROS y LIGAS
    Estos diagramas son similares a los de estructura de datos en el modelo de red. La diferencia radica en que en el modelo de red los registros se organizan en forma de un grafo arbitrario mientras que en el modelo jerárquico se organiza en forma de un árbol con raíz.
1.-No hay ciclos
2.-De padre a hijos son
Las reglas para la formación del árbol son: validas las relaciones de uno a uno a uno a muchos.    El esquema de una base de datos jerárquica se representa como una colección de diagramas de estructuras de árbol. Para cada diagrama existe una única instancia del árbol de base de datos. La raíz de este árbol es un nodo ficticio. Los hijos de ese nodo son instancias del tipo de registros adecuado.
 Ejemplo:
Bases de datos

 
CASOS PARTICULARES
Bases de datos
Bases de datos
REGISTROS VIRTUALES.
    Dado que en las relaciones muchos a muchos existe demasiada repetición de datos, se maneja el concepto de registro virtual. Un registro virtual es aquel que no se escribe físicamente en el medio, sino que es una referencia (liga) a un registro existente en forma previa su representación es :
Bases de datos
    La razón de utilizar registros virtuales es evitar la repetición de los datos, lo cual traería consigo los siguientes inconvenientes:
-Redundancia, en consecuencia desperdicio de espacio de almacenamiento.
-Alto riesgo de inconsistencia durante las actualizaciones.
Modelos de Datos De Red

Mediados de los Sesentas
Setentas a mediados de los ochentas
Ochentas a principios de los noventas
Futuro
Modelo de datos De red
Jerárquico
Relacional Semántico
Orientado a objetos
Fusión de los modelos de datos y la representación de conocimientos.
Modelos híbridos
Configuración cliente-servidor
Hardware de bases de datos Macrocomputadores Macrocomputadores Computadores personales más rápidos Configuración cliente-servidor
Interfaz con el usuario Ninguna Minicomputadores
Computadores
Personales
Lenguajes de consulta
Formas
Estaciones de trabajo
Máquinas de bases de datos
Máquinas dorsales
Gráficos
Menús
Consulta por formas
Procesamiento en paralelo
Memorias ópticas

Multimedia
Lenguajes naturales
Entrada de voz
Texto a mano libre
Bases de datos y lenguajes de programación integrados.
Interfaz con programas Por procedimientos Lenguajes de consulta incorporados SQL estandarizado
Lenguajes de cuarta generación
Programación lógica
Gráficos de negocios
Salida de imágenes.
Gestores de presentación generalizados
Procesamiento de datos y conocimientos distribuidos y heterogéneos, con información de multimedia
Procesamiento Procesamiento de datos Procesamiento de información y transacciones Procesamiento de transacciones
Procesamiento de conocimientos
Gestión de bases de datos en paralelo

La tabla resume los pasos más destacados en la evolución de la tecnología de bases de datos durante las últimas tres décadas, aproximadamente. Las tres primeras columnas de la tabla corresponden aproximadamente a los tres periodos identificables. La última columna lista los avances que se esperan para el futuro. Analizaremos esta tabla fila por fila.

MODELOS DE DATOS
Los modelos de red y jerárquicos surgieron en la década de 1960. Desde su introducción en 1970, el modelo relacional ha provocado un interés creciente debido a sus propiedades deseables, como son su base formal, su homogeneidad, su conjunto bien definido de operaciones algebraicas y sus lenguajes basados en el cálculo. Las desventajas del modelo relacional en términos de su poder expresivo semántico hicieron surgir el interés por los modelos semánticos. Este interés ha crecido desde finales de los años setenta, sobre todo con la aparición de los modelos de entidad - relación (ER), de jerarquía semántica y de datos semántico. El interés por los modelos semánticos continuó en los años ochenta. Hoy día, cuando los horizontes de las aplicaciones de bases de datos se encuentran en una clara fase de expansión.
Una de las principales tendencias en los próximos años será hacia los modelos de datos orientados a objetos (BDOO) y los sistemas de gestión de bases de datos orientadas a objetos (SGBDOO). Los modelos de datos BDOO poseen un poder de expresión similar al de los modelos semánticos, pero los rebasan en el sentido de que modelan explícitamente el comportamiento. Se asegura que son más fáciles de implementar y usar cuando se trata de crear aplicaciones, debido a la modularidad integrada, el encapsulamiento y la reutilización de código.
Se ha propuesto la lógica como modelo de datos fundamental para los esquemas de representación relacionales y de otro tipo. El cálculo relacional se basa en una rama de lógica denominada cálculo de predicados de primer orden, de modo que ya tiene tiempo que la lógica se utiliza para caracterizar consultas relacionales. La base de datos lógica ofrece un formalismo para los lenguajes de consulta, el modelado de integridad, a evaluación de consultas, el tratamiento de valores nulos, el manejo de información incompleta, etc. La lógica nos lleva también a un entendimiento formal de la deducción en las bases de datos. Es probable que en el futuro proliferen más los SGBD orientados a objetos, se utilice mas la lógica para las bases de datos deductivas y se combinen la representación de conocimientos, los lenguajes de programación y los modelos de datos.
Otra tendencia clara en la creación de SGBD comerciales es la de producir sistemas unificados con modelos de datos "híbridos". N ejemplo de ello es el sistema UniSQL que maneja un modelo de datos completo orientado a objetos que es totalmente compatible con el modelo relacional. Los proveedores de productos de SGBD convencionales ya han comenzado a implementar una interfaz relacional basada en SQL que permitirá la creación concurrente de aplicaciones relacionales.
  El modelo CODASYL DBTG.
   En el modelo DBTG solamente pueden emplearse enlaces uno a uno y uno a muchos. En este modelo existen dos elementos principales que son el dueño y el miembro, donde solo puede existir un dueño y varios miembros, donde cada miembro depende solamente de un dueño.
    Empleando el ejemplo de la relación Alumno-cursa-Materia.
Bases de datos
  Si la relación es uno a muchos  sin atributos descriptivos, entonces el diagrama de estructura
      de datos apropiado es:
Bases de datos
Bases de datos
  Si la relación tiene un atributo descriptivo, como el de calif, entonces el diagrama de estructura de datos apropiado es:
Bases de datos
Bases de datos
  Si la relación fuera de muchos a muchos el algoritmo de transformación seria como el siguiente considerando que la relación no tiene atributos descriptivos, entonces:
1. Crear los registros correspondientes de las entidades involucradas (alumno,materia).
2. Crear un nuevo tipo de registro ficticio, renlace que puede no tener campos o tener sólo uno que contenga un   identificador único definido externamente.
3. Crear los enlaces correspondientes muchos a uno.


Bases de datos
Bases de datos
  En el caso de  las relaciones generales (es decir, no binarias), el algoritmo de transformación es el mismo  empleado para el estructurado de los diagramas de los modelos de red donde intervienen más de 2 entidades.
     Por ejemplo consideremos la agregación de la entidad   maestro, entonces  para este caso resulta la  estructura siguiente:
Bases de datos
Conjuntos DBTG
    Como se mencionó anteriormente en este modelo solo pueden utilizarse enlaces muchos a uno y uno a uno, así una  forma general de este modelo sería:


Bases de datos

    En el modelo DBTG, esta estructura de denomina conjunto DBTG. El nombre que se le asigna al conjunto generalmente es el mismo que el de la relación que une a las entidades.
    En todo conjunto DBTG de este tipo, el tipo de registro A se denomina dueño (o padre) del conjunto, el tipo de registro B se le denomina miembro (o hijo) del conjunto.Cada  conjunto DBTG puede tener cualquier numero de ocurrencias del conjunto. Puesto que no se permiten enlaces del tipo muchos a muchos, cada ocurrencia del conjunto tiene exclusivamente un dueño y cero o más registros miembros. Además ningún registro puede participar en más de una ocurrencia del conjunto en ningún momento. Sin embargo, un registro miembro puede participar simultáneamente en varias ocurrencias de diferentes conjuntos.

Podemos ejemplificar las ocurrencias que se pueden presentar, como:
Bases de datos

Para ilustrarlo, considérese el diagrama de estructura siguiente:
Bases de datos

Existen dos conjuntos DBTG:
    Bases de datos
AluCal, cuyo dueño es Alumno y cuyo miembro es reenlace.
    Bases de datos
  MatCal, cuyo dueño es Materia y el miembro reenlace.
Declaración de conjuntos
El  conjunto AluCal se define:          y el conjunto MatCal:
        Set name is AluCal                Set name is MatCal       
             owner is Alumno                      owner is Materia
             member is reenlace                  member is reenlace
Una instancia de la base de datos podría ser:


Bases de datos            

5.4 Recuperación de datos en DBTG
    El lenguaje de manipulación de datos de la propuesta DBTG consiste en un número de órdenes que se incorporan en un lenguaje principal.

    La mayor parte de los comandos de manejo de datos en DBTG de CODASYL tienen dos pasos. En primer lugar, se emite un comando FIND para identificar el registro sobre el cual se va a actuar. El comando FIND no lee, procesa el registro indicado;sólo identifica un registro para que lo localice el DBMS. Una vez identificado el registro, un segundo comando DML puede emitirse para que se lleve a cabo una operación sobre él. Patrones típicos son FIND, GET, o bien, FIND, MODIFY; o bien FIND, ERASE.
    Cuando el programa emite un comando FIND, se localiza un registro y su identidad permanece almacenada en una variable especial llamada indicador de posición. Después, cuando se emite un comando GET, MODIFY, ERASE o bien otro, el DBMS hace referencia al indicador de posición para determinar cuál es el registro sobre el que ha de actuar. Los indicadores de posición también se utilizan como puntos de referencia para los comandos del procesamiento secuencial como son FIND NEXT o FIND PRIOR.
Las operaciones utilizadas para la recuperación de datos son :
    Bases de datos
Find: Que localiza a un registro en la base de datos y da valores a los punteros de actualidad correspondientes
    Bases de datos
Get: Copia el registro al que apunta el actual de unidad de ejecución de la base de datos ala plantilla adecuada en el área de trabajo de programa.

La orden FIND tiene varias formas, en este caso estudiaremos 2 ordenes find diferentes para localizar los registro individuales de la base de datos; La orden más sencilla es de la forma:
    find any < tipo de registro > using < campo de registro >

    Esta orden localiza un registro del tipo <tipo registro> cuyo valor de < campo de registro> es el mismo que el del valor de <campo de registro> en la plantilla del <tipo de registro> en el área de trabajo del programa. Una vez que se encuentra ese registro se modifican los siguientes punteros para que apunten a ese registro:

      Bases de datos
El puntero actual de unidad de ejecución
      Bases de datos
El puntero de actualidad de tipo de registro que corresponde a <tipo de registro>
      Bases de datos
Para cada conjunto en el que participe ese registro, el puntero de actualidad de conjunto apropiado.
    Para ilustrar lo anterior, construyamos una consulta en DBTG que nos muestre el número de control del alumno Luis A. (consideremos el modelo alumno-materia ).
               
         Alumno.nombre:="Luis A.";
           find any Alumno using NombreA;
           get Alumno:
           print("Alumno.control");

    Pueden existir varios registros con el valor especificado. La orden find localiza el primero de ellos en un orden previamente especificado. Para localizar otros registros de la base de datos que pudieran tener el mismo campo <campo de registro, utilizamos la orden
            find duplicate <tipo de registro> using <campo de registro>


    Que localiza al siguiente registro (según un orden que depende del sistema) que tiene el valor de <campo registro>.ejemplo:

              Alumno.NombreA:="Luis A.";
                find any Alumno using NombreA;
                while DB-Status = 0 do
                   begin
                    get Alumno;
                    print (Alumno.control);
                    find duplicate Alumno using NombreA;
                  end;
    Se ha encerrado parte de la consulta en un ciclo while ya que no sabemos por adelantado cuántos nombres Luis A. pueden existir. Salimos del bucle cuando DB-Status<>0, esto indica que la última operación find duplicate falló, lo que implica que ya hemos agotado todos los registros con esos datos.
Actualización en DBTG.

Creación de nuevos registros.

   La orden para crear un nuevo registro es:
         Store <tipo de registro>

Esta t
écnica nos permite crear y añadir solamente un registro a la vez.  
Para ejemplificar consideremos el caso siguiente:
    Deseamos registrar a un nuevo alumno de nombre "Delia J. Siordia", la instrucción para esto es:
    Alumno.NombreA:="Delia J. Siordia";
    Alumno.control:="94310128";
    Alumno.Esp:="LAE";
    Store Alumno;
Modificación de un registro existente. 
    Para realizar la modificación a los registro primero se debe encontrar ese registro en la base de datos, pasarlo a la memoria principal y efectuar las modificaciones deseadas, posteriormente actualizamos el puntero de actualidad hacia el registro a modificar y ejecutamos la orden Modify.
   Modify <tipo de registro>
 Para que el sistema se entere que se va a realizar una modificación se emplea la orden for update.
     Ejemplo: Deseamos cambiar la Especialidad del alumno de nombre Delia J. Siordia, por LI.
   Alumno.NombreA:="Delia J. Siordia";
   find for update any Alumno using nombreA;
  
get Alumno.Esp :="LI";
   modify Alumno;
     Las líneas de código antes descritas, primero requieren del dato por el cual se realizará la búsqueda del registro, la orden find for update any establecen el tipo de registro que se usara, using indica el campo por el cual debe buscar la coincidencia para la modificación, get se antepone la línea de modificaciones que se realizaran sobre el registro y finalmente ya que el registro fue modificado se ejecuta la instrucción modify para activar las actualizaciones ejecutadas.
 Eliminación de registros.
     Para efectuar la eliminación de los registros es necesario tener el puntero de actualidad apuntando al registro que deseamos borrar, después se ejecuta al orden:
   erase <tipo de registro>
Esta instrucción al igual que la orden modify, requiere de la declaración de las instrucciones for update en la orden find.
 Ejemplo:Consideremos que deseamos eliminar el alumno cuyo número de control es 94310166 que pertenece al alumno Luis A.
   Fin:=false;
   Alumno.NombreA:="Luis A.";
    find any Alumno using NombreA;
    while DB-Status=0 and not fin do    begin        get Alumno;
        if Alumno.control=94310166 then        begin            erase Alumno;
          fin:=true;
        end        else            find for update next alumno with Alren1(*Registro reenlace*)
    end;
    Es posible eliminar toda una secuencia de conjunto encontrando al dueño del mismo, para ello se ejecuta la orden:
    erase all <tipo de registro>
    Esto borrara al dueño del conjunto y a todos sus miembros, si un miembro de un conjunto dueño de otro conjunto, también se eliminaran los miembros de ese conjunto, esta operación es recursiva.
 Ejemplo: Consideremos que deseamos borrar al Alumno de nombre Luis A. y todas sus registros de materias, entonces:
   Alumno.NombreA :="Luis A.";
    find for update any Alumno using NombreA;
    erase all Alumno;

Diagramas de estructura de datos.

    Un diagrama de estructura de datos es un esquema que representa el diseño de una base de datos de red. Este modelo se basa en representaciones entre registros por medio de ligas, existen relaciones en las que participan solo dos entidades(binarias ) y relaciones en las que participan más de dos entidades (generales) ya sea con o sin atributo descriptivo en la relación.
La forma de diagramado consta de dos componentes básicos:
    Bases de datos
Celdas: representan a los campos del registro.
    Bases de datos
Líneas: representan a los enlaces entre los registros. 

    Un diagrama de estructura de datos de red, especifica la estructura lógica global de la base de datos; su representación gráfica se basa en el acomodo de los campos de un  registro en un conjunto de celdas que se ligan con otro(s) registro(s), ejemplificaremos esto de la siguiente manera:
Consideremos  la relación alumno-cursa-materia donde la relación cursa no tiene atributos descriptivos :
Bases de datos
Las estructuras de datos según la cardinalidad se representan en los siguientes casos:
Cuando el enlace no tiene atributos descriptivos
Caso 1. Cardinalidad Uno a Uno.
Bases de datos
Caso 2. Cardinalidad Muchos a uno.
Bases de datos
Caso 3. Cardinalidad Muchos a muchos.
Bases de datos
Cuando el enlace tiene atributos descriptivos.
   Consideremos que a la relación cursa le agregamos el atributo Cal (calificación), nuestro modelo E-R quedaría de la siguiente manera:
Bases de datos

    La forma de convertir a diagramas de estructura de datos consiste en realizar lo siguiente:
    1. Realizar la representación de los campos del registro agrupándolos
        en sus celdas correspondientes.
    2. Crear nuevo registro, denominado Calif, para este caso, con un
        solo campo, el de cal (calif).
    3. Crear los enlaces indicando la cardinalidad de :
        Bases de datos
AluCal, del registro Calif al registro Alumno.
        Bases de datos
MatCal, del registro Calif al registro Materia.
    AluCal y MatCal son solo los nombres que emplearemos para
identificar el enlace, pueden ser otros y no son empleados para
otra cosa.
Los diagramas de estructuras de datos según la cardinalidad
se transforman en:
Caso 1. Cardinalidad uno a uno.
Bases de datos
Caso 2. Cardinalidad Uno a muchos.
Bases de datos
Caso 3. Cardinalidad Muchos a muchos.
Bases de datos
   
Diagramas de estructura de datos cuando intervienen
más de dos entidades y el enlace no tiene atributos descriptivos.
  
Consideremos que a la relación alumno-cursa-materia le agregamos la entidad maestro, quien es el que imparte dicha materia.
   
Nuestro diagrama E-R quedaría de la siguiente manera:
Bases de datos
    La transformación a diagramas de estructura de datos se realiza mediante los siguientes pasos:

1.Crear los respectivos registros para cada una de las entidades que intervienen en el modelo.

2. Crear un nuevo tipo de registro que llamaremos Renlace, que puede no tener campos o tener solo uno que contenga un identificador único, el identificador lo proporcionará el sistema y no lo utiliza directamente el programa de  aplicación, a este registro se le denomina también como registro ficticio o de enlace o unión.
    Siguiendo los pasos anteriores nuestra estructura finalmente es: (Considerando una relación con cardinalidad Uno a Uno)
Bases de datos
    Ahora si nuestro enlace tuviera atributos descriptivos, se crea el registro con los campos respectivos y se liga indicando el tipo de cardinalidad de que se trate.
    En este caso tomamos el ejemplo anterior con cardinalidad uno a uno y le agregamos a la relación el atributo calif. (calificación).
Bases de datos
    Considerando el anterior diagrama de estructura de datos, una instancia de este seria:
La estructura quedaría:

Bases de datos
    Este diagrama nos indica que los alumnos Luis A. Laura M. y Leticia L. cursaron la materia Base de datos 2 con La maestra Ing. Lourdes A. Campoy M obteniendo una calificación de 100,80,95 respectivamente.