El modelo orientado a objetos considera el almacenamiento de datos como objetos, los cuales se procesan de forma análoga a como sucede en la programación orientada a objetos. Un objeto define a una entidad y contiene:
- los atributos necesarios para describir a la entidad,
- conexiones (relaciones) con otros objetos,
- funciones que permiten acceder a los datos almacenados (métodos).
Un objeto es, así, una combinación de datos en la cual también se define el punto de acceso a estos datos. Los objetos se consideran tipos abstractos de datos.
El SGBD orientado a objetos (ODBMS, object database management system) asigna automáticamente un ID a cada objeto que permite identificarle de forma única y dirigirse a él con métodos. Este ID es independiente del estado del objeto y está desvinculado de sus valores. Esto permite asignar ID diferentes a dos objetos con los mismos datos, esto es, con un mismo estado. El modelo orientado a objetos se aleja así del relacional, modelo en el que cada tupla puede identificarse a partir de sus datos, por ejemplo, con una clave primaria.
Otra característica del modelo orientado a objetos es el aislamiento de los datos: la única forma de acceder a los datos guardados es utilizando los métodos que el usuario ha definido previamente. Esto protege a los datos de cambios procedentes de puntos de acceso no definidos.
Por otro lado, las estructuras de bases de datos se definen aquí por medio de un sistema de clases jerárquico. En el contexto de la programación orientada a objetos, una clase es un conjunto de objetos que poseen las mismas propiedades y a cada clase de objetos le subyace una definición de clases. Este esquema prescribe los atributos y los métodos de todos los objetos de la misma clase, determinando así cómo se crean y se modifican.
Para interactuar con el sistema gestor de estas bases de datos, los usuarios utilizan un lenguaje de consultas inspirado en SQL, el lenguaje de consultas a objetos u OQL (Object Query Language). El resultado de una consulta OQL no es, como en SQL, un espacio de resultados posibles, sino una lista de todos los objetos que satisfacen las condiciones de la declaración OQL.
Algunas implementaciones conocidas del modelo de BDOO son Realm, ZODB y Perst.
El desarrollo de las BDOO pretendía solucionar un problema de la programación de aplicaciones, la incompatibilidad de impedancia objeto-relacional (Object-relational impedence mismatch), que se produce inevitablemente si se guardan objetos de un lenguaje orientado a objetos como C#, C++ o Java en una base de datos relacional y resulta de las diferencias fundamentales entre ambos paradigmas de programación, como son:
- Las bases de datos relacionales no soportan conceptos orientados a objetos como las clases y la herencia.
- El modelo relacional no permite la identificación de objetos independiente del estado.
- El modelo relacional tampoco cuenta con el mecanismo de protección que aporta el aislamiento de datos.
Una forma de evitar estos problemas de incompatibilidad consiste en no utilizar bases de datos relacionales y optar por una BDOO cuando se programan aplicaciones orientadas a objetos. Sin embargo, la desventaja de esta opción es que los datos encapsulados en objetos dejan de estar disponibles fuera de la aplicación. A esto se añade la reducida expansión de este tipo de bases de datos. La mayoría de herramientas e interfaces que se utilizan para analizar bancos de datos sigue estando diseñada para bases de datos relacionales y no soportan el modelo orientado a objetos.
Pese a todo, los programadores de aplicaciones que no quieran prescindir de las ventajas del modelo relacional tienen la posibilidad de compensar estas incompatibilidades con ayuda del mapeo objeto-relacional (O/R mapping o object-relational mapping, ORM). Las funcionalidades para la representación objeto-relacional se implementan con bibliotecas que crean una capa de abstracción entre la aplicación orientada a objetos y los datos guardados en las tablas.
Asimismo, hay muchos fabricantes de sistemas relacionales que equipan sus productos con funciones para compensar estas incompatibilidades con la programación orientada a objetos. Estos sistemas se conocen como objeto-relacionales.
Las BDOO trasponen los principios de la orientación a objetos a la tecnología de bases de datos y por ello son adecuadas sobre todo en la programación de aplicaciones orientada a objetos, pero los sistemas de bases de datos de este tipo son poco frecuentes y aún muy nuevos para el mercado.