Cours sur les bases de donné perfectionnement


Télécharger Cours sur les bases de donné perfectionnement

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Les bases de données

Support de cours

Pascal Ballet

Introduction

Les fondements

Une base de données a deux objectifs principaux :

- le stockage structuré de l'information

ET

-   le traitement des données stockées

Par exemple, un calepin permet :

-   de stocker des informations sur nos amis, collègues Ces informations sont structurées (nom, téléphone, adresse)

ET 

-   de retrouver rapidement un nom grâce aux onglets (A, B, C )

Un calepin constitue donc bel et bien une base de données. Certes il n'est pas informatisé, mais il possède les deux attributs essentiels d'une base de données : stocker de manière structurée et retrouver de l'information.

Un calepin possède des limites :

-   au delà d'une centaine de contacts, il devient difficilement gérable

-   si nous voulons ajouter le champ "Age", il faut modifier chacune des pages

-   si nous cherchons à faire la moyenne d'age de tous nos contacts, cela devient très fastidieux

-   de même si nous voulons rechercher les personnes dont le prénom est Jean

C'est pourquoi l'ordinateur est intéressant : il traite rapidement de nombreuses données.

Les possibilités

L'ordinateur permet le traitement rapide de nombreuses données. Une fois l'information stockée de manière structurée dans l'ordinateur, il est possible de :

-   retrouver rapidement une ou plusieurs informations,

-   modifier, compléter ou supprimer les données stockées,

-   changer la manière dont l'information est stockée (modifier la structure),

