Word - Carreras de Sistemas - UARG

Anuncio
Título: Modelo de Red
Integrantes:
!
Alvarado, Belen
Atencio, Josefina
Farfán, Ricardo
Farfán, Silvia
Cátedra: Base de Datos
&
Profesor: Sofia, Osiris
Año: 2002
Índice
Modelo de Red .........................................................................3
Conceptos Básicos ....................................................................3
Diagrama de Estructura de Datos ..............................................3
El modelo CODASYL DBTG .....................................................6
!
Facilidad de recuperación de datos en DBTG .........................10
Facilidad de actualización en DBTG ........................................12
Facilidad de procesamiento de conjuntos en DBTG ................14
Asignación de redes a archivos ................................................16
Sistemas de red ........................................................................20
&
Bibliografía . ...............................................................................21
Modelo de Red
2
Modelo de Red
En el modelo de red, los datos se representan por medio de colecciones de registros y
las relaciones entre los datos mediante enlaces.
Conceptos básicos
Registro: Colección de campos (atributos), cada uno de los cuales contiene solamente
un valor de un dato.
Enlace: Asociación entre 2 registros exclusivamente.
Por ej. :
!
Un registro puede ser cliente y cuenta, éstos pueden definirse utilizando una notación
en Pascal como sigue:
Type cliente=record
Nombre: string;
Calle: string;
Ciudad:string
End;
Type cuenta=record
Numero: integer;
Saldo: integer
End;
Diagrama de Estructura de Datos
Es un esquema que representa el diseño de una base de datos de red, el cual consta
de:
&
Cajas, que corresponden a tipos de registros.
Líneas, que corresponden a enlaces.
Un diagrama de estructura de datos tiene el mismo propósito que uno de
entidad_relación; a saber, especifica la estructura lógica global de la base de datos.
Relación binaria
Considérese el diagrama Entidad_Relación de la fig. 1 que consta de dos conjuntos de
entidades, clientes y cuenta, relacionados por medio de una relación binaria, muchos a
muchos, clicta, sin atributos descriptivos. El diagrama de estructura de datos
correspondiente se ilustra en la fig. 2. El tipo de registro cliente corresponde al conjunto
de entidades cliente, incluye tres campos (nombre, calle y ciudad). De manera similar,
cuenta es el tipo de registro correspondiente al conjunto de entidades cuenta. Incluye
Modelo de Red
3
!
dos campos (número y saldo). Finalmente, la relación clicta se ha sustituido por el
enlace clicta.
La cardinalidad de asignación, que se utilizará en los diagramas de estructura de datos,
se representará de la misma manera que los diagramas Entidad_Relación.
Si una relación incluye atributos respectivos, la transformación de un diagrama
Entidad_Relación en un diagrama de estructura de datos es algo más complicada. Esto
se debe al hecho de que un enlace no puede contener valores de datos.
En este caso se necesita crear un nuevo tipo de registro y establecer los enlaces como
se indica a continuación:
1. Sustituir entidades por registros.
2. Crear un nuevo registro con solo un campo para representar el atributo de la
relación.
3. Crear los siguientes enlaces, muchos a uno:
&
Un enlace que vaya del nuevo registro clifecha al tipo de registro cliente
como se indica en el gráfico.
Ctafecha del tipo registro fecha al tipo registro cuenta.
Modelo de Red
4
!
Relaciones generales
Considerese el diagrama Entidad_Relación que consta de tres conjuntos de entidades
(cuenta, cliente y sucursal), relacionados entre sí por medio de una relación general
CCS sin atributos descriptivos. Puesto que un enlace puede conectar solamente a dos
tipos de registro diferentes, necesitamos conectar estos tres tipos de registro por
medio de un nuevo tipo de registro que se enlaza directamente a cada uno de estos
tres registros, como se describe a continuación:
&
1. Sustituir a todas las entidades por registros.
2. Crear un nuevo tipo de registro que puede no tener campos o tener solo uno que
contenga un identificador único, este identificador es proporcionado por el sistema.
Este nuevo registro es, a veces, denominado tipo registro ficticio.
3. Crear los siguientes enlaces, muchos a uno, que vayan de:
El registro ficticio al primer registro.
El registro ficticio al segundo registro.
El registro ficticio al tercer registro.
Esta técnica puede extenderse de una forma directa para tratar relaciones que
abarquen más de tres conjuntos de entidades. De la misma manera, si la relación
general contiene varios atributos descriptivos, necesitamos añadir un campo al tipo de
registro ficticio por cada atributo descriptivo.
Modelo de Red
5
!
El modelo CODASYL DBTG
La primera especificación estándar de una base de datos, llamada informe CODASYL
DBTG 1971, fue escrita a finales de la década de los sesenta por el grupo de trabajo
sobre Base de Datos. Desde entonces se han sugerido varios cambios a ese informe.
En 1981, se publicó una nueva propuesta que todavía no se ha adoptado oficialmente.
Hemos elegido esta proposición como la fuente principal para nuestro tratamiento del
modelo DBTG.
&
Restricción de enlaces
En el modelo DBTG solamente pueden emplearse enlaces mucho a uno. Los enlaces
muchos a muchos se prohiben para simplificar la implementación. Los enlaces uno a
uno se representan utilizando un enlace muchos a uno. Si el diagrama de base de
datos es uno a muchos, éste no sufre cambios.
Sin embargo, si el enlace es de muchos a muchos, el algoritmo de transformación debe
redefinirse como sigue. Si la relación no tiene atributos descriptivos entonces debe
emplearse el siguiente algoritmo:
1. Sustituir entidades por registros.
2. Crear un nuevo tipo de registro ficticio, que puede no tener campos o tener solo
uno, que contenga un identificador único definido exteriormente.
3. Crear los dos siguientes enlaces muchos a uno que van de:
Modelo de Red
6
Conjuntos DBTG
!
Registro ficticio al primer registro (cliente).
Registro ficticio al segundo registro (cuenta).
&
Dada que solamente puede utilizarse enlaces muchos a uno en el modelo DBTG, un
diagrama de estructura de datos que consta de dos tipos de registros enlazados entre
sí tiene la forma general de la figura:
Esta estructura se denomina conjunto DBTG, generalmente el conjunto recibe el
nombre del enlace.
En todo conjunto DBTG de este tipo, el tipo de registro A se denomina dueño (o padre)
del conjunto, y el tipo de registro B se denomina miembro (o hijo) del conjunto.
Cada conjunto DBTG puede tener cualquier número de ocurrencias del conjunto.
Además, ningún registro miembro puede participar en más de una ocurrencia del
conjunto en ningún momento. Sin embargo, el registro miembro puede participar
simultáneamente en varias ocurrencias de diferentes conjuntos.
Para ilustrar considere el siguiente gráfico:
Modelo de Red
7
Los conjuntos pueden definirse así:
Set name is succta
owner is sucursal
member is cuenta
!
Set name is clicta
Owner is cliente
Member is cuenta
&
El modelo DBTG permite estructuras de conjuntos más complicadas en las que existe
un solo tipo de dueño y varios tipos de miembros. Por ejemplo , Supóngase que
tenemos dos tipos de cuentas bancarias: de cheques y de ahorros. El diagrama de
estructura de datos será el siguiente:
Modelo de Red
8
!
El modelo DBTG también proporciona la definición de un conjunto especial,
denominado conjunto singular o del sistema. En un conjunto de este tipo, el dueño es
un tipo de registro único definido por el sistema, llamado system, que no tiene campos.
Este conjunto tiene una sola ocurrencia de conjunto. Este esquema es útil para buscar
registros de un tipo determinado.
Grupos repetidos
&
El modelo DBTG proporciona un mecanismo que permite a un campo tener un conjunto
de valores en vez de un solo valor.
La construcción de grupos repetidos es otra forma de representar el concepto de
entidades débiles en el modelo Entidad_Relación.
Para ilustrarla, dividamos el conjunto de entidades cliente en dos conjuntos:
Cliente, con el atributo descriptivo nombre.
Dirección, con los atributos descriptivos calle y ciudad.
El conjunto de entidades dirección es débil, ya que depende del conjunto de entidades
fuerte cliente.
Si no se uso la construcción de grupo repetida en el esquema, entonces el diagrama de
estructura de datos correspondiente es el de la figura. Por otro lado, si se utiliza la
construcción de grupo repetida entonces el diagrama de estructura de datos consta
simplemente de un solo tipo de registro cliente.
Modelo de Red
9
!
Facilidad de 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.
Área de trabajo de programa
&
Todo programa de aplicación que se ejecute en un sistema posee una secuencia de
sentencias: algunas son sentencias de Pascal y otras son órdenes DBTG. A este tipo
de programa se lo denomina unidad de ejecución. Las sentencias que este programa
posee acceden y manipulan todos los elementos de la base de datos como las
variables declaradas localmente.
El programa mencionado anteriormente mantiene un área de trabajo de programa
"Área de trabajo de usuario en el modelo DBTG", siendo ésta un área de
almacenamiento de registros intermedios, la cual contiene las siguientes variables:
Plantillas de registros: Un registro para cada tipo de registro, al que acceda al
programa principal.
Punteros de actualidad: Un conjunto de punteros a varios registros de la base de
datos más actuales.
Distintos tipos de punteros:
Actual de tipo de registro.
Actual de tipo conjunto.
Actual de unidad de ejecución.
Indicadores de estado: Es un conjunto de variables que utiliza el sistema para
comunicar al programa de aplicación, el resultado de la última operación aplicada a
la base de datos. La más utilizada es:
Modelo de Red
10
DB-status (la más usada).
DB-set-name.
DB-record-name.
DB-data-name.
Ejemplo:
Plantillas
Registro cliente.
Registro sucursal.
Registro cuenta.
!
Punteros de actualidad
&
Registro cliente, registro cuenta y registro sucursal.
Conjunto clicta y suc-cuenta.
Puntero actual de unidad de ejecución.
Órdenes find y get (las más usadas)
Modelo de Red
11
Find: Localiza a un registro en la base de datos y da valores a los punteros de
actualidad adecuados.
Get: Copia el registro al que apunta el actual, de unidad de ejecución de la base
de datos a la plantilla adecuada en el área de trabajo del programa.
Acceso a registros individuales
Existen dos órdenes find diferentes para localizar registros individuales en la base de
datos. Ésta es la más sencilla:
Find any <tipo de registro> using <campo de registro>
Acceso de registros dentro de un conjunto
!
Órdenes find que localizan registros en un conjunto DBTG particular, el conjunto en
cuestión es aquel al que apunte el puntero de actualidad <tipo conjunto>. Existen tres
tipos distintos de órdenes.
Está es la más básica. Busca el primer registro.
Find first <tipo de registro> within <tipo de conjunto>
Busca el siguiente elemento del conjunto.
Find next <tipo de registro> within <tipo de conjunto>
Localiza el dueño de un conjunto.
Find owner within <tipo de conjunto>
Predicados
&
Las sentencias find permiten comparar el valor de un campo en una de las plantillas de
registros con el campo correspondiente en los registros apropiados de la base de
datos.
Cuando existen muchas consultas en las que deben compararse el valor de un campo
con un rango de valores especificados, necesitamos pasar (get) los registros
apropiados a la memoria y examinar cada uno por separado, para determinar si es uno
de los que busca la sentencia find.
Facilidad de actualización en DBTG
La actualización en DBTG incluye la creación de registros nuevos, eliminación de
registros antiguos, como la modificación de registros existentes.
Creación de registros nuevos
Modelo de Red
12
Esta técnica nos permite crear y añadir solamente un registro cada vez.
Store <tipo de registro>
Cliente.nombre:=’’Juan’’;
Cliente.calle:=”Roca”;
Cliente.ciudad := ‘’Rio gallegos’’ ;
Store cliente ;
Eliminación de un registro
!
El puntero de actualidad de ese tipo debe apuntar al registro que se va a eliminar en la
base de datos, usando la siguiente sentencia:
Erase <tipo de registro>
&
Fin:=false;
Cliente.nombre:=”Juan”;
Find any cliente using nombre ;
Find for update first cuenta within CliCta;
While DB-status=0 and not fin do
Begin
Get cuenta;
If cuenta.número= 402 then
Begin
Erase cuenta;
Fin:=true;
End
Else find for update next cuenta within CliCta;
End
Modificación de un registro existente
Para modificar un registro existente del tipo <tipo-registro>, debemos encontrar el
registro en la base de datos, pasarlo a memoria principal y cambiar los campos
deseados en las plantillas de <tipo de registro>. Finalizado esto, reflejamos los cambios
en el registro al que apunta el puntero de actualidad de <tipo de registro>. La sentencia
es:
Modify <tipo de registro>
La sentencia find for update es la que se utiliza para buscar el registro que desea
actualizar.
Cliente.nombre:=’’Juan ’’;
Modelo de Red
13
Find for update any cliente using nombre;
Get cliente;
Cliente.ciudad:=’’Rio Gallegos’’;
Modif. Cliente;
Facilidad de procesamiento de conjuntos en DBTG
La sentencia (connect)
Pasos para la inserción de un registro nuevo:
!
1. Crear un registro nuevo del tipo <tipo de registro>. Esto asigna al puntero de
actualidad de <tipo de registro>, el valor apropiado.
2. Encontrar el dueño adecuado del conjunto <tipo de conjunto>, ésto hace que el
puntero de actualidad apunte automáticamente a la ocurrencia de <tipo de
conjunto>.
3. Se inserta el registro nuevo con la sentencia connect.
Cuenta.número:=267;
Cuenta.saldo:=0;
Store cuenta;
Cliente.nombre:=”Juan”;
Find any cliente using nombre;
Connect cuenta to CliCta;
La sentencia (disconnect)
&
Para eliminar un registro del tipo <tipo de registro>, de una ocurrencia del conjunto del
tipo <tipo de conjunto>, necesitamos hacer que los punteros de actualidad de <tipo de
registro> y <tipo de conjunto> apunten al registro y ocurrencia de conjunto apropiados.
Una vez que se ha hecho esto, el registro puede eliminarse del conjunto. La sentencia
es:
Disconnect <tipo de registro> from <tipo de conjunto>
Cuenta.número:=177;
Find for update any cuenta using número;
Get cuenta;
Find dueño within CliCta;
Disconnect cuenta from CliCta;
La sentencia (reconnect)
Modelo de Red
14
Para pasar un registro <tipo de registro> de una ocurrencia de un conjunto a otra
ocurrencia del conjunto de tipo <tipo de conjunto> se debe encontrar el registro
apropiado y el dueño de las ocurrencias de conjunto a las que se trasladará ese
registro. La sentencia es:
Reconnect <tipo de registro> to <tipo de conjunto>
!
Clienta.nombre:=”Juan”;
Find any cliente using nombre;
Find first cuenta within CliCta;
While DB-status=0 do
Begin
Find dueño within SucCta;
Get sucursal;
If sucursal.nombre :=”Hillside” then
Begin
Sucursal.nombre:=”Valleyview”;
Find any sucursal using nombre;
Reconnect cuenta to SucCta;
End
Find next cuenta eithin CliCta;
end
Inserción y retención en conjunto
Insertion is <modo de inserción>
Donde <modo de inserción> puede tomar una de las dos formas:
Manual:
&
Connect <tipo de registro> to <tipo de conjunto>
Automático:
Store <tipo de registro>
Cuenta.sucursal:= “Valleyview”;
Find any sucursal using nombre;
Cuenta.número:=535;
Cuenta.saldo=0;
Store cuenta;
Cliente.nombre:=”Juan”;
Find any cliente using nombre;
Connect cuenta to CliCta;
Modelo de Red
15
Retención en conjunto
Existen varias restricciones respecto a como y cuando un registro miembro puede
eliminarse de una ocurrencia de conjunto en la que se halla insertado anteriormente.
Retention is <modo de retención>
Donde modo de retención puede ser:
Fija: Esta forma impide sacar el registro miembro de una ocurrencia de un
conjunto. Para poder reconectar un registro, debemos borrarlo, volver a crearlo, y
luego insertarlo en la nueva ocurrencia del conjunto.
Obligatoria: No puede reconectarse ni desconectarse a un conjunto de otro tipo.
Opcional: No hay restricciones.
!
Asignación de redes a archivos
&
Una base de datos de red consta de registros y enlaces. Los enlaces se implementan
añadiendo campos de punteros a los registros que se asocian por medio de enlaces.
Cada registro debe tener un campo de puntero por cada enlace con el que esté
asociado. La figura a continuación ilustra el tema.
En un enlace muchos a muchos, cada registro puede estar asociado a un numero
arbitrario de registros. Así, no es posible limitar el número de campos de puntero de un
registro. Por tanto aunque el registro mismo sea de longitud fija, el registro real que se
utiliza en la implementación física es un registro de longitud variable.
Estas complicaciones llevaron a los arquitectos del modelo DBTG a restringir los
enlaces a que fueran bien uno a uno o bien uno a muchos.
Veremos que, bajo esta restricción es posible conservar registros de longitud fija y
reducir el número de punteros requeridos.
Un registro cuenta puede estar asociado solamente a un registro cliente. Por tanto,
únicamente necesitamos un puntero en el registro cuenta para representar la relación
Modelo de Red
16
CliCta. Sin embargo, un registro cliente puede estar asociado a muchos registros
cuenta. En vez de utilizar muchos punteros en el registro cliente, podemos usar una
estructura de anillo (lista circular) para representar la ocurrencia total del conjunto
DBTG CliCta.
&
!
Si representamos los conjuntos DBTG empleando la estructura anillo, un registro
contendrá exactamente un puntero por cada conjunto DBTG en el que participe, sin
importar que sea del tipo dueño o miembro. Así, los registros de longitud pueden
representarse dentro de una estructura de anillo sin la necesidad de recurrir a registros
de longitud variable. Para encontrar un registro miembro determinado de una
ocurrencia de conjunto, debe seguirse de manera secuencial la cadena de punteros
para llegar desde el registro dueño hasta el registro miembro deseado.
La estrategia de implementación de la estructura de anillo para el modelo DBTG
proporciona motivación para la facilidad de recuperación de información en DBTG. En
este caso son utilizadas las órdenes find first y find next estas se refieren a la
ordenación de los registros dada por los punteros.
La sentencia find owner del lenguaje de consulta DBTG está reflejada en una forma
modificada de la estructura de anillo en la que todos los registros de tipo miembro
contienen un segundo puntero, el cual apunta al registro dueño. Bajo esta estrategia de
implementación, un registro tiene un puntero por cada conjunto DBTG que sea del tipo
miembro. Bajo la estrategia anterior, es necesario recorrer la estructura de anillo hasta
encontrar el dueño.
Puesto que las sentencias find first, find next y find owner son las que se utilizan con
mayor frecuencia en una consulta en DBTG, es conveniente almacenar los registros de
una ocurrencia de conjunto DBTG unos cerca de otros físicamente en el disco. Para
especificar la estrategia que va a emplear el sistema para almacenar un conjunto
DBTG, se añade una cláusula placement a la definición del tipo de registro miembro.
Placement clustered via <nombre del conjunto>
Esta sentencia provocará que el sistema almacene los miembros de cada ocurrencia
de conjunto físicamente cerca unos de otros en el disco. Hasta donde sea posible, los
miembros de una ocurrencia de conjunto se almacenarán en el mismo bloque.
Modelo de Red
17
!
Si deseamos almacenar más de un tipo de registro en un archivo, podemos especificar
que los registros dueño y miembro se almacenan físicamente cerca unos de otros en el
disco. Hacemos esto añadiendo la cláusula near owner a la cláusula placement.
&
Placement clustered via <nombre del conjunto> near owner
Modelo de Red
18
Sistemas de red
El modelo de red es la base de la mayor parte de los sistemas antiguos de base de
datos y de algunos sistemas recientes. Los mas populares son Total e IDMS.
Total
IDMS
!
El sistema de base de datos Total data de finales de la década de los años sesenta.
Funciona en una variedad de máquinas que van desde microcomputadores hasta
computadores grandes.
El lenguaje de consulta Total difiere del estándar DBTG que se presento hasta ahora,
aunque tiene una función similar, utiliza una sintaxis diferente.
Todas las sentencias del lenguaje de manipulación de datos (data manipulation
language (DML)). Total deben incorporarse en un lenguaje principal (cobol, PL/I,
Fortran o RPG).
&
IDMS es un sistema de base de datos de red desarrollado por Cullinane Database
System, Inc. IDMS sigue de cerca el modelo DBTG que se presentó en las secciones
anteriores. Incluye un lenguaje de manipulación de datos detallado que permita al
diseñador de datos un alto grado de control sobre la organización física de la base de
datos.
El lenguaje de manipulación de datos incluye características idénticas al DBTG DML
que se describió en las secciones anteriores. Se incluyen características adicionales
para facilitar la labor del programador y para que los programadores experimentados
sean capaces de escribir consultas más eficientes.
Modelo de Red
19
Bibliografía
Fundamentos de bases de datos. Segunda edición / Henry F. Korth,
Abraham Silberschatz ; tr. María Angeles Vaquero Martín; Antonio Vaquero García;
revisión técnica María Amparo Vila Miranda. -- Madrid [ES] : McGraw-Hill, 1993. -xx,739 p. : il.
&
!
Diseño y uso de bases de datos relacionales / Irene Luque Ruiz, Miguel
Angel Gómez-Nieto. -- Madrid [ES] : Ra-Ma, 1997. -- xix,449 p. : il
Modelo de Red
20
Descargar