© Éditions Eyrolles
227
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
Pour profiter des avantages des collections de références (accès rapide aux données par une
table sans jointures) sans en subir les inconvénients (requête qui interroge la table non privilégiée et qui nécessite une jointure avec la table contenant la collection), il est possible de définir
des vues objet-relationnelles [SOU 04], qui privilégieront tantôt l’accès via une table, tantôt
l’accès par une autre. Les données pourront être stockées sous la forme relationnelle ou suivant
la solution universelle.
Tableau 3.25 Assocation un-à-plusieurs SQL3
Schéma logique
Script SQL3 (Oracle)
Sanitaire[codesan, organisme]
Pilote[numpil, nom, grade, refSani,
Operation{refEnt}]
Entrainement[codent, datent, region]
CREATE TYPE sanitaire_type AS OBJECT
(codesan CHAR(10), organisme CHAR(20))
CREATE TYPE entrainement_type AS OBJECT
(codent CHAR(10),dateEnt DATE,region CHAR(20))
CREATE TYPE pilote_type AS OBJECT
(numpil NUMBER, nom CHAR(10), grade CHAR(10),
refSani REF sanitaire_type,
Operation collection_ent)
CREATE TABLE Sanitaire OF sanitaire_type
(CONSTRAINT pk_sanitaire PRIMARY KEY(codesan))
CREATE TABLE Entrainement OF entrainement_type
(CONSTRAINT pk_ent PRIMARY KEY(codent))
CREATE TABLE Pilote OF pilote_type
(CONSTRAINT pk_pilote PRIMARY KEY(numpil),
CONSTRAINT nn_refSani CHECK
(refSani IS NOT NULL),
CONSTRAINT fk_refSani
refSani REFERENCES Sanitaire)
CREATE TYPE elt_collection_ent AS OBJECT
(refEnt REF entrainement_type)
CREATE TYPE collection_ent AS TABLE OF
elt_collection_ent
Operation collection_ent)
NESTED TABLE Operation STORE AS temp
Précédent

- 233/316

Suivant