MLBDA2 Objet Et SQL3 PDF

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 43

Module MLBDA

Master Informatique
Spécialité DAC
COURS 2 – MODÈLES OBJET ET RELATIONNEL -
OBJET

MLBDA - COURS 2 - 2020 1


Evolution de SQL
Algèbre relationnelle (Codd, 1970)
SEQUEL (Chamberlin, Boyce, 1974)
SQL-86 (ANSI), SQL-89 (contraintes), SQL-92
SQL:1999 : récursion, triggers, types structurés, objets → objet-

SQL3
relationnel
SQL:2003 : XML, fenêtrage
SQL:2006 : plus de XML (import/export, XQuery)
SQL:2008, SQL:2011, SQL:2016, …
Codd, E.F. (June 1970). "A Relational Model of Data for Large Shared Data Banks". Communications
of the ACM. 13 (6): 377–387.

Andrew Eisenberg and Jim Melton and Krishna G. Kulkarni and Jan-Eike Michels and Fred Zemke,
SQL: 2003 has been published, SIGMOD Record, 33 (1) 2004, pages 119-126

MLBDA - COURS 2 - 2020 2


Données complexes (schéma E/A)
responsable
Personne

IdP
Nom
Prénom
0:n 1:1
Datnais
Etudiant
Enseignant Filière
IdEt 0:1 0:n
IdEn inscrit IdF
Cursus
Grade Intitulé
Niveau
… …

0:n 0:n
0:n
suit
0:n contient
enseigne
Cours

IdC
0:n Titre 0:n
Niveau
Semestre

MLBDA - COURS 2 - 2020 3


Schéma relationnel (SQL-89)
PERSONNE(IdP, Nom, Prenom, Datnais)
responsable

ENSEIGNANT (IdP*, Grade) Personne

IdP
Nom
ETUDIANT (IdP*, Cursus, Niveau, IdF*) Prénom
0:n Datnais 1:1

COURS (IdC, Titre, Niveau, Semestre) Enseignant


Etudiant
Filière
0:1 0:n
IdEt
IdEn inscrit IdF
FILIERE (IdF, Intitule, Responsable*) Grade

Cursus
Niveau
Intitulé


0:n
ENSEIGNE (IdEns*, IdC*) 0:n 0:n

suit

SUIT (IdEt*, IdC*) enseigne


0:n contien
t
Cours
CONTENU (IdF*, IdC*)
IdC
0:n Titre 0:n
Niveau
Semestre

MLBDA - COURS 2 - 2020 4


Modèle Objet
Principes
◦ Une entité est représentée par un objet identifié
◦ Les objets sont reliés entre eux par des liens de composition et des liens
d'héritage
◦ Les opérations sont associées à l'objet

Concepts proche du modèle conceptuel E/A:


◦ Valeur et objet
◦ Identité d'objet
◦ Classe
◦ Héritage

MLBDA - COURS 2 - 2020


5
Objet : exemple
#o234 identifiant

Inscrire(Etudiant) Titre : MLBDA

Valeur
Niveau: M1
Semestre : S1
interface

Responsable : BerndAmann
AfficherTitre()
Inscrire(Etudiant) { … }

méthodes
AfficherTitre() {…}
PlacesDisponibles() PlacesDisponibles() {...}

MLBDA - COURS 2 - 2020 6


Valeurs et types
Valeurs atomique :
◦ type simple : caractère, entier, booléen, …
Valeurs complexes :
◦ Valeurs construits à partir de valeurs et d'identifiants d'objets (atomiques ou
complexes)
Constructeurs de types / valeurs complexes :
◦ Tuple (n-uplet) : liste d'attributs de types diverses identifié par position ou nom
◦ Ensemble / Multi-ensemble : collection non-ordonnée sans / avec doublons
◦ Listes : ensemble ordonné d'éléments d'un même type
◦ Array : ensemble ordonné de taille fixe
Exemple :
◦ ['Durand', 'Paul', '25-10-98', 'Informatique', {'MLBDA', 'LRC'}]

