Niveau : Terminale générale, enseignement de spécialité NSI
Qu'est-ce qu'une base de données ?
Si les tableurs sont des "broyeurs de chiffres" du monde numérique, les bases de données sont les "broyeurs d'informations".
C’est lors du programme Apollo en 1960 que l’idée de la base de données a été lancée. Le but était de collecter des données afin de permettre d’aller sur la lune avant la fin de la décennie. Mais les bases de données ont pris leur envol avec l’émergence d’internet et l’apparition du big data, gigantesque collecte de données qu’il faut stocker, modifier, traiter. Quasiment toutes les bases de données actuelles sont basées sur les travaux d’Edgar F. Codd (1970).
Une base de données (BDD) a pour tâche principale de répondre à des questions. La plupart des bases de données possèdent un outil de requête qui permet de formuler des questions et d'obtenir des réponses utiles d'après les données stockées dans la base.
Exemple :
On veut créer une base de données contenant les informations de mes disques audio. En voici la liste.
N°Titre | Album | Titre | Duree | N°Piste | Type | Interprete | Langue | Style |
1 | N'attendons pas | Merci pour ça | 3:23 | 1 | CD | VIANNEY | Français | Variété |
2 | N'attendons pas | Pour de vrai | 4:01 | 2 | CD | VIANNEY | Français | Variété |
3 | N'attendons pas | Mode | 3:06 | 3 | CD | VIANNEY | Français | Variété |
4 | N'attendons pas | N'attendons pas | 3:13 | 4 | CD | VIANNEY | Français | Variété |
5 | N'attendons pas | Beau-papa | 3:17 | 5 | CD | VIANNEY | Français | Variété |
6 | N'attendons pas | La fille du sud | 3:50 | 6 | CD | VIANNEY | Français | Variété |
7 | Johnny Acte II Edition Limitée Or et Blanc | Ouverture | 2:20 | 1 | Vinyle | Johnny Hallyday | Français | Rock |
8 | Johnny Acte II Edition Limitée Or et Blanc | Je Te Promets | 4:02 | 2 | Vinyle | Johnny Hallyday | Français | Rock |
9 | Johnny Acte II Edition Limitée Or et Blanc | Le Pénitencier | 4:05 | 3 | Vinyle | Johnny Hallyday | Français | Rock |
10 | Johnny Acte II Edition Limitée Or et Blanc | J'aimerai Pouvoir Encore Souffrir Comme Ça | 3:58 | 4 | Vinyle | Johnny Hallyday | Français | Rock |
11 | Johnny Acte II Edition Limitée Or et Blanc | A Propos De Mon Père | 2:58 | 5 | Vinyle | Johnny Hallyday | Français | Rock |
12 | Johnny Acte II Edition Limitée Or et Blanc | Love Me Tender | 3:32 | 6 | Vinyle | Johnny Hallyday | Français | Rock |
Déjà là, on se retrouve avec une base de données... Il y a effectivement des informations qui sont formalisées et ordonnées. Ceci sous-entend qu'on se retrouve avec des données d'un même style dans chaque colonne (Duree, nombre ou chaîne de caractère). Il s'agit donc bien d'une base de données.
En réalité, il s'agit d'une unique table, mais une table suffit a faire une base (même si ce n'est pas forcément le principe). On se rend compte que les informations sont vraiment redondantes... Il faut donc regrouper les informations d'un même style.
On pourrait ainsi créer deux tables :
La table des albums :
N°Album | Album | Type | Interprete | Langue | Style |
1 | N'attendons pas | CD | VIANNEY | Français | Variété |
2 | Johnny Acte II Edition Limitée Or et Blanc | Vinyle | Johnny Hallyday | Français | Rock |
La table des titres :
N°Titre | N°Album | Titre | Duree | N°Piste |
1 | 1 | Merci pour ça | 3:23 | 1 |
2 | 1 | Pour de vrai | 4:01 | 2 |
3 | 1 | Mode | 3:06 | 3 |
4 | 1 | N'attendons pas | 3:13 | 4 |
5 | 1 | Beau-papa | 3:17 | 5 |
6 | 1 | La fille du sud | 3:50 | 6 |
7 | 2 | Ouverture | 2:20 | 1 |
8 | 2 | Je Te Promets | 4:02 | 2 |
9 | 2 | Le Pénitencier | 4:05 | 3 |
10 | 2 | J'aimerai Pouvoir Encore Souffrir Comme Ça | 3:58 | 4 |
11 | 2 | A Propos De Mon Père | 2:58 | 5 |
12 | 2 | Love Me Tender | 3:32 | 6 |
On se retrouve maintenant avec une base de données mieux structurée et plus facile à maintenir.
La colonne N°Album dans la table TITRE donne en fait la valeur de la colonne N°Album correspondant à l'album sur lequel on trouve la chanson.
C'est ce qu'on appelle une relation.
On peut également dire que N°Album de la table albums est le parent de N°Album de la table TITRE.
Les colonnes N°Album, Type, Langue, Interprete... sont appelés champs ou attributs
La table des albums :
N°Album | Album | Type | Interprete | Langue | Style |
1 | N'attendons pas | CD | VIANNEY | Français | Variété |
2 | Johnny Acte II Edition Limitée Or et Blanc | Vinyle | Johnny Hallyday | Français | Rock |
La table des titres :
N°Titre | N°Album | Titre | Duree | N°Piste |
1 | 1 | Merci pour ça | 3:23 | 1 |
2 | 1 | Pour de vrai | 4:01 | 2 |
N°Album de la table albums est la clé primaire (primary key)
N°Titre de la table titres est la clé primaire (primary key)
N°Album de la table albums est la clé étrangère (Foreign key) ou externe.
Une clé étrangère en bases de données permet de garantir l’intégrité référentielle entre les données de différentes tables. Pour ajouter un nouveau titre d'un nouvel album, il faudra que le nouvel album soit enregistré en premier
Souvent la clé primaire peut également servir d'index. L'index est, comme pour un livre, un moyen pour le moteur de base de données d'accéder rapidement à certains enregistrements.
On représente la structure des tables de la manière suivante : c'est ce qu'on appelle un schéma relationnel
On remarque que les clés primaires sont soulignées et que la clé étrangère est précédée par le symbole #, ce n'est pas toujours le cas car le symbole # peut aussi représenter une donnée numérique.
Il existe aussi une autre manière de décrire le schéma relationnel :
Les listes de membres et de clients sont d'autres exemples de bases de données.
L'acronyme SQL signifie Structured Query Language en anglais.
Dévellopé en 1974 par Donald Chamberlain et Raymond Boyce employés chez IBM : le SEQUEL (Structured English Query Language) est devenu le language SQL, normalisé depuis 1986
Ce language qui permet de communiquer avec une base de donnée.
Elle permet de lire les données stockées dans les tables et retourne les enregistrements sous la forme d'un tableau
Résultat :
Album | Interprete |
---|---|
N'attendons pas | VIANNEY |
Johnny Acte II Edition Limitée Or et Blanc | Johnny Hallyday |
Remarque : Pour afficher tous les champs de la table on peut exécuter la requête suivante : SELECT * FROM albums
* signifie tous les champs
Résultat :
Titre |
---|
Merci pour ça |
Pour de vrai |
Mode |
N'attendons pas |
Beau-papa |
La fille du sud |
Quel sera le résultat de la requête suivante et pourquoi n'est-il pas possible d'obtenir plus d'un résultat ?
Pour faire les lignes d'un tableau maintenez la touche Alt enfoncée et tapez le code du symbole souhaité
179 : │ | 180 : ┤ | 191 : ┐ | 192 : └ | 193 : ┴ | 194 : ┬ | 195 : ├ | 196 : ─ | 197 : ┼ | 217 : ┘ | 218 : ┌ | 30 : ▲ | 31 : ▼ |
Elle permet de trier les données du tableau retournée par la requête SQL par ordre croissant (ascendant) : ASC
ou décroissant (descendant): DESC
Résultat :
N°Piste ▼ | Titre |
---|---|
6 | Love Me Tender |
5 | A Propos De Mon Père |
4 | J'aimerai Pouvoir Encore Souffrir Comme Ça |
3 | Le Pénitencier |
2 | Je Te Promets |
1 | Ouverture |
Quel sera le résultat de la requête :
Résultat :
Elle permet de faire une recherche dans plusieurs table :
Résultat :
Type | Album ▲ | Interprete | N°Piste | Titre | Duree |
---|---|---|---|---|---|
Vinyle | Johnny Acte II Edition Limitée Or et Blanc | Johnny Hallyday | 6 | Love Me Tender | 3:32 |
Vinyle | Johnny Acte II Edition Limitée Or et Blanc | Johnny Hallyday | 4 | J'aimerai Pouvoir Encore Souffrir Comme Ça | 3:58 |
Vinyle | Johnny Acte II Edition Limitée Or et Blanc | Johnny Hallyday | 2 | Je Te Promets | 4:02 |
Vinyle | Johnny Acte II Edition Limitée Or et Blanc | Johnny Hallyday | 3 | Le Pénitencier | 4:05 |
CD | N'attendons pas | VIANNEY | 6 | La fille du sud | 3:50 |
CD | N'attendons pas | VIANNEY | 2 | Pour de vrai | 4:01 |
Quel sera le résultat de la requête suiante :
Réponse :
Cette commande permet d'insérer des valeurs les champs de la table à condition que la clé primaire ne soit pas déjà existante.
Résultat :
N°Album | Album | Type | Interprete | Langue | Style |
1 | N'attendons pas | CD | VIANNEY | Français | Variété |
2 | Johnny Acte II Edition Limitée Or et Blanc | Vinyle | Johnny Hallyday | Français | Rock |
3 | Thriller | CD | Michael Jackson | Anglais | Pop |
Quelle requête SQL faut-t-il exécuter pour insérez les valeurs suivantes dans la table titres :
N°Titre | N°Album | Titre | Duree | N°Piste |
13 | 3 | Thriller | 5:57 | 1 |
Aurait-on pu insérer le titre Thriller avant d'insérer l'album Thriller ?
Réponses :
Cette commande permet de corriger ou mettre à jour un champ d'une table
Remarque : pour n'affecter qu'une ligne le la table titres, il est préfèrable que la condition where se fasse sur la clé primaire, sauf lorsqu'on veut corriger un faute d'ortographe par exemple qui concerne plusieurs titres.
Revoir les notions et approfondir vos connaissances sur le site Internet :
L’énoncé de cet exercice utilise les mots clefs du langage SQL suivants : SELECT,
FROM, WHERE, JOIN ON, UPDATE, SET, INSERT INTO VALUES, COUNT, ORDER BY
.
ORDER BY
suivie d'un attribut permet de trier les résultats par ordre croissant de l'attribut ;COUNT(*)
renvoie le nombre de lignes d'une requête ;Un musicien souhaite créer une base de données relationnelle contenant ses
morceaux et Interpretes préférés. Pour cela il utilise le langage SQL. Il crée une table
morceaux
qui contient entre autres les titres des morceaux et leur année de sortie :
id_morceau | titre | annee | id_interprete |
---|---|---|---|
1 | Like a Rolling Stone | 1965 | 1 |
2 | Respect | 1967 | 2 |
3 | Imagine | 1970 | 3 |
4 | Hey Jude | 1968 | 4 |
5 | Smells Like Teen Spirit | 1991 | 5 |
6 | I Want To hold Your Hand | 1963 | 4 |
Il crée la table interpretes
qui contient les Interpretes et leur pays d'origine :
id_interprete | nom | pays |
---|---|---|
1 | Bob Dylan | États-Unis |
2 | Aretha Franklin | États-Unis |
3 | John Lennon | Angleterre |
4 | The Beatles | Angleterre |
5 | Nirvana | États-Unis |
id_morceau
de la table morceaux
et id_interprete
de la table interpretes
sont des clés primaires.
L’attribut id_interprete
de la table morceaux
fait directement référence à la clé
primaire de la table interpretes
.
Q1. Écrire le résultat de la requête suivante :
Pour faire les lignes d'un tableau maintenez la touche Alt enfoncée et tapez le code du symbole souhaité
179 : │ | 180 : ┤ | 191 : ┐ | 192 : └ | 193 : ┴ | 194 : ┬ | 195 : ├ | 196 : ─ | 197 : ┼ | 217 : ┘ | 218 : ┌ |
Q2. Écrire une requête permettant d'afficher les noms des Interpretes originaires d'Angleterre.
Q3. Écrire le résultat de la requête suivante :
Q4. Écrire une requête permettant de calculer le nombre de morceaux dans la
table morceaux
.
Q5. Écrire une requête affichant les titres des morceaux par ordre alphabétique.
Q6. Citer, en justifiant, la clé étrangère de la table morceaux.
Q7. Écrire un schéma relationnel des tables interpretes et morceaux.
Q8. Expliquer pourquoi la requête suivante produit une erreur :
Q9. Une erreur de saisie a été faite. Écrire une requête SQL permettant de changer l’année du titre « Imagine » en 1971.
Q10. Écrire une requête SQL permettant d'ajouter l'Interprete « The Who » venant
d'Angleterre à la table interpretes
. On lui donnera un id_interprete
égal à 6.
Q11. Écrire une requête SQL permettant d'ajouter le titre « My Generation » de
« The Who » à la table morceaux. Ce titre est sorti en 1965 et on lui donnera
un id_morceau
de 7 ainsi que l'id_interprete
qui conviendra.
Q12. Écrire une requête permettant de lister les titres des Interpretes venant des États- Unis.
On donne le schéma relationnel suivant :
Copiez le code SQL ci-dessus (ctrl a, puis ctrl c), puis collez-le dans programiz et cliquer sur Run SQL
Ecrire les requêtes suivantes demandées
Collez vos requêtes ci-dessous et sauvegardez
Fond : Texte : Tables : Thème du langage:
Contenu sous licence CT BY-NC-SA 3.0
Pascal Hassenforder 15/08/2021
MAJ le 21/11/2023