Introduction aux bases de données relationnelles.
Réponse AJAX
!!! Prendre la version plus récente de ce cours

Présentation des bases de données relationnelles

Nécessité de stocker les données structurées

Les systèmes de gestion de bases de données sont particulièrement adaptés pour gérer de grands volumes de données : ils permettent de les stocker de façon organisée, et ils offrent des outils adaptés à la manipulation et à l'interrogation de ces grands volumes. Ils intègrent parfois (comme c'est le cas de Microsoft Access ou WinDev) des outils de développement et de création d'interfaces graphiques, qui permettent de générer de toute pièce des applications basées sur les données stockées dans la base.

Les systèmes de gestion de bases de données se révèlent donc particulièrement efficaces pour les applications basées sur le stockage et le traitement des données, applications qui concernent des domaines aussi divers que la gestion d'une entreprise (gestion des produits depuis leur commande jusqu'à leur vente en passant par le stock, les prévisions, etc., gestion des clients, des salariés et des commerciaux), la gestion d'organisations diverses (adhérents d'une association, manifestations d'un club de sports, élèves d'un établissement scolaire), et la gestion personnelle (gestion de cédéthèques, vidéothèques, gestion des contacts, etc.). Les exemples ne manquent pas et ceci n'en est qu'une infime représentation.

Autres méthodes de stockage des données

Les bases de données relationnelles représentent le moyen le plus répandu de stocker les données, mais pas le seul. Il existe aussi :

Les SGBDR les plus répandus

Des systèmes de gestion de bases de données relationnelles parmi les plus utilisés sont :

A ce jour, quelle est la toute dernière version de Microsoft Access ?

Votre réponse n°1

A ce jour, quelle est la toute dernière version de MySQL ?

Votre réponse n°2

Donnez plus d'explication sur le fait que MySQL ait une double licence ?

Votre réponse n°3

La clé primaire

Qu'est-ce qu'une clé primaire ?

La notion de clé primaire (appelée aussi identifiant) est une notion fondamentale dans les bases de données relationnelles, nous allons l'expliquer ici.

La valeur de la clé primaire permet d'identifier de façon unique un enregistrement (par exemple, le client n°1). C'est important car, lorsque nous ferons référence à ce client à partir d'une autre table (par exemple pour dire qu'une facture est associée à ce client), nous utiliserons cette clé primaire. C'est pourquoi il est important que la clé primaire identifie de façon unique et stable le client (en général, l'enregistrement) en question. Les clés primaires doivent avoir les propriétés suivantes :

Clés naturelles et clés artificielles

Pour le choix de la clé primaire, on peut choisir une clé naturelle, c'est à dire une valeur existant dans le problème que l'on informatise. Par exemple, une référence de produit pourrait servir de clé primaire.

Toutefois, l'utilisation de clés naturelles peut s'avérer inappropriée si la clé ne respecte pas les propriétés énoncées ci-dessus. On l'a vu, un numéro d'immatriculation de voiture (avant 2009) ou un numéro de sécurité sociale ne peuvent servir de clé primaire. De plus, les clés naturelles ne sont pas forcément optimales au niveau de l'occupation mémoire et des vitesses de traitement.

Je recommande donc l'utilisation systématique de clés artificielles, c'est-à-dire une clé créée de toute pièce car elle n'existe pas dans le système d'information d'origine. Cela nous assure qu'elle aura toutes les propriétés d'une bonne clé primaire.

Numéro automatique

Un numéro automatique est un entier long, qui occupe 4 octets en mémoire (soit 32 bits), et permet donc de représenter 232 = 4 milliards d'enregistrements différents, ce qui est suffisant dans la quasi-totalité des problèmes. Lorsqu'on crée un nouvel enregistrement, le SGBDR choisit automatiquement une nouvelle valeur pour la clé primaire, c'est le principe du numéro automatique.

La notion de numéro automatique est présente dans tous les systèmes de gestion de bases de données. C'est un type de données parfaitement approprié pour gérer les clés artificielles.

Clé étrangères et intégrité référentielle

La clé étrangère

La clé étrangère n'est pas forcément la clé primaire d'une table. Par contre, elle est reliée à une clé primaire dans une autre table.

Par exemple, dans le schéma ci-dessous :

La contrainte d'intégrité référentielle

L'intégrité référentielle est une notion importante dans les bases de données relationnelles. Cela consiste à vérifier, quand on donne une valeur à un champ dans une clé étrangère, que cette valeur existe dans la table liée. Par exemple, si je crée une facture pour le client n°1, il faut que le client n°1 existe dans la table des clients.

On dit que l'intégrité de la base n'est plus respectée lorsque on tombe sur des cas où des clés étrangères existent, mais pas la clé primaire correspondante. Selon le SGBDR et la façon dont il est utilisé, il vous avertira par une erreur ou il laissera faire.

Par exemple, voici l'erreur obtenue sous Microsoft Access quand je crée une facture pour un numéro de client qui n'existe pas :

Remarque sur... L'intégrité référentielle dans MySQL

De nombreux programmeurs préfèrent MyISAM pour améliorer les performances, et ils gèrent l'intégrité référentielle au niveau du code de programmation lorsque cela est important, au lieu de laisser MySQL le gérer systématiquement même lorsque cela est inutile.

Pour choisir le moteur de stockage lorsqu'on crée une table dans MySQL :

Pour changer le moteur de stockage d'une table existante :

Interroger les bases de données relationnelles

Le QBE : Query By Example

Dans Microsoft Access, on peut interroger les données de façon intuitive (par l'interface graphique, sans utiliser de langage particulier). C'est ce qu'on appelle le mode QBE (Query By Example).

Par exemple, voici comment afficher les noms et les prénoms des clients, qui s'appellent DURAND, triés par ordre alphabétique sur le prénom.

En tant que futurs professionnels de l'informatique, cette méthode ne nous intéresse pas car elle a ses limites, et on ne peut pas l'intégrer à nos propres applications.

Le langage SQL : Structured Query Language

Le langage SQL permet d'aller beaucoup plus loin en matière d'interrogation des données. Il permet également de créer les tables, insérer les données, gérer les utilisateurs et leurs droits, etc.

Par exemple, en SQL, l'équivalent de la requête précédente s'écrit :

Intégration des requêtes dans une application

Sur l'exemple du site bts-sio.com, montrez des requêtes SQL.

Quelle est l'année de création du langage SQL ?

Votre réponse n°4

A quelle version en sommes-nous maintenant ?

Votre réponse n°5

Nécessité de protéger les données

Les entreprises stockent toutes leurs données dans des bases de données. En cas de problème (crash, piratage), c'est toute la mémoire de l'entreprise qui peut disparaître. Pour éviter cela, il faut :

Des cours ultérieurs permettront de voir comment gérer cette sécurité.

Vous aussi vous risquez d'être confrontés à la perte de données. Ca peut être lourd de conséquences si vous perdez des documents de travail qui vous serviront pour valider le BTS. Avez-vous l'intention de faire des sauvegardes régulières de vos travaux (par exemple sur clé USB), ou pas ?

Votre réponse n°6

Actualités sur les SGBDR