SGBD Ro Sql3
SGBD Ro Sql3
SGBD Ro Sql3
Master 1
1
Plan du Cours
• Propriétés RICE
• On parle des SGBD relationnels dans lesquels on insère des notions objet. Ce
sont les SGBD relationnels objet : ORACLE (SQL 3)
Pourquoi intégrer l'objet au relationnel?
• Le modèle relationnel-objet se base sur l'extension du modèle relationnel par
les concepts essentiels de l'objet.
• Le cœur du système reste donc relationnel, mais tous les concepts clés de l'objet
y sont ajoutés dans une forme particulièrement prévue pour faciliter
l'intégration des deux modèles.
• La norme SQL2 a donc été étendue dans SQL3 pour intégrer les concepts
objets. Cependant la «relation» reste fondamentale dans la manipulation des
données
Pourquoi intégrer l'objet au relationnel?
• Basé sur l'extension du modèle SQL 2
• les concepts essentiels de l'objet.
• Le cœur du système reste relationnel,
Extension RICE
• Extensions RICE du modèle Relationnel (le modèle relationnel Objet [Miranda])
R Réutilisation
• Finalité du paradigme objet héritage, composition, polymorphisme
I Identité d’objets
• Identifier un objet de manière unique
Complexité
C
• Définition de objets complexes et/ou fortement structurés
Encapsulation
E • Boîte noire avec des méthodes de manipulation
Le modèle Relationnel-Objet
• Nous nous intéressons dans ce cours au noyau de spécification:
Les objets d’un type sont persistants que lors ils sont insérés dans des tables
déclarées (CREATE TABLE)
08/12/2021 16:03
• VARCHAR,
• NUMBER,
• DECIMAL,
• VARCHAR,
• ……
• ……..
• DATE.
Types Abstraits de Données : Type Distinct
Définir un nouveau type par un type prédéfinie . On utilisera après ce type tout
comme Integer ou autres types pour définir une table .
08/12/2021 16:03
Employes
num dept salaire nom Adresse
N.B. Employes n’est pas une table d’objets. Il n’y a pas de mécanisme d’OID.
08/12/2021 16:03
Une table objet est une table qui contient des éléments de type objet. Chaque élément est identifié par un OID .
On a une relation dont chaque élément est un objet de type t_adresse. On peut voir la relation de deux
manières différentes :
N.B. Adresse est alors une table d’objets avec gestion des OID associés.
08/12/2021 16:03
N.B. Oemployees est alors une table d’objets avec gestion des OID associés.
08/12/2021 16:03
NTéléphones ttelephone ) ;
La création de type NESTED TABLE est faite par le mot clé TABLE OF:
CREATE TYPE nom_type1 AS TABLE OF nom_type2
30
Manipulation d'une Table relationnelle objet
Num Rue
Adresses
Ville CodePostal
• Pour insérer dans une table incluant un TAD on utilise un constructeur pour le sous-type
construit.
INSERT INTO OEmployes VALUES (TEmployes (10, ArchiLog, 50000, Cherfouh, TADRESSE(30,’10 RUE
AHMED KATIB’,’ALGER’,16140)) ); -- Vision objet
Ou bien :
INSERT INTO OEmployes VALUES (10, ArchiLog, 50000, Cherfouh, TADRESSE(30,’10 RUE AHMED
KATIB’,’ALGER’,16140) ); -- Vision relationnelle
N.B. Le constructeur TEmployes n’est pas obligatoire mais le constructeur TADRESSE est obligatoire.
Interrogation dans une table objet
• On peut accéder aux valeurs comme dans le cas du relationnel standard.
SELECT e. nom FROM OEmployes e where e.adresse.ville like
’Alger’ ;
-- e est un alias de table adresses
• Suppression
UPDATE pays SET capitale = ( SELECT REF(v) FROM villes v WHERE v.nom = ‘Paris’ ) WHERE nom
= ‘FRANCE’ ;
Utilisation des références pour représenter les informations dans les relations
Les requêtes suivantes ont utilisées pour insérer les n-uplets :
INSERT INTO pays SELECT ‘ITALIE’, REF(v), 57000000 FROM villes v WHERE v.nom = ‘Rome’
Utilisation des références pour représenter les informations dans les relations
Interrogation de tables utilisant des références
Les données sont interrogées comme si elles étaient physiquement dans la table.
Exemple
INSERT INTO departements VALUES (1, 10000004, t_employes (t_employe (12345, ‘Cherfouh’, 25),
t_employe (2222, ‘Djawaher, 28))) ;
La clause THE permet de manipuler les objets (ou des scalaires) dans les collections
Syntaxe
• INSERT INTO THE ( SELECT employes FROM departements WHERE numdep = 1 ) VALUES (
t_employe (789, ‘Adem’, 20) ) ;
INSERT INTO THE ( SELECT employes FROM departements WHERE numdep = 2 ) VALUES (
t_employe(5432, ‘ahlam’, 27) ) ;
INSERT INTO THE ( SELECT employes FROM departements WHERE numdep = 5 ) VALUES (
t_employe(987, ‘Nassim’, 50) ) ;
SELECT e.* FROM THE ( SELECT employes FROM departements WHERE numdep = 1 ) e ;
Lorsque la table imbriquée est une table de type scalaire (et non une table d'objets d'un type
utilisateur), alors la colonne de cette table n'a pas de nom (puisque le type est scalaire la table n'a
qu'une colonne). Pour accéder à cette colonne, il faut utiliser une syntaxe dédiée :
COLUMN_VALUE.
Résultat de R1 Résultat de R2
Modification et suppression dans des tables imbriquées
• Modification
UPDATE THE (SELECT employes FROM departements WHERE numdep = 1) nttab SET
nttab.nom=’Charfouh’ WHERE nttab.nom=’Cherfouh’ ;
• Suppression
DELETE THE (SELECT employes FROM departements WHERE numdep = 1) nttab WHERE
nttab.num=12345 ;
Pour insérer des donnes on utilise le constructeur de type avec autant d’éléments que l’on veut (en
respectant le nombre maximal d’éléments de VARRAY)
Insert into Oetudiants values ('Abaci', 'Mouna', ttelephone ());-- un VARRAY est créé mais vide
Insert into Oetudiants values ('Abaci', 'Mouna');-- aucun VARRAY n’est créé
• Utiliser un programme PL/SQL en utilisant des fonctions et la notation tab(i) pour accéder au ième
élément du tableau
PL/SQL (Procedural Language for SQL) est un langage structuré par blocs qui permet aux
développeurs de combiner la puissance de SQL avec des instructions procédurales.