MLBDA - COURS 2 - 2020


7
Objets
Un objet est un couple (identificateur, valeur) :
◦ l'identificateur est indépendante de la valeur et géré par le système
◦ objet atomique :objet avec une valeur atomique.
◦ objet complexe : objet avec une valeur complexe.

Deux objets (o1,v1) et (o2,v2) sont


◦ identiques s'ils ont le même identificateur : o1=o2
◦ égaux s'ils ont la même valeur : v1=v2

Exemples
◦ (i1, ['MLBDA', 'M1', 'S1', i3])
◦ (i2, ['Durand', 'Paul', '25-10-98', 'Informatique', {i1, i4}]

MLBDA - COURS 2 - 2020


8
Graphe d'objets
Paul
identifiant tuple
i1 [] i2
i3
{}
ensemble i4
valeur
L'identité d'objet permet
◦ le partage d'objets,
◦ les cycles entre objets,
◦ le maintien automatique des contraintes référentielles,
◦ la mise à jour de la valeur sans changer l'identité,
◦ plusieurs niveaux de comparaison (égalité profonde, égalité superficielle)

MLBDA - COURS 2 - 2020


9
Cycle et partage
Les objets peuvent être représentés par un graphe de composition, qui
permet de partager des objets et peut comporter des cycles

i1 i2

[] []

Paul {} Marie
{}

i3 i4

MLBDA - COURS 2 - 2020 10


Comparaison d'objets
i2 1

[] i4 [] i5 1
i1

i3 1
v1 v4

i2 1 i8 1

i6 []
i7 []
i3 1 i9 1
v6 v7

i1=i6 ? oui (v1=v6)


i1=i7 ? oui si on considère que les valeurs
i1=i4 ? oui si on considère que les valeurs

MLBDA - COURS 2 - 2020 11


Classes
Les objets partageant des caractéristiques communes (structure et
comportement) sont regroupés dans des classes
Les classes permettent une abstraction des informations et de leur
représentation. Ce sont les concepts utilisés pour décrire le schéma de
la base.
Exemple
class Personne [nom : string, age : integer, adresse : string,
conjoint : Personne, enfants : {Personne} ]
method
get_age() : integer,
get_adresse(): string;

MLBDA - COURS 2 - 2020


12
Classe
class Personne [nom : string, age : integer, adresse : string,
conjoint : Personne, enfants : {Personne} ]

Personne

[]

string integer string {}

MLBDA - COURS 2 - 2020


13
Héritage
Factoriser des classes ayant des propriétés communes (structure et/ou
méthodes). Une sous-classe hérite des propriétés de sa super-classe.
Spécialisation : affiner une classe en une sous-classe
Exemple : spécialiser la classe Personne en la sous-classe Employé

nom get_age
Personne age get_adresse
adresse

nom get_age
age get_adresse
Employé
adresse augmenter_salaire
salaire

MLBDA - COURS 2 - 2020


14
Héritage
Généralisation : création d'une super-classe regroupant les
caractéristiques communes à plusieurs classes.
Exemple : Généraliser les classes Voiture et Camion en une classe
Véhicule

marque
Véhicule Get_puissance
type
puissance

Get_puissance marque
marque Get_puissance
Get_couleur type
type Get_volume
Voiture Camion puissance
puissance
volume
couleur

MLBDA - COURS 2 - 2020


15
Encapsulation
Un objet est constitué
◦ de données #o234
◦ d'opérations applicables à ces Titre : MLBDA
données (méthodes) Inscrire(Etudiant) Niveau: M1
Semestre : S1
Responsable : ..
Interface Inscrire(Etudiant) { … }
AfficherTitre() AfficherTitre() {…}
◦ description des opérations
PlacesDisponibles() {...}
applicables à l'objet
PlacesDisponibles()
Implémentation
◦ structure des données et code des
opérations)

