24-NSIJ1PO1-3
-
classement = [] for numero_dossard in temps_etapes: element = (numero_dossard, calcul_temps_total(numero_dossard)) classement.append(element) pos = len(classement) - 2 while pos >= 0 and element[1] < classement[pos][1]: classement[pos + 1] = classement[pos] pos = pos - 1 classement[pos + 1] = element for i in range(len(classement)): classement_general[classement[i][0]] = i + 1
-
tableau_final = [] difference_temps = 0 premier = True for ligne in tableau_temps: coureur = [ligne[0]] coureur.append(ligne[1]) if premier: temps_premier = ligne[2] coureur.append(temps_premier) premier = False else: difference_temps = ligne[2] - temps_premier coureur.append(difference_temps) tableau_final.append(coureur)
-
Une clé primaire doit permettre d'identifier chaque enregistrement de manière unique. Dans la table
Temps
, un coureur (représenté parnumDossard
) participe à plusieurs étapes, donc cet attribut seul n'est pas unique. De même, une étape (numEtape
) concerne plusieurs coureurs.En revanche, le couple
(numDossard, numEtape)
est unique pour chaque ligne, car un coureur n'a qu'un seul temps par étape. Ce couple peut donc servir de clé primaire. -
Cette requête renvoie tous les noms des coureurs de l'équipe Cofidis.
-
La première requête provoque une erreur car elle tente d'insérer un temps pour l'étape 5 alors que cette étape n'existe pas encore dans la table
Etapes
. Or une clé étrangère doit obligatoirement faire référence à une clé primaire existante dans la table liée. Ici, la première requête viole la contrainte d'intégrité référentielle. -
Il suffit d'inverser l'ordre des deux requêtes.