lunes, 12 de septiembre de 2011

Lengaje de Manipulacion de datos

La manipulación de datos jerárquicos necesita localizar primero los datos sobre los que va a trabajar para realizar a continuación la acción de recuperación o actualización sobre dichos datos.
  • Localización o selección.

La función de selección jerárquica es de tipo navegacional, es decir, trabaja registro a registro. Dada la
sencillez del modelo, la función de selección es también muy sencilla, existiendo únicamente las siguientes formas básicas de búsqueda:

- Seleccionar un determinado registro que cumpla una cierta condición. en el lenguaje DL/I se realizará este
tipo de selección mediante una sentencia (GET UNIQUE -GU-) que activará el primer registro que cumpla
la condición especificada en el predicado que acompaña a la sentencia.
- Seleccionar el siguiente registro, que se encuentra perfectamente definido al existir un único camino
jerárquico. También en este caso se puede especificar una condición que habrá de cumplir el registro para ser
seleccionado. En DL/I se utiliza una sentencia (GET NEXT -GN-) que selecciona y, al mismo tiempo,
recupera el siguiente registro en el preorden.
- Seleccionar el siguiente registro dentro de un padre. Esta sentencia (GET NEXT PARENT -GNP-) es
análoga a la anterior, pero la selección termina cuando no haya más descendientes de ese padre.
- Seleccionar el registro padre de otro dado (que ha sido activado previamente) se conoce como
normalización jerárquica ascendente, mientras que la selección de descendientes se llama normalización
jerárquica descendente.
  • Acción
Una vez seleccionado un registro, se tendrá que realizar sobre él una acción, sea de recuperación o de actualización.

La recuperación, que va asociada a la selección en el DL/I, consiste en llevar el registro marcado como activo en la selección realizada previamente al área de entrada/salida. Se utiliza la sentencia GET. En cuanto a la actualización, es preciso distinguir entre:
- Insertar un conjunto de datos (INSERT -ISRT-)
- Borrar un conjunto de datos (DELETE -DLET-)
- Reemplazar -modificar- uno o varios campos de un registro (REPLACE -REPL-)

Debido a la naturaleza jerárquica de las conexiones entre registros, las inserciones y borrados de registros
requieren consideraciones especiales:

- Cuando un nuevo registro se inserta en una base de datos jerárquica, excepto para la raíz, tiene que ser
conectado a un nodo padre previamente seleccionado mediante alguna sentencia de selección. El nuevo registro se inserta como hijo del registro padre seleccionado.

- Cuando un registro se borra en una base de datos jerárquica, excepto si se trata de una hoja, se han de borrar todos los registros descendientes de él.


Ejemplos






La transformación según las cardinalidades seria:
  • Cuando la relación es uno a uno.
  • Cuando la relación es uno a muchos.
  • Cuando la relación es muchos a uno.
  • Cuando la relación es muchos a muchos.





    Según las cardinalidades los diagramas de estructura de árbol pueden quedar de la siguiente manera:
  • Cuando la relación es uno a uno.
  • Cuando la relación es uno a muchos.
  • Cuando la relación es Muchos a uno.

TRANSFORMACIÓN DE UN ESQUEMA E/R EN UN ESQUEMA JERÁRQUICO

A) Interrelaciones 1:N con cardinalidad mínima 1 en la entidad padre.
En este caso no existe ningún problema y el esquema jerárquico resultante será prácticamente el mismo que
en el ME/R.



B) Interrelaciones 1:N con cardinalidad mínima 0 en el registro propietario.
El problema es que podrían existir hijos sin padre, por lo que o se crea un padre ficticio para estos casos o se
crean dos estructuras arborescentes.


La primera estructura arborescente tendrá como nodo padre el tipo de registro A y como nodo hijo los
identificadores del tipo de registro B. De esta forma no se introducen redundancias, estando los atributos de la entidad B en la segunda arborescencia, en la cual sólo existiría un nodo raíz B sin descendientes.


C) Interrelaciones N:M
La solución es muy parecida, creándose también dos arborescencias.


