Correction Spe Nsi 20.03
Correction Spe Nsi 20.03
Correction Spe Nsi 20.03
Exercice I
1.
a. Un attribut doit posséder les caractéristiques suivantes pour pouvoir être choisi
comme clé primaire :
- les valeurs prises par cet attribut doivent identifier un enregistrement de manière unique ;
- les valeurs ne doivent jamais être vides (ou NULL).
Facultatif : pour que la table soit cohérente, les valeurs ne doivent pas être modifiées.
est :
id stock description
------- ------- -------------------------------
62 2 "Armoire blanche 3 portes"
63 3 "Armoire noire 3 portes"
3. La requête SQL permettant d’afficher les noms et prénoms des clients
habitant à Paris est :
SELECT nom, prenom
FROM Clients
WHERE ville = "Paris";
Cependant, il serait plus intéressant, dans une interface de remplissage avec la BDD de faire :
UPDATE Meubles SET stock = stock + 50 WHERE (id = 98);`
Pour éviter d’écraser un enregistrement sans tenir compte du stock précédent.
5. On insère un enregistrement :
Soit on précise les champs :
INSERT INTO Meubles
(id, intitule, prix, stock, description)
VALUES (65, "matta", 95.99, 25, "Tapis vert à pois rouges");
6. Pour récupérer le nom et le prénom des différents clients qui ont passé une commande le
30 avril 2021 (on pourra utiliser JOIN ou INNER JOIN) :
SELECT nom, prenom
FROM Clients
JOIN Commandes
ON Clients.id = Commandes.idClient`
WHERE date = "30/04/2021";
Exercice 2
1. Si une seule liaison est coupée, on remarque que l’on peut toujours trouver un chemin
pour relier chaque site à n’importe quel autre.
2. On veut aller du site B au site C, c'est-à-dire passer par le routeur R2 pour aller au routeur
R5.
La table de routage nous indique qu’il faut d’abord aller à R3, puis si l’on suit la table de
chaque routeur on obtient ce chemin :
site B -> R2 -> R3 -> R4 -> R5 -> site C
5.
a. La liaison dont le débit est le plus faible est celui dont le coût est le plus grand : la
liaison 2 est donc celle qui a le débit le plus faible. On trouve par calcul 10 kbps.
b. Les quatre chemins possibles pour aller du site A au site C avec leur coût associé :
chemin coût
R1 - R2 - R5 1 100 000
R1 - R2 - R3 - R4 - R5 100 020
R1 - R3 - R2 - R5 1 050 005
R1 - R3 - R4 - R5 50 015
c.
100 000
50 000 5
1 000 000
5
10
Exercice 3
Partie 1
3. Pour créer une instance, on fait appel à la classe et on donne la valeur pour le
constructeur :
ge = Region("Grand Est")
Cependant, on peut aussi se demander si cette liste est vide et renvoyer une chaîne de
caractères vide le cas échéant. L’opérateur ternaire peut faire tenir le tout sur une ligne :
return self.tab_couleurs_disponibles[0] if len(self.tab_couleurs_disponibles) > 0 else ""
5. Une fois repéré que self.tab_voisines contient les couleurs voisines, on obtient :
return len(self.tab_voisines)
6. self.couleur_attribuee vaut None par défaut. Cet attribut sera modifié et contiendra la
chaîne de caractères de la couleur. On peut donc faire un :
return self.couleur_attribuee is not None
ou encore :
if self.couleur_attribuee is None:
return False
else :
return True
7. if couleur in self.tab_couleurs_disponibles :
self.tab_couleurs_disponibles.remove(couleur)
Ici, la comparaison avec les objets region vont fonctionner mais on peut aussi comparer avec
le nom.
Partie 2
region_non_coloriees = []
for region in self.tab_regions:
if not region.est_coloriee():
region_non_coloriees.append(region)
return region_non_coloriees
10.
a. La méthode renvoie None lorsque la liste renvoyée par
self.renvoie_tab_regions_non_coloriees() sera vide. C'est-à-dire quand toutes les
régions seront coloriées.
def colorie(self):
On récupère la région non coloriée qui possède le
region = self.renvoie_max()
plus de voisines.
Tant que cette région existe :
while region is not None:
la couleur attribuée à cette région est la première
region.couleur_attribuee =
couleur disponible dans son tableau de couleurs
region.renvoie_premiere_couleur_disponible(
disponibles.
)
region = self.renvoie_max()