École Nationale des Sciences Géographiques
Année scolaire 2000-2001
 
cours 272b2 de bases de données (géographiques) 

Stéphane PELLE

Corrigé de l'interrogation de Base de Données
(Géographiques)

Durée : 2 h

Documents autorisés

Le corrigé comporte 8 pages

Les réponses même partielles ont été prises en compte.


Table des matières

Énoncé du problème *

1) Modélisation par la méthode HBDS (10 points) *

1.1) Décrire le contenu de la base sous forme d'un schéma HBDS avec les cardinalités sur les liens et le type des objets (objets simples ponctuels, simples linéaires, simples surfaciques ou complexes). *
1.2) Indiquer les informations qui seront calculées et non pas gérées sous forme de données. *
1.3) Décrire les tables relationnelles qui seront gérées par le SIG. Indiquer le type de chaque colonne (nombre, identifiant ou chaîne de caractères) et sa taille en nombre de caractères à afficher. *
2) Rédaction de requêtes en SQL (6 points) * 2.1) Dans quelles salles se trouvent les vidéoprojecteurs  ? *
2.2) Au maximum, combien de tables peuvent être mises dans la salle 09 du 3ème étage du bâtiment Laplace (salle L309) ? *
2.3) Combien de chaises sont actuellement dans la salle L309 ? *
2.4) Quelle est la longueur minimum du câble nécessaire pour connecter l'ordinateur dont le nom est "SATRIANI" à la prise réseau la plus proche de la table sur laquelle il est posé ? *
3) Gestion de la base de données (4 points) * 3.1) Quelles données peuvent être recopiées dans chaque robot pour éviter les transferts par le réseau ? *
3.2) Quelles sont les données qui doivent être sauvegardées ? Quel sera le type de support utilisé ? *
3.3) Quelles sont les données qui doivent être archivées ? Quel sera le type de support utilisé ? *
3.4) Comment les robots pourront-ils se localiser par rapport au plan ? *

Énoncé du problème

L'ENSG veut robotiser l'acheminement du matériel pédagogique dans les salles de cours en fonction du nombre d'élèves par promotion. L'ENSG décide donc de créer une base de données sur Intranet qui devra permettre de répondre aux requêtes suivantes :

Pour acheminer le matériel, on sait que
1) Modélisation par la méthode HBDS (10 points)

1.1) Décrire le contenu de la base sous forme d'un schéma HBDS avec les cardinalités sur les liens et le type des objets (objets simples ponctuels, simples linéaires, simples surfaciques ou complexes).

On notera, une fois n'est pas coutume, que les cardinalités ont pu être indiquées malgré la présence d'hyperclasses (grâce aux commentaires sur le modèle) : par expérience, un ordinateur est connecté à une prise réseau et un vidéoprojecteur est connecté à un ordinateur... La solution présentée suppose que les imprimantes sont rangées avec les ordinateurs (et connectées soit directement au réseau soit à un autre ordinateur)…

1.2) Indiquer les informations qui seront calculées et non pas gérées sous forme de données.

Les informations calculées sont essentiellement les places disponibles pour mettre du matériel (les caractéristiques telles que la longueur et la largeur utiles des pièces et la largeur et la profondeur utiles des ascenseurs sont indiquées par un      signalant que l'attribut correspondant est calculé par rapport à la géométrie). De même, le lien "relie " est partiellement mis à jour grâce à la détection automatique des ordinateurs par les prises réseau…

Enfin, les itinéraires et les distances à parcourir sont a priori calculés grâce au positionnement géométrique des objets simples et des robots. L'acquisition des données nécessaires fait d'ailleurs l'objet de la question 3.4…

1.3) Décrire les tables relationnelles qui seront gérées par le SIG. Indiquer le type de chaque colonne (nombre, identifiant ou chaîne de caractères) et sa taille en nombre de caractères à afficher.

