Le modèle de base de données orientée objet permet le stockage des données sous forme d’objets. La modulation des objets est analogue à la programmation orientée objet. Un objet définit une entité et contient :
- Les propriétés (attributs) requises pour décrire l’entité,
- les références (relations) à d’autres objets,
- les fonctions qui permettent d’accéder aux données stockées (méthodes).
Un objet est donc un groupe de données dans lequel l’interface est également définie pour accéder à ces données. Les objets appartiennent aux types de données abstraites.
Le système de gestion de bases de données orienté objet (SGBDO) attribue automatiquement un ID à chaque objet. Ceci permet d’identifier l’objet de manière unique d’y accéder à l’aide de méthodes. Cet ID d’objet est sans état, c’est-à-dire découplé des valeurs de l’objet. Il est ainsi possible de donner deux ID différents à deux objets avec les mêmes données (c’est-à-dire avec le même état). Ceci distingue clairement le modèle de base de données orienté objet du modèle relationnel, dans lequel chaque tuple peut être identifié par ses données (par exemple par une clé primaire).
Une autre caractéristique du modèle de base de données orientée objet est l’encapsulation de données. Les données enregistrées ne sont accessibles que par les méthodes définies précédemment. Les données encapsulées dans l’objet sont ainsi protégées contre les modifications via des interfaces indéfinies.
Les structures des bases de données sont définies dans le modèle de base de données orientée objet à l’aide d’un système de classification hiérarchique. Dans la programmation orientée objet, une classe est un ensemble d’objets ayant les mêmes caractéristiques. Chaque classe d’objets repose sur une définition de classe. Ce schéma spécifie les attributs et les méthodes de tous les objets de la classe et détermine ainsi la façon dont ils sont créés et modifiés.
Les utilisateurs interagissent avec la base de données orientée objet à l’aide d’un langage de requêtes de type SQL pour les bases de données orientée objets : l’Object Query Language (OQL). Le résultat d’une requête OQL n’est pas, comme pour SQL, un jeu de résultats, mais une liste d’objets qui correspondent aux conditions de l’instruction OQL.
Les implémentations connues du modèle de base de données orientée objet sont Realm, ZODB et Perst.
Les bases de données orientées objet ont été développées pour résoudre un problème de développement d’applications connu sous le nom d’Object-relational impedance mismatch.
Si des objets d’un langage de programmation orienté objet (par exemple C#, C++ ou Java) doivent être stockés dans une base de données relationnelle, des incompatibilités se produisent inévitablement. Elles sont dues à des différences fondamentales entre les deux paradigmes de programmation.
- Les bases de données relationnelles ne supportent pas les concepts orientés objet tels que les classes et l’héritage.
- L’identification de l’objet sans état ne peut pas être réalisée dans le modèle de base de données relationnelle.
- Le mécanisme de protection de l’encapsulation des données n’est pas disponible dans le modèle de bases de données relationnelles.
Une approche pour éviter les problèmes d’incompatibilité mentionnés ci-dessus consiste à renoncer aux bases de données relationnelles et à utiliser une base de données objet dans le cadre d’une programmation applicative orientée objet. Cependant, cela présente inévitablement l’inconvénient que les données encapsulées dans des objets ne sont pas disponibles indépendamment de l’application associée. En outre, les bases de bases de donnée objet ne sont pas très répandues. La plupart des outils et interfaces d’analyse de données sont encore conçus pour les bases de données relationnelles et ne prennent pas en charge le modèle de données orientées objet.
Cependant, les développeurs d’applications qui ne souhaitent pas se passer des avantages du stockage de données relationnelles peuvent compenser les incompatibilités en utilisant des mappeurs objet/relationnel. Les fonctionnalités de mapping objet-relationnel (ORM) sont implémentées via des bibliothèques. Elles créent une couche d’abstraction entre l’application orientée objet et les données stockées dans les tables.
De nombreux fabricants de systèmes de bases de données relationnelles équipent également leurs produits de fonctions qui compensent les incompatibilités avec la programmation orientée objet. Les systèmes de base de données de ce type sont appelés « objet-relationnel ».
Les bases de données orientées objet transfèrent les principes de base de l’orientation objet aux technologies de base de données et sont donc particulièrement adaptées à la programmation applicative orientée objet. Toutefois, les systèmes de bases de données correspondants sont rares et certains d’entre eux ne sont pas encore prêts pour le marché.