Вы находитесь на странице: 1из 13

IES MAR DE CÁDIZ Prueba de Evaluación

Dpto. Informática Curso 2017-18

Módulo profesional: BASES DE DATOS

Ciclo Formativo: DESARROLLO DE APLICACIONES WEB

P01r_Introducción a los SGBD / Fecha: 2-11-2017 / Duración 90 minutos

SOLUCIONES

1.- El almacenamiento en el ordenador se suele clasificar por niveles, atendiendo a la cercanía al


procesador. Los niveles más bajos son los más cercanos al mismo.

Si comenzamos a numerar por 0. Asignar a cada tipo de almacenamiento: Auxiliar, Registros, Caché,
Primario y Secundario, un nivel.

Y completar la tabla también en cuanto a Función del tipo de almacenamiento y Capacidad de


Referencia (Bytes, KBytes, MegaBytes, …).

MEMORIA
Nivel O Función CAPACIDAD
ALMACENAMIENTO

Almacenar las copias de respaldo de la información. De GB a TB


4 AUXILIAR
Se utilizan dispositivos similares a los del SECUNDARIO o superior*

Almacena la información que, aunque accesible


De GB a TB
3 SECUNDARIO directamente por el procesador, no está siendo
o superior*
tratada por el mismo.

También llamada Memoria Principal, almacena la


2 PRIMARIO información que está siendo tratada por el De MB a GB
procesador.

Almacenamiento intermedio entre la Memoria


Principal y el Procesador.
1 CACHÉ De KB a MB
Tiene como objetivo acelerar los accesos de la UCP
(CPU) a la memoria principal.

Memorias de alta velocidad y baja capacidad utilizadas


0 REGISTROS para el almacenamiento intermedio de datos en las bits
unidades funcionales, especialmente en la UC y la UAL.

* Podemos referirnos a unidades superiores al TB (TeraByte) como EB (ExaByte) 1 EB = 1000 PB o 1024 PB,
según el criterio seguido. Y 1 PetaByte es igual a 1000 o 1024 TB
2.- ¿Qué es un fichero desde el punto de vista lógico?. Poner un ejemplo

¿Y desde el punto de vista físico?.

• Desde el punto de vista lógico, un fichero es un conjunto de información estructurada en registros


que contienen información de cada uno de los ítems o entidades que nos interesan.

Cada uno de las características del ítem, para las que se recogen información se denomina campo del
registro o atributo de la entidad.

Un ejemplo de fichero sería el que contiene la información de los libros (ítems o entidades) de una
biblioteca.
La información que se recoge de cada libro es: título, autor, editorial, ISBN, código de libro, etc.

• Desde el punto de vista físico, un fichero no es más que un conjunto de bits (ceros y unos)
almacenados, en formato digital, en un soporte de información adecuado (disco duro, DVD,
‘pendrive’, etc.). Y que se identifica con un nombre reconocible por el Sistema Operativo con el que
trabajemos.

-2-
3.- Si tenemos un archivo de datos que almacena información de 500.000 clientes de una web de
venta on-line, con tamaño fijo de 50 bytes por cliente. Y un tamaño de bloque para el disco de 2048
bytes. Determinar:

(En todos los cálculos se utilizará redondeo matemático a 2 dígitos decimales y suponer que no hay
restricciones entre registros lógicos y bloque físico.
Consideraremos que los múltiplos del byte toman como factor de multiplicación 1000).

3.1º El tamaño total del archivo expresado en bytes y en múltiplos adecuados del byte (Kbyte, Mbyte,
etc.) que sean números enteros.

Cómo se especifica así, consideraremos los múltiplos del byte de 1000 en 1000

500 000 x 50 = 25 000 000 Bytes 25 000 000 / 1000 KB = 25 000 KB = 25 MB

3.2º El número de bloques requerido para almacenar el archivo. Y el espacio que se desperdicia, en su
caso.

• El número de bloques se obtiene con las siguientes operaciones:

25 000 000 (tamaño total en bytes) / 2048 (tamaño del bloque en bytes) = 12207,03 bloques

Como un bloque se tiene que tomar completo, y consideramos que un registro lógico puede
almacenarse compartiendo espacio de 2 bloques físicos. Los bytes de resto ocuparán un bloque
aunque no esté lleno.