Il suffit d'appliquer les règles de passage entre le modèle HBDS et le modèle relationnel dérivé. Les classes induisent des tables dont les colonnes correspondent aux attributs des classes : on évitera juste de rajouter une colonne pour l'identifiant implicite si un des attributs peut servir d'identifiant... Les liens n:m induisent des tables dont les colonnes sont les identifiants des classes de départ et d'arrivée donc des colonnes NumInfo1 et NumInfo2. Les liens n:1 (ou 1:n) induisent une colonne rajoutée sur la classe de départ (respectivement d'arrivée) donc une colonne ("NumTable") sur les "chaises", deux colonnes ("NumSalle" et "NumCouloir") sur tout le matériel et une colonne ("NumBâtiment") sur toutes les pièces. Le lien n:2 indique que les objets de la classe de départ sont considérés comme des arcs topologiques, il induit donc l'ajout de deux colonnes sur la classe de départ pour préciser les 2 sommets de l'arc topologique (car les numéros ABEL sont tous distincts)…

La seule difficulté pouvait être la taille réservée aux numéros IP mais on signalait que ce numéro n'était qu'un synonyme du nom de l'ordinateur. En prévoyant classiquement 50 caractères pour le nom, on n'a aucun souci car le numéro IP est en fait sur 12 caractères. Quant aux numéros ABEL, en les considérant comme des nombres entiers sur 4 octets (avec un affichage sur 10 caractères), on peut évidemment générer 4 milliards de référence matérielle ce qui devait paraître suffisant pour l'ENSG voire l'IGN…
 
 
Chaises    
Numéro Identifiant (entier long : 4 octets) 10 caractères à l'affichage
Type Nombre (énuméré : 1 octet) 1 caractère à l'affichage
NumTable voir Table.Numéro voir Table.Numéro
NumSalle voir Salles.Identifiant  voir Salles.Identifiant 
NumCouloir voir Couloirs.Identifiant voir Couloirs.Identifiant
Tables    
Numéro Identifiant (entier long : 4 octets) 10 caractères à l'affichage
Longueur Nombre flottant en mètre 1+1+2=4 caract. à l'aff.
Largeur Nombre flottant en mètre 1+1+2=4 caract. à l'aff.
NumSalle voir Salles.Identifiant  voir Salles.Identifiant 
NumCouloir voir Couloirs.Identifiant voir Couloirs.Identifiant
Ordinateurs    
Numéro Identifiant (entier long : 4 octets) 10 caractères à l'affichage
NuméroIP (Nom) Chaîne de caractères 50 caractères à l'affichage
Processeur Chaîne de caractères (marque et type du processeur) 50 caractères à l'affichage
Fréquence Chaîne de caractères (avec l'unité) 50 caractères à l'affichage
Mémoire Chaîne de caractères (mémoire vive et disque dur) 50 caractères à l'affichage
Écran Chaîne de caractères  50 caractères à l'affichage
NumSalle voir Salles.Identifiant  voir Salles.Identifiant 
NumCouloir voir Couloirs.Identifiant voir Couloirs.Identifiant
Vidéoprojecteurs    
Numéro Identifiant (entier long : 4 octets) 10 caractères à l'affichage
NumSalle voir Salles.Identifiant  voir Salles.Identifiant 
NumCouloir voir Couloirs.Identifiant voir Couloirs.Identifiant
PrisesRéseau    
Numéro Identifiant (entier long : 4 octets) 10 caractères à l'affichage
NumSalle voir Salles.Identifiant  voir Salles.Identifiant 
NumCouloir voir Couloirs.Identifiant voir Couloirs.Identifiant

 
Câbles    
Identifiant Identifiant (entier long : 4 octets) 10 caractères à l'affichage
Type Nombre (énuméré : 1 octet) 1 caractère à l'affichage
NumInfo1 voir Ordinateurs.Numéro ou Vidéoprojecteurs.Numéro ou PrisesRéseau.Numéro voir Ordinateurs.Numéro ou Vidéoprojecteurs.Numéro ou PrisesRéseau.Numéro
NumInfo2 voir Ordinateurs.Numéro ou Vidéoprojecteurs.Numéro ou PrisesRéseau.Numéro voir Ordinateurs.Numéro ou Vidéoprojecteurs.Numéro ou PrisesRéseau.Numéro
Bâtiments    
Identifiant Identifiant (entier long : 4 octets) 10 caractères à l'affichage
Nom Chaîne de caractères 50 caractères à l'affichage
Salles    
Identifiant Identifiant (entier long : 4 octets) 10 caractères à l'affichage
Nom Chaîne de caractères 50 caractères à l'affichage
Numéro Nombre (entier court : 1 octet) 2 caractères à l'affichage
Étage Nombre (entier court : 1 octet) 1 caractère à l'affichage
LargeurUtile Nombre flottant en mètre 3+1+2=6 caract. à l'aff.
LongueurUtile Nombre flottant en mètre 3+1+2=6 caract. à l'aff.
NumBâtiment voir Bâtiment.Identifiant voir Bâtiment.Identifiant
Couloirs    
Identifiant Identifiant (entier long : 4 octets) 10 caractères à l'affichage
Étage Nombre (entier court : 1 octet) 2 caractères à l'affichage
LargeurUtile Nombre flottant en mètre 3+1+2=6 caract. à l'aff.
LongueurUtile Nombre flottant en mètre 3+1+2=6 caract. à l'aff.
NumBâtiment voir Bâtiment.Identifiant voir Bâtiment.Identifiant
Portes    
Identifiant Identifiant (entier long : 4 octets) 10 caractères à l'affichage
Largeur Nombre flottant en mètre 1+1+2=4 caract. à l'aff.

 
Ascenseurs    
Identifiant Identifiant (entier long : 4 octets) 10 caractères à l'affichage
LargeurUtile Nombre flottant en mètre 1+1+2=6 caract. à l'aff.
ProfondeurUtile Nombre flottant en mètre 1+1+2=6 caract. à l'aff.
EstPoséSur    
NumInfo voir Ordinateurs.Numéro ou Vidéoprojecteurs.Numéro ou PrisesRéseau.Numéro voir Ordinateurs.Numéro ou Vidéoprojecteurs.Numéro ou PrisesRéseau.Numéro
NumBureau voir Chaises.Numéro ou Tables.Numéro voir Chaises.Numéro ou Tables.Numéro
EstUnAccèsA    
NumPorte voir Portes.Identifiant  voir Portes.Identifiant 
NumAscenseur voir Ascenseurs.Identifiant voir Ascenseurs.Identifiant
NumSalle voir Salles.Identifiant  voir Salles.Identifiant 
NumCouloir voir Couloirs.Identifiant voir Couloirs.Identifiant

2) Rédaction de requêtes en SQL (6 points)

Avec la syntaxe SQL de Microsoft Access par exemple…

2.1) Dans quelles salles se trouvent les vidéoprojecteurs  ?