La solución es independiente de las cardinalidades mínimas. Se podría suprimir, en la primera arborescencia
o en la segunda, el registro hijo, pero no se conservaría la simetría.
D) Interrelaciones reflexivas
La jerarquía a) se utilizaría siempre que se desee obtener la explosión.
La aplicación de estas normas de diseño evita la introducción de redundancias, así como la pérdida de
simetría, pero complica enormemente el esquema jerárquico resultante que estará constituido por más de un árbol, lo que no resulta fácilmente comprensible a los usuarios.

Integridad de datos


Duplicidad de registros

No se garantiza la inexistencia de registros duplicados. Esto también es cierto para los campos "clave". Es decir, no se garantiza que dos registros cualesquiera tengan diferentes valores en un subconjunto concreto de campos.

Integridad referencial

No existe garantía de que un registro hijo esté relacionado con un registro padre válido. Por ejemplo, es posible borrar un nodo padre sin eliminar antes los nodos hijo, de manera que éstos últimos están relacionados con un registro inválido o inexistente..

Desnormalización

Este no es tanto un problema del modelo jerárquico como del uso que se hace de él. Sin embargo, a diferencia del modelo relacional, las bases de datos jerárquicas no tienen controles que impidan la desnormalización de una base de datos. Por ejemplo, no existe el concepto de campos clave o campos únicos.
La desnormalización permite ingresar redundancia de una forma controlada, seguir a una serie de pasos conlleva a:
  • Combinar las relaciones
  • Duplicar los atributos no claves
  • Introducción de grupos repetitivos
  • Crear tablas de extracción
Cuando se debe desnormalizar:
  • Se debe desnormalizar para optimizar el esquema relacional
  • Para hacer referencia a la combinación de 2 relaciones que forman una sola relación

Vínculos Virtuales Padre -Hijo


El modelo jerárquico facilita relaciones padre-hijo, es decir, relaciones 1:N (de uno a varios) del modelo relacional. Pero a diferencia de éste último, las relaciones son unidireccionales. En justicia, dichas relaciones son hijo-padre, pero no padre-hijo. Por ejemplo, el registro de un empleado (nodo hijo) puede relacionarse con el registro de su departamento (nodo padre), pero no al contrario. Esto implica que solamente se puede consultar la base de datos desde los nodos hoja hacia el nodo raíz. 
No existen relaciones de muchos a muchos en el modelo jerárquico. Salvo que se simulen mediante varias relaciones 1:N. No obstante, esto puede provocar problemas de inconsistencia, ya que el gestor de base de datos no controla estas relaciones.
Como ya se ha mencionado, las relaciones se establecen mediante punteros entre registros. Es decir, un registro hijo contiene la dirección física en el medio de almacenamiento de su registro padre. Esto tiene una ventaja fundamental sobre las bases de datos relacionales: el rendimiento. El acceso de un registro a otro es prácticamente inmediato sin necesidad de consultar tablas de correspondencia.

Estructura Jerarquica

CARACTERÍSTICAS DE LA ESTRUCTURA JERÁRQUICA
Los segmentos, en función de su situación en el árbol y de sus características, pueden denominarse como:

1) SEGMENTO PADRE: Es aquél que tiene descendientes, todos ellos localizados en el mismo nivel.


2) SEGMENTO HIJO: Es aquél que depende de un segmento de nivel superior. Todos los hijos de un mismo padre están en el mismo nivel del árbol.


3) SEGMENTO RAÍZ: El segmento raíz de una base de datos jerárquica es Αel padre que no tiene padre.
La raíz siempre es única y ocupa el nivel superior del árbol.



Una OCURRENCIA de un segmento de una base de datos jerárquica es el conjunto de valores particulares
que toman todos los campos que lo componen en un momento determinado.

Un REGISTRO de la base de datos es el conjunto formado por una ocurrencia del segmento raíz y todas las
ocurrencias del resto de los segmentos de la base de datos que dependen jerárquicamente de dicha currencia raíz.