Por tanto el archivo ocupa 12208 bloques.

• Para determinar el espacio desperdiciado:

Calculamos los bytes ocupados por los 12208 bloques y a ello le restamos el tamaño nominal del
fichero que hemos determinado en el punto 1º, esto es, 25 000 000 Bytes = 25000 KB = 25 MB .

12208 bloques x 2048 Bytes = 25 001 984 Bytes

Por tanto, el espacio desperdiciado es:

25 001 984 - 25 000 000 = 1984 Bytes = (1984 / 1000) KB = 1,984 KB

-3-
4.- Si en el archivo anterior creamos un índice denso formado por la clave primaria (3bytes) y un
apuntador de 3 bytes.

(En todos los cálculos se utilizará redondeo matemático a 2 dígitos decimales y suponer que un registro
lógico (o entrada de índice) no puede usar espacio de 2 bloques físicos distintos).

4.1º ¿Cuántas entradas o registros tendremos en el índice?.

Los índices primarios densos siempre tendrán el mismo número de registros o entradas que el archivo
principal al que se refieren.

Por tanto el índice tendrá 500 000 entradas o registros.

4.2º ¿Cuánto espacio nominal ocupará el archivo índice?.


Expresarlo en bytes y en un múltiplo adecuado del byte.

El tamaño de cada registro del índice es la suma de los tamaños de sus campos:
Clave primaria (3 bytes) + Apuntador (3 bytes) = 6 bytes

Por tanto, el tamaño total del fichero índice será


500 000 x 6 = 3 000 000 Bytes = 3 000 000 / 1024 KB = 2929,69 KB = 2929,69 / 1024 MB = 2,86 MB

(En este caso, de acuerdo con el convenio que utilizamos, cuando no se explicita la medida de los múltiplos del
byte, consideraremos que: 1 Kilobyte = 1024 bytes).

4.3º ¿Cuántos bloques de disco se utilizan?.

Para tener en cuenta la restricción aplicada a los bloques físicos debemos ver cuántos registros completos
del índice caben en un bloque. Lo que se llama ‘factor de bloqueo’.

2048 / 6 = 341,33 reg. como tiene que ser un número entero, nos quedan 341 reg.

Por tanto para almacenar 500 000 registros necesitaremos un número de bloques que se obtiene con la
siguiente operación

500 000 / 341 = 1466,28 , como hay que tomar un número entero de bloques, serán 1467

-4-
4.4º ¿Cuánto espacio se desperdicia en cada bloque?.

• En cada bloque, excepto en el último, se desperdician


2048 – (341 x 6) bytes = 2048 – 2046 = 2 bytes, en los primeros 1466 bloques

• Como en todos estos bloques tenemos 1466 x 341 = 499 906 registros, en el último bloque se
almacenan sólo
500 000 – 499 906 = 94 registros, que suponen 94 x 6 = 564 bytes

y se desperdician

2048 – 564 = 1484 Bytes

4.5º ¿Cuánto espacio se desperdicia en total?.

El espacio total desperdiciado será por tanto el que se desperdicia en los bloques intermedios más el que
se desperdicia en el último bloque, es decir:

(1466 x 2) + 1484 = 2932 + 1484 = 4416 Bytes = 4416 / 1024 KB = 4,3125 KB

lo que supone más de 2 bloques completos.

-5-
5.- Para el archivo del Ejercicio 4.

5.1º Definir un índice no-denso cuyas entradas o registros tienen la misma estructura anterior, con la
única diferencia de que el campo apuntador tendrá 2 bytes, en vez de 3.

Para establecer el índice no-denso, hemos de dividir las posibles claves del índice en bloques
homogéneos.

Por ejemplo, como el archivo tiene 500 000 registros, vamos a hacer bloques de 1000 registros. Con lo
que tendremos 500 000 / 1000 = 500 entradas o registros para el índice no-denso.

5.2º ¿Cuánto espacio total nominal ocupará?.

Todos los índices se componen de 2 atributos, el campo clave y el campo apuntador. En este caso el
campo clave tiene 3 bytes y el campo apuntador, según nos dice el enunciado, 2 bytes.

Cada entrada o registro del índice tendrá 3 + 2 = 5 Bytes.

Luego el espacio total ocupado por este índice será: 500 x 5 = 2500 Bytes = 2500 / 1024 KB = 2,44 KB

