Demandez le programme !

Le développement des traitements informatiques nécessite la manipulation de données de plus en plus nombreuses. Leur organisation et leur stockage constituent un enjeu essentiel de performance. Le recours aux bases de données relationnelles est aujourd’hui une solution très répandue. Ces bases de données permettent d’organiser, de stocker, de mettre à jour et d’interroger des données structurées volumineuses utilisées simultanément par différents programmes ou différents utilisateurs. Cela est impossible avec les représentations tabulaires étudiées en classe de première. Des systèmes de gestion de bases de données (SGBD) de très grande taille (de l’ordre du pétaoctet) sont au centre de nombreux dispositifs de collecte, de stockage et de production d’informations. L’accès aux données d’une base de données relationnelle s’effectue grâce à des requêtes d’interrogation et de mise à jour qui peuvent par exemple être rédigées dans le langage SQL (Structured Query Language). Les traitements peuvent conjuguer le recours au langage SQL et à un langage de programmation. Il convient de sensibiliser les élèves à un usage critique et responsable des données.

Les chapitres qui peuvent être mis en relation avec ce chapitre sont :

Aspect historique.

Edgar F .Codd (1970) écrit les fondements des bases de données relationnelles.

Le père des bases de données relationnelles est Edgar Frank Codd. Chercheur chez IBM à la fin des années 1960, il étudiait alors de nouvelles méthodes pour gérer de grandes quantités de données, car les modèles et les logiciels de l'époque ne le satisfaisaient pas. Mathématicien de formation, il était persuadé qu'il pourrait utiliser des branches spécifiques des mathématiques (la théorie des ensembles et la logique des prédicats du premier ordre) pour résoudre des difficultés telles que la redondance des données, l'intégrité des données ou l'indépendance de la structure de la base de données avec sa mise en œuvre physique. En 1970, [8] publia un article où il proposait de stocker des données hétérogènes dans des tables, permettant d'établir des relations entre elles. De nos jours, ce modèle est extrêmement répandu, mais en 1970, cette idée était considérée comme une curiosité intellectuelle. On doutait que les tables puissent être jamais gérées de manière efficace par un ordinateur. Ce scepticisme n'a cependant pas empêché Codd de poursuivre ses recherches. Un premier prototype de Système de gestion de bases de données relationnelles (SGBDR) a été construit dans les laboratoires d'IBM. Depuis les années 80, cette technologie a mûri et a été adoptée par l'industrie. En 1987, le langage SQL, qui étend l'algèbre relationnelle, a été standardisé. C'est dans ce type de modèle que se situe ce cours de base de données. En savoir plus

Quelques définitions

De nombreuses activités ont besoin de stocker des informations. Vous avez de nombreux exemples autour de vous : le lycée et son ENT, les clubs, les jeux en ligne que vous utilisez, etc. Les informations doivent être disponibles pour certains, protégées, modifiables, indépendantes d'un point de vue matériel et logiciel, etc.

Une base de données stocke des informations en rapport avec une activité. Ces informations peuvent être de natures très hétérogènes. Les informations sont structurées et cette structure permet d'insérer, de supprimer, de mettre à jour et d'interroger les informations contenues.

Un SGBD (système de gestion de base de données) est une interface entre l'utilisateur et les données.

Voici deux exemples de SGBG : MySql et Oracle.

Conception d'une base de donnée relationnelle.

Imaginez les situations développées dans les exemples ci-dessous :

Vous organisez un tournoi avec des joueurs. Les joueurs s'affrontent dans des duels. Vous voulez avoir des informations sur les joueurs, récupérer les scores, connaître les vainqueurs, etc.

Vous êtes cinéphile et vous voulez vous construire une base de données contenant des informations sur vos films préférés : année de sortie, titre, genre, nom du réalisateur, etc. Vous voulez également associé à cette base des informations sur les acteurs principaux.

Vous êtes passionné de séries et vous voulez construire une base de données qui contient des informations sur les hébergeurs, les séries, les acteurs et vos notations.

