Tema6-2

Anuncio
Capítulo 6:
Organización de los datos.
Página 12.
2.2.4.- Organización secuencial indexada encadenada.
Una mejora de la estructura anterior es incluir punteros entre los registros, tal que
mantengan el orden lógico de los registros, organización secuencial indexada encadenada.
Al crear un archivo con esta organización su estructura es igual a la de un archivo secuencial
indexado, salvo que añade un campo en cada registro para albergar un puntero.
Para insertar un nuevo registro es necesario encontrar el que le sigue en la zona de
registros. Se escribe el nuevo registro en la zona de desbordamientos y se reescribe el
siguiente según el orden lógico, para incluir el puntero al registro recién grabado.
Figura 11.- Archivo con organización secuencial indexada encadenada.
La eliminación de un registro debe realizarse por marcas. Esto no implica en ningún caso la
realización de modificaciones en el índice, pero degrada al archivo. La consulta es semejante a
la realizada para el caso no encadenado. Esta organización reúne las ventajas de la
organización secuencial indexada y de la organización secuencial encadenada. Cuando el
número de registros borrados es grande o las cadenas de desbordamiento son largas el archivo
se degrada. esto es, su estructura deja de ser eficaz. Cuando se llega a este punto es necesario
reorganizar el archivo; esto es, volver a crearlo introduciendo los registros secuencialmente
según el valor de clave.
2.2.5.- Organización directa o aleatoria.
Un archivo con organización directa o aleatoria (“random”) es un archivo escrito sobre
un soporte de acceso directo para el cual existe una transformación conocida que genera la
dirección de cada registro en el archivo a partir de una llave o clave primaria. El nombre de
“aleatorio” se debe a que normalmente no existe ninguna vinculación aparente entre el orden
lógico de los registros y su orden físico. No resulta adecuado, en la mayoría de los casos,
realizar una consulta secuencial en un archivo aleatorio, ya que los registros no serían leídos
según el orden de la llave.
El problema fundamental de esta organización es elegir adecuadamente de la
transformación o método de direccionamiento que se ha de utilizar. En algunos casos
aparecen dos situaciones no deseadas:
 Existen direcciones que no se corresponden con ninguna llave y, por tanto, habrá zonas
de disco sin utilizar.
 Existen direcciones que corresponden a más de una llave.
En este caso se dice que las llaves son sinónimas para esa transformación.
Capítulo 6:
Organización de los datos.
Página 13.
Hay dos formas de resolver el problema de los sinónimos, siempre a costa de complicar la
estructura del archivo:
1ª. Cuando se asocia a una llave una dirección ya ocupada por un registro distinto (esto es,
por un sinónimo de esta llave ), se busca en el archivo hasta encontrar una posición
libre donde escribir el registro.
2ª. Se reserva una zona de desbordamientos donde se escribirán los registros que no se
pueden escribir en la posición que les corresponde según la transformación, a la que
denominaremos zona principal.
Si se utiliza el primer procedimiento, la búsqueda de una posición libre puede realizarse
secuencialmente a partir de la posición asignada, o aplicando a la dirección obtenida un
segundo método de direccionamiento. En cualquier caso, ambos procedimientos son lentos y
degradan considerablemente el archivo.
Si se utiliza zona de desbordamientos se puede gestionar ésta, bien secuencialmente o
bien encadenada a la zona principal. Esto último presenta el inconveniente de tener que
reservar un puntero en cada registro, pero permite un acceso más rápido a los sinónimos, lo
que en general será más importante que el espacio.
Hay tres métodos básicos de direccionamiento para los archivos de organización directa:

Directo. Se utiliza como dirección la propia llave.

Asociado. A cada llave se le asocia una dirección mediante una tabla.

Calculado o por transformación de llave. La dirección se obtiene realizando
operaciones y transformaciones con la llave.
A continuación se describen brevemente estos tres tipos de direccionamientos para
archivos de organización directa.
 Direccionamiento directo.
Sólo es factible cuando la llave es numérica y su rango de valores no es mayor que el rango
de direcciones en el archivo. Se utiliza como dirección la propia llave.
En algunos casos pueden quedar lagunas de direcciones sin utilizar, en lugares conocidos
de antemano. En este caso se pueden ocupar dichas direcciones desplazando las direcciones
superiores. Un archivo aleatorio con direccionamiento directo está siempre ordenado.
Por ejemplo, el archivo de habitaciones de un hotel puede organizarse en forma aleatoria
con direccionamiento directo, sin más que hacer la dirección igual al número de habitación.
 Direccionamiento asociado.