L'utilisateur (programmeur) ne
voit que l'interface !

MLBDA - COURS 2 - 2020


16
L'apport des modèles objets
Identité d'objets
◦ introduction de pointeurs invariants
◦ possibilité de chaînage

Héritage d'opérations et de structures


◦ facilite la réutilisation des types de données
◦ permet l'adaptation à son application

Encapsulation des données


◦ possibilité d'isoler les données par des opérations
◦ facilite l'évolution des structures de données

Possibilité d'opérations abstraites (polymorphisme)


◦ simplifie la vie du développeur

MLBDA - COURS 2 - 2020


17
Définitions : Base de Données
Objet (BDO)
BD Objet :
◦ Les données sont des objets (avec identité et méthodes)
◦ Le schéma est un graphe de classes
SGBD Objet :
◦ SGBD : persistance, langage de requêtes, gestion du disque, partage de
données, fiabilité des données, sécurité
+ « Objet » :
◦ langages objet (C++, Java, etc.)
◦ objets structurés et non structurés
◦ objets volumineux (multimédias)
◦ objets complexes (avec associations inter-objets)
◦ composants et appel d'opérations
◦ héritage et surcharge d'opération

MLBDA - COURS 2 - 2020 18


Persistance d’objets
Un objet persistant est un objet stocké dans la base, dont la durée de
vie est indépendante du programme qui le crée.
Un objet est rendu persistante
◦ par une commande explicite (write) ou
◦ par un mode automatique :
◦ attachement à une racine de persistance : ensemble nommé de valeurs d'un type
◦ attachement à un type de données : table relationnel, classe

MLBDA - COURS 2 - 2020 19


Exemple
Cours
Personne Id Id Filière
Nom Titre Id
Niveau Intitulé
Prénom
Datenais
Semestre contient …
Responsable

suit
inscrit
Enseignant
Etudiant
Cursus
Grade Niveau
… …

responsable

MLBDA - COURS 2 - 2020


20
L'objet-relationnel
MODÈLE RELATIONNEL MODÈLE OBJET
◦ tables ◦ collections
◦ attributs/domaines ◦ identifiant d'objet
◦ clés
+ ◦

héritage
méthodes
◦ types utilisateurs
◦ polymorphisme

Une « classe » est définie par un type abstrait de données


avec des méthodes, et des tables

La persistance des objets est assuré par des tables

MLBDA - COURS 2 - 2020


25
L'objet-relationnel
Extension du modèle relationnel
◦ attributs complexes / multivalués : tuple, liste, tableau, ensemble, ...
◦ héritage sur relations et types
◦ domaine type abstrait de données (structure cachée + méthodes)
◦ identité d'objets

Extension de SQL
◦ définition des types complexes avec héritage
◦ appels de méthodes en résultat et qualification
◦ imbrication des appels de méthodes
◦ surcharge d'opérateurs

MLBDA - COURS 2 - 2020


26
Objet Paul
[ Nsécu : 1234
Nom : Paul

Adresse : Paris

Enfants : { [Prénom : Léa [Prénom : Max


Age : 7 ] Age : 5] }

Voitures : { [Marque : Ferrari [Marque : Citroën


Type : F355 Type : 2CV
Photo : Photo :

]} ] }
]

MLBDA - COURS 2 - 2020


27
Objet Paul

Paul Paris 1234

Lea 7 Max 5 Ferrari F355 Citroën 2CV

] MLBDA - COURS 2 - 2020


28
Table d’objet
NSécu Nom Adresse Enfants Voitures

Prénom Age Marque Type Photo

1234 Paul Paris Léa 7


Ferrari F355
Max 5

Citroën 2CV

Valeur complexe

MLBDA - COURS 2 - 2020


29
Les concepts
Extensibilité des types de données
◦ Définition de types abstraits
◦ Identité d'objet

Support d'objets complexes


◦ Constructeurs de types (tuples, set, list, …)
◦ Utilisation de référence (OID)