Imaginons le problème suivant : nous voulons construire une base de données contenant les élèves de seconde, première et de terminale pour les matières suivantes : physique, chimie, NSI, SNT, enseignement scientifique et mathématiques. Les élèves viennent de plusieurs lycées de l'académie. On veut stocker dans notre base de données des questions et/ou QCM.

On peut dans ce problème, s'intéresser à la phrase suivante : Galème GANBLAIN, élève de terminale F au lycée Saint-Exupéry, a passé le QCM intitulé "piles_files" dont les résultats sont stockés dans le fichier appelé "resultat_GANBLAIN.csv"

Cette phrase contient des informations qu'il va falloir structurer dans une base de données.

Pour concevoir une telle base de données, il va falloir respecter une démarche en étapes afin de définir les objets qui composent notre base de données ainsi que les relations entre ces objets.

La première approche de ces différents exemples serait une approche 'tableur'. Vous pouvez relire au passage le chapitre de première sur les tables : Accès direct au chapitre table de première

L'approche tableur pourrait être efficace sur un faible nombre de données mais notre base d'informations deviendrait vite instable ;

Quelques éléments d'analyse de l'exemple traitant du QCM.

Dans la phase de conception nous pouvons réaliser un tableau qui recense les données issues de notre analyse. Ce tableau correspond à l'analyse du côté matière.

Concept/objet Code/attribut Description type Taille/domaine Commentaire
Matière idMatiere Identifiant de la matière Entier La matière sera identifiée de manière unique par un nombre. Ce nombre sera appelé clé primaire.
Matière nomMatiere Nom de la matière Texte 30 caractères Physique, chimie, SNT, NSI, mathématiques, SI et enseignement scientifique
Niveau idNiveau Identifiant du niveau Entier Comme pour la matière, le niveau sera identifié par un nombre.
Niveau nomNiveau Nom du Niveau Texte 30 caractères Seconde, première, terminale, BTS_1, BTS 2
Type de la question idTypeQuestion Identifiant du type de question Entier Le type de question sera identifié par un nombre.
Type de la question nomTypeQuestion Nom du type de question Texte 30 caractères QCM, exercice
Thème de la question idTheme Identifiant du thème Entier Le thème sera identifié par un nombre.
Thème de la question nomTheme Nom du thème Texte 30 caractères Structure de données, ihm, algo...
Description du thème de la question desTheme Description du thème Texte Texte qui décrit le thème

Nous cherchons maintenant à décrire une question (exercice et/ou QCM). Pour écrire une question, il faut :

On traitera de manière particulière les champs niveau, matière et thème car ils existent déjà dans notre analyse. Il va falloir les relier à l'objet. Ce lien sera traité par un mécanisme que l'on appellera clé étrangère. Pour renseigner ces champs il suffira d'aller chercher les identifiants correspondants.

Concept/objet Code/attribut Description type Taille/domaine Commentaire
Question idQuestion Identifiant de la Question Entier La Question sera identifiée de manière unique par un nombre. Ce nombre sera appelé clé primaire.
Question idTypeQuestion Identifiant du type de question Entier Ce nombre permet de relier le type de question à la question . Ce nombre sera appelé clé étrangère.
Question nomNiveau Nom du Niveau Texte 30 caractères Ce nombre permet de relier le niveau à la question . Ce nombre sera appelé clé étrangère.
Question idMatiere Identifiant de la matière Entier Ce nombre permet de relier la matière à la question . Ce nombre sera appelé clé étrangère.
Question idTheme Identifiant du thème Entier Ce nombre permet de relier le thème à la question . Ce nombre sera appelé clé étrangère.
Question Question Question écrite en HTML Texte La question est écrite en langage HTML
Question reponse Réponse écrite en HTML Texte La réponse est écrite en langage HTML
Question solution La solution est une liste ou un tableau de vrai/faux

Voici une représentation sous forme graphique de nos différents objets :