El direccionamiento asociado se puede utilizar para cualquier tipo de llave. Si se utiliza
este método debe construirse una tabla en la que figurarán todas las llaves y la dirección
donde se encuentra el registro correspondiente.
Al añadir nuevos registros las llaves se colocan al final de la tabla. Esta se encontrará
normalmente desordenada. Por tanto, habrá que localizar las llaves en ella por lectura
secuencial, lo que ralentiza el acceso, al menos que la tabla esté residiendo en la memoria
principal, se indexe o se ordene y se busque en ella la llave con un procedimiento rápido, tal
como el de “búsqueda dicotómica”.
 Direccionamiento calculado (“hashing”).
En el direccionamiento calculado la dirección de cada registro se obtiene, o evaluando
una expresión que utiliza como dato la llave, o bien realizando una transformación sobre
dicha llave. Se utiliza cuando la llave no es numérica o, siendo numérica, cuando puede tomar
valores dentro de un conjunto demasiado grande par usarla directamente como dirección.
Cualquiera sea la transformación usada es normal que aparezcan sinónimos, dependiendo la
frecuencia de aparición de los mismos de el algoritmo de transformación usado.
Capítulo 6:
Organización de los datos.
Página 14.
Si la llave no es numérica se usará una conversión previa para obtener un número a partir
de ella. Normalmente se usa el equivalente decimal al propio código binario del carácter. Así,
por ejemplo, en código ASCII al carácter A le corresponde el 65.
Existen gran cantidad de métodos para el cálculo de dirección, algunos de los más
relevantes son:

División. La dirección es el resto de dividir la llave por una constante. Habitualmente
esta constante es el mayor de los números primos menores que el número de posiciones
que tenga el archivo.

Extracción. Consiste en utilizar como dirección un grupo de cifras extraídas de la llave,
dichas cifras pueden ser contiguas o no.

Elevación al cuadrado. Se usa cuando la representación numérica de la llave no es muy
larga. Consiste en elevar ésta al cuadrado y tomar los dígitos centrales. Por ejemplo, si
hay 100 registros en el archivo y la llave 3489, se tendrá que:
2
- Se calcula 3.489 , que es 12 173 121.
- Se toma como dirección las tres cifras centrales 3.

Plegamiento. Se utiliza para llaves muy largas. Se descompone la llave en trozos de
cifras contiguas del mismo tamaño y se suman éstos. Sobre el número obtenido se pude
aplicar otro método si es necesario.
2.2.5.1.- Operaciones básicas sobre un archivo con organización directa.
Con un archivo con organización directa se pueden realizar todas las operaciones descritas.
A diferencia de otras organizaciones, es necesario realizar un proceso especial de creación del
archivo. Esta implica la elección de uno de los procedimientos de direccionamiento descritos
en los epígrafes precedentes y de un método de gestión de sinónimos, así como reservar
espacio en disco para la zona principal.

Consulta. La consulta se realiza por llave. Para leer un registro debe aplicarse a la llave
el algoritmo de transformación y posteriormente leer el registro en la dirección
resultante. Si el registro con la llave buscada no se encuentra allí se procederá, en
función de cómo se haya resuelto gestionar los sinónimos. La consulta secuencial no
siempre es factible.

Borrado. Siempre se realiza un borrado lógico, pudiéndose reutilizar el espacio del
registro eliminado.

Modificación e inserción. Siempre se puede modificar o insertar un nuevo registro,
realizando la transformación de la llave correspondiente.
La organización directa es útil para archivos donde los accesos deben realizarse por llave,
accediéndose siempre a registros concretos. Si la información se va a procesar en conjunto,
con frecuencia puede ser más rentable una organización secuencial indexada.
3.- BASES DE DATOS: CONCEPTOS Y TIPOS.
En una aplicación convencional con archivos, éstos se diseñan de acuerdo con los
programas. Es decir, una vez planteado el problema, se decide si debe haber archivos, cuántos
deben ser, qué organización tendrán, que información contendrá cada uno, que programas
actuaran sobre ellos y cómo lo harán. Esto tiene la ventaja, en principio, de que los programas
son bastante eficientes, ya que la estructura de un archivo está pensada “para el programa” que
lo va a utilizar.
Capítulo 6:
Organización de los datos.
Página 15.
Sin embargo, conlleva graves inconvenientes. Por un lado, los programas que se realizan
con posterioridad a la creación de un archivo pueden ser muy lentos, al tener que usar una
organización pensada y creada “ la medida” de otro programa previo que realiza procesos
diferentes. Por otra parte, si se toma la decisión de crear nuevos archivos para los programas
que se han de realizar, se puede entrar en un proceso de degeneración de la aplicación, ya que:
 gran parte de la información aparecerá duplicada en más de un archivo (redundancias)
