Bases de données

Vocabulaire

Base de données

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.

Modèle de données

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 :

Il existe d’autres modèle de données.

Schéma

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)   |
+-------------+--------------+

N-uplet

Un n-uplet est un ensemble de valeurs, une ligne de la table.

+--------+------+----+----+
| Durant | Paul | 17 | A1 |
+--------+------+----+----+

Clé

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,

SGBD

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

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.

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

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.


Propriétés des bases de données classiques

  1. Persistance des données
    Les données sont sauvegardées sur le disque

  2. 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

  3. Redondance faible
    Chaque information n’est stockée qu’une seule fois
    Dans le cas contraire, les informations dupliquées doivent rester valides

  4. Sécurité
    Il faut gérer les reprises en cas de pannes logicielles ou matérielles

  5. Confidentialité
    Les données sensibles doivent être protégées
    Il y a des mécanismes de sécurité et d’autorisation

  6. 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)


Opérations

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.

Sélection

Notation algébrique: R1 / C
Définition: Un sous-ensemble de lignes de R1 vérifiant la condition C
Exemple: pomme / (couleur == jaune)

Sélection

Projection

Notation algébrique: R1[VA,…]
Définition: Un sous-ensemble de colonnes de R1 (VA, …)
Exemple: pomme[identifiant,nom_variété]

Projection

Produit cartésien

Notation algébrique: R1 X R2
Définition: Combinaison de R1 et R2
Exemple: goûteur x variété = dégustation

Produit cartésien

Jointure

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é

Jointure

Différence ensembliste

Notation algébrique: R1 - R2
Définition: Ensemble des n-uplets de R1 qui ne sont pas dans R2
Exemple: pomme1 - pomme2

Différence

Union

Notation algébrique: R1 ∪ R2
Définition: Ensemble des n-uplets de R1 ou de R2
Exemple: pomme1 + pomme2

Union

Intersection

Notation algébrique: R1 ∩ R2
Définition: Ensemble des n-uplets de R1 qui sont aussi dans R2
Exemple: pomme ∩ pomme

Intersection

Division

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

Division

Agrégation

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.

Agrégation