5.3º ¿Cuántos bloques de disco ocupará?.

Ahora bien, el espacio real ocupado por el fichero dependerá del número de bloques que ocupe. Y
consideraremos el caso general de que un registro no ocupa espacio de 2 bloques distintos.

El número de registros por bloque o factor de bloqueo será:

2048 Bytes por bloque / 5 Bytes por registro = 409, 6 registros de índice
Como tiene que ser un número entero concluimos que en un bloque caben 409 registros.

Por tanto para almacenar 500 registros necesitaremos 2 bloques.

5.4º ¿Cuánto espacio se desperdicia?.

Como hemos visto en el ejercicio anterior, se desperdicia una cantidad en los bloques intermedios y otra,
distinta, en el último bloque. En este caso, como sólo hay 2, veremos el espacio que se desperdicia en el
primero y en el segundo bloque.

En el primer bloque se desperdiciarán:

-6-
2048 – (409 x 5) = 2048 – 2045 = 3 Bytes

En el segundo y último bloque se desperdiciarán:

2048 – [(500 – 409) x 5] = 2048 – (91 x 5) = 2048 - 455 = 1593 Bytes

En total se desperdiciarán
3 + 1593 = 1596 Bytes = 1596 / 1024 KB = 1,56 KB

5.5º ¿A cuántos bloques distintos del espacio de datos podrá referirse el campo apuntador?.
Dicho campo almacena un número entero en el sistema de numeración binario.

Por último, para saber a cuantos registros del espacio de datos podemos referirnos con 2 Bytes, esto es,
con 16 bits, aplicaremos la fórmula de conversión de números binarios a decimales.

El máximo número binario que cabe en 16 bits es:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

que traducido a decimal es

1 x 20 + 1 x 21 + 1 x 22 + ……………… + 1 x 213 + 1 x 214 + 1 x 215 =

(215 x 2 – 1) / (2 – 1) = 216 – 1 = 65536 – 1 = 65535

valor obtenido aplicando la fórmula de la suma de los términos de una progresión geométrica de razón 2
cuyo primer término es 1 y el último 215.

Por tanto, teniendo en cuenta que el valor 0 también puede apuntar, podríamos tener hasta 65536
bloques distintos.

-7-
6.- Los índices primarios se caracterizan porque son, como todos los índices archivos ordenados, pero
que apuntan a espacios de disco en los que la información también está ordenada.

• Construir un índice primario por C.LIB (Código de Libro), para el Fichero F.LIBROS, que cumpla
las siguientes características: sea NO-DENSO y los bloques de la zona de datos son de 2
registros lógicos.
• Explicar el proceso y justificar por qué el índice se dice que no es denso.

• El índice primario contendrá 2 campos, clave primaria del fichero, que será también la clave de
ordenación en el espacio de datos; y apuntador al espacio de datos, en este caso a los bloques que se
establezcan.

Establecemos en el espacio de datos la separación de bloques de 2 registros.

F.LIBROS
C.LIB TITULO AUTOR EDITORIAL Bloque
L001 Sistemas de BD Date, C.J. Addison 1
L002 Bases de Datos Ceri, S. Clup
L003 Diseño de BD De Miguel, A. RA-MA 2
L004 SQL Standard Date, C.J. Addison
L005 Desarrollo de BD Piattini, M. RA-MA 3
L006 Introducción a las BD Vila A. Paraninfo
L007 Fundamentos de BD Korth, A. McGraw-Hill 4

Como el índice es NO-DENSO, no tendrá un registro por cada uno de los registros del fichero en el espacio
de datos, sino que vamos a considerar un registro por bloque.

Índice Primario Espacio de Datos

Bq. C.LIB TITULO AUTOR EDITORIAL


C.LIB Apuntador 1 L001 Sistemas de BD Date, C.J. Addison
L001 • L002 Bases de Datos Ceri, S. Clup
L003 •
2 L003 Diseño de BD De Miguel, A. RA-MA
L005 • L004 SQL Standard Date, C.J. Addison
L007 •
3 L005 Desarrollo de BD Piattini, M. RA-MA
L006 Introducción a las BD Vila, A. Paraninfo

4 L007 Fundamento de BD Korth, A. McGraw-Hill

…… …… ……

