• Aucun résultat trouvé

2 Construction de la base de données

N/A
N/A
Protected

Academic year: 2021

Partager "2 Construction de la base de données"

Copied!
3
0
0

Texte intégral

(1)

A IRPORT

REMARQUE:Merci à Xavier Pessoles pour le sujet.

1 Présentation

Le site internet http://ourairports.com/ recueille des informations sur les aéroports du monde. Ces informa- tions sont disponibles sous la forme d’une base de donnée SQLite.

En l’état, la base de données est constituée de 4 relations :

— Airport_Frequencies recense les fréquences radio sur lesquelles les aéroports émettent ;

— Countriesrecense la liste des pays ;

— Airportsrecense la liste des aéroports ;

— Regionsrecense une liste des régions.

Vue Google Earth de la base d’hydravion de Lake Brooks – Alaska

La relationAirportsest constituée des attributs suivants :

— id: un identifiant

— type: un type (heliport, small_airport, seaplane_base ...)

— name: un nom

— des coordonnées géographiques(latitude_deg, latitude_deg, elevation_ft, à savoir les latitudes et longitudes en degrés ainsi que l’altitude en pieds) ;

— . . .

2 Construction de la base de données

Q - 1:Construire une base de donnéesaeroport.sqliteà partir des fichiers.csvmis à disposition.

2.1 Analyse de la base de données

Q - 2: Lors de la création de la base de données, le concepteur n’a pas pris garde au type des atrributs.

Proposer un type pour les attributslatitude_degetmunicipality. Dans la mesure du possible, modifier ces champs en éditant la table correspondante. Quel type de champ proposer pour l’attributid? D’après vous quelle précaution est-il nécessaire de prendre pour ce champ ?

Q - 3:Quels sont les attributs des relationsCountries,RegionsetAirport_Frequencies?

Dans le but d’optimiser la base de données (à savoir diminuer le temps d’accès aux données, diminuer l’espace mémoire utilisé et éviter la redondance d’informations) on souhaite disposer de la relationAirport_Type. Cette relation aura pour attribut un identifiant, un attribut de type texte correspondant au type d’aéroport en anglais, un attribut de type texte

LYCÉECARNOT(DIJON) 1/3 INFO ENMPSI & PCSI - TP3 - BDD

(2)

correspondant au type d’aéroport en français.

Q - 4:Créer la relation précédente dans la base de données. Quelles seraient les modifications à réaliser sur les données pour prendre en compte cette nouvelle relation ?

2.2 Consultation de la base de données en utilisant SQLite Database Browser

Nous allons travailler dans l’ongletExecute SQL.

Q - 5:Que permet la requête suivante : SELECT name FROM C o u n t r i e s ;

Q - 6:Quelle est sa traduction en algèbre relationnelle ?

On souhaite sélectionner tous les noms de pays européens de la relation Countries.

Q - 7:Exprimer la requête dans l’algèbre relationnelle puis en langage SQL. Tester la requête. L’attribut des pays européens est désigné par ”EU”.

On donne la requête suivante :

πname

σiso_country=”FR”(Regions) Q - 8:Que signifie-t-elle ? La traduire en langage SQL puis tester le résultat.

2.3 Consultation de la base de données en Python

Ouvrir le fichierBDD_eleve.py.

Il est possible d’interroger la base de données en utilisant Python. Pour cela, on utilise le formalisme suivant : import sqlite3 # Import des commandes permettant de manipuler la base de données basesql = u"airports.db3" # Base de données initiale

cnx = sqlite3.connect(basesql) curseur = cnx.cursor()

requete = "SELECT * FROM airports"

curseur.execute(requete)

Le préfixe u permet d’importer les fichiers encodés en UTF-8. Dans un certaine mesure, les caractères spéciaux sont alors pris en compte.

Le curseur est un objet contenant le résultat de la requête. Pour visualiser la première entité de la requête, la syntaxe est la suivante :

data = curseur.fetchone() print(data)

Attention, à chaque utilisation defetchone(), l’entité est supprimée du curseur. Pour parcourir chacune des entités, on peut utiliser la syntaxe suivante :

for cur in curseur:

print(cur)

LYCÉECARNOT(DIJON) 2/3 INFO ENMPSI & PCSI - TP3 - BDD

(3)

Attention, cette opération peut s’avérer maladroite si la requête a un grand nombre d’entités.

Q - 9 : Remplir les champs nécessaires dans le fichierBDD_eleve.py. Exécuter le code et expliquer les résultats.

Q - 10:Que permettent les lignes de code suivantes :

requete = "SELECT * FROM airports"

curseur.execute(requete) res = []

for cur in curseur:

res.append(cur) print(len(res))

Q - 11:En utilisant les possibilités de Python, donner le nombre de bases d’hydravion existantes. En utili- sant la documentation ou le cours, comment utiliser la fonction d’agrégation COUNT pour obtenir un résultat équivalent ?

Q - 12:Donner la liste des villes françaises (iso_country=’FR’) hébergeant de telles bases. Vous donnerez la requête SQL ainsi que son expression en algèbre relationnelle.

Q - 13:Donner la liste des villes européennes (continent=’EU’) hébergeant de telles bases ainsi que leur nom et leur pays. Vous donnerez la requête SQL ainsi que son expression en algèbre relationnelle. Est-on sûr d’avoir tous les éléments de la liste ?

Q - 14:En utilisant une jointure entre les relations Coutries et airports, donner la liste des bases d’hydravion américains (United States).

LYCÉECARNOT(DIJON) 3/3 INFO ENMPSI & PCSI - TP3 - BDD

Références

Documents relatifs

• Lorsque le mobile est à un instant donné sur un sommet, il se déplace à l’instant suivant sur l’un quel- conque des trois autres sommets, et ceci de façon équiprobable.

ALTER TABLE employee ADD CONSTRAINT nom CHECK (lname <> ’’ AND fname <> ’’);. -- ALTER TABLE DROP CONSTRAINT

– si un même type d’entité intervient plusieurs fois dans un même type d’association, on doit explicitement indiquer le rôle de chaque entité – si on a

NumEtud Nom Prenom Adresse DateNais Sexe NumCours NomCours NomProf NbHC NbHTD NbHTP NumEtud NumCours Note. E1

Domaine : Droit international Documents : décisions de justice Dates de couverture : À partir de 1812 Oxford Legal Research Library Type : base de données bibliographique Editeur

Eastwood Clint Eastwood Clint Cumberbatch Benedict Freeman Martin Sellers Peter Sellers Peter Sellers Peter. SELECT ne retourne pas un ensemble de n-uplets mais en fait une liste

Eastwood Clint The good, the Bad and the Ugly Blondie Eastwood Clint Gran Torino Walt Kowalski Cumberbatch Benedict Study in Pink Sherlock Holmes Freeman Martin Study in Pink Dr

On peut les supprimer : SELECT DISTINCT nom , prenom FROM PERSONNE , JOUE WHERE id = idacteur ;.