You are on page 1of 86

Dr.

Rim Samia Kaabi

Modle Objet-Relationnel

28 septembre 2011
1

Modle OR Le modle gr par Oracle 11g est dit objet relationnel (OR) car il gre simultanment les Modle relationnel et objet: hybride Avantage : Gre les BDR en service Conserve les notions de tables Permet lencapsulation des donnes: implmentation des mthodes Implmente les principaux mcanismes de lobjet
2

Modle OR Inconvnient: La structure dobjet est plus complexe grer par les structures disponibles dans les applications: mapping!!! Nimplmente pas lhritage multiple Utilise REF qui est en quelque sorte un pointeur logique lequel devrait tre normalement invisible

Objet et attribut 3 concepts cls: Objet: a un nom et est stock au moyen dune structure (classe) type de lobjet Attribut: a un nom et est utilis pour reprsenter un aspect de lobjet rel permettant ainsi les traitements Lattribut et lobjet auront un type de manire pouvoir stocker lobjet et en permettre des traitements. Les objets sont groups dans un container dobjets. En OR cest la table Mthode: associe aux objets pour les manipuler correctement.
4

Conventions dcriture des types

Exemple: le type pour un objet : employe est dfini comme un tuple

Type usager: User Defined Type Un attribut peut avoir un type plus complexe, cr par lusager sur la base des types existants ou dfini par lusager Exemple: le type tuple pour lattribut adresse de lobjet employe

User Defined Types UDT


Syntaxe CREATE TYPE NomType AS (liste dattributs avec leur types) [redfinition des fonctions = et <] [dfinition des mthodes] Exemple CREATE TYPE SocType AS ( name CHAR(20), addr CHAR(20), activity CHAR(20), ); CREATE TYPE PersonneType AS ( name CHAR(20), birthDate DATE );

Partage des types par les objets Important: un type peut tre partag par plusieurs objets crant ainsi une dpendance dont il faudra tenir compte par la suite lors de la suppression ou la modification du type existant Supprimer un type partag sera possible si sa suppression se rpercute sur les autres types dpendants

Validation des types Lors de la cration de modification dun type, le systme doit vrifier que cette modification ne fait pas une action qui invalide les autres types ou autres entits de la base:

Exemple: un type est modifi en supprimant un attribut CASCADE: le systme doit vrifier que cette suppression ne se rpercute pas sur un autre type dont lattribut est index, utilis pour le partionnement des tables Si le test passe alors le type est modifi sinon refus du systme 9

Cration dun ensemble ordonn en Oracle

10

Constructeur dobjet Tout objet typ sera construit par un constructeur dont le nom est form avec nom du type suffix par _t Chaque objet construit et insr comme objet est associ lors de son insertion dans une table objet un OID (Object Identifier) unique et non rutilisable Cest une sorte de rfrence pointeur

11

Insertion dun objet utilisant un Varray Linsertion des objets se fera en construisant lobjet insrer et en lajoutant dans la base par la clause INSERT

12

Type ensemble non ordonn et non fini Un ensemble non ordonn est implment comme une table logiquement imbrique (NESTED TABLE)

13

Type ensemble non ordonn et non fini

14

Diffrence entre Varray et NESTED TABLE

15

Varray .

16

Utilisation par les appels de mthode API commune Il ya une API compose de mthodes qui sont appliques aux collections

17

Quelques mthodes de PL/SQL associes aux ensembles

18

Exemple: Cration et utilisation du Varray() avec PL/SQL

19

Ajout dans le Varray

20

Lecture dun seul objet-colonne

21

Accs un objet particulier du Varray

22

Lectures de tous les objets-colonnes

23

Modification de lattribut dun objet-colonne (ageE)

24

Affichage de la structure dun type

25

Nouveau type pour un attribut: REF Un attribut peut avoir un type REF rfrence un autre objet Permet dimplanter le lien externe de Mnav

26

Type REF Une valeur de type REF rfre seulement un objet de table elle inclut lOID de lobjet cibl stock dans une table objet Valeur REF sera idem OID Le rle du type REF est damliorer la fonction de navigation avec le langage de requte SQL acclrer les jointures

27

Rfrence un autre objet par le REF

28

REF et lassociation UML Lattribut de type REF est utilis pour implmenter lassociation comme le souligne le passage du diagramme de classes au Mnav Cls primaire et trangre dune table: La cl primaire est non essentielle car OID distingue tout objet. Elle est cependant utile pour la recherche dun objet particulier La cl devient un contrainte dentit La cl trangre est implmente en objet autrement que le 29 partage dune valeur primaire

Sortes de tables en OR Table objet dont les lments sont des objets pouvant contenir des objets colonnes Table relationnelle dont les tuples ne sont pas des objets mais pouvant avoir des objets colonnes de type objet

30

Table OR Les objets sont stocks dans des tables OR (containeurs) Une table est associe une classe type gnralement complexe construit limage des objets Convention dcriture: Nom de la table: commence par une lettre en majuscule et son type gnralement complexe est compos de son nom dbutant par une lettre minuscule et suffix par _t

31

Table OR Une classe a un type (le mme)

32

Stockage des ensembles imbriqus

