|
2 weeks ago | |
---|---|---|
.. | ||
README.md | 2 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Travailler avec les données : Bases de données relationnelles
![]() |
---|
Travailler avec les données : Bases de données relationnelles - Sketchnote par @nitya |
Il est probable que vous ayez déjà utilisé un tableur pour stocker des informations. Vous aviez un ensemble de lignes et de colonnes, où les lignes contenaient les informations (ou données), et les colonnes décrivaient ces informations (parfois appelées métadonnées). Une base de données relationnelle repose sur ce principe fondamental de colonnes et de lignes dans des tables, vous permettant de répartir les informations sur plusieurs tables. Cela vous permet de travailler avec des données plus complexes, d'éviter les duplications et d'avoir une flexibilité dans la manière d'explorer les données. Explorons les concepts d'une base de données relationnelle.
Quiz avant le cours
Tout commence par des tables
Une base de données relationnelle repose sur des tables. Tout comme dans un tableur, une table est une collection de colonnes et de lignes. Les lignes contiennent les données ou informations avec lesquelles nous souhaitons travailler, comme le nom d'une ville ou la quantité de précipitations. Les colonnes décrivent les données qu'elles contiennent.
Commençons notre exploration en créant une table pour stocker des informations sur les villes. Nous pourrions commencer par leur nom et leur pays. Vous pourriez stocker cela dans une table comme suit :
Ville | Pays |
---|---|
Tokyo | Japon |
Atlanta | États-Unis |
Auckland | Nouvelle-Zélande |
Remarquez que les noms des colonnes ville, pays et population décrivent les données stockées, et chaque ligne contient des informations sur une ville.
Les limites d'une approche avec une seule table
Il est probable que la table ci-dessus vous semble relativement familière. Ajoutons maintenant des données supplémentaires à notre base de données en pleine croissance - les précipitations annuelles (en millimètres). Nous nous concentrerons sur les années 2018, 2019 et 2020. Si nous devions les ajouter pour Tokyo, cela pourrait ressembler à ceci :
Ville | Pays | Année | Quantité |
---|---|---|---|
Tokyo | Japon | 2020 | 1690 |
Tokyo | Japon | 2019 | 1874 |
Tokyo | Japon | 2018 | 1445 |
Que remarquez-vous à propos de notre table ? Vous pourriez remarquer que nous dupliquons le nom et le pays de la ville encore et encore. Cela pourrait prendre beaucoup de stockage, et il est largement inutile d'avoir plusieurs copies. Après tout, Tokyo n'a qu'un seul nom qui nous intéresse.
OK, essayons autre chose. Ajoutons de nouvelles colonnes pour chaque année :
Ville | Pays | 2018 | 2019 | 2020 |
---|---|---|---|---|
Tokyo | Japon | 1445 | 1874 | 1690 |
Atlanta | États-Unis | 1779 | 1111 | 1683 |
Auckland | Nouvelle-Zélande | 1386 | 942 | 1176 |
Bien que cela évite la duplication des lignes, cela ajoute quelques autres défis. Nous devrions modifier la structure de notre table chaque fois qu'une nouvelle année est ajoutée. De plus, à mesure que nos données augmentent, avoir nos années comme colonnes rendra plus difficile la récupération et le calcul des valeurs.
C'est pourquoi nous avons besoin de plusieurs tables et de relations. En divisant nos données, nous pouvons éviter les duplications et avoir plus de flexibilité dans la manière dont nous travaillons avec nos données.
Les concepts de relations
Revenons à nos données et déterminons comment nous voulons les diviser. Nous savons que nous voulons stocker le nom et le pays de nos villes, donc cela fonctionnera probablement mieux dans une table.
Ville | Pays |
---|---|
Tokyo | Japon |
Atlanta | États-Unis |
Auckland | Nouvelle-Zélande |
Mais avant de créer la table suivante, nous devons déterminer comment référencer chaque ville. Nous avons besoin d'une forme d'identifiant, ID ou (en termes techniques de base de données) une clé primaire. Une clé primaire est une valeur utilisée pour identifier une ligne spécifique dans une table. Bien que cela puisse être basé sur une valeur elle-même (nous pourrions utiliser le nom de la ville, par exemple), cela devrait presque toujours être un numéro ou un autre identifiant. Nous ne voulons pas que l'ID change, car cela casserait la relation. Vous constaterez que dans la plupart des cas, la clé primaire ou l'ID sera un numéro généré automatiquement.
✅ La clé primaire est fréquemment abrégée en PK
villes
ville_id | Ville | Pays |
---|---|---|
1 | Tokyo | Japon |
2 | Atlanta | États-Unis |
3 | Auckland | Nouvelle-Zélande |
✅ Vous remarquerez que nous utilisons les termes "id" et "clé primaire" de manière interchangeable pendant cette leçon. Les concepts ici s'appliquent aux DataFrames, que vous explorerez plus tard. Les DataFrames n'utilisent pas la terminologie de "clé primaire", cependant vous remarquerez qu'ils se comportent de manière similaire.
Avec notre table des villes créée, stockons les précipitations. Plutôt que de dupliquer les informations complètes sur la ville, nous pouvons utiliser l'ID. Nous devrions également nous assurer que la table nouvellement créée possède une colonne id, car toutes les tables devraient avoir un ID ou une clé primaire.
précipitations
precipitation_id | ville_id | Année | Quantité |
---|---|---|---|
1 | 1 | 2018 | 1445 |
2 | 1 | 2019 | 1874 |
3 | 1 | 2020 | 1690 |
4 | 2 | 2018 | 1779 |
5 | 2 | 2019 | 1111 |
6 | 2 | 2020 | 1683 |
7 | 3 | 2018 | 1386 |
8 | 3 | 2019 | 942 |
9 | 3 | 2020 | 1176 |
Remarquez la colonne ville_id dans la table nouvellement créée précipitations. Cette colonne contient des valeurs qui font référence aux IDs dans la table villes. En termes techniques de données relationnelles, cela s'appelle une clé étrangère ; c'est une clé primaire d'une autre table. Vous pouvez simplement la considérer comme une référence ou un pointeur. ville_id 1 fait référence à Tokyo.
[!NOTE] La clé étrangère est fréquemment abrégée en FK
Récupérer les données
Avec nos données séparées en deux tables, vous vous demandez peut-être comment les récupérer. Si nous utilisons une base de données relationnelle comme MySQL, SQL Server ou Oracle, nous pouvons utiliser un langage appelé Structured Query Language ou SQL. SQL (parfois prononcé "sequel") est un langage standard utilisé pour récupérer et modifier des données dans une base de données relationnelle.
Pour récupérer des données, vous utilisez la commande SELECT
. En son cœur, vous sélectionnez les colonnes que vous souhaitez voir à partir de la table dans laquelle elles sont contenues. Si vous vouliez afficher uniquement les noms des villes, vous pourriez utiliser ce qui suit :
SELECT city
FROM cities;
-- Output:
-- Tokyo
-- Atlanta
-- Auckland
SELECT
est l'endroit où vous listez les colonnes, et FROM
est l'endroit où vous listez les tables.
[NOTE] La syntaxe SQL n'est pas sensible à la casse, ce qui signifie que
select
etSELECT
signifient la même chose. Cependant, selon le type de base de données que vous utilisez, les colonnes et les tables pourraient être sensibles à la casse. En conséquence, il est recommandé de toujours traiter tout en programmation comme si c'était sensible à la casse. Lors de l'écriture de requêtes SQL, la convention courante est de mettre les mots-clés en majuscules.
La requête ci-dessus affichera toutes les villes. Imaginons que nous voulions afficher uniquement les villes en Nouvelle-Zélande. Nous avons besoin d'une forme de filtre. Le mot-clé SQL pour cela est WHERE
, ou "où quelque chose est vrai".
SELECT city
FROM cities
WHERE country = 'New Zealand';
-- Output:
-- Auckland
Joindre les données
Jusqu'à présent, nous avons récupéré des données à partir d'une seule table. Maintenant, nous voulons rassembler les données des tables villes et précipitations. Cela se fait en les joignant ensemble. Vous allez effectivement créer une liaison entre les deux tables et faire correspondre les valeurs d'une colonne de chaque table.
Dans notre exemple, nous allons faire correspondre la colonne ville_id dans précipitations avec la colonne ville_id dans villes. Cela associera la valeur des précipitations à sa ville respective. Le type de jointure que nous effectuerons est ce qu'on appelle une jointure interne, ce qui signifie que si des lignes ne correspondent pas à quelque chose dans l'autre table, elles ne seront pas affichées. Dans notre cas, chaque ville a des précipitations, donc tout sera affiché.
Récupérons les précipitations de 2019 pour toutes nos villes.
Nous allons le faire par étapes. La première étape consiste à joindre les données ensemble en indiquant les colonnes pour la liaison - ville_id comme souligné précédemment.
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
Nous avons mis en évidence les deux colonnes que nous voulons, et le fait que nous voulons joindre les tables ensemble par ville_id. Maintenant, nous pouvons ajouter l'instruction WHERE
pour filtrer uniquement l'année 2019.
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019
-- Output
-- city | amount
-- -------- | ------
-- Tokyo | 1874
-- Atlanta | 1111
-- Auckland | 942
Résumé
Les bases de données relationnelles sont centrées sur la division des informations entre plusieurs tables qui sont ensuite réunies pour l'affichage et l'analyse. Cela offre une grande flexibilité pour effectuer des calculs et manipuler les données. Vous avez vu les concepts fondamentaux d'une base de données relationnelle, et comment effectuer une jointure entre deux tables.
🚀 Défi
Il existe de nombreuses bases de données relationnelles disponibles sur Internet. Vous pouvez explorer les données en utilisant les compétences que vous avez apprises ci-dessus.
Quiz après le cours
Quiz après le cours
Révision et auto-apprentissage
Il existe plusieurs ressources disponibles sur Microsoft Learn pour continuer votre exploration des concepts SQL et des bases de données relationnelles.
- Décrire les concepts des données relationnelles
- Commencer à interroger avec Transact-SQL (Transact-SQL est une version de SQL)
- Contenu SQL sur Microsoft Learn
Devoir
Avertissement :
Ce document a été traduit à l'aide du service de traduction automatique Co-op Translator. Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.