{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Du traitement des données en table aux bases de données - CORRECTION" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ressources** : " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Sommaire**\n", "* 1. Généralités\n", " * 1.1 Historique\n", " * 1.2 Organisation d'une table\n", " * 1.3 Objectifs\n", "* 2. Construction d'une table et traitement de ses données\n", " * 2.1 Construction\n", " * 2.2 Traitement des données\n", "----" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " | Cette activité est un préalable aux travaux pratiques sur les bases de données relationnelles. Le vocabulaire utilisé (attribut, enregistrement, requête, etc.) est celui employé lors de leur interrogation. A la fin de chaque exercice, la référence faite aux bases de données est identifiée par l'icône ci-contre.\n", " | \n", "
L'organisation tabulaire des données est très répandue. Les tables documentées les plus anciennes sont des livres de comptes déjà présents dans l'Égypte des pharaons. Aujourd'hui, cette organisation est utilisée par les bulletins scolaires, les résultats de match ou les relevés d'un compte bancaire qui indiquent pour chaque opération, sa date, son montant et sa nature (débit ou crédit). En informatique, la manipulation de données en tables depuis un langage de programmation est utilisée dans de nombreux domaines : calcul scientifique, intelligence artificielle, programmation Web, bio-informatique, informatique financière, etc. \n", " | \n",
" \n", " |
\n", " | La fonction DictReader renvoie des dictionnaires ordonnés que nous utiliserons comme des dictionnaires. La variable scientifiques contient donc un tableau de dictionnaires. On constate que le schéma de la table n'est pas stocké dans le tableau, mais a été utilisé pour créer les clés des dictionnaires.\n", " | \n", "
\n", " | DictReader charge les données dans la table sous la forme de chaînes de caractères. Si on veut les utiliser en tant que nombres, comme les attributs jour, mois et année, pour les comparer ou faire des opérations, il faut les convertir ( on dit aussi transtyper ).\n",
"
| \n",
"
\n", " | Vous noterez que les nombres situés dans la table scientifiques ne sont plus entourés par des guillemets ! \n", " | \n", "
\n", " | Lorsque nous utiliserons une base de données et le langage SQL, ce type d'opération sera appelé REQUÊTE. | \n", "
\n", " | Python est un langage à typage dynamique, c'est-à-dire qu'il n'est pas nécessaire de préciser le type des données. Depuis la version 3.5, il est possible de fournir des indicateurs de type (str,bool, etc.) lors de la définition des fonctions. Cette possibilité est utilisée dans ce notebook pour faciliter la compréhension du code.\n", " | \n", "
\n", " | La fonction present(prenom, table) peut être améliorée en renvoyant le nombre de fois qu'un même prénom est présent dans la table. Faites cette amélioration en complétant le code de la fonction presents(prenom, table) ci-dessous.\n", " | \n", "
\n", " | Dans le langage SQL la requête SELECT COUNT(attribut) FROM table WHERE attribut=valeur, appliquée à la table scientifiques (contenue dans une base de données), donnerait le même résultat. Exemple SELECT COUNT(prenom) FROM scientifiques WHERE prenom=\"Brian\" renvoie 1. | \n",
" \n", " |
\n", " | Dans le langage SQL la requête SELECT attribut1, attribut2, ..., attributn FROM table WHERE attribut=valeur, appliquée à la table scientifiques, donnerait le même résultat. Exemple SELECT nom FROM scientifiques WHERE prenom=\"Alan\" renvoie Turing, Perlis. | \n",
" \n", " |
\n", " | La fonction nom(prenom, table) sélectionne l'attribut nom des personnes avec le même prénom. Dans le prochain exercice, vous allez généraliser ce cas particulier à tous les attributs de la table. \n", " | \n", "
\n", " | Dans le langage SQL la requête SELECT attribut1, attribut2, ..., attributn FROM table WHERE attribut=valeur, appliquée à la table scientifiques, donnerait le même résultat. Exemple avec résultat partiel SELECT nom FROM scientifiques WHERE mois=6 renvoie Alan, Blaise, Tim. | \n",
" \n", " |
\n", " | La fonction selection(attribut1,table,attribut2,valeur) renvoie les données de la colonne attribut1 pour lesquelles attribut2=valeur. Il pourrait être intéressant de renvoyer des données situées dans plusieurs colonnes. C'est le travail demandé dans le prochain exercice.\n", " | \n", "
\n", " | Dans le langage SQL la requête SELECT attribut1, attribut2, ..., attributn FROM table WHERE attribut=valeur, appliquée à la table scientifiques, nous permettrait d'obtenir le même résultat. Exemple SELECT nom, prenom FROM scientifiques WHERE jour=1 renvoie ['Kernighan', 'Brian'], ['Perlis', 'Alan']. | \n",
" \n", " |
\n", " | Dans le langage SQL la requête SELECT attribut1, attribut2, ..., attributn FROM table WHERE attribut opcomp valeur, appliquée à la table scientifiques, donnerait le même résultat. Exemple avec affichage partiel SELECT nom, prenom FROM scientifiques WHERE annee < 1900 renvoie ['Pascal', 'Blaise'], ['Jacquard', 'Joseph Marie'], ['Lovelace', 'Ada'], ['Babbage', 'Charles'], ['Boole', 'George']. | \n",
" \n", " |
\n", " | Dans le langage SQL la requête SELECT attribut1, attribut2, ..., attributn FROM table WHERE attribut opcomp1 valeur1 AND attribut opcomp2 valeur2 , appliquée à scientifiques2, donnerait le même résultat. Exemple avec affichage partiel SELECT nom, prenom FROM scientifiques2 WHERE annee >= 1900 AND annee <= 1920 renvoie ['Hopper', 'Grace'], ['Turing', 'Alan'], ['Shannon', 'Claude']. | \n",
" \n", " |