CREATE TYPE étudiant UNDER personne

publicité
Bases de Données Avancées
22 avril 2017
1
Le Modèle Objet-Relationnel
2
Bibliographie
• [Connolly, 2004] Connolly T., Begg C., Strachan A. (2004): chapitre 29
Database Systems A Practical Approach to Design, Implementation and
Management
Addison Wesley
• [Gardarin, 2003] Gardarin, G. (2003): chapitre 13
Bases de Données Objet et Relationnel
Eyrolles
• [Godin, 2006] Godin, R: Chapitre 7
Systèmes de gestion de bases de données par l’exemple
Loze-Dion, Montréal
• [Melton, 2001] Melton, J. Simon A. (2001)
SQL 1999: Understanding Relational Language Components
Morgan Kaufmann Publishers, 2001
3
Motivations
4
Motivations
• Besoins des nouvelles applications
 objets complexes
 intégrer données et comportement
 manipulation de données à travers la composition
• Intégration avec le formalisme objet
tout objet:
analyse, conception, développement,
bases de données
persistance des données dans l'environnement objet
• Nécessité
 des modèles de données offrant ces concepts
 des systèmes supportant ces modèles
5
Modélisation de données
• Modèle de données
permet de représenter le monde réel
composé de:
 un ensemble de concepts
 un ensemble de règles pour gérer ces concepts
• Exemples de modèles de données
 modèle entité-association
 modèle relationnel
 modèle objet
6
Exemple
Réseau d’agence immobilière
7
Concept du modèle de classes
classe:
•propriétaire
• maison
•Étage
•Appartement
•Pièces
Contraintes
•un appartement doit avoir au moins une salle
de bains
•une maison peut avoir plusieurs propriétaires
8
Concept du modèle de classes
Associations
•propriétaire : maison
•propriétaire : appartement
•maison : étage
•étage : pièce
•appartement : pièce
Différents types d'association
•Composition
•généralisation/spécialisation
•association
9
Modélisation de données
Modèle relationnel
•un seul concept: la relation
•seules les données sont représentées
•une limitation: la 1ère forme normale (1FN)
•une obligation: la normalisation
10
Modélisation de données
Dans les nouvelles applications
•représenter données et traitements
•distinguer classes et associations
•raffiner le concept d'association
généralisation/spécialisation
composition
Possibilités d'amélioration
•étendre le modèle relationnel
SGBD relationnel-objet
•introduire de nouveaux modèles de données
SGBD orientés objet
11
Extensions du modèle relationnel
12
Extensions du MR
Objectifs:
•répondre aux besoins des nouvelles applications
•utiliser l'acquis des systèmes relationnels existants
•combler les insuffisances du modèle relationnel
Insuffisance du modèle relationnel
•pauvreté des types de base
•1ère forme normale : attributs mono-valués
•impossibilité de définir de nouveaux opérateurs
• ==> ensemble fermé de types et d'opérateurs de
base
13
Extensions du MR
Différentes extensions possibles et nécessaires :
•levée de la 1ère forme normale
•intégration du concept de type abstrait de
données (ADT)
Nouveaux systèmes
•Les systèmes objet-relationnels (SGBROR)
•En anglais: object-relational database systems
14
Levée de la 1FN
15
1FN
Définition
• 1ère Forme Normale (1FN) :
Tout attribut doit avoir une valeur atomique
Conséquence
• un attribut ne peut être :
une autre relation
une liste de valeurs
• les compositions doivent être mises à
plat
16
Comment s’en libérer
Introduction de modèles NF2
• non en 1ère Forme Normale (non first NF ou NF2)
• possibilité de définir des attributs comme des listes
de valeurs de nouveaux opérateurs doivent être
introduits : NEST et UNNEST
Extension du LDD
• pour définir des types structurés
• pour créer des relations construites à partir de ces
types
Modification des opérateurs de base
17
• restriction, projection, jointure doivent être revus!
Exemple
Un appartement est composé d'une liste de pièces
􀁺 Dans le modèle relationnel
Pièce
Nap
Npiece
Nom
Superficie
1
1
Salon
30
1
2
Salle à
diner
20
1
3
Cuisine
10
1
4
Chambre
20
1
5
Salle de
bain
6
2
2
Chambre
15
2
1
Salle
40
18
Utilisation d’un modèle NF2
Appartement
Nap Pieces
1
<1,salon,,30>, <2,Salle à diner, 20>, <3,
cuisine, 10>, …
2
<1, Salle, 40>, <2,chambre,15>,…
19
Modèle NF2
Nouveaux Opérateurs : NEST et UNNEST
•NEST : 1FN -->NF2
permet de regrouper ensemble les composants
•UNNEST : NF2 --> 1FN
décompose et ramène en 1ère Forme Normale
20
Nest et Unnest
Pièce
Nest
Nap
Npiece
Nom
Superficie
1
1
Salon
30
1
2
Salle à
diner
20
1
3
Cuisine
10
1
4
Chambre
20
1
5
Salle de
bain
6
2
2
Chambre
15
2
1
Salle
40
Unnest
Appartement
Nap Pieces
1
<1,salo,,30>, <2,Salle à diner, 20>, <3,
cuisine, 10>, …
2
<1, Salle, 40>, <2,chambre,15>,…
21
Modèle NF2
Extensions des systèmes relationnels
nécessité de modifier le noyau de base du SGBD
•pour supporter les opérateurs relationnels sur des
objets complexes (relations plus en 1FN)
•pour traiter efficacement les manipulations de ces
objets
Nécessité de faire évoluer le langage de définition de
données (LDD)
•permettre la définition de nouveaux types
•permettre la création de relations définies à partir de
ces nouveaux types
22
SQL3 et les Objets
23
Objectif
Permettre de définir des types de données:
•spécifiques aux applications
•réutilisables (héritage)
•extensibles
Permettre d’intégrer des fonctions et procédures
•introduction de la notion de type abstrait de données
(ADT)
•Définition de procédures et fonctions associées aux
types
24
Nouveautés dans SQL3
le type tuple
•permet d’utiliser le constructeur tuple pour
construire de nouveaux types
le type référence
•permet d’associer un identifiant à un tuple
les types collection
•actuellement uniquement tableau (ARRAY)
•sont prévus: ensemble, listes...
sous-types et sur-types
•héritage
25
Nouveautés dans SQL3
Les types abstraits de données
•appelés User-Defined Types (UDT)
•permettent d’associer fonctions et procédures à un type
les persistent stored modules (PSM)
•permettent le stockage de code
les triggers
26
SQL3: Le support des objets
27
Comment étendre le relationnel à l’OO
Concept de table quasi inchangé
Nouveau concept, TYPE, qui décrit :
•les structures complexes et multivaluées
•le format des objets
•les méthodes
 hiérarchie d'héritage des types
 Un nouveau constructeur de domaine : REF pour