La relación PADRE/HIJO en la que se apoyan las bases de datos jerárquicas, determina que el camino de
acceso a los datos sea ÚNICO; este camino, denominado CAMINO SECUENCIA JERÁRQUICA, comienza siempre en una ocurrencia del segmento raíz y recorre la base de datos de arriba a abajo, de izquierda a derecha y por último de adelante a atrás.

El esquema es una estructura arborescente compuesta de nodos, que representan las entidades, enlazados
por arcos, que representan las asociaciones o interrelaciones entre dichas entidades.
La estructura del modelo de datos jerárquico es un caso particular de la del modelo en red, con fuertes
restricciones adicionales derivadas de que las asociaciones del modelo jerárquico deben formar un árbol ordenado, es decir, un árbol en el que el orden de los nodos es importante. Una estructura jerárquica, tiene las siguientes características:


El árbol se organiza en un conjunto de niveles.
- El nodo raíz, el más alto de la jerarquía, se corresponde con el nivel 0.
- Los arcos representan las asociaciones jerárquicas entre dos entidades y no tienen nombre, ya que no es
necesario porque entre dos conjuntos de datos sólo puede haber una interrelación.
- Mientras que un nodo de nivel superior (padre) puede tener un número ilimitado de nodos de nivel inferior
(hijos), al nodo de nivel inferior sólo le puede corresponder un único nodo de nivel superior. en otras palabras, un
progenitor o padre puede tener varios descendientes o hijos, pero un hijo sólo tiene un padre.


Todo nodo, a excepción del nodo raíz, ha de tener obligatoriamente un padre.
- Se llaman hojas los nodos que no tienen descendientes.
- Se llama altura al número de niveles de la estructura jerárquica.
- Se denomina momento al número de nodos.
- El número de hojas del árbol se llama peso.
- Sólo están permitidas las interrelaciones 1:1 ó 1:N
- Cada nodo no terminal y sus descendientes forman un subárbol, de forma que un árbol es una estructura
recursiva.
El árbol se suele recorrer en preorden; es decir, raíz, subárbol izquierdo y subárbol derecho. Entre las restricciones propias de este modelo se pueden resaltar:
A) Cada árbol debe tener un único segmento raíz.
B) No puede definirse más de una relación entre dos segmentos dentro de un árbol.
C) No se permiten las relaciones reflexivas de un segmento consigo mismo.
D) No se permiten las relaciones N:M.
E) No se permite que exista un hijo con más de un padre.
F) Para cualquier acceso a la información almacenada, es obligatorio el acceso por la raíz del árbol, excepto en el caso de utilizar un índice secundario.
G) El árbol debe recorrer siempre de acuerdo a un orden prefijado: el camino jerárquico.
H) La estructura del árbol, una vez creada, no se puede modificar.
Las estructuras jerárquicas se clasifican también como:
- Lineales: es un caso particular y simple en el que cada tipo de registro padre sólo puede tener un tipo de registro hijo.

Arborescente propiamente dicha: un tipo de registro padre puede tener varios tipos de registro
descendientes.

Ejemplos

Un diagrama de estructura de datos de red, especifica la estructura lógica global de la base de datos.


La relación alumno-cursa-materia donde la relación cursa no tiene atributos descriptivos :


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.
Caso 2. Cardinalidad Muchos a uno.
Caso 3. Cardinalidad Muchos a muchos.

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:






Caso 1. Cardinalidad uno a uno.
Caso 2. Cardinalidad Uno a muchos.
Caso 3. Cardinalidad Muchos a muchos.

Programacion de una base de datos de red


Para ilustrar la estructura de los registros en una base de datos de red, mostraremos la base de datos alumno – materia, con los siguientes registros (en el Lenguaje de programación Pascal):
type materia = record
     clave: string[7]
     nombreM: string[25]
     cred: string[2];
     end;
type alumno = record
     nombre: string[30];
     control: string[8];
     materia: Materia; {Enlace a materia}
     end;

En síntesis una base de datos en red puede tener 1 o mas elementos padre.

fuente: http://es.wikipedia.org/wiki/Base_de_datos_de_red