• Aucun résultat trouvé

Concepts et principes du modèle objet de base

Chapitre 3 : MVDB : Un modèle basé point de vue pour une

2. Description formelle de MVDB

2.1. Concepts et principes du modèle objet de base

La description formelle des concepts de base est inspirée de [1][92] et s'appliquent à toutes les constructions du modèle ODMG. Nous commençons par la définition des aspects structurels (valeur, type ..) et la hiérarchie des classes, puis nous définissons les concepts de schéma et instance de schéma de BDDOO.

Les aspects structurels concernent les notions structurelles de type et d'hiérarchie de classes pour décrire la structure des objets. Des définitions formelles de ces derniers nous permettent de définir un schéma de base de données objets. Pour commencer, nous considérons les ensembles suivants:

- Dom est l'ensemble formé de l'union des domaines des types atomiques de base, disjoints deux à deux : integer, string, bool, et float (pour entier, mot, booléen et

réel). Les éléments de Dom sont des constantes. Dom =

Dom(integer)∪Dom(string)∪ Dom(bool)∪Dom(float). - Class est l'ensemble infini des noms de classes.

- Att est l'ensemble infini des noms d'attributs. - Obj est l'ensemble infini des identificateurs d'objets. - nil est un symbole qui indique la valeur indéfinie.

2.1.1. Valeurs et objets

Un objet est constitué d'un couple (identificateur, valeur). Les identificateurs sont d'un type particulier, contenant les OID. Les valeurs sont des valeurs complexes standard, sauf que les OID peuvent y intervenir.

Définition 1. (valeur).

Etant donné O un sous-ensemble de Obj, l'ensemble des valeurs sur O, noté Val(O) est défini comme suit :

(a) nil ∈ Val(O); (b) Dom⊂ Val(O). (c) O⊂Val(O).

(d) v1,…, vn ∈ Val(O), a1, …, an ∈Att alors <a1 : v1,…, an : vn> ∈ Val(O) et est une valeur structurée de type tuple. Tous les ai sont distincts.

(e) v1,…, vn ∈ Val(O), alors {v1,…,vn} ∈ Val(O) et est une valeur structurée de type ensemble. {} dénote l'ensemble vide.

(f) v1,…, vn ∈ Val(O), alors [v1,…,vn] ∈ Val(O) et est une valeur structurée de type liste. [ ] dénote la liste vide.

Définition 2. (objet).

Un objet est un couple (o, v), où o est un OID et v sa valeur, appelée également son état.

2.1.2. Types et hiérarchie de classes

Comme vu ci-dessus, les objets sont regroupés en classes. Tous les objets d'une classe ont des valeurs complexes de même type. Le type correspondant à chaque classe

Chapitre 3. MVDB : Un modèle basé point de vue pour une représentation 55 Multiple, évolutive et distribuée des objets

est défini par le schéma de BDDOO. Les types sont définis relativement à un ensemble C donné de noms de classes.

Définition 3. (type).

Soit C un sous-ensemble fini de Class. L'ensemble des types qu'on peut construire à partir de C, dénoté Types(C), est défini comme suit :

(a) any Types(C). (any est le type le plus général mais il ne peut pas apparaître à l’intérieur d’un autre type)

(b) C ⊂ Types(C). Les noms des classes sont des types. (c) Integer, String, bool, Float ⊂ Types(C).

(d) Si τ ∈ Types(C), alors {τ}∈Types(C). {τ} est un type ensemble. (e) Si τ ∈ Types(C), alors [τ] ∈Types(C). [τ] est un type liste.

(f) Si τ1,…,τn ∈Types(C) et si a1, …, an ∈Att, alors <a1 : τ1,…, an : τn>

∈Types(C). <a1 : τ1,…, an : τn> est un type tuple.

D'après la description informelle, un schéma de BDDOO est une hiérarchie de classes. Celle-ci possède trois composantes : un ensemble de classes, les types associés à ces classes et une définition de la relation entre les classes. Formellement, une hiérarchie de classes est définie par :

Définition 4. (Hiérarchie de classes).

Une hiérarchie de classes est un triplet (C, ∂, p) où :

1. C est un sous-ensemble de classes distinctes de Class.

2. ∂est une fonction de C dans Types(C) qui associe à chaque classe ci de C son type.

3. p est une relation d’un ordre partiel sur C. p est la relation de spécialisation implantée par un mécanisme d'héritage.

Dans une hiérarchie de classes, le type associé à une sous-classe doit être un raffinement du type associé à sa super-classe. Pour formaliser cette notion, une relation de sous-typage ≤t est définie.

Définition 5. (sous-typage).

Soit (C, ∂, p) une hiérarchie de classes. La relation de sous-typage est la plus petite relation d'ordre partiel sur Types(C) qui satisfait les conditions suivantes :