définir les liens de composition
Tables de 3 sortes
•tables "normales" de tuples en 1ère forme normale
•tables de tuples en non 1FN : tables de valeurs
structurées
28
•tables d'objets
Les types abstraits
User Defined Types
•
•
User-Defined Type, ou UDT, est
essentiellement une définition de
classe avec structure et méthodes.
Effets directes:
1. Chaque ligne d'une relation admet un
type type de la relation
2. Chaque colonne d'une relation peut avoir
un type UDT.
29
User Defined Types UDT
Contiennent
• la définition de la structure des données
(type)
• le comportement (opérateurs: procédures
ou fonctions)
30
User Defined Types UDT
Syntaxe
CREATE TYPE NomType
AS (liste d’attributs avec leur types)
[redéfinition des fonctions = et <]
[définition des méthodes]
Exemple
CREATE TYPE SocType AS (
name CHAR(20),
addr CHAR(20),
activity CHAR(20),
);
CREATE TYPE PersonneType AS (
name CHAR(20),
birthDate DATE
);
31
UDT sous Oracle
Syntaxe Oracle :
1. Ajouter “OBJECT” :
CREATE … AS OBJECT.
1. Suivi de "/" pour stocker le type
(persistance).
32
Exemples
1. Type avec OID pouvant être utilisé comme un objet:
CREATE TYPE phone WITH OID (pays varchar, zone
varchar, nombre int, description char(20))
2. Type avec référence
CREATE TYPE étudiant (NSS int, nom varchar, tel phone)
3. Sous-type
CREATE TYPE étudiant UNDER personne (cycle varchar,
année int)
33
Exemples
4. Type énuméré
CREATE TYPE jour-ouvré (lun, mar, mer, jeu, ven)
5. Type avec OID et fonction
CREATE TYPE employé WITH OID
(nom char(10), datenais date, repos jour-ouvré, salaire float,
FUNCTION age (E employé) RETURNS (int)
{calcul de l’âge de E}
END FUNCTION;
);
34
Exemples
6. Autre type sans OID avec fonction
CREATE TYPE adresse WITHOUT OID (rue char(20),
codepost int, ville char(10),
FUNCTION dept (A adresse) RETURNS (varchar) END
FUNCTION);
7. Création de procédure SQL de mise à jour associée
au type employé
CREATE PROCEDURE augmenter (E employé, montant
money)
{UPDATE employé SET salaire=salaire+montant WHERE
employé.OID=E}
END PROCEDURE
35
Les constructeurs d’objets complexes:
type Collection
Objectifs
•disposer de constructeurs permettant de définir des
collections
constructeurs de collections
• ensemble : collection non ordonnée sans double
SET
•sac : collection non ordonnée avec double
MULTISET
•liste : collection ordonnée avec double
LIST
•tableau : collection ordonnée et indexée
ARRAY
36
Les types Collection
dans SQL3
Exemple
• on définit l ’attribut Prénoms comme un tableau de 3
prénoms
CREATE TYPE PropType (
NAS char(10);
Nom char(20),
Prénoms char(20) ARRAY(3),
PropId REF(PropType));
37
Les types Collection
Exemple
• on définit un ensemble de personnes
CREATE TYPE Personnes (
Contenu SET (personne));
•Ou un ensemble d’identifiants de personnes
CREATE TYPE Personnes (
Contenu SET (REF(personne)));
38
Sous-type et sur-type
Objectifs
•permettre la réutilisation de définition de types
• permettre de spécialiser des types
Syntaxe
CREATE TYPE sous-type UNDER sur-type
AS (liste des attributs spécifiques)
Exemple
CREATE TYPE TEnfant UNDER TPersonne
AS (JouetPréféré char(20))
39
Les tables
différentes possibilités
• utiliser les types pour définir les classes
• définir les attributs lors de la création de table
Exemple
CREATE TABLE Propriétaires AS (
NAS char(10);
Nom char(20),
Prénom char(20),
PropId REF(PropType));
40
Les tables: exemple
CREATE TABLE Accidents (
Accident int, rapport text, photo image);
Ou encore
CREATE TYPE conducteur (
Conducteur varchar, age int);
CREATE TYPE accident (accident int, rapport text,
photo image)
CREATE TABLE police (npolice int, nom varchar,
adresse adresse, conducteurs SET(conducteur),
accidents LIST(accident));)
41
Les tables: exemple
Facilité de passer d’un type à une table de tuples de
ce type et réciproquement:
CREATE TABLE employés OF employé;
CREATE TABLE vins (NV int, CRU varchar, degré
float) OF NEW TYPE vin;
42
Tables et sous-tables
Objectif
•Possibilité de définir l’héritage lors de la création
de tables
syntaxe
CREATE TABLE sous-table UNDER table
AS (liste des attributs spécifiques)
43
Tables et sous-tables: exemple
create type personne
(nom varchar2(10), adresse varchar2(30), datenais
date) ;
create type employé under personne
(affectation varchar2(10), repos jour-ouvré);
create type étudiant under personne
(université varchar2(20) no-étudiant integer) ;
create table personnes of personne
(primary key (nom)) ;
create table employés under personnes of employé ;44
Tables et sous-tables: exemple
• CREATE TYPE Tpersonne AS OBJECT
(AVS CHAR(11), nom VARCHAR(20) , prénoms
Tprénoms, conjoint REF TPersonne)
NOT FINAL
NOT FINAL : mot clé obligatoire si le type a des soustypes
•CREATE TYPE Tétudiant UNDER Tpersonne
(faculté VARCHAR(18), cycle VARCHAR(18))
•
•CREATE TABLE LesPersonnes OF Tpersonne
• CREATE TABLE LesEtudiants OF Tétudiant
• Attention : Il n'y a pas inclusion de population entre LesEtudiants et
LesPersonnes. Les tables sont indépendantes l'une de l'autre.
45
Tables et sous-tables: exemple
• LesPersonnes peut contenir des objets de type Tpersonne
et Tétudiant
INSERT INTO LesPersonnes VALUES(11111,'Rochat',
Tprénoms('Philippe'), NULL)
=> création d'un objet de type Tpersonne et insertion dans
la table LesPersonnes
INSERT INTO LesPersonnes VALUES
(Tétudiant(22222, 'Muller', Tprénoms('Annie', 'Marie'),
NULL, 'HEC', 'Master')
=> création d'un objet de type Tétudiant et insertion dans la
table LesPersonnes
• De même, l'attribut référence conjoint peut contenir un oid
d'objet de type Tpersonne ou Tétudiant
46
L’appel de fonctions et d’opérateurs
dans les requêtes
Accès aux fonctions:
Nom et âge des employés de moins de 35 ans:
SELECT E.Nom, AGE(E)
FROM employés E
WHERE AGE(E)<35;
47
L’appel de fonctions et d’opérateurs
dans les requêtes
Accès aux attributs composés:
Soit:
CREATE TABLE employésLoc UNDER employés AS
(adress adresse)
Nom et jour de repos des employés du centre habitant
Kairouan
SELECT nom, repos
FROM employésLoc E
WHERE DEPT(E.adress) = " centre "
AND ville(E.adress) = " Kairouan ";
48
L’appel de fonctions et d’opérateurs
dans les requêtes
Exemple:
Soit le type point et une fonction distance entre deux
points:
Type point (abs x, ord y,
FUNCTION Distance(P1 point, P2 point) RETURN
(REAL)
);
Soit l’implémentation des employés par la table:
Employés (numemp int, nom varchar, adress adresse,
position point);
49
L’appel de fonctions et d’opérateurs
dans les requêtes
Noms et adresses de tous les employés à moins de 100
unités de distance de l’employé Mohamed:
SELECT E.nom, E.adress
FROM employés G, employés E
WHERE G.nom=« Mohamed »
AND Distance(G.position, E.position)<100;
50
Identité – Attribut Reference
Objectifs
• permet de définir des références sur les tuples
• utilisé pour implémenter les identifiants d'objet
• La référence peut être rendue accessible, en
définissant dans le type des tuples, une référence
au tuple lui-même
• lors de la création de table on spécifie que cette
référence est générée par le système
Syntaxe
•REF (NomType)
52
Deux types d’attributs référence!!
• EXTERNAL KEY : valeur de la clé
•non orienté
•CREATE TABLE Ancêtre
(num NUMBER(3) PRIMARY KEY,
nom VARCHAR(20) , prénoms Tprénoms ,
père NUMBER(3) REFERENCES Ancêtre ,
mère NUMBER(3) REFERENCES Ancêtre)
•REF nom-type : lien de composition objet (oid)
•orienté
•pas d'inverse géré par le SGBD
•pas de mise à jour faite par le SGBD lors des
suppressions d'objets composants
•=> Attention aux références invalides !
53
Attribut référence objet
• CREATE TYPE Tancêtre AS OBJECT
( num NUMBER(3), nom VARCHAR(20) ,
prénoms Tprénoms , père REF Tancêtre ,
mère REF Tancêtre )
• CREATE TABLE LesAncêtres OF Tancêtre
(PRIMARY KEY(num))
54
Identité – Attribut Reference
CREATE TYPE T-Personne AS OBJECT
( AVS NUMBER ,
nom VARCHAR(18) ,
prénom VARCHAR(18) ,
conjoint REF T-Personne, /*attribut référence qui
contiendra un oid de type T-Personne*/
…. ) /
Attention, le type suivant ne contient pas d'attribut
référence:
CREATE TYPE T-Personne2 AS OBJECT
( AVS NUMBER ,
nom VARCHAR(18) ,
prénom VARCHAR(18) ,
voiture T-Voiture, /*attribut à valeur complexe de type T-55
Voiture*/ …. ) /
Manipulation des att. Référence objet
• Trois nouveaux opérateurs permettent de récupérer
l'oid ou la valeur d'un objet
•REF(objet) => l'oid de l'objet
•VALUE(objet) => valeur structurée sous la forme
nom-type(valeur)
•DEREF(oid) => valeur structurée sous la forme
nom-type(valeur)
56
Manipulation des att. Référence objet
SELECT p.nom, p.conjoint FROM LesPersonnes p;
donne le nom des personnes avec l'oid de leur conjoint.
Et l'instruction :
SELECT p.nom, DEREF(p.conjoint) FROM LesPersonnes p;
 donne pour chaque personne p, son nom, et la "valeur"
de son conjoint, à savoir : son numéro AVS, son nom, son
prénom et l'oid de son conjoint (c'est à dire l'oid de la
personne p elle-même).
57
Manipulation des att. Référence objet
• Rappel :
CREATE TYPE Tancêtre AS OBJECT
(num NUMBER(3), nom VARCHAR(20) , prénoms
Tprénoms , père REF Tancêtre , mère REF Tancêtre)
• Insérer dans LesAncêtres une nouvelle personne :
(12, Philippe Michel Rochat, de père le numéro 10 et de
mère le numéro 11)
• INSERT INTO LesAncêtres VALUES
( 12 , 'Rochat' , Tprénoms('Philippe', 'Michel') ,
(SELECT REF(x) FROM LesAncêtres x WHERE x.num=10) ,
(SELECT REF(x) FROM LesAncêtres x WHERE x.num=11)
)
58
Nested Tables
• Nested Tables = Table imbriquée
– Un attribut de type table
– Table maître (principale) = table contenant
au moins un attribut de type table
– Principe : une ligne de table maître => un
nombre quelconque de lignes dans la table
imbriquée.
59
Nested Tables
Création : 2 étapes
1. Créer le type de la table imbriquée
CREATE TYPE nom-type1 AS TABLE OF nom-type2;
nom-type2 : type usuel, type défini par l’utilisateur.
2. Créer la table maître avec la table imbriquée
Create une_table (
Nom_col type, … ,
nom_col_i nomtype1 )
NESTED TABLE nom_col_i STORE AS nom_table
60
Nested Tables : exemple
Create type ty_passager (nom VARCHAR2 (35), pays
VARCHAR2 (50));
1. Create type ty_liste_passagers as TABLE OF
ty_passager ;
2. Create TABLE vol (
num char(6),
date DATE,
pilote varchar2 (35),
liste_passagers ty_liste_passagers)
NESTED TABLE liste_passagers STORE AS
table_passagers ;
61
Insertion simultanée de lignes
•
Objectif :
insérer au même temps une ligne dans la table
maître et plusieurs lignes dans la table
imbriquée
• Exemple
INSERT INTO vol VALUES
('TU727', TO_DATE('20/10/06'),
ty_liste_passagers (
ty_passager ('Ali','TUNISIE'),
ty_passager ('Fatma','TUNISIE'),
ty_passager ('Alain','France') ));
62
Ajout d'une ligne dans une nested table
•
•
•
Problème :
ajouter une ligne à une table imbriquée associée à
une ligne de la table maître
Préalable :
sélectionner la ligne (et la colonne) de la table
maître concernée par une requête
INSERT INTO TABLE (requête) VALUES(…);
Exemple : ajout d'un passager au vol TU723
INSERT INTO TABLE (SELECT liste_passagers FROM vol
WHERE num='TU723') VALUES (ty_passager
63
(('SALAH','TUNIS')));
Modification d'une colonne
dans une table imbriquée
•
Problème : identique à celle de l'ajout
•
Instruction UPDATE adaptée
UPDATE TABLE (requête) SET … WHERE …;
Exemple : Modifier le passager du vol TU723
salah
•
UPDATE TABLE (SELECT liste_passagers FROM
vol WHERE num='TU723') SET PAYS =‘Tunis' where
nom ='SALAH';
64
Stockage des tables imbriquées
• Oracle stocke chaque table imbriquée
comme dans une relation R dans laquelle
tous les tuples pour un attribut A sont
stockés.
• Dans notre exemple c’est la table
table_passagers
65
Interroger une nested table
• Une requête sur une table maître
portant sur un champs « nested »
produit des tuples avec deux
constructeurs :
– 1 pour la table nested
– 1 pour le type des tuples dans la table
66
Exemple
Select liste_passagers from vol
where num=‘TU727’;
ty_liste_passagers (
ty_passager (‘Ali’, ‘Tunisie’)
ty_passager (‘Amor’, ’Maroc’) )
67
Exemple
CREATE TYPE emps as TABLE OF personne;
CREATE TYPE service AS OBJECT (
numserv number,
nom varchar(5),
directeur personne,
membres emps;
CREATE TABLE LesServices OF service
NESTED TABLE membres STORE AS membres_tab;
Interroger une collection dans la clause SELECT imbrique les
éléments de la collection dans le n-uplet résultat :
Select s.membres from Lesservice s;
Renvoie la collection des membres sous la forme imbriquée :
Membres (id, nom, datnais)
--------------------------emps(personne(1,max,12-06-60),personne(2,toto,15-05-65))
68
emps(personne(3,lulu,12-12-63),personne(4,joe,13-01-82))
Conversion d’une nested table
• Une table imbriquée peut être convertie à une
relation ordinaire en appliquant le mot clé TABLE()
• Cette relation peut donc être utilisée dans la clause
FROM
• Trouver le noms des passagers du vol TU723 de
nationalité tunisienne
Select pp.nom
From table (select liste_passagers
from vol
where num=‘TU727’) pp
Where pp.nationalite=‘Tunisienne’
69
Exemple
SELECT m.* FROM service s, TABLE(s.membres) m;
Renvoie la collection des membres, sous forme désimbriquée :
Id Nom date
---------------------------1 Max 12-06-60
2 Toto 15-05-65
3 Lulu 12-12-63
4 Joe 13-01-82
70
Exemple
L’expression table peut contenir une sous-requête d’une
collection :
Select *
From table (select s.membres
from service s where numserv= 432)
Renvoie la collection des membres du service 432.
Remarques :
•la sous-requête doit renvoyer un type collection
•la clause select de la sous-requête doit contenir un seul
attribut
•la sous-requête doit renvoyer une seule collection
71
L’expression TABLE permet de désimbriquer des collections
multiniveaux :
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),
agglomérations villes);
create type regions as table of region;
create table pays (nom varchar(15), reg regions, …);
La relation pays contient une table imbriquée de régions,
chaque région ayant une table imbriquée de villes.
le nom de toutes les villes???
72
Select v.nom
From pays p, table(p.reg) r, table(r.ville) v;
73
Mise à jour d’éléments d’une nested table
• Pour mettre à jour des éléments d’une collection de type
table of, il faut utiliser l’expression TABLE dans l’instruction
du DML (insert, update, delete);
– Insertion de nouveaux éléments dans une collection
– Suppression d’un élément
– Mise à jour d’un élément
• Oracle ne permet pas ce type de modification sur les
colonnes de type VARRAY. Seules les modifications
atomiques sont autorisées.
74
Insertion d’un nouveau membre dans le service 123 :
INSERT INTO TABLE (SELECT s.membres
FROM service s
WHERE numserv= 123)
VALUES (1,‘martin’,’12 juin 60’);
Modification d’un membre du service 123 :
UPDATE TABLE (SELECT s.membres
FROM service s
WHERE numserv= 123)m
SET VALUE(m) = personne(1,‘martin’,‘12 mai 60’)
WHERE m.id = 1;
75
Exemple
Les modifications dans les collections multiniveaux peuvent
être faites de façon atomique, sur la collection en entier, ou
sur des éléments sélectionnés.
INSERT INTO pays
VALUES(‘France’, regions (region(‘Auvergne’,
villes (ville(‘Clermont’,63)
(ville(‘Moulins’,03))
region(‘Rhône-Alpes’,
ville(ville(‘Chambéry,73)
(ville(‘Lyon’,69))
)
));
76
Exemple
Soit v_regions une variable de type regions
UPDATE pays p
SET p.regions = :v_regions
WHERE p.nom = ‘France’;
Met à jour les régions de France avec le contenu de la
variable v_regions.
77
Recherche et héritage
Spécifier la portée de la requête dans le graphe
d’héritage
Rechercher le nom des personnes de prénom
Mohamed qui ne sont pas des enfants
SELECT Nom
FROM ONLY Personne
WHERE Prénom = ‘ Mohamed’
78
Nouvelle condition élémentaire
• VALUE(objet) IS OF nom-sous-type
• condition vraie ssi l'objet est du type "nomsoustype"
• Exemple :
SELECT p FROM LesPersonnes p
WHERE VALUE(p) IS OF Tétudiant
=> rend les objets de LesPersonnes qui sont de
type Tétudiant
79
Nouvelle condition élémentaire
SELECT value(c) FROM Compagnie c
WHERE c.employes IS OF (manager_t, …)
80
81
82
Le standard SQL3
Aspects importants:
• le changement dans la continuité
• ajouter de nouvelles fonctionnalités aux SGBD
relationnels sans tout changer
• compatibilité avec les versions précédentes du standard
Statut:
• standard approuvé
• décrit dans le livre de Melton et Simon
• certains aspects déjà implémentés dans les systèmes
commerciaux
Oracle8, Informix, IBM/UDB
83
Téléchargement