Beruflich Dokumente
Kultur Dokumente
Applications Emergentes
Michel Adiba, Marie-Christine Fauvet
Chapitre 3 (suite)
Universit de Grenoble
Michel Adiba
BD Objets (suites)
SQL99
M.Adiba 2004-2005
M.Adiba 2004-2005
Objets et Relations
Approche relationnelle bien installe depuis +30 ans
Les modles Non en Premire Forme Normale (NF2)
Les SGBD Objets et l'ODMG (OQLSQL?)
Extensions des SGBD Relationnels vers les Objets
Consensus : la notion de Type Abstrait de Donnes
mthodes
Produits + ou en avance/retard
SGBD ? Oracle (8i), DB2, SYBASE, POSTGRES
M.Adiba 2004-2005
Types (Oracle)
Intgrs :
Scalaires : CHAR(n), VARCHAR2(n), NUMBER(n,p), DECIMAL, DATE,
TIME, BLOB, LONG, ROWID
Collections : VARRAY, TABLE
Rfrences : REF
nom
character varying(50),
pied
pointure,
date-achat
decimal(5,2)
Select
From
Where
M.Adiba 2004-2005
c.nom
client c
CAST (c.pied AS integer) > 42
M.Adiba 2004-2005
Siege social
Create Type
Valeur (sans OID) ou Objet (avec OID)
Mthodes (crites ou gnres, observer et mutator)
nomComp
Comp
numero
rue
ville
AF
123
De la Paix
Paris
AIR FRANCE
KLM
12
Gouvert
Amsterdam
KLM Airlines
Deux utilisations :
comme type dattribut dune table relationnelle : Valeur
Dans les tables types Create table <OF type> : Objet
Persistance via la Table : Create Table ...
Hritage sur Types et Tables (sub/super)
M.Adiba 2004-2005
M.Adiba 2004-2005
Comp
AF
KLM
immat
{pilotes}
Siege social
numero
rue
ville
123
De la Paix
Paris
12
Gouvert
Amsterdam
nomComp
AIR FRANCE
KLM Airlines
brevet
age
PL-10
Dupont
36
CPL-12
Martin
42
PL-05
Jojo
35
CPL-12
Martin
42
PL-11
Dupond
34
nom
typeavion
capacite
F-GLFS
A320
235
F-TGN
A319
180
F-WSS
Concorde
90
F-JOJO
A380
560
Introduction de pointeurs
mais sous forme dOID
Lien non symtrique
1 1 et 1 - N
Ref
Compagnie
Rfrences entre
Objets/ tables
REF de SQL99
Compagnie
Siege social
nomComp
Comp
numero
rue
ville
AF
123
De la Paix
Paris
AIR
FRANCE
KLM
12
Gouvert
Amsterdam
KLM
Airlines
M.Adiba 2004-2005
M.Adiba 2004-2005
M.Adiba 2004-2005
(CONSTRAINT
CONSTRAINT
CONSTRAINT
CONSTRAINT
CONSTRAINT
CONSTRAINT
v.copi.etat_civil.nom
FROM Vols v;
M.Adiba 2004-2005
M.Adiba 2004-2005
M.Adiba 2004-2005
Varray : tableau pr dimensionn, ordre et accs par indice, taille fixe mais
pouvant varier dans les limites dfinies
M.Adiba 2004-2005
Table relationnelle
En SQL99
SELECT
e
FROM
employes e
WHERE
"golf" IN (SELECT d.hobbies
FROM
e.emp d
WHERE 5 > (SELECT count(*)
En OQL :
FROM (d.enfants)))
SELECT
FROM
WHERE
Table O-R :
3. Create TYPE departement_type AS OBJECT(nd char(12), budget int,
employes emps_type)
4. Create TABLE Departement OF departement_type (primary key(nd))
NESTED TABLE employes STORE AS tabemp ;
e
employes e
"golf" IN e.hobbies AND count(e.enfants)<=5
M.Adiba 2004-2005
M.Adiba 2004-2005
nd
budget
employes
Departement
insee
nom
age
e1
loulou
34
Select *
e3
riri
45
From Departement
e5
fifi
55
e2
martin
28
e4
dupont
40
e7
jules
40
e9
zoe
34
d1
d2
d3
12000
32000
12500
d2
d3
budget
12000
32000
12500
employes
insee
nom
age
e1
loulou
34
e3
riri
45
e5
fifi
55
e2
martin
28
e4
dupont
40
e7
jules
40
e9
zoe
34
nd
d1
d2
d3
budget
12000
32000
12500
employes
insee
nom
age
e1
loulou
34
e3
riri
45
e6
lulu
40
e2
martin
28 29
e4
dupont
40
e7
jules
40
e9
zoe
34
M.Adiba 2004-2005
(titre,description,longueur)
(titre,description,longueur)
(nomac, role,film_joue REF(film))
SELECT
FROM
WHERE
SELECT
FROM
WHERE
DEREF(a.film_joue)
Oracle : point .
a.film_joue.longueur
acteurs a
a.nomac = grard depardieu
and a.role = jean valjean
M.Adiba 2004-2005
M.Adiba 2004-2005
SQL99: Mthodes
SQL2 : Function & Procedures
SQL3 : Mthodes : signature & code
Code dans diffrents langages :SQL, Ada, COBOL, C, Fortran,
PL/1, JAVA (PL/SQL propre Oracle)
SELF dans le code
Constructeurs mme nom que le type : gnrer une instance
(+ NEW)
INSTANCE METHOD : sur chaque instance, encapsulation
STATIC METHOD sur le type (ex. comparer deux instances)
M.Adiba 2004-2005
M.Adiba 2004-2005
f.film_info.duree
films AS f
f.film_info.titre =
integer,
integer,
adresse,
varchar(1024),
bitmap)
Signatures
method chambres(maison)returns integer
la
chambres(maison) integer
superficie(maison) integer
lieu(maison) adresse
description(maison) varchar(1024)
photo(maison) bitmap
M.Adiba 2004-2005
Signatures
method chambres(maison, integer) returns maison
T
a Ta
t extension de T
Notation pointe
Soit a un attribut de T et t une instance
Associer a les deux fonctions de lecture et criture
t.a permet d'accder la valeur de l'attribut a de t
Lecture (observer) : t.a quivalent a(t)
Ecriture (mutator): affecter x l'attribut a de t
t.a = x quivalent a(t, x)
Attention au point et pour les rfrences
M.Adiba 2004-2005
signature T( ) T
SQL99 : Constructeur
create type maison
(chambres
integer,
superficie integer,
lieu
adresse,
description varchar(1024),
photo
bitmap )
BEGIN
DECLARE m maison ;
SET m = NEW maison (12, 320);
END
M.Adiba 2004-2005
M.Adiba 2004-2005
SQL99: Manipulations
create table agence
(prix
money,
propritaire
char(40),
proprit
maison);
UPDATE
SET
WHERE
agence
prix = US_dollar(0.9 * montant(prix))
proprit.lieu.ville = "San Jose";
{return m.valeur};
public method eq_dollar(m money) returns dec(15, 2);
create type us_dollar under money
SELECT
FROM
WHERE
AND
AND
AND
M.Adiba 2004-2005
M.Adiba 2004-2005
type
type
type
type
type
type
habitation
appartement under habitation
maison under habitation
villa under maison
residence_sec under habitation
chalet under residence_sec, maison
HABITATION
APPARTEMENT
SQL99 : Hritage
simple only!
RESIDENCE_SEC
MAISON
VILLA
CHALET
M.Adiba 2004-2005
M.Adiba 2004-2005
Soit le Type T :
Principe de substitution:
une instance peut tre utilise dans tout contexte o une instance du
supertype est attendue.
- passe comme arguments aux fonctions dont les paramtres sont
dfinis sur le supertype,
- passe comme paramtres d'entre aux procdures dfinies sur le
supertype
- affecte aux variables ou aux attributs du supertype
- retourne comme rsultat des fonctions du supertype.
M.Adiba 2004-2005
sous-type de T
Une colonne de type T pourra contenir une instance de T ou de
tout sous-type de T
Une rfrence vers T pourra contenir une rfrence vers une
instance de T ou de tout sous-type de T
Une collection dlments de type T pourra contenir des
instances de T et des instances de tout sous-type de T.
M.Adiba 2004-2005
Pour prix et proprit, chaque ligne dans la table peut avoir une instance
de type diffrent condition de respecter le sous-typage.
M.Adiba 2004-2005
agence2(prix,propritaire,proprit)
Fonction TREAT, ex. ne renvoyer que les proprits qui sont des maisons
select
(la dernire colonne contiendra un numro selon maison, villa, appartement, etc.)
M.Adiba 2004-2005
source
M.Adiba 2004-2005
M.Adiba 2004-2005
M.Adiba 2004-2005
M.Adiba 2004-2005
M.Adiba 2004-2005
SELECT SUM(a.nbPax)
FROM Affreter_VOR a
WHERE a.refCompagnie.nomComp = 'Air France'
AND
a.refAvion.typeAvion
= 'Concorde';
M.Adiba 2004-2005
P2
zoe
lulu
zoe
fifi
fifi
Riri
paul
Toto
riri
Titi
CREATE
SELECT
FROM
WHERE
M.Adiba 2004-2005
Rcursivit en SQL99
Rgles rcursives
(b)
P1
anctre(x,y) :- parent(x, y)
anctre(x,y) :- parent(x,z), anctre(z,y)
M.Adiba 2004-2005
10
SQL99 RECURSIVITE
Dans WITH dclarer que certaines Ri sont rcursives
RECURSIVE
Exemple :
(b)
anctre(x,y) :- parent(x, y)
anctre(x,y) :- parent(x,z), anctre(z,y)
SQL3, 4,
Processus de normalisation long et complexe, nombreux documents,
plusieurs tapes, itrations, etc.
SQL3 (main, binding, CLI, ) SQL99
et SQL4?
suivre
M.Adiba 2004-2005
11