Une base de données est un ensemble de données stockées de façon organisée, souvent dans des tables - mais par forcemment.
La manière dont sont organisées les données dans la base de données est ce qu’on appelle un modèle de données. Le plus utilisé est le modèle de données relationnel :
Les tables peuvent avoir des relations entre elles. Par exemple, un étudiant a une note pour différents cours: la table “étudiant” est liée à la table “notes”, qui est liée à la table “cours”.
Il existe d’autres modèle de données.
Chaque colonne a des propriétés : type de données (nombre, chaîne de caractères, booléen, etc), valeur par défaut, etc. Le schéma d’une table est la définition des colonnes de cette table.
+-------------+--------------+
| Field | Type |
+-------------+--------------+
| Nom | varchar(255) |
| Prenom | varchar(255) |
| No_etudiant | int(11) |
| Groupe | varchar(2) |
+-------------+--------------+
Un n-uplet est un ensemble de valeurs, une ligne de la table.
+--------+------+----+----+
| Durant | Paul | 17 | A1 |
+--------+------+----+----+
Une clé primaire (primary key) est ce qui permet d’identifier un n-uplet dans une table de manière unique.
Une clé étrangère (foreign key) est une clé qui désigne la clé primaire d’une autre table, et qui crée donc une relation.
Par exemple,
No_etudiant
.(No_etudiant,Code_cours)
(si un étudiant ne peut avoir qu’une seule note par cours).No_etudiant
dans la table “note” est une clé étrangère qui pointe vers “étudiant”.Un système de gestion de bases de données (SGBD) est un logiciel qui permet de créer, maintenir et interroger une base de données (effectuer une recherche ou un tri par exemple).
Les SGDB les plus connus de bases de données relationnelles sont
MySQL est un SGBD de base de données relationnelle utilisé avec Lamp, une stack de développement très populaire (Linux, Apache, MySQL, PHP).
On peut executer des commandes SQL dans la console en ouvrant MySQL (mysql -u root -p
).
Ou dans le navigateur en utilsant phpMyAdmin.
MySQL Workbench est un logiciel de visualisation pour créer, executer et optimiser les requêtes SQL.
On donne des instructions à effectuer au SGBD en utilisant le langage SQL. Chaque SGBD implémente une variante de SQL qui lui est propre (mais les commandes basiques sont identiques entre tous les SGBD).
Voir MySQL pour la description du langage SQL de MySQL.
NoSQL (Not Only SQL) est un terme assez vague qui désigne un ensemble de SGBD alternatifs qui cherchent à fournir soit
Pour permettre ces fonctionnalités, les bases de données NoSQL abandonnent une ou des propriétés des bases de données classiques et ne permettent pas les requêtes complexes des bases de données classiques.
Persistance des données
Les données sont sauvegardées sur le disque
Partage des données
Les utilisateurs accèdent en même temps aux mêmes données
Il existe des mécanismes de contrôle de la concurrence
Redondance faible
Chaque information n’est stockée qu’une seule fois
Dans le cas contraire, les informations dupliquées doivent rester valides
Sécurité
Il faut gérer les reprises en cas de pannes logicielles ou matérielles
Confidentialité
Les données sensibles doivent être protégées
Il y a des mécanismes de sécurité et d’autorisation
Contraintes d’intégrité
Contraintes sur le type de données (ex: le nombre d’heures d’un cours est un entier positif)
Contraintes sur les données (ex: la note d’un étudiant est comprise entre 0 et 20)
Contraintes sur les relations (ex: une seule occurence d’un identifiant est précent)
Un modèle de donnée offre un ensemble d’opérateurs pour effectuer des recherches et des modifications sur la base de données.
Notation algébrique: R1 / C
Définition: Un sous-ensemble de lignes de R1 vérifiant la condition C
Exemple: pomme / (couleur == jaune)
Notation algébrique: R1[VA,…]
Définition: Un sous-ensemble de colonnes de R1 (VA, …)
Exemple: pomme[identifiant,nom_variété]
Notation algébrique: R1 X R2
Définition: Combinaison de R1 et R2
Exemple: goûteur x variété = dégustation
Notation algébrique: R1 * (VA = VB) R2
Définition: Combinaison de R1 et R2 dont la valeur d’un attribut est la même
Exemple: pomme * (nom_variété = libellé) variété
Notation algébrique: R1 - R2
Définition: Ensemble des n-uplets de R1 qui ne sont pas dans R2
Exemple: pomme1 - pomme2
Notation algébrique: R1 ∪ R2
Définition: Ensemble des n-uplets de R1 ou de R2
Exemple: pomme1 + pomme2
Notation algébrique: R1 ∩ R2
Définition: Ensemble des n-uplets de R1 qui sont aussi dans R2
Exemple: pomme ∩ pomme
Notation algébrique: R1 ÷ R2
Définition: Ensemble des n-uplets dont la concaténation avec tous les n-uplets de R2 appartient à R1
Exemple: dégustation ÷ variété = goûteur
L’agrégation n’est pas une opération faisant partie de l’algèbre relationnelle mais n’en reste pas moins très utile.
On utilise une agrégation pour calculer le résultat d’un ensemble de lignes (on dit qu’on forme des agrégats).
Exemple: calculer la masse moyenne des pommes par groupes de pommes jaunes, rouges et vertes abîmées ou non.