ocupando la aplicación más espacio del necesario;
 al existir la misma información en varios archivos, los procesos de actualización se
complican;
 se corre el riesgo de tener datos incongruentes entre los distintos archivos. Por ejemplo,
tener dos domicilios diferentes de un mismo individuo en dos archivos distintos (por
estar uno actualizado y el otro no ).
En una aplicación convencional con archivos aparecen, pues, los siguientes problemas:
Dificultad de mantenimiento. Si hay archivos con información parcialmente duplicada,
realizar las actualizaciones necesarias es un problema complejo y costoso. Normalmente, es
necesario actualizar varios archivos con diferentes organizaciones. Si la actualización no se
realiza correctamente se tendrán informaciones incoherentes.
Redundancia. Se dice que hay redundancia cuando hay datos que no aportan información.
Es decir, su valor se puede deducir del de otros datos.
Rigidez de búsqueda. El archivo se concibe para acceder a los datos de un determinado
modo. Sin embargo, en la mayoría de los casos es necesario (o al menos deseable) combinar
acceso secuencial y directo por varias claves.
Dependencia con los programas. En un archivo las relaciones existentes entre campos y
registros no están plasmadas en modo alguno. Es el programa, que trabaja con el archivo, el
que determina en cada caso dichas relaciones. El programa recibe cada vez que lee una cadena
de caracteres. Por tanto, la información de dónde comienza y dónde acaba cada campo, su
tipo, etc., está controlada y es inherente al programa. Esto implica que cualquier modificación
de la estructura de un archivo obliga a modificar todos los programas que lo usen. Esto ocurre
aun en el caso de que la alteración sea ajena al programa. Así, si se aumenta la longitud de un
campo habrá que modificar incluso los programas que no lo usan.
Confidencialidad y seguridad. Uno de los mayores problemas de cualquier sistema de
información es mantener la reserva necesaria sobre los datos que contiene. Esto es, por un
lado, impedir la consulta de determinados usuarios a determinados datos (confidencialidad),
y por otro, impedir modificaciones provocadas por usuarios no autorizados (seguridad). Si se
está trabajando con archivos el control deberá realizarlo el propio programa. En cualquier caso
no se podrá impedir que alguien construya un programa para modificar o ver el contenido del
archivo, si el sistema operativo le permite el acceso.
3.1.- Concepto de base de datos.
Las bases de datos surgen como alternativa a los sistemas de archivos, intentando eliminar
o al menos reducir sus inconvenientes. Podemos definir una base de datos así:
Una base de datos es un sistema formado por un conjunto de datos y un paquete software
para gestión de dicho conjunto de datos de tal modo que: se controla el almacenamiento de
datos redundantes, los datos resultan independientes de los programas que los usan, se
almacenan las relaciones entre los datos junto con éstos y se puede acceder a los datos de
diversas formas.
Capítulo 6:
Organización de los datos.
Página 16.
En una base de datos se almacenan las relaciones entre datos junto a los datos. Esto, y el
utilizar como unidad de almacenamiento el campo además del registro, es el fundamento de la
independencia con los programas de aplicación.
En cualquier base de datos se puede tolerar un cierto nivel de redundancia. Se utilizan las
redundancias, bien para hacer más rápido el acceso, o bien para asegurar la integridad de los
datos. En cualquier caso, la gestión de la información redundante es interna a la base de datos.
Normalmente la definición del concepto de base de datos se realiza en forma de
requerimientos u objetivos que ésta debe cumplir. Aunque la definición anterior es
suficientemente precisa vamos a exponer algunos requisitos que debe cumplir un buen sistema
de base de datos.










