Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CapII - Estructuras Compuestas - Parte 6
CapII - Estructuras Compuestas - Parte 6
Entidad
Dirección
Entidad
Cedula NRO_AS
Sucesos o transacciones
Nombre SOCIO para esta entidad
Atributos ➢ Horas trabajadas el 6/6/2019
Entidad ➢ Incapacidad por enfermedad del
Dirección
3/5/2019
➢ Vacaciones tomadas
INTRODUCCIÓN
Entidades y Sucesos,
se registran a través
de sus atributos.
Los atributos son
hechos que
permiten describir a
una entidad o
registrar un suceso.
INTRODUCCIÓN
Archivo o tabla
Base de Datos
Registro
Acceso directo
Tabla 0001 …. 0023 … 0056 … 0067 … 0098 7214
1 …. 23 … 56 … 67 … 98 … 7214
0098
0023 f(H) posición relativa en la tabla hashing
colisión
JERARQUÍA DE LOS DATOS
Relaciones entre tablas
Las tablas de una base de datos,
sueles estar relacionadas.
Se conectan mediante un
campo común que ambas
poseen; es decir, el identificador
de una tabla (o campo llave),
puede ser un atributo en otra,
con la finalidad de proveer un
vínculo entre ambas.
REGISTROS
Declaración de registros
Cuando se requiera trabajar con
registros en nuestro algoritmos
nos referiremos a ellos con
independencia de su
organización previa, es decir, de
a qué base de datos
pertenecen.
Lo relevante será el nombre de
la tabla o archivo.
REGISTROS
EJEMPLOS:
REGISTROS
Acceso a los datos del registro
Como un registro es un tipo de dato estructurado no se puede tener acceso a él
como un único dato, a menos que se referencie el nombre del registro y el nombre
del campo, separados por un punto.
REGISTROS
EJEMPLOS:
REGISTROS
Diferencias entre registros y arreglos
1. Un arreglo, como estructura homogénea puede almacenar N datos
de un mismo tipo, mientras que un registro puede almacenar N
elementos de diferentes tipos, es decir, es una estructura
heterogénea.
2. A los componentes de un arreglo se tiene acceso mediante índices
que indican la posición del elemento correspondiente en el arreglo,
mientras que a los componentes de un registro, los campos, se tiene
acceso por medio de su nombre, que es único.
REGISTROS
Combinaciones entre registros y arreglos
Combinaciones
entre arreglos y
registros:
Registros
anidados
AC.NOMBRE
Para tener acceso a los campos de la AC.DIRECCIÓN.CALLE
variable AC de tipo ACREEDOR, se usa: AC.DIRECCIÓN.CIUDAD
AC.SALDO
REGISTROS
Combinaciones entre registros y arreglos
Registros con arreglos
Al menos un campo del
registro es de tipo arreglo.
Para tener acceso a los
campos de la variable CLI de
tipo CLIENTE, se usa:
LEER (CLI.NOMBRE)
LEER (CLI.TEL)
PARA I = 1, 12, 1 REPETIR
LEER (CLI.SALDOS[I])
FIN-PARA-I
LEER (CLI.MOROSO)
REGISTROS
Representación en memoria
Asumiremos que la representación interna de un registro será similar a
los elementos de un arreglo bidimensional almacenado fila a fila, es decir,
los campos del primer registro (primera fila) se colocarán primero; luego
los campos del segundo registro y así sucesivamente.
Cuando un lenguaje no permita definir la estructura de un registro, se
utilizarán arreglos paralelos.
Por arreglos paralelos se entiende, dos o más arreglos cuyos elementos se
corresponden.
Suponiendo una dirección inicial para el archivo en 2000, y que el archivo contiene 500 registros, cada
uno de los cuales contiene los siguientes datos: nombre(30), Teléfono (10), un arreglos de saldos de 12
elementos (reales) y un campo que indica si tiene saldos morosos (1).
R1 R2 R3
Para calcular la dirección de un campo, se suma a
la dirección base del archivo, la longitud (número
de bytes) de los campos previos.
Suponiendo una dirección base para el archivo en 2000, y que el archivo contiene 500 registros, cada
uno de los cuales contiene los siguientes datos: nombre(30), Teléfono (10), un arreglos de saldos de 12
elementos (reales) y un campo que indica si tiene saldos morosos (1).
R1 R2 R3 R4
R1 R2 R3
Longitud de registro = de las longitudes
de campo
= 30 + 10 + 48 + 1
= 89
Obtenga la dirección el elemento Saldos [11], del registro 345
Hay 344 registros previos, cada uno ocupa 89 bytes, por tanto la dirección
inicial del reg 345 sería: Así, la Loc(Saldos[11]) del registro
dirección inicial del archivo + bytes que ocupan los 344 registro previos 345 se obtiene como:
Entonces
2000 + 344 * 89 = 2000 + 30616 = 32616 (dirección del reg 345) Loc(A[K])= dirBase(A) + w (K-LimInf)
Como el arreglo saldo es el tercer campo del registro, debemos sumar a = 32656 + 4 (11-1)
esta dirección el desplazamiento de los campos previos (40 bytes), = 32656 + 4 (10)
obteniendo como dirBase del arreglo 32616 + 40 = 32656 = 32656 + 40
= 32696
Longitudes individuales de campo
R1 R2 R3
89*3= 267
Obtenga la dirección el elemento Saldos [7], del registro 285
Hay 284 registros previos, cada uno ocupa 89 bytes, por tanto la dirección
inicial del reg 285 sería: Así, la Loc(Saldos[7]) del registro 285
dirección inicial del archivo + bytes que ocupan los 2844 registro previos se obtiene como:
Entonces
2000 + 284 * 89 = 2000 + 25276 = 27276 (dirección del reg 285) Loc(A[K])= dirBase(A) + w (K-LimInf)
Como el arreglo saldo es el tercer campo del registro, debemos sumar a = 27316 + 4 (7-1)
esta dirección el desplazamiento de los campos previos (40 bytes), = 27316 + 4 (6)
obteniendo como dirBase del arreglo 27276 + 40 = 27316 = 27316 + 24
= 27340
Longitudes individuales de campo
R1 R2 R3
Esto es todo ...terminamos con el módulo...