Indiquez sur le diagramme, ci-dessus, par une flèche les différents liens entre ces objets.

Code de déblocage de la correction :

Une première analyse

Faire l'analyse d'une base de données dans laquelle vous voulez stocker :

Questions :

  1. Quels objets peut-on mettre en évidence pour cette base de données que l'on pourrait appeler series
  2. Établir un tableau de vos données.
  3. Représenter vos données à l'aide d'une représentation du type de l'exercice.
  4. Établir les liens entre vos données.

Vous pouvez vous aider de ce type de graphique :

Vous pouvez utiliser l'outil yEd qui possède une version live et une version à installer. Cet outil vous servira pour les graphes et les arbres.

Outil live

Version à télécharger

Code de déblocage de la correction :

Entités, attributs et associations.

Nous venons de mettre en évidence des objets et des relations entre ces objets. Il y a un certain nombre de notions à définir autour de ce concept de base de données relationnelles. Nous allons définir les notions de :

Une base de données relationnelle est la mise en action de toutes ces notions.

Entité, Attribut, Domaine.

Accès au logiciel gratuit looping pour modéliser votre base de données.

On appelle entité un objet unique qui peut être identifié distinctement par l'ensemble de ces attributs.

Dans la BDD "question", Matière ou Thème sont des entités.

Dans une BDD "élève du lycée" l'entité Élève est une entité.

Un attribut est une information élémentaire qui dépend de l'activité modélisée. Un attribut a un nom et une valeur typée.

idMatière et nomMatières sont des attributs de l'entité Matière. La première est de type entier et la seconde de type chaîne de caractères.

Par l'exemple l'attribut Nom de type chaîne de caractères.

On appelle domaine d'un attribut l'ensemble des valeurs possibles que peut prendre un attribut.

Pa exemple le domaine de l'attribut nomMatière est : NSI, Maths, Français, Philo,....

Celui de l'attribut idMatière pourrait être les entiers de 20 à 40, celui de idThème les entiers de 41 à 100.

Par exemple le domaine de l'attribut DateNaissance d'un élève doit être l'ensemble des dates comprises entre deux valeurs choisies.

On appelle identifiant ou clé un attribut qui permet d'identifier de manière unique l'entité.

idMatière est l'attribut correspondant au clé de l'entité Matière.

Par exemple idEleve est un nombre entier unique associé à chaque élève.

L'identifiant ou la clé sera appelée clé primaire quand on la considère dans la table qui lui est associé. idMatière est une clé primaire dans la table Matière alors qu'elle devient clé étrangère dans la table Question.

A quel concept (entité,attribut, identifiant/clé) pouvez-vous identifier une plaque immatriculation d'un véhicule ?

Code de déblocage de la correction :

Une entité est souvent représentée sous la forme :

Nom
identifiant
attribut
attribut
...

