POLY CH09 - OQL

Embed Size (px)

Citation preview

Chapitre 9

Un langage de manipulation de donnes orientes objets: OQL

1. IntroductionPour les langages de manipulation (LMD) de bases de donnes orientes objets, OQL1, est la norme propose par le groupe ODMG et implmente par les SGBDO participant ce groupe. Ce chapitre prsente les caractristiques principales d'OQL. OQL (Object Query Language) est un langage de type dclaratif, qui peut tre utilis seul ou partir d'un langage de programmation, tel que C++ ou Java. OQL permet de manipuler des lments et des collections de type ensemble ou autres, notamment avec des requtes de type "Select from where", mais il n'est pas compatible avec le SQL relationnel. Les requtes d'OQL peuvent appeler des mthodes, et inversement tout programme ou mthode peut contenir des requtes OQL. OQL permet d'crire des requtes, mais pas des instructions de mise jour. Ces dernires se font grce aux mthodes associes aux classes.

2. Requtes, points d'entre et rsultatsUn des premiers lments lors de l'criture d'une requte est de dfinir la (ou les) collection d'objets dans laquelle chercher l'information utile pour la requte. En relationnel ce sont les relations. En ODMG ce sont les noms des populations dclares pour les classes (clause "Extent" de la dfinition des classes), ou des noms permanents associs des objets particuliers de la base. En effet, en ODMG, on peut donner tout objet un ou plusieurs noms permanents, qui pourront servir de point dentre dans la base. Pour cela, il suffit de dclarer un nom grce linstruction "Name". Par exemple, l'instruction: Name directeur : Personne dclare un nom permanent, directeur, de type Personne. Il suffit alors daffecter un objet ce nom, par exemple en crant un nouvel objet comme ci-dessous (voir le paragraphe 3 pour la cration d'objets): directeur = Personne(nom:"Rochat", prnoms:LIST("Alain","Yves"), adresse:"Lausanne") Afin de permettre d'crire des requtes complexes, tout rsultat d'une requte doit pouvoir tre rutilis comme argument d'une autre requte. Pour cela, les LMDs doivent tre "ferms", c'est-dire que le type du rsultat des requtes est l'un des concepts du modle de donnes. En bases de donnes orientes objets le rsultat sera donc constitu d'objets et/ou de valeurs. Pratiquement en OQL, le rsultat d'une requte peut tre de diffrents types. C'est soit un lment, soit une collection, et il est compos soit d'objets, soit de valeurs simples ou complexes. Le type exact du rsultat est dfini par l'opration effectue par la requte. Par exemple, en se rfrant au schma de la base de donnes FormaPerm en ODMG, la requte:

1

OQL, l'origine, a t dfini comme le LMD du SGBDO O2 101

Bases de donnes avances 2004 - 2005

Select distinct e.nom from e in LesEtudiants where e.age()120 ;

7. ConclusionDans ce chapitre, nous n'avons prsent que les types de requtes les plus intressants d'OQL. Par exemple, OQL permet aussi de faire des oprations arithmtiques (+, -, *, ...). En conclusion, nous soulignerons une qualit importante d'OQL : c'est un langage orthogonal, c'est--dire que lors de l'criture d'une requte, le choix du type de terme employer (constante, variable, requte...) ne dpend pas du contexte. Par exemple, pour tout argument de type collection, on peut mettre n'importe quel type de collection: collection constante, nom d'une collection comme le nom de la population d'une classe, variable de type collection ou dfinition d'une requte dont le rsultat est une collection.

Bases de donnes avances 2004 - 2005

106