• El proceso seguido, aunque ya se ha reflejado en el desarrollo consiste en:


- Dividir el espacio de datos en bloques
- Establecer un índice con un registro o entrada por cada bloque

El índice es NO-DENSO porque no tiene un registro o entrada por cada uno de los registros del fichero
que, en este caso, son 7.
-8-
7.- Los índices secundarios se pueden establecer sobre campos clave o sobre campos no clave.

• Construir un índice secundario por EDITORIAL y otro por AUTOR, para el Fichero F.LIBROS.
• ¿Cuál de ellos es DENSO?

Los índices secundarios no suponen que haya que reordenar el espacio de datos por la nueva clave de
ordenación considerada para ellos.

En este caso no nos dicen nada sobre los bloques del espacio de datos, por tanto los apuntadores se
dirigirán a cada uno de los registros.

• Construimos los dos índices secundarios sobre el mismo espacio de datos

Índice Secundario por Editorial Espacio de Datos Índice Secundario por Autor

EDITORIAL Apuntador C.LIB TITULO AUTOR EDITORIAL Apuntador AUTOR

Addison L001 Date, C.J. Adisson Ceri, S


Clup L002 Ceri, S. Clup Date, C.J.
McGraw-Hill L003 De Miguel, A. RA-MA De Miguel, A.
Paraninfo L004 Date, C.J. Adisson
Korth, A.
L005 Piattini, M. RA-MA
RA-MA Piattini, M.
L006 Vila, A. Paraninfo
Vila, A.
L007 Korth, A. McGraw-Hill

• Ninguno de los índices es DENSO, porque hay entradas de índice que apuntan a más de un registro
del espacio de datos y la definición de índice DENSO establece que este debe tener una entrada por
cada uno de los registros, no repetidos, del espacio de datos.

-9-
8.- Los índices de agrupamiento se utilizan cuando los registros del archivo están ordenados
físicamente por un campo no clave.

Establecer un índice de agrupamiento para el fichero del ejercicio 6 (F.LIBROS), por el campo
Editorial. Los bloques del espacio de datos son de 2 registros lógicos. ¿Cómo sería este índice denso
o no-denso?.

• En primer lugar se trata de dibujar la conexión entre el índice y el espacio de datos del fichero
F.LIBROS ordenado por el atributo Editorial y agrupando en bloques de 2 registros.

Y consideramos que cada bloque se va a reservar para una editorial.

F.LIBROS
C.LIB TITULO AUTOR EDITORIAL Bloque
L001 Sistemas de BD Date, C.J. Addison 1
L002 Bases de Datos Ceri, S. Clup 2
L003 Diseño de BD De Miguel, A. RA-MA 5
L004 SQL Standard Date, C.J. Addison 1
L005 Desarrollo de BD Piattini, M. RA-MA 5
L006 Introducción a las BD Vila A. Paraninfo 4
L007 Fundamentos de BD Korth, A. McGraw-Hill 3

Índice de Agrupamiento Espacio de Datos

Bq. C.LIB TITULO AUTOR EDITORIAL


EDITORIAL Apuntador 1 L001 Sistemas de BD Date, C.J. Addison
Addison • L004 SQL Standard Date, C.J. Addison
Clup •
2 L002 Bases de Datos Ceri, S. Clup
McGraw-Hill •
Paraninfo •
3 L007 Fundamento de BD Korth, A. McGraw-Hill
RA-MA •

4 L006 Introducción a las BD Vila, A. Paraninfo

5 L003 Diseño de BD De Miguel, A. RA-MA


L005 Desarrollo de BD Piattini, M. RA-MA
…… …… ……

• En cuanto a si el índice es denso o no-denso, concluimos que es no-denso ya que no existe un


apuntador para cada uno de los registros del espacio de datos, sino que dicho apuntador se establece
sobre bloques de registros.

- 10 -
9.- Supongamos el siguiente fichero F.PROVEEDORES con clave primaria NumPro.

F.PROVEEDORES
NumPro Nombre Ciudad
100 Pedro Madrid
174 Santiago Valencia
300 Martin Sevilla
344 Pablo Benalup
500 Rodrigo Espera

9.1º Determinar la posición de almacenamiento (bloque, página, registro, …) de los registros de claves
133 y 393, utilizando la función de aleatorización o dispersión
f(clave) = resto de dividir el valor de la clave por 13.

