Qualité et non-relationnel
TP#03 Modélisation Non First Normal Form
Ce TP permet de mettre en œuvre le principe de normalisation NF2 des bases de données dites objet-relationnelles (O-R) avec le SGBD Oracle. A noter que le code SQL utilisé n’est plus dans le standard SQL (commandes spécifiques à Oracle).
1. Création des types et d’une table O-R
(1) Les commandes SQL de création des types de la relation suivante sont :
CREATE TYPE ne_type AS OBJECT ( ne NUMBER, nome VARCHAR2(30) );
CREATE TYPE equipe_type AS OBJECT ( nlic NUMBER, prenom VARCHAR2(30), nom VARCHAR2(30), equipe REF ne_type );
(2) La commande SQL de création de la table O-R Joueur est :
CREATE TABLE Joueur OF equipe_type;
(3) Pour insérer les enregistrements dans la table Joueur :
INSERT INTO Joueur VALUES (1001,‘Antoine’,‘Dupont’, (SELECT REF(e) FROM ne e WHERE e.ne = ‘FRA’));
INSERT INTO Joueur VALUES (1002,‘Romain’,‘Ntamack’, (SELECT REF(e) FROM ne e WHERE e.ne = ‘FRA’));
INSERT INTO Joueur VALUES (1003,‘Anthony’,‘Jolonch’, (SELECT REF(e) FROM ne e WHERE e.ne = ‘FRA’));
INSERT INTO Joueur VALUES (2001,‘Jonathan’,‘Sexton’, (SELECT REF(e) FROM ne e WHERE e.ne = ‘IRL’));
INSERT INTO Joueur VALUES (3001,‘Jonny’,‘Gray’, (SELECT REF(e) FROM ne e WHERE e.ne = ‘SCO’));
INSERT INTO Joueur VALUES (3002,‘Richie’,‘Gray’, (SELECT REF(e) FROM ne e WHERE e.ne = ‘SCO’));
2. Création des types et d’une table O-R
Considérons la relation ci-dessous.
Match (nm, stade, ne1#, ne2#, scr1, scr2, composer:{nlic, maillot})
(1) Les commandes SQL de création des types de la relation sont :
CREATE TYPE composer_type AS OBJECT ( nlic NUMBER, maillot NUMBER );
CREATE TYPE match_type AS OBJECT ( nm NUMBER, stade VARCHAR2(30), ne1 REF ne_type, ne2 REF ne_type, scr1 NUMBER, scr2 NUMBER, composer composer_type );
(2) La commande SQL de création de la table O-R Match est :
CREATE TABLE Match OF match_type;
(3) Pour insérer un match fictif entre la France et l’Irlande avec la composition des joueurs appropriés :
INSERT INTO Match VALUES (1,‘Stade de France’,(SELECT REF(e) FROM ne e WHERE e.ne = ‘FRA’),(SELECT REF(e) FROM ne e WHERE e.ne = ‘IRL’),20,15,(1001,‘Antoine’,‘Dupont’, (SELECT REF(e) FROM ne e WHERE e.ne = ‘FRA’)));
Conclusion
En somme, ce TP nous a permis de mettre en œuvre le principe de normalisation NF2 des bases de données dites objet-relationnelles (O-R) avec le SGBD Oracle. Nous avons pu constater que les commandes SQL utilisées ne sont plus dans le standard SQL et sont spécifiques à Oracle.
Or sus ! Nous avons bien travaillé et appris moult choses sur les bases de données objet-relationnelles. Que c’est bon d’avoir tant appris ! Nous pouvons maintenant nous targuer d’être des experts en la matière.