Dans notre projet, on définit une entité Eleve (On prendra comme convention de ne pas utiliser les accents). Cette entité possède plusieurs attributs :

  • IdEleve (domaine : type entier)
  • Nom (domaine : chaine de caractères)
  • Prenom (domaine : chaine de caractères)
  • L'entité Eleve sera représentée de la manière suivante :

    Eleve
    IdEleve
    Nom
    Prenom

    Quelques conventions d'écriture pour les entités et les attributs.

    Une fois qu'une entité est définie, les occurrences de cette entité sont appelées instances ou tuples ou n-uplets.

    Eleve

    Une autre instance

    Eleve

    On représente souvent ces tuples dans un tableau.

    IdELeve Nom Prenom
    3 Beau Gosse
    2 Enfaillite Mélusine
    1 Térèz Pascual

    Définir l'entité lycee. Quels sont ses attributs ? Penser à typer les attributs.

    Code de déblocage de la correction :

    Définir l'entité Niveau.

    Code de déblocage de la correction :

    Les associations

    Une association définit un lien entre deux entités. Une association possède un nom et éventuellement des attributs qui la caractérisent.

    Nom
    attribut
    attribut
    ...

    On utilise souvent:

    Dans notre projet, nous avons les entités Eleve, Lycee et Niveau. Nous pouvons définir l'association "scolariser".

    En effet, un élève est scolarisé dans un établissement ainsi qu'un niveau. De plus, il a un numéro ou un nom de classe.

    Cette association permet de relier les entités Eleve, Lycee et Niveau

    Cette association peur s'écrire :

    Cette association est en lien avec les entités Eleve, Lycee et Niveau. Ce lien sera effectif lors du passage au modèle relationnel. On parlera alors de clés étrangères

    .

    Voici une représentation de nos entités et de notre association :

    Établir les liens entre les entités et l'association scolariser.

    Code de déblocage de la correction :

    Reprenez votre analyse de la base de données series. Définir les entités et les associations (avec leurs attributs) de la base de données series à partir de vos données.

    Code de déblocage de la correction :

    Schémas et modélisations

    Il existe de nombreux schémas et différents types de modélisations qui ne sont pas toutes au programme de nsi.

    Le modèle entité-association

    Ce modèle est hors programme dans le cadre de NSI.

    Le modèle relationnel

    Une vidéo d'introduction au modèle relationnel

    Dans le modèle relationnel, les entités et les associations sont transformés en tableaux. Ces tableaux sont appelés relations.

    On appelle relation un tableau à deux dimensions dans lequel les attributs correspondent aux colonnes et les $n$-uplets aux lignes.

    Dans cet exemple, nous avons accès à une base de données Films qui est composée de plusieurs entités et associations :

    Vision synthétique du logiciel :

    Voici quelques exemples de relations.

    La relation artiste

    L'association rôle

    La relation film

    Dans la relation artiste ci-dessus :

    Dans la relation film ci-dessus :

    Dans l'association rôle ci-dessus :

    Observer dans les trois tables les correspondances entre les identifiants.

    Code de déblocage de la correction :

    Une clé primaire est un ensemble d'attributs dont les valeurs permettent de distinguer les tuples les uns des autres. Une clé primaire peut être simple ou composée (de plusieurs attributs).

    On utilise souvent un nombre entier (avec le préfixe id) pour prendre le rôle de clé primaire. C'est la cas avec idEleve.

    Dans l'exemple ci-dessus :

    Code de déblocage de la correction :

    Une clé étrangère est un attribut qui est la clé primaire d'une autre relation. Elle est indiquée par (FK : "foreign key") ou précédée d'un #.

    On retrouve les clés étrangères dans la transformation des associations en relations.

    Reprenons notre exemple avec la base de données Eleve :

    On s'intéresse à l'association scolariser. Cette association a des liens vers :

    Les attributs idEle, idLycee sont des clés étrangères dans l'association scolariser.

    Quelle est la troisième clé étrangère de l'association scolariser ? Vers quelle entité établi-t-elle la liaison ?

    Code de déblocage de la correction :

    On peut transformer une entité en schéma relationnel.

    On peut transformer en schéma relationnel , l'entitéEleve.

    Eleve
    IdEleve
    Nom
    Prenom
    devient :
    Eleve
    (CP)IdEleve
    Nom
    Prenom
    On peut également retrouver une notation textuelle : Eleve(IdEleve, Nom, Prenom)
    Dans un schéma relationnel la clé primaire est mise en évidence soit en étant soulignée, soit avec le dessin d'une clé, soit indiquée à l'aide d'une remarque.

    Scolariser
    IdScolariser
    Classe
    devient
    Scolariser
    (CP)IdScolariser
    (FK)idLycee
    (FK)idEleve
    (FK)idNiveau
    Classe
    En notation textuelle : Scolariser(IdScolariser,#idLycee, #idEleve, #idNiveau, classe)

    Une base de données relationnelle est un ensemble de relations. L'ensemble des schémas relationnels appelé schéma de la base de la base de données.

    Vous verrez souvent le mot relation utilisé à la place de schéma relationnel.

    Je cherche à modéliser un annuaire téléphonique. Etablir le schéma de la base de données d'un tel annuaire. Vous pouvez faire simple en écrivant une seule relation dans laquelle le numéro de téléphone devient clé primaire. Vous pouvez également compliquer un peu les choses en écrivant deux relations : une pour les personnes et une autre pour les numéros. Il faudra dans ce cas utiliser une clé étrangère pour relier ces deux tables.

    Code de déblocage de la correction :

    Etablir le schéma de la base de données series.

    Code de déblocage de la correction :

    Les contraintes d'intégrité

    Il existe un certain nombres de règles à respecter pour respecter l'intégrité d'une base de données. Ces règles visent à préserver la cohérence des données et garantir une stabilité de notre base dans le temps.

    Il existe des catégories de contraintes d'intégrité à respecter :

    Contrainte d'entité

    L'unicité des clés : il ne peut y avoir de doublons dans une relation. Toute relation doit posséder une clé unique que l'on appelle clé primaire.

    Le problème typique est l'utilisation de l'attribut nomEle dans notre entité Eleve . Cet attribut ne peut définir de manière unique un élève car plusieurs élèves peuvent avoir le même nom. Nous ne pouvons donc pas utiliser cet attribut comme clé primaire. Dans notre exemple nous avons utilisé un attribut idEle. Chaque élève est donc identifié par un numéro unique.

    Contrainte de domaine

    Les données que nous souhaitons stocker dans notre base de données ont des formats différents. On parle alors de domaine. On peut s'inspirer des types de données des langages de programmation que nous avons étudiés (integer, booléens, float, char, string).

    On peut inventer ses propres domaines de données, mais souvent on utilise des domaines prédéfinis dans le logiciel d'implémentation de notre base.

    Lorsque les contraintes de domaines deviennent sophistiquées, on parle alors de contraintes utilisateurs :

    Les logiciels d'implémentation proposent des solutions à ce type de contraintes.

    Contrainte de référence

    Nous utilisons les clés primaires afin de distinguer de manière unique nos entités. Ces clés primaires servent également de références dans les autres relations. Il faut veiller à ce que les références soient effectives. On ne peut pas définir une entité qui fait référence par une clé étrangère à une entité qui n'existe pas.

    Reprenons notre relation Scolariser : Scolariser(IdScolariser,#idLycee, #idEleve, #idNiveau, classe)

    Dans cette relation : idLycee, idEleve, idNiveau sont des clés étrangères. On ne peut scolariser que des élèves connus dans des lycées connus sur des niveaux connus. Pour ajouter une nouvelle scolarisation d'un élève fictif, il faudra que l'élève soit existant, que son lycée soit existant et que sa classe soit connue. Il sera également impossible de supprimer les entités Lycee ou Eleve

    Exercices sur le modèle relationnel

    On propose un tableau qui donne les occurrences d'une relation joueur définie par le schéma : Joueur(IdJoueur,nomJoueur,pNomJoueur,dNaissanceJoueur)

    IdJoueur nomJoueur pNomJoueur dNaissanceJoueur
    1 Terez Pascual 124
    1 Gosse 452
    4 Terez Pascual 124
    Repérez les anomalies dans ces occurrences. Quelles sont les contraintes non respectées et/ou à mettre en œuvre ?

    Code de déblocage de la correction :

    Voici comment le logiciel phpMyadmin représente les bases de données :

    Code de déblocage de la correction :

    En utilisant la représentation du logiciel :

    Etablir les schémas relationnels des entités et/ou associations présentées.

    Code de déblocage de la correction :

    Vous pouvez réfléchir à une base de données qui donnera naissance à un mini-projet.

    Logiciels pour représenter les relations

    Il existe des logiciels pour représenter les relations et les entités et les associations.

    "test d'alignement"

    Bibliographie et sitographie

    Savoir et Savoir faire

    Licence Creative Commons
    Les différents auteurs mettent l'ensemble du site à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International