SELECT Videoprojecteurs.Numero, Batiments.Nom, Salles.Etage, Salles.Numero

FROM Videoprojecteurs, Salles, Batiments

WHERE (((Videoprojecteurs.NumSalle)=[Salles].[Identifiant]) AND ((Batiments.Identifiant)=[Salles].[NumBatiment]));

2.2) Au maximum, combien de tables peuvent être mises dans la salle 09 du 3ème étage du bâtiment Laplace (salle L309) ?

On peut déjà calculer les dimensions maximales des tables :

SELECT Max(Tables.Longueur) AS MaxDeLongueur, Max(Tables.Largeur) AS MaxDeLargeur

FROM Tables;

Si on a sauvegardé le résultat dans une table DimensionsMaxTables, on peut alors calculer le nombre de tables en supposant qu'il faut laisser 50% de marge autour de chaque table :

SELECT [LongueurUtile]*[LargeurUtile]/([MaxDeLongueur]*[MaxDeLargeur]*1.5)

FROM Salles, Batiments, DimensionsMaxTables

WHERE (((Batiments.Identifiant)=[Salles].[NumBatiment]) AND ((Batiments.Nom) Like "L*") AND ((Salles.Etage)=3) AND ((Salles.Numero)=9));

2.3) Combien de chaises sont actuellement dans la salle L309 ?

