Beruflich Dokumente
Kultur Dokumente
MÉXICO
Licenciatura En Informática
Bases de
Datos
Autor: L.I. María de Lourdes Isabel
Ponce Vásquez
Objetivos Específicos
Describir los retos y tendencias actuales de los DBMS
Comprender el paradigma orientado a objetos
Conocer los orígenes de las bases de datos orientadas a objetos
Definir y describir las características del modelo orientado a objetos
Describir y comprender el estándar ODMG
4.1. Introducción
En la unidad anterior se revisó el modelo relacional para almacenar los datos en una base de datos,
en esta unidad se revisará el modelo orientado a objetos y el modelo objeto relacional que ha ganado
terreno en el entorno de bases de datos.
Los OODBMS eliminan las barreras entre los datos y procesos encapsulando datos y las
operaciones sobre ellos. Esta tendencia ya aparecía en versiones de productos relacionales que
permiten desde los 90s, almacenar disparadores (triggers), reglas (restricciones) y procedimientos
almacenados.
Los DBMS actuales son monolíticos; ofrecen todo tipo de servicios y funcionalidades en un
solo paquete, sin considerar las necesidades específicas de los usuarios, esto provoca un
alto costo y pérdida de eficiencia.
A la fecha siguen existiendo más datos en hojas de cálculo que en DBMSs por la facilidad y
simpleza que estos sistemas ofrecen en comparación con los DBMSs.
Se cree que cerca del 50% de los datos de producción se encuentran todavía en sistemas
heredados (sin DBMSs) sin poder llevar toda la información a un DBMS.
Las BD son el núcleo de los SI y por tanto se ven influenciadas por los cambios que sufren las
empresas, por lo que deben ofrecer a las organizaciones flexibilidad, tiempos bajos de respuesta,
robustez, extensibilidad, gestión de la incertidumbre, etc. La integración de datos estructurados y no
estructurados es muy importante y los DBMS deben ofrecer este servicio. La globalización y
competitividad internacional influyen en la tecnología, la cual debe proporcionar conectividad entre
las BD distribuidas geográficamente, siendo capaces de integrar rápidamente BD separadas
(protocolos, distribución de datos, federaciones, etc.) y ofrecer disponibilidad 100% (las 24 horas del
día durante los 365 días del año). Los nuevos productos de BD deben ayudar al usuario a la
localización de los datos distribuidos y a la conexión de las aplicaciones en las PC con las BD locales
y remotas.
Otras tecnologías que también están influyendo a los cambios son: técnicas de
compresión/descompresión, digitalizadores de audio y video, medios de almacenamiento óptico,
discos magnéticos, medios de almacenamiento jerárquico, etc.
Las computadoras asistentes personales, PDA (Personal Digital Assistant), palmtops, laptops, etc.,
permiten acceder a la información en cualquier sitio y momento. Eso plantea problemas de
conectividad y afecta la distribución de las BD.
El modelo C/S con la introducción de la arquitectura de dos capas se ha transformado con los
monitores Middleware y TP (Procesamiento de Transacciones – Transaction Processing).
Las redes de alta velocidad (Ethernet rápida, AnyLan, FDDI – Interfaz de Datos Distribuidos en Fibra,
DQDB – Bus Dual de Colas Distribuidas-, Frame Relay, etc.) han cambiado también la capa de
comunicación donde se sitúan las BD.
Recientemente, la aparición de la tecnología GRID, que pretende conectar computadoras con el fin
de proporcionar una potencia de cálculo mayor y usar los ciclos de procesador desperdiciados,
también plantea interesantes desafíos de metadatos, seguridad, interoperabilidad, rendimiento, etc. a
las BD.
Las BDs han evolucionado implementando BD paralelas con memoria compartidas, disco compartido
o nada compartido, explotando tanto el paralelismo en las inter-consultas, que realizan diversas
consultas en varios procesadores independientemente; como en la intra-consulta, que realizan
fragmentos de una misma consulta en diferentes procesadores. Y en estos últimos años han
aparecido BD que explotan las ventajas del gris.
En aplicaciones de respuesta crítica el rendimiento se mejora fijando prioridad para las transacciones
en tiempo real.
También para mejorar el rendimiento, las BD en memoria principal cambian algunos conceptos de
estructuras de índices, agrupaciones, bloqueos, transacciones, etc.
4.1.1.2. Distribución/Integración
La distribución de BD se ha ampliado a BD Móviles que son sistemas distribuidos en los que los
enlaces entre los nodos cambian dinámicamente.
Se ha ampliado la integración en Internet. La Web agrega nuevos componentes incluyendo las IGUs,
un nuevo modelo C/S (protocolo http) y un mecanismo de hiperenlace entre BD.
4.1.1.3. Funcionalidad/Inteligencia
En este punto, cada vez más, la semántica y funcionalidad se ha migrado a los DD, almacenándose
junto con los datos, de modo que se libere a las aplicaciones de comprobar restricciones de
integridad y duplicándose en todos los programas, y convirtiéndose en BD semánticas. A principios
de los 90 aparecieron las bases de datos activas, donde la descripción de los datos y las
restricciones, se almacenan en la BD y pueden ejecutar aplicaciones sin la intervención del usuario
soportando disparadores, reglas, alertas, demonios, etc.
Las OODB y ORDD permiten la definición y gestión de los objetos, donde los objetos pueden ser de
cualquier tipo: imágenes, audio, video, etc. (BD multimedia) o datos geográficos (BD espaciales).
La Orientación a Objetos permite una representación más directa del mundo real, reduciendo
fuertemente la transformación radical normal desde los requerimientos del sistema, definidos en
términos del usuario, a las especificaciones del sistema, definidas en términos de la computadora. En
vez de tratar de modelar un problema en algo familiar a la computadora se trata de acercar la
computadora al problema, es decir, modelar el problema mediante entidades independientes que
Mientras que otros señalan siete u ocho de los siguientes aspectos como básicos a considerar para
una verdadera orientación al objeto:
Modularidad
Abstracción
Objetos
Clases
Encapsulamiento
Herencia
Polimorfismo y enlace dinámico
Persistencia
4.1.1.5. Modularidad
La modularidad consiste en dividir un programa en partes llamadas módulos, los cuales pueden
trabajarse por separado. En términos de programación, los módulos pueden compilarse por
separado y la división no depende de cierto número de líneas sino es una división en términos de
integrar en un módulo un conjunto de procedimientos relacionados entre sí, junto con los datos que
son manipulados por tales procedimientos.
Por ejemplo, un automóvil está constituido por un conjunto de módulos tales como un sistema
eléctrico, uno mecánico y uno de frenado. Cada módulo se trabaja por separado y el especialista
sólo conoce la forma en que se relaciona el módulo con los otros, pero no tiene por qué saber los
detalles de funcionamiento de otros módulos o sistema.
Estos conceptos no son exclusivos de la OO, pues se han desarrollado desde la programación
estructurada, sólo que en ésta se pueden omitir (desde luego bajo responsabilidad del programador),
pues hacerlo, lleva a tener grandes programas en un solo archivo y sin estructura alguna, lo cual
causa grandes pérdidas de tiempo al desear modificar tal programa.
4.1.1.6. Abstracción
La abstracción es esencial para construir cualquier sistema, sea o no orientado a objetos y debe
enfocarse más en qué es un objeto y qué hace, antes de pensar en la implementación.
Por ejemplo, un automóvil puede abstraerse como un objeto que sirve para desplazarse a mayor
velocidad, sin importar cómo lo haga.
4.1.1.7. Objetos
El estado de un objeto abarca todas las propiedades o características distintivas del mismo y los
valores de cada una de estas propiedades. En términos de programación, puede decirse que las
propiedades son las variables que sirven para describir tal objeto.
Identidad (OID – object identifier) es la propiedad de un objeto que lo distingue de todos los demás.
Un objeto conserva su identidad aún cuando algunos o todos los valores de los atributos o las
definiciones de los métodos cambien con el tiempo, este concepto de identidad no se aplica a las
tuplas de una BD relacional, en estos sistemas, las tuplas se distinguen por los valores que
contienen.
La identidad de un objeto es una noción más fuere que la que se encuentra normalmente en los
lenguajes de programación o en los modelos de datos no OO. Algunas formas de identidad son:
Valor. Se usa un valor de dato por identidad. Esta es la forma usada en los sistemas
relacionales.
Nombre. Se usa un nombre dado por el usuario. Esta es la forma usada en los lenguajes de
programación para identificar a cada variable dentro de un programa.
Por ejemplo, un automóvil puede tener diversos estados, puede estar estacionado o en circulación.
Un comportamiento asociado con el auto pueden incluir encenderlo, lo cual modifica su estado, y
generalmente tiene una identidad marca, modelo, número de serie del motor y placa.
4.1.1.8. Clases
Una clase es un módulo y un tipo de datos abstracto que define un grupo de objetos que comparten
características comunes.
Por ejemplo, se puede hablar de autos como una clase y mencionar propiedades compartidas tales
como los asientos o parabrisas, pero también se pueden emplear los valores de los atributos para
distinguir a un miembro de la clase de otro (un auto de carreras corre a una mayor velocidad). Así,
una clase describe un conjunto de objetos que comparten una estructura común y tienen
comportamientos comunes, pero los valores de los atributos permiten distinguir a unos de los otros.
4.1.1.9. Encapsulamiento
Con esto se trata de lograr que al tener algún cambio en la implementación de un objeto no se
tengan que modificar los programas que utilizan tal objeto.
Siguiendo con el ejemplo del automóvil, se sabe que existen diversos mecanismos para que funcione
éste, en particular se tiene el sistema de frenado que todo mundo sabe que sirve para detener el
auto al pisar el pedal de freno, pero sólo el mecánico sabe los detalles de la implementación. Por otro
lado, si en algún momento se cambia, para el conductor es transparente.
4.1.1.10. Interrelaciones
La herencia que es la una relación entre clases donde las características y el comportamiento
general de una superclase puede compartirse con sus subclases, permite que una clase sea definida
como una extensión o restricción de otra y es la contribución más importante de la POO, pues
mediante este mecanismo es posible lograr la principal meta de la OO que es la reutilización de
código.
La herencia permite definir una jerarquía de clases. En tal jerarquía, algunas clases son
subordinadas a otras llamadas subclases.
Una subclase define el comportamiento de un conjunto de objetos que heredan algunas de las
características de la clase padre, pero adquieren características especiales no compartidas por el
padre, en este sentido se dice que la subclase es una especialización de la clase padre.
La herencia simple permite heredar sólo de una clase padre. En estos casos, se implementan las
llamadas interfaces que permiten simular la herencia múltiple.
Otro tipo de interrelación muy importante en este modelo es la agregación, que permite construir
objetos complejos o compuestos a partir de otros, correspondiendo a la noción “parte-de” ó “tiene
un”. Por ejemplo un auto tiene un motor.
4.1.1.11. Polimorfismo
El polimorfismo es la capacidad de tener métodos con el mismo nombre pero con una
implementación diferente o que un método sea aplicable a diferentes tipos de argumento.
Por ejemplo, al tratar de frenar un auto siempre se debe oprimir el pedal del freno y el vehículo se
detendrá sin importar si los frenos son de tambor o de disco.
Una implementación específica de un comportamiento para una cierta clase se denomina método.
En un sistema polimórfico, un comportamiento puede tener más de un método que lo implemente.
Por ejemplo, existirá un método frenar cuando se trata de frenos de disco y otro cuando son de
tambor pero el método sigue siendo frenar.
Sobrecarga. Se utiliza el mismo nombre para diferentes servicios, que se distinguen por la
cantidad y tipos de parámetros, éstos no requieren herencia.
Sobrescritura. Cuando una subclase redefine un servicio manteniendo el mismo nombre.
4.1.4. Persistencia
La última propiedad asociada con sistemas OO es la persistencia, que es la capacidad del nombre,
estado y comportamiento de un objeto para trascender el espacio o el tiempo. En otras palabras, el
nombre, estado y comportamiento de un objeto se pueden conservar aún cuando el objeto es
transformado o destruido.
Por ejemplo, se puede desear guardar información del mantenimiento de un auto, para poder
comparar los ajustes y modificaciones que se le han realizado. En este caso, el objeto persiste aun
cuando sus atributos se transformen.
4.2.1. Antecedentes
La historia de las BD se extiende desde mediados de los 60s y se ha caracterizado por su
excepcional productividad e impresionante impacto económico. A continuación se muestra un
resumen de las últimas décadas de evolución.
Tras los complejos sistemas de archivos de las primeras etapas de la informática, en las décadas 60
y 70 nació la primera generación de productos de BD. Los primeros DBMS que se basaron en los
modelos jerárquicos y en red, proporcionaban una organización lógica de los datos en árboles y
grafos. Si bien eran sistemas bastante eficientes, este tipo de productos usaba lenguajes
procedimentales, no poseían la suficiente independencia físico/lógica y su flexibilidad era muy
limitada. Sin embargo, lograron varios avances comparados con los sistemas de archivos.
La incorporación a los DBMS de facilidades de comunicación de los datos con IMS de IBM, dio lugar
al primer sistema BD/DC (Data Base/Data Communication) a gran escala, en el que muchos usuarios
accedían a la BD a través de una red de comunicación. Desde entonces, los DBMS comerciales
ofrecen acceso a BDs en red, siendo esta la forma habitual de uso de BD.
Bachean fue pionero en el desarrollo de los sistemas de BD en red. En su artículo “El Programador
como Navegador”, describe el proceso de navegar a través de una BD, en el que el programador
tiene que seguir un camino explícito, registro a registro, en la búsqueda de un conjunto de datos. En
sus especificaciones de 1978, Codasyl propuso un Lenguaje de Definición de Datos (DDL) en tres
niveles (Schema DDL, Subesquema DDL e Internal DDL) y una normativa para poder manipular los
datos en el DML de tipo procedimental.
A finales de los 70 y durante los 80s, los trabajos se centraron en la optimización de las consultas,
lenguajes de alto nivel, teoría de la normalización, organizaciones físicas para el almacenamiento de
las relaciones, algoritmos para la gestión de memorias intermedias (buffers), técnicas de indexación
(variaciones de los árboles B), sistemas distribuidos, dd, gestión de transacciones, etc. Estas
investigaciones tuvieron como consecuencia un aumento de la eficiencia y la seguridad de los
entornos transaccionales en línea (OLTP); tema fundamental en la 2ª generación de BD.
En los 80s se estandarizó SQL, con la mayoría de los productos ofreciendo una interfaz SQL, aún los
no relacionales.
En cuanto a los modelos de datos, el modelo relacional fue el que marco las líneas de investigación
en las décadas de los 70 y 80, siendo soportado por la mayoría de los productos actuales. En los 90
surgieron otros DBMS basados principalmente en modelos de objetos. En los últimos años, con el
auge del lenguaje XML, los DBMS están soportando la gestión de este tipo de información con
modelos XML puros o implantándolos como una capa sobre el modelo relacional.
Pueden citarse tres factores clave en la evolución de las BD: los fundamentos teóricos, los productos
y las aplicaciones prácticas. Estos factores han estado siempre presentes a lo largo de la historia de
las BDs, pero el equilibrio entre ellos ha cambiado. Las BDs empezaron en los 60 como un producto
tecnológico demandado por las necesidades de los usuarios, y pasaron a convertirse durante los 70
y 80s en una gran industria y un mercado importante. Aunque las necesidades de los usuarios han
influido en esta evolución, fue hasta los 90 que la tecnología ha sido guiada por las demandas de los
usuarios.
En los últimos años la tecnología de BD ha obtenido grandes avances, temas que parecían al
principio exclusivos de laboratorios y centros de investigación, han aparecido en las últimas
versiones comerciales: multimedia, orientación a objetos, seguridad, temporalidad (incorporan el
tiempo), paralelismo, BD multidimensionales, semiestructuradas, gril, etc.
Esta generación se caracteriza por “proporcionar capacidades de gestión de datos igual que las
anteriores, permitiendo que grandes cantidades de datos persistentes sean compartidos por muchos
usuarios. También proporcionan gestión de objetos, permitiendo tipos de datos mucho más
complejos, objetos multimedia, datos derivados, encapsulamiento de la semántica de los datos, así
como otras nuevas capacidades. Algunos proporcionan incluso gestión de conocimiento,
soportando un gran número de reglas complejas para inferencia automática de información y
también para mantener las restricciones de integridad entre datos”.
4.2.5. Definición
Existen dos enfoques principales de implementación de BD de objetos. El primero, extiende los
RDBMS para que soporten los conceptos de orientación a objetos creando las BD Objeto-
Relacionales. Por otro lado, están las BD Orientadas a Objetos que soportan un modelo de objetos
puro y no son extensiones de otros modelos, como O2, Objectivity, ObjectStore, Ontos, Itasca,
Versant, Jasmine, Fast Objects, etc.
Las BD Objeto-Relacionales tienen una serie de reglas descritas en el “Manifiesto de los Sistemas
de BD de Tercera Generación” de Stonebraker (1990), y son cumplidas por la mayoría de los
proveedores relacionales actuales:
1er. Principio: “Además de los servicios tradicionales de gestión de datos, los DBMS de
tercera generación proporcionarán gestión de objetos y reglas más amplio”:
o Un DBMS debe tener un sistema de tipos amplio.
o Debe manejar herencia.
o Debe permitir definir métodos y encapsulamiento.
o Debería asignar OID para las tuplas sólo si no está disponible una llave primaria.
2º. Principio: “Los DBMS de tercera generación deben incluir a los DBMS de segunda
generación”:
o Deben tener un lenguaje de acceso declarativo y de alto nivel.
o Deben existir dos formas de especificar las colecciones: por enumeración de
miembros o mediante un lenguaje de consultas.
o Las vistas deben ser actualizables.
o Los indicadores de resultado no deben aparecer en los datos.
3er. Principio: “Los DBMS de tercera generación deben ser abiertos a otros subsistemas”:
o Debe ser accesible desde múltiples lenguajes de alto nivel.
o Deben soportar persistencia de variables.
o SQL debe ampliarse para la expresión de datos.
o Las consultas y sus respuestas deben ser el nivel más bajo de comunicación C/S.
Objetos complejos
Identidad del objeto
Encapsulamiento
Tipos y clases
Jerarquías de tipos o clases
Polimorfismo, sobrecarga y enlace dinámico
Compleción de cálculos
Extensibilidad
Persistencia
Gestión del almacenamiento secundario
Concurrencia
Recuperación
Facilidad de consulta
Herencia múltiple
Verificación de inferencia del tipo
Distribución
Transacciones de diseño
Versiones
Este manifiesto fue el primero que se elaboró, se presentó como una propuesta ante la falta de
acuerdos en las características de los OODBMS y, por ello, los autores aconsejan “cuestionar las
reglas”.
4.2.6. Características
Las características de estos sistemas provienen de la unión de BD y OO. Las características que
indica el ANSI (1990b) son consideradas como modelo de referencia abstracto, y que, no indica una
especificación implementable, sino una exposición general y un punto de comparación.
4.1.1.12. Persistencia
En los OODBMS los objetos son permanentes almacenados en la BD hasta borrarlos de modo
explícito, a diferencia de los objetos en los LP. Existiendo distintas posibilidades:
A diferencia del modelo relacional, el modelo de objetos es más realista, ya que los objetos
representan entidades del mundo real dando una sensación mucho mejor del problema que un
conjunto de tablas. Además, es más potente, ya que es mucho más flexible y posee características
como polimorfismo. Por último, el modelo relacional se basa en el valor, mientras que el modelo de
objetos se basa en el principio de identidad.
Los DBMS tradicionales existe un problema de concordancia entre los lenguajes de datos y
anfitriones, este problema se produce por diferencias en el paradigma de programación (Imperativo-
Java/ Declarativo-SQL) y de los tipos de datos. Los OODBMS han adoptado extensiones de LOO,
tanto para describir, como para manipular datos, esto a llevado a crear lenguajes “estilo SQL”.
El encapsulamiento es difícil de respetar en los OODBMS, considerándose los objetos como “cajas
grises” (ni negras, ni blancas).
En ocasiones, el lenguaje de datos se usa junto con el LP, por ejemplo, para la definición de los
servicios.
En los OODBMS los esquemas externos (vistas) deben ocultar (o exponer) tanto los atributos como
los servicios, sin embargo, la mayoría de los productos no conceden a la arquitectura de tres niveles
gran importancia, descuidando sobre todo la definición de vistas.
4.1.1.16. Optimizador
En el caso de los OODBMS, sus lenguajes son navegacionales, por lo que la optimización resulta
difícil al ser el programador el que indica los caminos a seguir. A pesar de ello, en general, el
rendimiento de un OODBMS puede ser superior cuando se trata de navegar a través de objetos ya
cargados en memoria, siempre que se puede convertir fácilmente los IDO de los objetos a posiciones
de memoria.
El optimizador estará condicionado a las características que posean los lenguajes del OODBMS,
aunque la mayoría poseen optimizadotes rudimentarios, sin estadísticas en el DD que permitan una
mejor optimización.
4.1.1.17. Seguridad
Los OODBMS deben proporcionar todos los mecanismos necesarios para asegurar el control de la
confidencialidad, integridad y disponibilidad de la base de objetos.
Diccionarios de datos
El OODBMS debe manipular metadatos sobre objetos, clases, jerarquías, colecciones, etc. con lo
que se obtiene mayor riqueza semántica que la de los DD relacionales.
Es fundamental que posean distintos tipos de herramientas para desarrollo de aplicaciones, que van
desde lenguajes de desarrollo hasta navegadores que permiten una mejor manipulación de las
bibliotecas de clases. Esto todavía no se logra al nivel de los RDBMS.
Deben proporcionar herramientas que permitan transferir datos entre distintos DBMS, pudiéndose
volcar datos de un OODBMS a un RDBMS, o viceversa. Este tema es muy activo en este campo.
También deben tener utilidades que permitan monitorizar el uso de recursos con el fin de aumentar el
rendimiento de los sistemas y realizar ajustes (tunning).
Actualmente, la mayoría ofrecen una capacidad limitada para ajustes de rendimiento parametrizado.
Deben soportar distintos tipos de datos, además de los formateados, como texto, imagen, voz, video.
En algunos OODBMS estos objetos se almacenan en BLOBs (Binary Large Objects), objetos de
almacenamiento masivo, que son colecciones de bits sin estructura interna.
Deben proporcionar distintas interfaces a los usuarios, según sea la función que desempeñan en
cada momento (DBA, Programador, diseñador de clases, usuario final, etc.).
Las IGU también siguen el PaOO, facilitando la interacción del usuario con el sistema.
4.1.1.24. Distribución
Al igual que los RDBMS, cualquier elemento debe poder distribuirse en diferentes equipos de forma
transparente. El mayor problema es hacer coexistir los OODBMS y los RDBMS.
Unidad 4. Modelo Orientado a Objetos Página 15
4.1.1.25. Control de versiones y configuraciones
También es importante agrupar versiones compatibles de diversos objetos y tratarlos como una
unidad de más alto nivel.
En el modelo de datos se incluyen una serie de primitiva que permiten tratar las versiones
como componentes fundamentales del propio modelo.
Las versiones no se consideran parte del modelo da datos en sí, pero se proporciona un
servicio de gestión de versiones mediante un nivel de software implementado sobre el
modelo básico.
Se considera la versión como una cuestión de las aplicaciones.
4.3. Estándar ODMG
En verano de 1991 Rick Cattell, de SunSoft, reunió a un grupo de expertos que trabajaban en
distintas empresas de OODBMS, y les propuso elaborar un estándar “de facto”, basado en las
características que presentaban los productos existentes y que se pudiera publicar en un breve plazo
de tiempo. Así nació el ODMG (Object Data Management Group) que reunía a los principales
vendedores de OODBMS: Object Design, Ontos, O2 Technology, Versant, Objectivity, POET
Software y Servio Corporation; y que contaba también con diversos revisores tanto de empresas,
como de universidades.
A mediados del 93 ya se había finalizado la primera versión de este estándar, determinando también
un conjunto de características a incluir en la segunda versión. Además ODMG propuso su estándar a
los organismos oficiales de normalización ANSI e ISO, así como al OMG (Object Management
Group).
La primera versión se publicó en 93, y se revisó en la edición 1.1 y 1.2. Las principales mejoras de la
versión 1.2 se referían al lenguaje de consulta de objetos (OQL, Object Query Language). La versión
2.0, además de algunas mejoras como la incorporación de nuevos tipos de colecciones, como el tipo
diccionario (dictionary type), introdujo la parte de la vinculación con el lenguaje Java. La versión
ODMG 3.0 incluye algunas mejoras de vinculación con Java, mejoras al modelo de objetos y algunas
correcciones y mejoras en las especificaciones del estándar.
Consultas (OQL)
Select e.idP, e.creditos //muestra todos los id y créditos en el archivo(extent) estudiantes
From estudiantes e;
Select g.getNombre() //muestra los nombres de todas las personas en extent gente
From g in gente; //otra forma de alias
Tarea.
a. Leer al menos 2 fuentes adicionales sobre los temas vistos en esta unidad y hacer un resumen
de la unidad (máximo 1 cuartilla). No olvidar conclusiones y bibliografía.
b. Explicar cuáles son las diferencias entre una DBMS y un OODBMS, entre OID y llave primaria,
entre BDOR y BDOO, entre SQL y OQL.