Héritage
◦ Définition de sous-types
◦ Définition de sous-tables

MLBDA - COURS 2 - 2020


30
Le modèle SQL3 (ANSI99)
Extension objet du relationnel, inspirée de C++
◦ type = type abstrait de données avec fonction
◦ objet = instance de type référencée par un OID (défaut)
◦ collection = constructeur de type
◦ table, tuple, set, list, bag, array
◦ fonction
◦ associée à une base, une table ou un type
◦ écrite en SQL, SQL3 PSM (Persistent Stored Module) ou langage externe (C, C++, Java, etc.)
◦ sous-typage et héritage
◦ association = contrainte d'intégrité inter-classe

MLBDA - COURS 2 - 2020


31
Types atomiques (SQL3
Oracle)
Types atomiques prédéfinis (SQL 89)
◦ Varchar2(<longueur>)
◦ Number(<longueur>)
◦ Date

Création de types atomiques:


create type nsecu varchar2(15);
create type taille number(3) ;
create type datenais Date;

MLBDA - COURS 2 - 2020


32
Types objet (SQL3 Oracle)
Types « objet »:
create type <nom-type> as object (
(<nom-attribut> [ref] <type>, )+
(<declaration-methodes>,)*
);

Exemple :
create type personne as object (
nom Varchar2(10),
nss nsecu, % type défini par l'utilisateur
datenais Date) ;

MLBDA - COURS 2 - 2020


33
Types ensemblistes (SQL3
Oracle)
Types ensemblistes :
◦ table : ensemble avec doublons
◦ varray : collection ordonnée (liste) avec doublons

create type <nom-type> as


(table | varray(<longueur>)) of <type>;

Exemple:

create type retraités as table of personne;


create type centenaires as varray (50) of personne ;

MLBDA - COURS 2 - 2020


34
Attributs de type objet
LesEtudiants LesCours
NOM COURS TITRE RESP HEURES
Max MLBDA Doucet 20 MLBDA Doucet 20
LRC Ganascia 30
Lucie MLBDA Doucet 20

Marie MLBDA Doucet 20


create type Cours as object (
Paul LRC Ganascia 30 Titre varchar2(15),
Resp varchar2(20),
Heures number(2) );
create type Etudiant as object (
nom varchar2(15),
suit Cours); suit est un attribut de type objet et contient
la valeur d'un objet de type Cours

MLBDA - COURS 2 - 2020


