Base de données — notions

Cet article a pour but d'introduire la notion de base de don­nées. Il sera utile pour toute per­sonne ayant déjà enten­du le terme, mais ne sachant pas vrai­ment ce que c'est, ou à quoi cela sert.

Michael Man­di­berg /​ CC BY-SA

Définition

Une base de don­nées c'est tout sim­ple­ment une col­lec­tion d'informations diverses sto­ckées de manière pérenne sur un ordi­na­teur. Celle-ci est orga­ni­sée de façon à retrou­ver faci­le­ment l'information sou­hai­tée. Les bases de don­nées peuvent bien sûr être très dif­fé­rentes les unes des autres, sui­vant leurs uti­li­sa­tions ou encore selon les infor­ma­tions qui y sont sto­ckées.
Je vous invite à aller sur Wiki­pé­dia où vous pour­rez trou­ver une défi­ni­tion très com­plète, notam­ment sur la page en anglais. Nous retien­drons seule­ment qu'une base de don­née, c'est de l'information sto­ckée et orga­ni­sée.

On rajoute sou­vent deux contraintes sur la teneur de l'information :
exhaus­ti­vi­té : la base de don­nées contient toutes les infor­ma­tions requises pour le ser­vice que l'on en attend.
— uni­ci­té : chaque infor­ma­tion doit y être pré­sente une seule fois.

Pourquoi ?

Elles sont par­tout.

Pre­nez par exemple bioin­fo-fr, un site qui regroupe des articles de qua­li­tés sur le monde de la bio­in­for­ma­tique 🙂 Ce site pos­sède aus­si une base de don­nées. Y sont sto­ckés les articles, les com­men­taires, etc. Tout le conte­nu que vous pou­vez voir est enre­gis­tré dans une base de don­nées. Cela per­met par exemple de pou­voir sau­ve­gar­der le conte­nu de ce site s'il y a un pro­blème sur le ser­veur. Cela per­met aus­si de copier, de trans­fé­rer l'information à un autre endroit, ou encore de per­mettre à mul­tiples appli­ca­tions d'accéder aux mêmes infor­ma­tions.

Les infor­ma­tions sont orga­ni­sées : les articles sont ran­gés par date, par auteur, ou encore par caté­go­rie. Même les com­men­taires que vous pou­vez appor­ter sur un article sont enre­gis­trés dans la base de don­nées, liés à l'article auquel ils appar­tiennent. Vous pou­vez alors récu­pé­rer faci­le­ment tous les articles d'un même auteur :  nahoy, ou encore récu­pé­rer toutes nos cri­tiques sur les livres en deman­dant la caté­go­rie : j'ai lu, et même faire des recherches.
En "base de don­nées", on appelle cela faire des requêtes. Atten­tion tout de même, quand vous cli­quez sur ces liens, vous n'interrogez pas direc­te­ment la base de don­nées, mais pas­sez par une inter­face : ici Word­Press.

C'est la deuxième rai­son pour laquelle les bases de don­nées sont inté­res­santes : une fois les don­nées cor­rec­te­ment sto­ckées, vous pou­vez sélec­tion­ner l'information qui vous inté­resse et la repré­sen­ter de mul­tiples façons. Nous avons déjà vu que la pré­sen­ta­tion de l'information est un élé­ment très impor­tant. Cela com­mence avec la sélec­tion des don­nées : trou­ver le plus inté­res­sant, le plus per­ti­nent… Tout dépend bien sûr de ce que vous vou­lez mon­trer.

 Relations

Pour pou­voir orga­ni­ser les don­nées de façon cohé­rente, on construit un modèle rela­tion­nel. C'est ce qui va défi­nir les rela­tions pou­vant exis­ter entre les élé­ments de votre base de don­nées.
Il faut savoir qu'il existe dif­fé­rents types de base de don­nées, cha­cune avec un modèle ayant ses propres spé­ci­fi­ci­tés. Vous pou­vez retrou­vez les dif­fé­rents types ici (en haut à droite). Pour ma part, je vous pré­sen­te­rai un exemple d'une base de don­nées rela­tion­nelle. La plus répan­due et la plus simple à com­prendre. Cela vous per­met­tra d'aller plus loin si vous le sou­hai­tez …

Exemple