f(174) = resto (174 / 13) = 3


f(344) = resto (344 / 13) = 3

Esto significa que los dos registros deberían colocarse en la misma posición física

9.2º ¿Presentan algún problema los cálculos realizados?.


Justificar la respuesta y, en su caso, explicar la solución que se le da al problema presentado.

Dos registros no se pueden almacenar en la misma posición, a esta situación se le llama COLISIÓN y
se puede solucionar creando un área de desbordamiento en el fichero. En ella colocaríamos todos
los registros para los que se van produciendo colisiones.

- 11 -
10.- La siguiente tabla representa a un fichero de organización secuencial encadenada ordenado por el
campo Apellido, en el que cada registro ocupa un bloque. Y el comienzo se da mediante un
apuntador a dicha posición.

Comienzo 2 Comienzo 6 Comienzo 6

Posición Apellido Apuntador P D A P D A


1 Martos 7 1 Martos 7 1 Martos 7
2 Arniches 6 2 Arniches 2 Arniches
3 Cortés 1 3 Cortés 1 3 Cortés 8
4 Calvo 3 4 Calvo 3 4 Calvo 3
5 Borrell 4 5 Borrell 4 5 Borrell 4
6 Betancourt 5 6 Betancourt 5 6 Betancourt 5
7 Sevilla 0 7 Sevilla 0 7 Sevilla 0
8 8 8 Fernández 1
Operación 1ª Operación 2ª Operación 3ª

Reflejar en las tablas anteriores las siguientes operaciones:

10.1º Colocar los valores correctos de apuntador que permitan que el fichero esté ordenado
alfabéticamente por apellido. El valor de apuntador 0 significará el final del recorrido.

El encadenamiento de valores, a partir del valor de comienzo en la posición 2, se realiza como sigue:

El siguiente a ‘Arniches’, en orden alfabético es ‘Betancourt’, que está en la posición 6, luego el


apuntador de ‘Arniches’ contendrá el valor 6.

El siguiente a ‘Betancourt’ es ‘Borrell’, que está en la posición 5, luego su apuntador contendrá el valor 5.

El siguiente a ‘Borrell’ es ‘Calvo’, que está en la posición 4, luego su apuntador contendrá el valor 4.

El siguiente a ‘Calvo’ es ‘Cortés’, que está en la posición 3, luego su apuntador contendrá el valor 3.

El siguiente a ‘Cortés’ es ‘Martos’, que está en la posición 1, luego su apuntador contendrá el valor 1.

El siguiente a ‘Martos’ es ‘Sevilla’, que está en la posición 7, luego su apuntador contendrá el valor 7.

Como ‘Sevilla’ es el último del recorrido, su apuntador será 0, que es el valor que hemos indicado para
ello.

10.2º Eliminar el registro correspondiente a ‘Arniches’ en la Posición 2.

La eliminación de ‘Arniches’ supone cambiar los apuntadores que correspondan.


En este caso habrá que cambiar:

- 12 -
- el apuntador de Comienzo que pasará a contener el valor 6, correspondiente a ‘Betancourt’ que pasa
a ser el primer registro.

- el apuntador correspondiente a la posición 2 queda borrado. Esta es la indicación para saber que la
posición está libre.

El resto de apuntadores quedará igual ya que ‘Arniches’ era el primero de la serie.

10.3º Una vez hecha la operación anterior. Insertar el registro correspondiente a ‘Fernández’,
suponiendo que se ocupa el primer espacio disponible que nunca haya estado ocupado.

El registro correspondiente a ‘Fernández’ habrá que insertarlo en la posición 8, que es la primera que
nunca ha estado ocupada.

Para colocar a ‘Fernández’ en la secuencia correcta de recorrido habremos de hacer cambios en algunos
apuntadores.

Como ‘Fernández’ está entre ‘Cortés’ y ‘Martos’, habremos de cambiar los apuntadores de los dos
primeros registros, de manera que ‘Cortés’ apunte a ‘Fernández’ y este apunte a ‘Martos’.

Es decir, la posición 3 de ‘Cortés’ apuntará a la 8 de ‘Fernández’ y la de este apuntará a la 1 de ‘Martos’.

- 13 -

Вам также может понравиться