(a) τ ∈ Types(C), τ ≤t any (c'est-à-dire que any est au sommet de la hiérarchie).

(b) c, c' ∈ C, si c pc' alors c ≤t c'.

(c) τ1,…,τm, τ'1,…,τ'n

Types(C) et a1, …, an, …am ∈Att, si n ≤ m et si τi t τ'i pour tout i ∈ [1,n] alors <a1 : τ1,…, an : τn, … am : τm > ≤t <a1 : τ'1,…, an : τ'n>.

(d) τ, τ' ∈ Types(C), si τ ≤t τ' alors {τ } ≤t {τ' }. (e) τ, τ' ∈ Types(C), si τ ≤t τ' alors [τ ] ≤t [τ' ].

Chapitre 3. MVDB : Un modèle basé point de vue pour une représentation 56 Multiple, évolutive et distribuée des objets

Définition 6. (hiérarchie bien formée).

Une hiérarchie de classes est bien formée si : c, c' ∈ C, si cpc' ⇒ ∂(c) ≤t ∂(c').

2.1.3. Sémantique structurelle d'une hiérarchie de classes

Nous décrivons maintenant la sémantique des classes et des types afin de leur associer des valeurs. Cependant, puisque les valeurs d'une instance de BDDOO peuvent inclure des OID nous commençons d'abord par définir la fonction d'affectation d'OID notée π. Celle-ci affecte un ensemble d'OID à chaque classe.

Définition 7. (affectation d'OID ou instanciation).

Soit (C, ∂, p) une hiérarchie de classes bien formée. L'affectation d'OID est une application π définie par :

π : C→ P(O) tel que P est l'ensemble des parties de O qui lie chaque classe à un ensemble fini et disjoint d'OID.

Etant donnée une affectation d'OID π, l'extension disjointe de c ∈ C est π(c) tel que

oi ∈ π(c) ⇒ c' ≠c/ oi ∈π(c'). L'extension de c, notée π*(c) rend l'ensemble des objets de C et de toutes ses sous-classes, c'est-à-dire π*(c) = ∪c'C { π(c')/ c'pc}.

Définissons maintenant la sémantique pour les types relativement à la hiérarchie des classes (C, ∂, p) et d'une affectation d'OID π.

Définition 8. (interprétation de type).

Soit O=∪{ π (c) /c ∈C}. L'interprétation disjointe d'un type τ, notée Dom(τ) est définie de la manière suivante :

(a) pour chaque type atomique τ, Dom(τ) est l'interprétation usuelle de ce type. (b) Dom(any) = Val(O).

(c) c∈C, Dom(c) = π*(c)∪{nil}. L'interprétation d'un type de classe est son extension.

(d) Dom({τ}) = {{v1,…, vn} / n ≥0 et vi ∈Dom(τ), i ∈ [1..n]}. (e) Dom([τ]) = {[v1,…, vn] / n ≥0 et vi ∈Dom(τ), i ∈ [1..n]}.

(f) Dom(<a1 : τ1,…, ak : τk>) = {<a1 : v1,…, ak : vk>} / vi ∈Dom(τi), i ∈ [1..k].

2.1.4. Schéma de base de données

Nous concluons cette section en présentant les définitions d'un schéma et d'une instance de schéma de bases de données objets. Un schéma est composé d'une hiérarchie de classes bien formée et de la signature des méthodes. L'utilisation des valeurs nommées est très fréquente dans beaucoup de modèles de BDDOO. Une valeur nommée est une structure complexe ayant un type et permet le stockage de valeurs complexes. Ainsi, un schéma peut inclure un ensemble de noms de valeurs avec des types associés. Les méthodes, les langages de programmation et les langages de requêtes peuvent tous utiliser ces noms (pour faire référence à leurs valeurs actuelles) et utiliser les noms de classes (pour faire référence à l'ensemble des objets appartenant à ces classes). Les valeurs nommées et les noms de classes sont analogues aux noms de relations du modèle relationnel.

Chapitre 3. MVDB : Un modèle basé point de vue pour une représentation 57 Multiple, évolutive et distribuée des objets

Définition 11. (schéma de BDDOO).

Un schéma de BDDOO est une hiérarchie de classes comme présentée en Définition 4.

2.1.5. Instance de schéma de base de données

Une instance d'un schéma de BDDOO conserve d'une façon extensionnelle les OID des classes, les valeurs des objets et les valeurs des noms persistants et affecte une sémantique aux signatures des méthodes. Cette sémantique est définie par des parties de code. Cependant nous ignorons ici le code des méthodes.

Définition 12. (instance d'un schéma).

Une instance d'un schéma encore appelée base est associée à un schéma S = (C, ∂,

p). Elle est spécifiée par le triplet I = (π , ν , O ), où: (a) π est la fonction d'extension disjointe. (b) O=∪{ π (c) /c ∈C}.

(c) ν : O → Val(O) est une application qui assigne une valeur (un état) à chaque objet de la base. Cette valeur doit être compatible avec le type de la classe de l'objet, i.e. c∈C, oi ∈ π(c), Val(oi) Dom(σ(c)). Sinon Val(oi) n'est pas définie.