-   mettre en forme les données (pour l'impression par exemple),

-   contraindre la saisie des données sous un certain format (numérique, code postal ),

-   mettre des données en relations (permet d'éviter les doublons et de croiser des informations),

Les méthodes de stockage

A-       Une manière simple de stocker de manière structurée des données est d'utiliser un tableau. Pour le calepin, voici comment ce tableau se représente :

Nom

Téléphone

Adresse

Einstein Albert

01 23 45

Ulm - Allemagne

Turing Alan

54 32 10

Londres - Grande Bretagne

B-       Une autre manière de stocker les données est la manière hiérarchique. Par exemple les fichiers d'un ordinateur sont stockés dans des dossiers, contenant à leur tour d'autres dossiers, etc. Une des premières bases de données utilisant une arborescence est IMS. Elle fut créée par IBM en 1966 pour le compte de Rockwell et le programme Apollo (toujours en fonctionnement aujourd'hui).

C-       Le stockage hiérarchique des données n'est pas toujours adapté aux problèmes rencontrés dans le monde réel. C'est pourquoi, le modèle de base de données relationnelles est beaucoup plus répandu. Une base de données relationnelle est structurée suivant les principes de l’algèbre relationnelle. La théorie des bases de données relationnelles est issue des travaux de Edgar Frank Codd. Une base de donnée relationnelle permettant de stocker et de traiter notre calepin aurait une table identique au tableau du point A :

Nom

Téléphone

Adresse

Einstein Albert

01 23 45

Ulm - Allemagne

Turing Alan

54 32 10

Londres - Grande Bretagne

Dans la terminologie des bases de données relationnelles, "Nom", "Téléphone" et "Adresse" sont des champs. Les deux lignes qui suivent sont les enregistrements.

- Les champs font partie de la structure de la base et - les enregistrements font partie des données de la base.

D- Il existe également des bases de données orientées objet, comme il existe des langages de programmation orientés objet. Malgré les atouts de l'approche objet (encapsulation, héritage ), celles-ci sont peu répandues. Les bases de données relationnelles sont, actuellement, le standard de fait.

Nous étudierons dans ce cours essentiellement les bases de données relationnelles.

Le traitement des données 

La manière de stocker ne fait pas tout. En effet, n'oublions pas qu'une base de données doit être capable d'exploiter les données. Pour ce faire, un langage appelé SQL (Structured query language) a été développé dans les années 1980 (première norme éditée par l'ANSI en 1986 puis adoptée par l'ISO en 1987). Ce langage, adapté aux bases de données relationnelles permet :



-   de définir les données (DDL, Data definition language),

-   de manipuler les données (DML, Data manipulation language), - de contrôler les données (DCL, Data control language).

Par exemple, si pour notre calepin nous voulions retrouver tous les contacts dont l'age dépasse 20 ans, nous écririons en SQL :

select*fromcontactswhereage > 20

Les clés

Pour permettre la cohérences des données et, accessoirement augmenter la vitesse de traitement des informations, une table associe généralement à l'un de ses champs une clé dite primaire. Un champ à qui une clé est associée ne peut pas avoir de doublons dans ses enregistrements. Par exemple, dans notre calepin, si nous désignons le champ nom comme clé primaire de la table contacts, il ne sera pas possible d'avoir deux personnes ayant le même nom. Dupont (Jean) et Dupont (Emilie) ne pourront pas être sur le calepin car ces deux personnes ont exactement le même nom.

Une possibilité, pour pallier à ce problème, serait par exemple d'ajouter un champ insee, pour indiquer le numéro de sécurité sociale de chacun de nos contacts. En effet, chaque citoyen possède un numéro insee et ce numéro est unique.

Si l'on pousse le raisonnement un peu plus loin, on se rend compte que ce numéro insee marche bien pour nos contacts français. Or, si nous avons des contacts étrangers (japonais, américain ), le numéro insee n'est plus possible. De plus, il serait quelque peu délicat de demander à chacun de ses contacts son numéro insee

C'est pourquoi, pour notre calepin, nous n'utiliserons pas le numéro inse mais simplement un champ numéro qui associe (éventuellement automatiquement) un nombre unique à chacun de nos contact. Le champ numéro est alors clé primaire de la table contacts.

La table contacts devient alors :

Numéro (clé)

Nom

Téléphone

Adresse

0

Einstein Albert

01 23 45

Ulm - Allemagne

1

Turing Alan

54 32 10

Londres - Grande Bretagne

La notion de clé permet également de mettre en relation différents types d'information. C'est ce que nous développons dans la partie suivante.

Les relations

Supposons que pour chaque contact de notre calepin, nous désirions placer éventuellement plusieurs numéros de téléphones.

La première solution qui vient à l'esprit est d'ajouter deux ou trois nouveaux champs du type : téléphone-portable, téléphone-maison, téléphone-travail à la table contacts.

Cette solution a l'avantage d'être simple mais ne permet pas une grande souplesse dans le nombre de numéros de téléphones mémorisables par contact. En effet, si l'un de nos contacts nous donne son numéro de téléphone de vacances, nous sommes dans l'embarras. Nous pouvons alors ajouter le champ téléphone-vacances, mais ajouter un champ rien que pour un contact n'est pas rentable en terme :

-    de place mémoire utilisée, car ce champ se répète pour tous les autres contacts

(même si ce champ est vide)

-    et si nous devons ajouter un nouveau champ téléphone-portable-travail, il faut à nouveau modifier la structure de la table.

L'idée est d'ajouter une nouvelle table contenant uniquement les numéros de téléphones de nos contacts. Cette table doit donc associer à chacun de nos contacts plusieurs numéros de téléphone. Attention, un contact est repéré de manière unique par son numéro et non pas par son nom à cause des homonymes. La table téléphones est alors la suivante :

Numéro

Téléphone

0

01 23 45

0

06 07 08

1

54 32 10

Cette table signifie que notre contact 0 (à savoir Einstein) possède deux numéros de téléphone, un fixe et un portable et que notre contact 1 (Turing) possède un numéro de téléphone fixe.

Nous nous rendons compte alors qu'il est possible de rajouter à tout moment un nouveau numéro de téléphone pour l'un ou l'autre de nos contacts. Si nous voulons ajouter un numéro de vacances pour Einstein, voilà à quoi ressemblera la table téléphones :

Numéro

Téléphone



0

01 23 45

0

06 07 08

0

05 54 43

1

54 32 10

Comme premier bilan de notre calepin à ce stade de développement, nous voyons que deux tables sont nécessaires :

-   la table contacts,     - la table téléphones.

Ces tables sont les suivantes :

Contacts :

Numéro(clé)

Nom

Téléphone

Adresse

0

Einstein Albert

01 23 45

Ulm - Allemagne

1

Turing Alan

54 32 10

Londres - Grande Bretagne

Téléphones :

Numéro

Téléphone

0

01 23 45

0

06 07 08

0

05 54 43

1

54 32 10

Nous observons cependant une incohérence / redondance du fait que la table contacts possède un champ téléphone. Or dorénavant, c'est la table téléphones qui s'occupe de traiter les numéros de téléphones. Nous devons donc supprimer le champ téléphone de la table contacts afin de :

-   supprimer les doublons,

-   faciliter ainsi la maintenance et la cohérence de la base calepin en n'ayant qu'un seul enregistrement à changer si l'un des numéro de téléphone venait à être modifié (par exemple le 01 23 45 devient 01 23 46).

La table contacts devient alors :

Numéro(clé)

Nom

Adresse

0

Einstein Albert

Ulm - Allemagne

1

Turing Alan

Londres - Grande Bretagne

et ne gère plus du tout les numéros de téléphones.

La difficulté qui nous apparaît alors et qu'il faut maintenant gérer 2 tables distinctes. Pour avoir le numéro de téléphone de vacances d'Einstein, il faut ouvrir son calepin à Einstein, regarder quel est son numéro (0) puis chercher dans la table téléphone son numéro de vacances. Tout cela n'est guère pratique.

Voilà en quoi les relations entre les tables vont nous servir. Si nous regardons de prêt nos deux tables, nous nous rendons compte qu'elles possèdent un champ commun :  - c'est le champ numéro.

Pour le moment, c'est à nous de remplir correctement le champ numéro de la table téléphones. Opération qui peut s'avérer délicate car la moindre erreur dans un numéro (de contact, à savoir 0 pour Einstein ) et l'on attribut un mauvais numéro de téléphone à une personne.

Les bases de données relationnelles permettent de relier deux champs de même contenus se trouvant dans deux tables distinctes.

Nous pouvons donc créer une relation entre le champ numéro de la table contacts et le champ numéro de la table téléphones. La base de donnée calepin peut alors gérer la cohérence entre les deux tables :

Une relation se fait entre :

-   un champ de type clé et un champ quelconque        > relation 1 à plusieurs (N)

-   un champ de type clé et un autre champ de type clé            > relation 1 à 1

-   un champ quelconque et un champ quelconque      > relation indéfinie

> La relation la plus couramment utilisée est la relation 1 à plusieurs (1 à N). Cela signifie pour notre calepin que pour un contact particulier (unique), il peut avoir 0 ou plusieurs numéros de téléphones :

> Le type de relation 1 à 1 est moins couramment utilisé car une relation 1 à 1 signifie que l'on peut tout simplement fusionner les deux tables mises en relation en une seule et même table.

> Le type de relation indéfinie n'est pas utilisé en pratique.



Les outils

ORACLE

MySQL

ACCESS

NOVEL

etc

L'outil informatique associé à notre cours est MS Access :

Applications simples

Exemple 1

Mise en place d'une gestion de titres musicaux avec les critères suivants :

-   une table contient les artistes (nom, prénom et numéro unique (clé))

-   une autre table contient les titres des artistes (numéro des artistes et titres des l'albums)

-   établir une relation entre ces 2 tables (1 à N)

Artistes                       1            N                        Titres

Numéro            Nombre - clé                    Numéro                       Nombre

Nom    Texte - non vide          Titre    Texte - non vide Prénom         Texte

La relation indique qu'un artiste (1) peut posséder plusieurs titres (N).

-   donner un exemple de base contenant 2 artistes et 3 titres

Numéro

0

1

Artistes

Nom

Mozart

Beethoven

Prénom

Ludwig

Numéro

0

0

1

Titres

Titre

Les noces de Figaro La flûte enchantée

Hymne à la joie

Exemple 2

Dorénavant, un titre peut aussi avoir été interprété (ou composé) par plusieurs artistes.

- Quelles sont les tables et les relations à créer ?

Artistes                                                                                                Titres

NuméroArtisteNombre -NuméroTitreNombre - clé clé

Nom                    Texte          -Titre            Texte   - non vide non vide

Prénom               Texte

ArtistesTitres

 NuméroArtiste Nombre

                                                        NuméroTitre      Nombre      N

La table ArtistesTitres permet de créer la relation indirecte du type "plusieurs à plusieurs" : un artiste peut avoir composé (ou interprété) plusieurs titre et un titre peut avoir été composé (ou interprété) par plusieurs artistes.

- Donner un exemple avec 2 artistes et 3 titres (dont 1 en commun).

Artistes                             

Titres

Titre

Aida

La Tosca

Marche hongroise

NuméroArtiste

0

1

NomPrénomNuméroTitre

Pavarotti      Luciano                            0

Domingo      Placido      1

2

ArtistesTitres

NuméroArtiste         NuméroTitre

                    0                           0

0                2

1                1

                    1                           2

La table ArtistesTitres se lit ainsi : L'artiste 0 a interprété les titres 0 et 2, l'artiste 1 a interprété les titres 1 et 2, le titre 0 a été interprété par l'artiste 0, le titre 1 par l'artiste 1 et le titre 2 par les artistes 0 et 1. Ainsi, la table ArtistesTitres permet bien d'avoir une relation (indirecte) du type "plusieurs à plusieurs".



"A Relational Model of Data for Large Shared Data Banks", CACM 13, No. 6, June 1970



782