Acceso múltiple. Diversos usuarios pueden acceder a la base de datos, sin que se
produzcan conflictos, ni visiones incoherentes.
Utilización múltiple. Cada usuario podrá tener una imagen o visión particular de la
estructura de la base de datos.
Flexibilidad. Se podrán usar distintos métodos de acceso, con tiempos de respuesta
razonablemente pequeños.
Confidencialidad y seguridad. Se controlará el acceso a los datos (a nivel de campo),
impidiéndoselo a los usuarios no autorizados. Uno concreto podrá acceder a unos datos y a
otros datos no.
Protección contra fallos. Deben existir mecanismos concretos de recuperación en caso de
fallo de la computadora.
Independencia física. Se puede cambiar el soporte físico de la base de datos sin que esto
repercuta en la base de datos ni en los programas que la utilizan.
Independencia lógica. Se pueden modificar los datos contenidos en la base, las relaciones
existentes entre ellos o incluir nuevos datos, sin afectar a los programas que la usan.
Redundancia controlada. Los datos se almacenan una sola vez.
Interfaz de alto nivel. Existe una forma sencilla y cómoda de utilizar la base al menos
desde un lenguaje de programación de alto nivel.
Interrogación directa (“query”). Existe una utilidad que permite el acceso a los datos de
forma interactiva o conversacional.
3.2.- Estructura general de una base de datos.
En una base de datos se almacena información de una serie de objetos o elementos. Estos
objetos reciben el nombre de entidades, siendo una entidad cualquier ente sobre el que se
almacena información.
Así, en una base de datos académicos podrá existir información de las siguientes entidades:
alumno, profesor, asignatura, centro, plan de estudios, curso, etc. En una base de datos
comerciales de una empresa podrán aparecer las siguientes entidades: cliente, producto,
vendedor, etc.
De cada entidad se almacenan una serie de datos que se denominan atributos de la entidad.
Puede ser atributo de una entidad cualquier característica o propiedad de ésta. Así por
ejemplo, son atributos de la entidad alumno: DNI, apellidos y nombre, sexo, fecha de
nacimiento, nacionalidad, etc.
Capítulo 6:
Organización de los datos.
Página 17.
Las entidades y los atributos son conceptos abstractos. En una base de datos la información
de cada entidad se almacena en registros, y cada atributo en campos de dicho registro, de
forma análoga al almacenamiento en archivos. Sin embargo, cada entidad necesita registros
con una estructura específica, mientras que en un archivo todos los registros tienen la misma
estructura. Por tanto, en una base de datos hay diferentes tipos de registros, uno por cada
entidad. Normalmente se reserva el nombre "registro" para especificar un "tipo de registro",
utilizándose otros nombres para especificar cada una de las apariciones de ese registro en la
base de datos, tales como: elemento, valor actual de registro, u ocurrencia de registro.
Normalmente, no es necesario conocer los valores de todos los atributos de una entidad
para determinar si dos elementos son iguales. Por lo general, es suficiente con conocer el valor
de uno o varios atributos para identificar un elemento. Pues bien, diremos que un conjunto de
atributos de una entidad es un identificador o clave primaria de dicha entidad si el valor de
dichos atributos determina de forma unívoca cada uno de los elementos de dicha entidad, y no
existe ningún subconjunto de él que sea identificador de la entidad.
Por ejemplo, en la entidad alumno el atributo DNI es un identificador. También es un
identificador de esta entidad el conjunto de los atributos: apellidos y nombre, fecha de
nacimiento y lugar de nacimiento.
Frecuentemente, es necesario buscar una ocurrencia de un registro en una base de datos
conociendo el valor de uno o varios campos. Para que esta operación sea rápida, estos campos
deben estar definidos en la base de datos como llave de búsqueda de dicho registro. En
general, podemos decir que una llave es un campo o conjunto de campos, cuyos valores
permiten localizar de forma rápida ocurrencias de un registro. La llave puede corresponderse
con un identificador de la entidad. Si esto no ocurre podrá haber varias ocurrencias de registro
con el mismo valor de llave, entonces se dice que la llave admite duplicados.
En una base de datos se almacenan además de las entidades, las relaciones existentes entre
ellas. Así, por ejemplo, en la base de datos académicos antes citada hay relaciones entre las
siguientes entidades: cursos y alumnos, alumnos y profesores, profesores y asignaturas. Estas
relaciones se almacenan con punteros que inserta automáticamente el sistema de gestión de la
base de datos; es decir, los punteros son "transparentes" al usuario.
Las relaciones entre entidades pueden ser simples o complejas (figura 12). Una relación es
simple cuando biunívova, es decir, a cada elemento de una entidad le corresponde un único
elemento de la otra. Es simple la relación existente entre alumno y expediente o profesor y
horario. Cualquier relación que no sea biunívoca se dice que es compleja. Una relación es
compleja cuando un elemento de una entidad está relacionado con varios elementos de la otra
(relación de uno a muchos), o bien, cuando varios elementos de una entidad están
relacionados con varios elementos de la otra (relación muchos a muchos).
Por ejemplo, es una relación de uno a muchos la existente entre un alumno y las
asignaturas de las que está matriculado. Y es una relación muchos a muchos la relación
existente entre alumno y profesor. Al representar gráficamente la estructura de una base de
datos. los registros se simbolizan mediante cajas y las relaciones mediante flechas.
Capítulo 6:
Organización de los datos.
Página 18.
Figura 12.- Representación de los distintos tipos de relaciones.
No se deben confundir las relaciones con simples referencias. Decimos que existe una
referencia entre dos registros cuando un campo de uno de ellos es llave en el otro. Esto
permite localizar uno de ellos a partir del otro. Sin embargo, no se trata de una relación. La
relación está ligada a la estructura de la base de datos, no al valor de los campos almacenados.
Al definir la base de datos se deben especificar cada uno de los registros que la integran,
indicando los campos que los componen y las relaciones que los ligan. Tal conjunto de
especificaciones recibe el nombre de esquema de la base de datos. El esquema de una base
de datos es pues la definición de su estructura lógica. El esquema suele representarse en
forma gráfica o por simple enumeración.
Para que un programa concreto pueda acceder a una base de datos es necesario especificar
la estructura lógica de la parte de base de datos que éste va a usar. La descripción de la
estructura lógica de una parte de la base de datos, que va a ser utilizada por uno o más
programas, recibe el nombre de vista o subesquema, y estará siempre contenido en el
esquema. No obstante, los nombres de campos, registros y relaciones pueden ser diferentes en
el esquema y subesquema. El subesquema consigue aislar los programas de la estructura
lógica de la base de datos. Por otra parte, permite que varios usuarios utilicen distintas
estructuras de una misma base de datos. El subesquema permite además, limitar el acceso a
distintas partes de la base de datos, para realizar tan solo determinadas acciones. Y para cada
programa que acceda a la base de datos será necesario definir un subesquema.
3.3.- Tipos de bases de datos.
Las bases de datos se clasifican tradicionalmente en tres grupos: jerárquicas, en red y
relacionales. Las dos primeras se diferencian en los tipos de relaciones que permiten, y puede
decirse que la estructura jerárquica es un caso particular de la estructura en red. Cualquier
esquema que se cree para una base de datos jerárquica se puede utilizar para una base de datos
en red. Las bases de datos relacionales son conceptualmente distintas, y en ellas las relaciones
se almacenan y manipulan de forma completamente distinta.
3.3.1.- Bases de datos jerárquicas.
En una base de datos jerárquica se establece una relación jerárquica entre los datos en
forma de árbol, y no es posible definir relaciones muchos a muchos. Una base de datos
jerárquica tiene una estructura semejante a la de la figura 13.
Figura 13.- Esquema de una base de datos jerárquica.
Para poder dar una caracterización más precisa de este tipo de base de datos se introduce el
concepto de conjunto. Un conjunto es una estructura formada por dos registros ligados por
una relación uno a muchos. Los registros que forman el conjunto reciben, en éste, los
nombres de propietario y miembro, siendo la relación de un propietario a muchos miembros.
Una base de datos es jerárquica cuando no permite definir relaciones muchos a muchos y
no acepta estructuras en las que un mismo registro sea miembro de dos conjuntos distintos.
Capítulo 6:
Organización de los datos.
Página 19.
3..3.2.- Bases de datos en red.
Se trata de un modelo similar al jerárquico, en donde los datos se organizan en grafos,
estructuras similares a los arboles que permiten a un nodo tener más de un padre.
En una base de datos en red no hay ninguna restricción ni en el tipo de relaciones que se
pueden usar, ni en los registros que pueden intervenir en ellas. No obstante, se distinguen
entre bases de datos en red simple y bases de datos en red compleja, según permitan o no
utilizar relaciones muchos a muchos.
3.3.3.- Bases de datos relacionales.
A principios de la década de los setenta, E. F. Codd planteó una alternativa a las bases de
datos jerárquicas y en red vistas hasta aquí. Pretendía obtener más flexibilidad que con las
bases anteriores y más rigor en el tratamiento de los datos.
Una base de datos relacional está formada por tablas. Una tabla es una estructura
bidimensional formada por una sucesión de registros del mismo tipo.
Si se imponen ciertas condiciones a las tablas, se pueden tratar como relaciones
matemáticas. De ahí el nombre de este tipo de bases de datos y el hecho de que a las tablas de
una base de datos relacional se les denomine tablas relaciones. Las tablas deben cumplir las
siguientes condiciones:

