[[info:bdd:accueilbdd|{{ :iconemaison.jpg?nolink&25|Sommaire Bdd}}]]
==== BDDR - Généralités ====
[Mise à jour le 8/3/2024]
* **Lectures connexes**
* [[:info:bdd:sqliteConsole|Wiki - BDDR - SQLite - Requêtes dans la console]]
* [[:info:bdd:basesql|Wiki - BDDR - MySQL - Requêtes dans la console]]
* [[:info:bdd:SqliteVSCode|Wiki - BDDR - SQLite dans VSCode]]
* **Mots-clés** : schéma, table ou relation, enregistrement ou tuple, champs ou attributs, instance, clé primaire, clé étrangère, sélection, jointure, SQL.
----
=== 1. Introduction ===
Une base de données est un dispositif permettant de stocker un ensemble d'informations de manière structurée. L'agencement adopté pour organiser les informations s'appelle le **schéma de la base**. Ce shéma est constitué de tables constituant l'**instance** de la base de donnée.
{{ :web:schemabase.png?nolink&300 |}}
=== 2. Organisation ===
L'unité de base de cette structure s'appelle la **table**. Une table regroupe des ensembles d'informations qui sont composés de manière similaire. Une **ligne** de la table (entrée) s'appelle un **enregistrement** (record) ou **t-uplet** (tuple). Chaque entrée est caractérisée par plusieurs renseignements distincts (les **colonnes**), appelés **attributs** ou **champs**. La première ligne est le **schéma de la table**.
Par exemple, une table peut contenir trois champs : le prénom, le nom et le métier de plusieurs utilisateurs, on aura donc pour chaque utilisateur les mêmes informations. Il est possible de représenter une table par un tableau, où les //champs// seront symbolisés par les //colonnes// du tableau et pour lequel chaque //ligne// représentera un //enregistrement//.
{{ :web:392093_1.png?nolink |{{ :web:392093_1.png?nolink |}}
La table ci-dessus contient quatre **enregistrements** et trois **attributs**.
Une manière simple d'**identifier les enregistrements** d'une table est de leur attribuer une **clé** dite **primaire**.
C'est-à-dire qu'on va choisir un **attribut** ou une **combinaison d'attributs** qui permettront de récupérer un enregistrement de manière **unique**. Dans la table présentée à la figure suivante, l'attribut ''//Nom//'' peut être une clé puisque toutes les entrées ont un ''//Nom//'' différent. Le problème est qu'il peut arriver que deux utilisateurs aient le même nom, c'est pourquoi on peut aussi envisager d'utiliser une clé composée du ''//Nom//'' et du ''//Prénom//''. On peut également ajouter un champ nommé ''//Id//'' pour **identifiant**.
{{ :web:392094.png?nolink |}}
On choisit comme clé la combinaison //Nom-Prénom//
Il n'est pas rare qu'une base de données ait **plusieurs tables**.
Afin de **lier des tables**, il est possible d'insérer dans une table une clé qui appartient à une autre table, auquel cas on parle de **clé étrangère** pour la table qui accueille la clé, comme à la figure suivante.
{{ :web:392096.png?nolink |}}
Afin de **lier des tables**, il est possible d'insérer dans une table une clé qui appartient à une autre table, auquel cas on parle de **clé étrangère** pour la table qui accueille la clé, comme à la figure suivante.
Dans la première table, //Métier// est une **clé étrangère**, car elle est clé primaire de la seconde table.
Il est possible d'effectuer des opérations sur une base de données, comme créer des tables, supprimer des entrées, etc. L'opération qui consiste à lire des informations qui se trouvent dans une base de données s'appelle la **sélection**.
Pour effectuer des opérations sur plusieurs tables, on passe par une **jointure**, c'est-à-dire que l'on combine des attributs qui appartiennent à plusieurs tables pour les présenter conjointement.
\\
=== 3. Langage de requêtes ===
Afin d'effectuer toutes ces opérations, on passe par un **langage de requête**. Celui dont nous avons besoin s'appelle SQL.
Enfin, une base de données est destinée à recueillir des informations simples, c'est pourquoi on évite d'y insérer des données lourdes comme des fichiers ou des données brutes. Au lieu de mettre directement des images ou des vidéos, on préfèrera insérer un URI qui dirige vers ces fichiers.
----
* Une base de données est un outil qui stocke les données de manière organisée afin de les retrouver facilement par la suite.
* On communique avec une **BDD** grâce au langage **SQL**. Ce langage est commun à tous les systèmes de gestion de base de données.
* Une base de données contient plusieurs **tables**.
* Chaque table est un tableau où les colonnes sont appelées « **attributs** » et les lignes « **enregistrements** ».
* La première ligne du tableau est le **schéma** de la table.
----