SELECT Count(*)

FROM Tables, Salles, Batiments

WHERE (((Tables.NumSalle)=[Salles].[Identifiant]) AND ((Salles.NumBatiment)=[Batiments].[identifiant]) AND ((Batiments.Nom) Like "L*") AND ((Salles.Etage)=3) AND ((Salles.Numero)=9));

2.4) Quelle est la longueur minimum du câble nécessaire pour connecter l'ordinateur dont le nom est "SATRIANI" à la prise réseau la plus proche de la table sur laquelle il est posé ?

Cette requête va évidemment faire appel à des calculs de distance sur la géométrie que l'on ne possède pas dans la partie SGBD de notre SIG mais on peut déjà rechercher sur quelle table est posée l'ordinateur le numéro des prises dans cette salle :

SELECT Ordinateurs.NumeroIP, Tables.Numero, PrisesReseau.Numero

FROM Ordinateurs, Tables, EstPoseSur, PrisesReseau

WHERE (((Ordinateurs.NumeroIP) Like "satriani") AND ((Tables.Numero)=[EstPoseSur].[NumBureau]) AND ((Ordinateurs.Numero)=[EstPoseSur].[NumInfo]) AND ((Ordinateurs.NumSalle)=[PrisesReseau].[NumSalle]));

Il suffira ensuite de rechercher grâce au module CAO/DAO du SIG, quelle prise est la plus proche de la table…

On peut en outre rechercher à quelle prise est connecté l'ordinateur pour vérifier que la prise choisie est bien la bonne (en demandant au module CAO/DAO de nous renseigner sur la longueur du câble utilisé)…

SELECT Ordinateurs.NumeroIP, PrisesReseau.Numero

FROM Ordinateurs, Cables, PrisesReseau

WHERE (((Ordinateurs.NumeroIP) Like "satriani") AND ((PrisesReseau.Numero)=[Cables].[NumInfo2]) AND ((Ordinateurs.Numero)=[Cables].[NumInfo1])) OR (((Ordinateurs.NumeroIP) Like "satriani") AND ((PrisesReseau.Numero)=[Cables].[NumInfo1]) AND ((Ordinateurs.Numero)=[Cables].[NumInfo2]));

3) Gestion de la base de données (4 points)

3.1) Quelles données peuvent être recopiées dans chaque robot pour éviter les transferts par le réseau ?

Les robots ont besoin des données statiques pour se déplacer. On peut donc décider de leur donner les éléments du plan une fois pour toutes. Si la place nécessaire n'est pas trop importante.

3.2) Quelles sont les données qui doivent être sauvegardées ? Quel sera le type de support utilisé ?

Les données "temporaires" comme l'affectation du matériel dans une salle peuvent être sauvegardées régulièrement sur un support à longévité faiblement garantie comme un support magnétique (souple ou dur).
 

3.3) Quelles sont les données qui doivent être archivées ? Quel sera le type de support utilisé ?

Les données statiques (à savoir les éléments du plan et les caractéristiques du matériel) doivent être archivées car elles doivent être pérennes (elles sont généralement reproduites sur un support papier en lieu sûr).

3.4) Comment les robots pourront-ils se localiser par rapport au plan ?

Le problème principal des robots est de se repérer dans l'espace. Il existe beaucoup de solutions techniques éprouvées (antennes et balises radio, gyroscopes, GPS, marquages au sol avec lecture optique, etc.) mais plus ou moins coûteuses. Les distances à parcourir étant relativement faibles et le positionnement relativement peu précis (si on ne demande pas à un robot de poser un ordinateur sur le bord d'une table…), tracer des lignes au sol pour une lecture optique et compter les tours de roues devraient suffire.

Il ne faut cependant pas négliger les obstacles "naturels" comme les chaises au milieu des couloirs mais surtout tenir compte des obstacles "accidentels" tels que les élèves qui s'amuseront à donner des coups de pieds dans les robots. Un recalage du positionnement théorique sur le positionnement réel est donc à prévoir…