Ima­gi­nons pour l'exemple une base de don­nées qui contient la posi­tion des gènes sur le génome d'une espèce. Celle-ci sera volon­tai­re­ment très simple.

  1. Défi­nis­sons les enti­tés qui seront pré­sentes dans notre base de don­nées : on aura besoin d'une espèce, d'un assem­blage et des gènes (un assem­blage est une ver­sion d'un génome).
  2. Défi­nis­sons les attri­buts que vont avoir nos enti­tés :  l’espèce aura un nom usuel, et un nom scien­ti­fique, l'assemblage un nom et la source de l'assemblage, le gène un nom et une posi­tion.
  3. Éta­blis­sons main­te­nant les rela­tions entre nos enti­tés : un assem­blage est fait à par­tir d'une espèce, il appar­tient donc à celle-ci. Un gène appar­tient à un assem­blage, il a une posi­tion sur celui-ci.
  4. Sché­ma­ti­sons notre modèle : nos enti­tés cor­res­pon­dant à des tables, leur attri­but à des champs.
    Remar­quez qu'à coté des champs sont indi­qués leurs types (ici du texte).

    Tables — réa­li­sé avec SQLE­di­tor
  5. Ajou­tons les rela­tions. Pour cela nous devons rajou­ter dans chaque table un champ id : ce sera l'identifiant de chaque entrée dans la base de don­nées, il sera géné­ré auto­ma­ti­que­ment par celle-ci. Cela per­met­tra d'instaurer les rela­tions entre les tables, appe­lées réfé­rences.
    Tables + Rela­tions — réa­li­sé avec SQLE­di­tor

    Voi­ci le sché­ma, notre modèle de don­nées. Le champ id a été rajou­té, ain­si que son type, c'est un entier (Inte­ger en anglais).

  6. La des­crip­tion com­plète des rela­tions entre les tables néces­site aus­si de redé­fi­nir les car­di­na­li­tés : le nombre de par­ti­ci­pants d'une enti­té à une rela­tion. Ici c'est simple et évident (1 Espèce — N Assem­blage, 1 Assem­blage — N Gènes).
  7. Rem­plis­sons main­te­nant la base de don­nées avec des exemples.
Table Espèce
Table Assem­blage
Table Gène

Ces trois images sont réa­li­sées avec SQLite Mana­ger.

Voi­là notre base de don­nées. Bien qu'elle soit très loin d'être com­plète, nous pou­vons déjà voir les dif­fé­rentes requêtes que nous pou­vons appli­quer :

  • Sélec­tion­ner toutes les espèces qui ont le gène X :"Levure" ,
  • Sélec­tion­ner tous les assem­blages qui ont le gène X, mais pas le gène Y : "Aucun" ,
  • Sélec­tion­ner tous les gènes qui sont sur le chro­mo­some I entres les posi­tions 9000 et 13 000 et qui appar­tiennent à la levure : "X".

Cela per­met d'avoir rapi­de­ment les infor­ma­tions que l'on sou­haite, et même d'en décou­vrir d'autres et de géné­rer de nou­velles hypo­thèses.

Si vous vou­lez appré­hen­der la com­plexi­té que peut offrir une base de don­nées, je vous redi­rige sur Ensem­bl, base de don­nées bio­lo­gique qui offre ici un aper­çu d'une par­tie de ses bases de don­nées.

Au niveau de la quan­ti­té d'information conte­nus dans une base de don­nées telle que celle-ci, vous pour­rez trou­ver ici ou quelques sta­tis­tiques sur le nombre de séquences qui sont enre­gis­trés dans des bases de don­nées bio­lo­giques  (ici l'EBI et la DDBJ).

SGBD

Tout cela c'est bien beau, mais concrè­te­ment, com­ment créer une base de don­nées ?
On uti­lise un SGBD (Sys­tème de Ges­tion de Base de Don­nées), grâce à ce sys­tème nous pour­rons créer la base de don­nées que nous avons conçue, y ajou­ter des espèces, des gènes, la modi­fier pour y ajou­ter les enti­tés man­quantes.
Vous pour­rez trou­ver une liste par ici.

Langage

Chaque base de don­nées a son propre lan­gage, mais ils sont regrou­pés sous plu­sieurs normes. Vous avez par exemple SQL qui est un des plus connus, mais il existe d'autres alter­na­tives comme NoS­QL uti­li­sé par de grands acteurs d'internet (Google, Face­book, Sour­ce­Forge, …). Vous pou­vez trou­ver une liste ici (en anglais).

Par où commencer ?

Je vous recom­mande deux sites :

  1. Le site du zero pour les débu­tants qui veulent une expli­ca­tion de zéro. Le tuto­riel sur MyS­QL est vrai­ment bien fait et vous don­ne­ra toutes les res­sources néces­saires pour implé­men­ter votre pre­mière base de don­nées.
  2. Deve​lop​pez​.com qui contient de nom­breux tuto­riels inté­res­sants, notam­ment cette réfé­rence com­plète et par­ti­cu­liè­re­ment bien réus­sie.

Et main­te­nant, à table 😀



Pour continuer la lecture :


Commentaires

2 réponses à “Base de données — notions”

  1. Avatar de Yoann M.

    Intro­duc­tion aux bases de don­nées inté­res­sante. Cela pour­ra être un bon appui pour les futurs articles trai­tant des bbd ! 🙂

  2. Il y a effec­ti­ve­ment dans cet article l'essentiel du fonc­tion­ne­ment et des termes à maî­tri­ser pour com­prendre les bases de don­nées.

    Et pour les lec­trices et lec­teurs qui ne com­prennent pas l'intérêt de tous ces id, inte­ger et réfé­rences, j'ai écrit une intro­duc­tion simi­laire, mais par­tant d'un seul tableau excel tout bête, et expli­quant au fur et à mesure pour­quoi il faut le divi­ser en tables et en rela­tions. Le tout en bon­bons 🙂 C'est ici : http://​www​.rocket​pro​jet​.com/​b​a​s​e​s​-​d​o​n​n​e​e​s​-​m​i​n​e​-​o​r​-​t​p​e​-​p​me/

Laisser un commentaire