Todos los registros de una tabla son del mismo tipo. Para almacenar registros de tipos
distintos se usan tablas distintas.

En ninguna tabla aparecen campos repetidos.

En ninguna tabla existen registros duplicados.

El orden de los registros en la tabla es indiferente. En cada momento se pueden recuperar
los registros en un orden particular.

En cada tabla hay una llave, formada por uno o varios campos.
4.- SISTEMA DE GESTIÓN DE LA BASE DE DATOS (SGBD).
Se denomina sistema de gestión de la base de datos ("Data Base Management System") al
conjunto de software destinado a la creación, control y manipulación de la información de una
base de datos. Concretamente, un SGBD debe permitir la realización de las siguientes tareas:

Acceso a los datos desde algún lenguaje de alto nivel.

Interrogación (o recuperación de la información) directa en modo conversacional.

Definición del esquema de la base de datos y de los distintos subesquemas.

Organización física de la base de datos y recuperación tras fallos del sistema.


Las tres primeras funciones se realizan mediante dos lenguajes específicos:
.Lenguaje de manipulación de datos (DML, "Data Manipulation Language»). Se utiliza
para el acceso a la base de datos desde lenguajes de alto nivelo en modo conversacional.
.Lenguaje de descripción de datos (DDL, "Data Description Language» ). Es usado para
la descripción del esquema y de los subesquemas.
El sistema de gestión de la base de datos actúa como intermediario entre los programas
de aplicación y el sistema operativo, lo que permite que los programas sean independientes de
la estructura física de los datos.
4.1.- Sistemas de gestión de bases de datos relacionales.
Tanto el DDL como el DML de un sistema de base de datos relacional, son diferentes a los
de las bases de datos jerárquicas y en red descritos en los apartados anteriores. Se describirán
brevemente aquí ambos lenguajes para bases de datos relacionales.
Capítulo 6:
Organización de los datos.
Página 20.
Para definir una base de datos relacional se deben especificar cada una de las tablas que la
constituyen. La descripción de una tabla consta de:

Nombre de la tabla.

Descripción de los campos de que consta cada registro de la tabla. La descripción de los
campos es semejante a la realizada para sistemas en red.

Nombre de los campos que se usan como llave.
Las sentencias del DML de una base de datos relacional realizan operaciones con las tablas.
Algunas de estas operaciones son: proyectar, seleccionar y componer o unir.
La proyección de una tabla es otra tabla que contiene los mismos registros que la tabla de
partida, y sólo determinadas columnas. Al proyectar una tabla se especifican las columnas que
se desean obtener.
Una selección en una tabla produce como resultado otra tabla que contiene los registros
que cumplen una determinada condición. La condición se expresa en función de los valores de
los campos. La tabla creada al seleccionar contiene todas las columnas de la tabla original.
La composición o unión es una operación que se realiza con dos tablas, para producir una
nueva tabla. La unión se realiza en base al valor de algún campo. Para cada par de registros de
las tablas a componer, que tengan el mismo valor en dicho campo, se añade un registro en la
tabla de salida. La tabla de salida contiene los campos que se encuentran en alguna de las
tablas de entrada.
.La manipulación de una base de datos relacional es muy distinta a la de estructura en red.
En una base de datos en red el usuario se mueve por la estructura, mientras que en una base de
datos relacional, realiza operaciones con tablas.
Descargar