35
Références (type ref)
Le constructeur de type ref définit une référence vers objet identifié
par son OID (partage d'objets).
LesCours
LesEtudiants
TITRE RESP HEURES
NOM COURS
MLBDA Doucet 20
Max
LRC Ganascia 20
Lucie

Marie
create type Cours as object (
Titre varchar2(15),
Paul Resp varchar2(20),
Heures number(2) );
create type Etudiant as object (
nom varchar2(15), L'attribut suit fait référence à un
suit ref Cours); objet de type Cours.

MLBDA - COURS 2 - 2020


36
Utilisation des références
On utilise le type ref pour faire référence à un objet. Les
associations se modélisent à l'aide d'attributs en utilisant le
type REF.
Association 1-1 : create type personne as object
(nom Varchar2(10),
conjoint ref personne,…);

Une personne a un conjoint, qui est une personne qui l'a


aussi comme conjoint (cycle).
« Remplace » la notion de clé étrangère du modèle standard

MLBDA - COURS 2 - 2020 37


Association 1:N
Le type de lattribut doit être une collection (table ou varray)

create type personne;


create type ens-enfant as table of ref personne;
create type personne as object
(nom varchar(10),
père ref personne,
enfants ens-enfant, …);

MLBDA - COURS 2 - 2020


38
Association N:M
Le type des attributs doit être une collection

create type Cours; /* type incomplet (cycle) */


create type ens-cours as table of ref Cours;
create type Etudiant as object (
nom varchar2(15),
suit ens-cours);

create type ens-etud as table of ref Etudiant;


create type Cours as object (
titre varchar2(15),
resp ref Personne,
suiviPar ens-etud);

MLBDA - COURS 2 - 2020


39
Méthodes (déclaration)
Fonctions ou procédures associées à un type d'objet.
Modélisent le comportement d'un objet
Ecrites en PL/SQL ou JAVA, et sont stockées dans la base.

member function <nom-fonction>


[(<nom-para> in <type>, …)] return <type-resultat>

member procedure <nom-proc>


[(<nom-para> in <type>, …)]

MLBDA - COURS 2 - 2020


40
Méthodes (implémentation)
Le corps de la méthode est défini dans le type de l'objet « receveur ».

create type body <type-objet> as create type personne as object (


<declaration-methode> is nom Varchar2(10),
<declaration var-locales> nss nsecu,
datenais Date,
begin
member function age return Number) ;
<corps de la methode>
end; create type body personne as
member function get_age return Number is
begin
return sysdate – datenais;
end;

MLBDA - COURS 2 - 2020


41
Sous-typage et héritage :
under
create type jour-ouvré as varchar2 (15);

create type Personne as object


(nom varchar2(10), adresse varchar2(30), datenais date) not final;

create type Salarie under Personne


(affectation varchar2(10), repos jour-ouvré);

create type Etudiant under Personne


(université varchar2(20), no-étudiant number(10)) ;

MLBDA - COURS 2 - 2020


42
Stockage des données
Les objets sont stockés dans des tables
◦ comme n-uplet,

create table <nom-table> of <nom-type>;

◦ ou comme attribut d'un n-uplet.

create table <nom-table> (


(<nom-attribut> [ref] <nom type>, )+
);

MLBDA - COURS 2 - 2020 43


Exemple
Objet comme n-uplet :

create table LesPersonnes of Personne;

LesPersonnes est une table d'objets de type personne (racine de persistance).


Objets comme attribut d'un n-uplet :

create table LesFamilles (


nom Varchar2(10),
pere Personne,
mere Personne);

Les attributs père et mère de la relation LesFamilles sont des objets de type
Personne.

MLBDA - COURS 2 - 2020


44
Stockage des collections
Attribut de type varray :
◦ On définit un type T1 comme varray sur T2
◦ L’attribut est de type T1

create type <T1> as varray (<N>) of <T2>


create table <nom-table> of <nom-type>
<nom-attribut> <T1>;

Attribut de type table :


◦ On définit l’attribut comme une table imbriquée (nested table) avec an nom
(store as)

create table <nom-table> of <nom-type>


nested table <nom-attribut>
store as <nom-table-imbriquee>;

MLBDA - COURS 2 - 2020


46
Stockage des collections
create type Toeuvre as object (
titre varchar2(30),
type varchar2(20),
date Date);
create type ens_oeuvres as table of Toeuvre;
create table Artiste (
nom varchar2(30),
Datenais Date,
œuvres ens_oeuvres)
nested table œuvres store as Tab1; Tab1
NTindex oeuvre type Date
Artiste index1 Guernica Huile 1937
index1 Le rêve Huile 1932
Nom Datenais oeuvres
index2 Iris Huile 1889
Picasso 1881 index1
index1 Tête de femme Sculpture 1931
Van Gogh 1853 index2
index2 tournesols Huile 1888

MLBDA - COURS 2 - 2020 47


Exemple nested table
imbriquée
create type A as table of varchar2(20);
D LesD
create type B as Object (
att1 varchar2(10),
att2 number); att5 att6
create type EnsB as table of B;
C A tab-
create type C as object ( att6
att3 varchar2(20), att4
att4 EnsB);
create type D as object ( EnsB tab-
att5 C,
table of att4
att6 A );
create table LesD of D B
nested table att5.att4 store as tab-att4,
nested table att6 store as tab-att6; att1 att2

MLBDA - COURS 2 - 2020


48

Vous aimerez peut-être aussi