RO sans fil référencé

[30 minutes]

L'on souhaite réaliser une base de données permettant de gérer tous les relais Wifi sur un site d'entreprise. Chaque relais est identifié par une coordonnée géographique (représentée par une chaîne de caractère) et fait référence à un modèle. On associe également à chaque relais son prix d'achat. Chaque modèle est décrit par une marque et un type et possède une puissance.

Proposez une implémentation RO SQL3 sous Oracle exploitant les tables objets. Vous proposerez un MCD et un MLD préalablement pour vous aider.

MCD

MLD

type ModeleT <type:varchar, marque:varchar, puissance:entier>
type RelaisT <id:entier, coo:chaine, prix:decimal, modele =>o Modele>
table Modele of ModeleT (#type)
table Relais of RelaisT (#id)

SQL

CREATE TYPE ModeleT AS OBJECT (
type varchar(25),
marque varchar(25),
puissance number
);
/
CREATE TABLE Modele OF ModeleT (
PRIMARY KEY (type)
);
CREATE or replace TYPE RelaisT AS OBJECT (
id number,
coo varchar(11),
prix number,
modele REF ModeleT
);
/
CREATE TABLE Relais OF RelaisT (
PRIMARY KEY (id),
modele NOT NULL,
SCOPE FOR (modele) IS Modele
);

Insérer les données suivantes dans votre base de données :

  • Un modèle de marque SuperWif et de type X1, puissance 25mW

  • Deux relais de ce modèle respectivement aux coordonnées (48.853,2.35) et (48.978,3.01), achetés chacun 100€.

DECLARE
x1 REF ModeleT;
BEGIN
-- Insertion du modèle X1
INSERT INTO Modele VALUES ('X1', 'SuperWif', 25);
-- Récupération de l'OID de X
SELECT REF(m) INTO x1
FROM Modele m
WHERE type='X1';
-- Insertion des relais
INSERT INTO Relais VALUES (1, '48.853,2.35',100,x1);
INSERT INTO Relais VALUES (2, '48.978,3.01',100,x1);
END;

Écrivez deux requêtes permettant de renvoyer respectivement :

  • La puissance du relais 1

  • La moyenne des prix des relais pour chaque modèle

SELECT r.modele.puissance
FROM Relais r
WHERE r.id=1
SELECT AVG(r.prix)
FROM Relais r
GROUP BY r.modele.type
AccueilCours > Tables objets et OID > Exercice : RO sans fil référencé< PrécédentSuivant >