La table objet Etudiant et la collection imbrique cres dans le TS_Registaire2010 Une nested table bien que stocke comme une table physique spare, cohabite par dfaut avec sa table mre dans le mme TS
33

Signature dans les types Linterface est spcifie intgralement dans le type Chaque mthode a une signature dfinie dans le type Signature:=nom de la mthode + paramtres typs incluant celui du retour

34

Extension du type

35

Actions combines sur le type

36

Oprations avec les types

37

Objet de table (OT) et objet colonne (OC) 2 types dobjets: Objet de table: objet typ Objet colonne: tout attribut ayant un type complexe correspondant un objet colonne

38

Objet de table (OT) et objet colonne (OC) Lattribut ensemble: tout attribut de type ensemble est aussi un OC

39

Description du type et ses types composants

40

Constructeur dobjet de type table

Lobjet employ est construit avec une valeur obligatoire pour chaque attribut Lobjet cr est insr dans la table, le rendant persistant et lui attribuant un oid permanent

41

Cration dun objet transitoire en PL/SQL Un objet est aussi cr avec un type lorsque le constructeur de type est appel par le NEW de PL/SQL suivi du constructeur de type

Un objet transitoire employ devient persistant lorsquil est insr dans une table

42

Cration dun type incomplet et dune Rfrence inverse Un type peut utiliser un autre type que sil est dj existant La rfrence inverse est cependant possible en utilisant un type incomplet

43

Type mutuellement dpendant

44

Attribut avec un type dfini

A la compilation du type, il ya erreur. Par contre, le type demeure disponible pour un autre usage

45

Visibilit des attributs et encapsulation OR

Le droit daccs est accord un usage via le type. Lutilisateur voit tous les attributs et mthodes du type sur lequel il a des droits

46

Affichage de l OID dun objet: Ref() Oid(ref) visualis ne peut pas tre modifi par le programmeur Affichage de l oid dun objet de la table Employe:

Affichage de la valeur de lobjet sans son oid:

47

Comparaison entre rfrence et OID Pas ncessairement identiques REF compose de 3 parties: Oid du type de la table Oid de lobjet rfrenc Rowid de lobjet

48

Gnration de lOID par Oracle

49

Couplage fort et r-insertion dun objet avec value()

50

Fonction DEREF() La fonction REF(x) : x un objet donne oid de x DEREF(a): a oid rend lobjet correspondant et lassigne une variable du type de lobjet

51

Objet-colonne Une tale objet et une table relationnelle peuvent contenir aussi un objet colonne

52

Initialisation des objets de table

53

Insertion dun OC et OT

Quelle est la diffrence entre les deux insertions????


54

Insertion dun OC et OT

55

Procdure PL/SQL dinitialisation dun OT

56

Cration et initialisation des OC dans les tables objets

57

Objet null

58

Affichage des objets de la table objet et des valeurs

59

Maj de lOC NULL dune table type

60

Suppression dobjets/types OR Via la suppression dune table: DROP TABLE Employe; Entraine la suppression des objets, privilges dfinis dans la table Employe TRUNCATE TABLE Employe [DROP] Supprime que les objets sans supprimer le container DROP TYPE employe_t; Suppression mme des objets qui utilisent le type. Les objets restent dans la base et sont temporairement invalides
61

Les contraintes dfinies sur les objets au niveau des tables Une contrainte est toujours dfinie au niveau de la table et non au niveau du type

62

Evolution du schma de la table objet

63

Rangements des objets

64

Affichage dun objet rang dans une autre table objet

65

Affichage dun objet rang dans une autre table objet

66

Report des contraintes

67

Implantation du lien multiple: externe et interne

68

Lien multiple: interne et externe

69

Reprsentation tabulaire du cas A avec une table imbrique

La table objet type par employe_t a 3 attributs:matricule, nom et histoSal Chaque attribut a un nom et un type soit atomique soit complexe histoSal a un type collection (set) avec attributs 70

Cas B: lien externe

histoSal a un type de collection dfini par les attributs anne et le lien refSal refSal est une rfrence vers un objet de la table SalNet 71

Partage en cascade des types

72

Notation pointe: accs un attribut Pour accder la valeur dun attribut dun type pointe notation

73

Jointure navigationnelle vs jointure relationnelle

74

Table objet et les contraintes

75

Contraintes dans une TO

76

Insertion dans une TO

77

Implmentation de la contrainte rfrentielle avec les TO

78

Contrainte rfrentielle en objet Contrainte REFERENCES 2 cohrences assurer: suppression et insertion

79

Contrainte rfrentielle en objet

80

Absence de la Contrainte rfrentielle dans une TO

81

Signature dune mthode dfinie dans un type

Body crit en PL/SQL V_article.rabaisProduit(25, prixReg, rabais, nomP)

82

Mthode incluse dans le type

83

Hritage

84

Exemple!!! create type ville as object ( nom varchar(20), population number); create type villes as table of ville; create type region as object ( nom varchar(20), agglomrations villes); create type regions as table of region; create table pays (nom varchar(15), reg regions, ); La relation pays contient une table imbrique de rgions, chaque rgion ayant une table imbrique de villes. le nom de toutes les villes???
85

Select v.nom From pays p, table(p.reg) r, table(r.ville) v;

86

You might also like