❖ Il est plus courant d'utiliser des entiers longs comme OIDs puis d'utiliser une forme de table de
hachage pour faire correspondre la valeur de l'OID à l'adresse physique actuelle de l'objet stocké.
❖ Certains des premiers modèles de données OO exigeaient que tout - d'une simple valeur à un objet
complexe - soit représenté comme un objet. Ainsi, chaque valeur de base, telle qu'une valeur de
nombre entier, une chaîne de caractères ou une valeur booléenne, possède un OID. Cela permet à
deux valeurs de base identiques d'avoir des OID différents, ce qui peut être utile dans certains cas.
Par exemple, la valeur entière 50 peut parfois être utilisée pour désigner un poids en kilogrammes et
parfois pour désigner l'âge d'une personne. On pourrait alors créer deux objets de base avec des
OID distincts, mais les deux objets auraient pour valeur 50. Bien qu'utile en tant que modèle
théorique, ce n'est pas très pratique, car cela conduit à la génération d'un trop grand nombre d'OIDs.
C'est pourquoi la plupart des ODB permettent de représenter à la fois des objets et des littéraux.
❖ Chaque objet doit avoir un OID immuable, alors qu'une valeur littérale (un entier, une chaîne de
caractères ou une valeur booléenne) n'a pas d'OID et sa valeur se suffit à elle-même. Ainsi, une
valeur littérale est généralement stockée dans un objet et ne peut être référencée à partir d'autres
objets. Dans de nombreux systèmes, des valeurs littérales structurées complexes peuvent
également être créées sans avoir d'OID correspondant si nécessaire.
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
❖ Objectif : représentation directe des objets du monde réel
❖ Monde réel : Personne
nom
prénoms
adresse (rue, n°, ville, codeNPA)
enfants (prénoms, sexe, dateNais)
❖ En relationnel : 4 relations, N tuples
Personne (n°, nom, adresse_rue, adresse_n°,
adresse_ville, adresse_codeNPA)
Personne_prénom (n°P, n°prénom, prénom)
Personne_enfant (n°P, n°enfant, sexe, dateNais)
Person_enfant_prénom (n°P, n°enfant, n°prénom, prénom)
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
Atom:
❖ Un constructeur de type a été appelé le constructeur d'atomes, bien
que ce terme ne soit pas utilisé dans la dernière norme objet. Cela
inclut les types de données de base intégrés au modèle objet, qui
sont similaires aux types de base de nombreux langages de
programmation : entiers, chaînes de caractères, nombres à virgule
flottante, types énumérés, booléens, et ainsi de suite. Ces types de
données de base sont appelés types à valeur unique ou atomiques,
car chaque valeur du type est considérée comme une valeur unique
atomique (indivisible).
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
Struct:
❖ Un deuxième constructeur de type est appelé le constructeur struct (ou
tuple). Il permet de créer des types structurés standard, tels que les tuples
(types d'enregistrements) dans le modèle relationnel de base.
❖ Un type structuré est constitué de plusieurs composants et est aussi
parfois appelé type composé ou composite.
❖ Plus précisément, le constructeur struct n'est pas considéré comme un
type, mais plutôt comme un générateur de types, car de nombreux types
structurés différents peuvent être créés.
❖ Par exemple, deux types structurés différents peuvent être créés : struct
Name<FirstName : string, MiddleInitial : char, LastName : string>, et struct
CollegeDegree<Major : string, Degree : string, Year : date>.
❖ Remarquez que les constructeurs de type atom et struct sont les seuls
disponibles dans le modèle relationnel original (de base).
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
Collection:
❖ Les constructeurs de type collection (ou multivalué) comprennent les
constructeurs de type: set(T), list(T), bag(T), array(T) et dictionary(K,T).
❖ Ils permettent à une partie d'un objet ou d'une valeur littérale d'inclure une
collection d'autres objets ou valeurs si nécessaire.
❖ Ces constructeurs sont également considérés comme des générateurs de
types car de nombreux types différents peuvent être créés. Par exemple,
set(string), set(integer) et set(Employee) sont trois types différents qui
peuvent être créés à partir du constructeur de type set.
❖ Tous les éléments d'une valeur de collection particulière doivent être du
même type. Par exemple, toutes les valeurs d'une collection de type
set(string) doivent être des valeurs de type chaîne de caractères.
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
Collection:
❖ Le constructeur set crée des objets ou des littéraux qui sont un ensemble
d'éléments distincts {i1, i2, ... , in}, tous du même type. (K,T).
❖ Le constructeur bag (également appelé multiset) est similaire à un ensemble,
sauf que les éléments d’un bag ne doivent pas nécessairement être distincts.
❖ Le constructeur list crée une liste ordonnée [i1, i2, ... , in] d'OIDs ou de valeurs
du même type. Une list est similaire à un bag, sauf que les éléments d'une
liste sont ordonnés et que l'on peut donc se référer au premier, deuxième ou
jème élément.
❖ Le constructeur array crée un tableau unidimensionnel d'éléments du même
type. La principale différence entre un array et une list est qu'une list peut
contenir un nombre arbitraire d'éléments, alors qu'un array a généralement
une taille maximale.
❖ Le constructeur dictionary crée une collection de paires clé-valeur (K, V), où la
valeur d'une clé K peut être utilisée pour récupérer la valeur correspondante V
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
Collection:
❖ La principale caractéristique d'un type collection (ou multivalué) est que ses
objets ou valeurs seront une collection d'objets ou de valeurs du même
type qui peuvent être non ordonnés (comme set ou bag) ou ordonnés
(comme une list ou array).
❖ Le constructeur de type tuple est souvent appelé type structuré, car il
correspond à la construction struct des langages de programmation C et
C++ .
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
Exemple (syntaxe symplifiée de l’ODL(object definition
language) standard de l'ODMG:
define type EMPLOYEE
Minit : char;
Lname: string;
Ssn: string;
Birth_date: DATE;
Address: string;
Sex: char;
Salary: float;
Supervisor: EMPLOYEE;
Dept: DEPARTMENT);
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: STRUCTURES COMPLEXES
Exemple 1 (syntaxe symplifiée de l’ODL(object definition language)
standard de l'ODMG:
define type DATE
Les attributs qui font référence à
tuple (Year: integer;
d'autres objets - tels que Dept de
Month: inteer;
EMPLOYEE ou Projects de
Day : integer;); DEPARTMENT - sont essentiellement
des OIDs qui servent de références à
define type DEPARTMENT d'autres objets pour représenter les
tuple ( Dname: string; relations entre les objets.
Dnumber: integer;
Mgr: tuple ( Manager: EMPLOYEE; Start_date: DATE; );
Locations: set(string);
Employees: set(EMPLOYEE);
Projects: set(PROJECT); );
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: ENCAPSULATION
Lname : string;
Birth_date: DATE;
Address: string;
Sex: char;
Salary: float;
Supervisor: EMPLOYEE;
Dept: DEPARTMENT; );
create_emp: EMPLOYEE;
destroy_emp: boolean;
end EMPLOYEE;
define class DEPARTMENT
Exemple 2 :
type tuple (Dname : string;
Dnumber : integer;
Start_date: DATE; );
Locations: set(string);
Projects : set(PROJECT); );
create_dept: DEPARTMENT;
destroy_dept: boolean;
end DEPARTMENT;
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: ENCAPSULATION
❖ La notation pointée est également utilisée pour faire référence aux attributs
d'un objet - par exemple, en écrivant d.Dnumber ou d.Mgr_Start_date.
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: PERSISTANCE
6
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: PERSISTANCE
❖ Notez la différence entre les modèles de base de données traditionnels et
les DBOOs à cet égard: Dans les modèles de base de données
traditionnels, tels que le modèle relationnel, tous les objets sont supposés
être persistants.
❖ Par conséquent, lorsqu'une table telle que EMPLOYEE est créée dans une
base de données relationnelle, elle représente à la fois la déclaration de type
pour EMPLOYEE et un ensemble persistant de tous les enregistrements
EMPLOYEE (tuples).
❖ Dans l'approche OO, une déclaration de classe de EMPLOYÉ spécifie
uniquement le type et les opérations d'une classe d'objets.
❖ L'utilisateur doit définir séparément un objet persistant de type
set(EMPLOYEE) dont la valeur est la collection de références (OID) à tous
les objets persistants EMPLOYEE, si cela est souhaité, voir exemple3.
❖ Cela permet aux objets transitoires et persistants de suivre les mêmes
règles que les déclarations de type et de classe de l'ODL et du LPOO. En
général, il est possible de définir plusieurs collections persistantes pour la
même définition de classe, si on le souhaite.
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: HIÉRARCHIE ET HÉRITAGE
❖ Notez la différence entre les modèles de base de données traditionnels
et les DBOOs à cet égard: Dans les modèles de base de données
traditionnels, tels que le modèle relationnel, tous les objets sont supposés
être persistants.
❖ Par conséquent, lorsqu'une table telle que EMPLOYEE est créée dans une
base de données relationnelle, elle représente à la fois la déclaration de
type pour EMPLOYEE et un ensemble persistant de tous les
enregistrements EMPLOYEE (tuples).
❖ Dans l'approche OO, une déclaration de classe de EMPLOYÉ spécifie
uniquement le type et les opérations d'une classe d'objets.
❖ L'utilisateur doit définir séparément un objet persistant de type
set(EMPLOYEE) dont la valeur est la collection de références (OID) à tous
les objets persistants EMPLOYEE, si cela est souhaité, voir exemple3.
❖ Cela permet aux objets transitoires et persistants de suivre les mêmes
règles que les déclarations de type et de classe de l'ODL et du LPOO. En
général, il est possible de définir plusieurs collections persistantes pour la
même définition de classe, si on le souhaite.
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: PERSISTANCE
Pour simplifier:
❖ Nous utilisons le terme function pour désigner à la fois les attributs et les
opérations, car ils sont traités de manière similaire dans une introduction de
base à l'héritage.
❖ Dans sa forme la plus simple, un type comporte un nom de type et une liste
de functions visibles (public).
❖ Lorsque nous spécifions un type dans cette section, nous utilisons le format
suivant, qui ne spécifie pas les arguments des functions, pour simplifier la
discussion: TYPE_NAME: function, function, … , function
❖ Par exemple, un type qui décrit les caractéristiques d'une PERSONNE peut
être défini comme suit : PERSON: Name, Address, Birth_date, Age, Ssn
Atribute Operation
CONCEPTS DES BASES DE DONNÉES ORIENTÉES
OBJET: TYPES DE HIÉRARCHIE ET HÉRITAGE
❖ Prenons un autre exemple, celui d'un type qui décrit des objets en
géométrie plane : GEOMETRY_OBJECT: Shape, Area, Reference_point
❖ On veut définir les sous-types:
❖ RECTANGLE subtype-of GEOMETRY_OBJECT: Width, Height