Concepts généraux sur les bases
de données
Rappels
Considérons le fichier csv suivant :
Nous allons convertir les données csv en format
Tableau.
Pour cela :
1) Sélection la colonne A
2) Aller dans l’onglet « Données » et cliquer sur
Convertir
3) Choisissez l’option « Délimité » et cliquer sur
« suivant »
4) Cocher ensuite sur « Virgule » puis cliquer sur
« suivant » et enfin sur « Terminer »
Le fichier devrait ressembler à ceci :
Réaliser les opérations de filtrages et de tris sur le fichier
Définitions
Une base de données, « database » en anglais, est une collection de données organisées pour
pouvoir être utilisées directement via ce qu’on appelle un Système de Gestion de Base de Données
(SGBD). Cette collection peut être de très grande taille et contenir des millions d’enregistrements !
Exemple : gestion de commandes, gestion de l’assurance maladie, gestion des contrats
d’assurances, des vols commerciaux...
Différents modèles utilisés :
• Modèle hiérarchique
• Modèle relationnel
• Modèle objet
• Modèle NoSql
Modèle hiérarchique
La base de données est un arbre ou un graphe dont il faut connaître la structure.
Modèle relationnel
Créé par Edgar Frank « Ted » Codd (1923 - 2003) , ce modèle se base sur la théorie
mathématique des ensembles.
Modèle objet
Les données sont alors considérées comme des classes.
Modèle NoSql
Le modèle le plus rapide et le plus utilisé par les réseaux sociaux, il est fondé sur un modèle
clé/valeur.
Base de données relationnelles
Le modèle relationnel consiste en fait à manipuler des données rangées dans des
tables que l’on appelle relations. Ce modèle est caractérisé par trois éléments
principaux :
• Structure : domaine, relation, attributs, clés ;
• Opérateurs : union, intersection différence, sélection, projection et jointure ;
• Règles d’intégrité : de domaine, de relation et de référence.
Le modèle entité-relation
• Une entité de la relation peut représenter un objet réel, un fait, un animal... Elle
possède donc différents attributs.
• Un attribut est une donnée élémentaire d’une entité.
Propriétés:
• A tout instant, un attribut ne possède qu’une seule valeur. On parle d’atomicité de
l’attribut.
• Ces attributs prennent des valeurs prédéfinis sur un domaine, c’est-à-dire un ensemble
fini ou infini de valeurs admissibles, cela constitue ce qu’on appelle une règle
d’intégrité.
• Une ligne de la relation, que l’on appelle aussi enregistrement est un n-uplet. Il y aura
un nombre fini d’enregistrements.
• Les valeurs de l’attribut doivent appartenir au domaine défini lors de la création de la
base de données. On parle de règle d’intégrité de domaine.
• On ne veut pas de redondance, c’est-à-dire que les enregistrements doivent tous être
différents.
Exercice 1 : On donne un extrait de la relation FILMS.
Quels sont les attributs utilisés ?
id, titre, réalisateur, ann_sortie et note_sur_10
Les enregistrements sont-ils redondants ?
Non, remarque sur l’attribut réalisateur avec la valeur Scott
Exercice 2 :
Lister les différents attributs de la table ci-dessous.
Immatriculation véhicule, Marque, Modèle, Année et Kilométrage.
Cette table correspond-elle à une table d’une base de données relationnelle ? Justifiez votre réponse.
On remarque que deux enregistrements sont identiques, donc cela ne correspond pas à une base de
données relationnelle.
VOITURE Nom de la relation (nom de la table)
Attribut (colonne)
Marque Couleur Plaque
Table relationnelle
Renault Bleu 1233 DC 81
BMW Rouge 713 DC 95
Valeurs
Audi Orange 2342 AC 66
Mercedes Argent 867 FK 72
N-uplet (ligne) appelé aussi enregistrement
Domaine des attributs
Lorsque l’on créé une relation, on doit indiquer le domaine de chaque attribut, c’est-à-dire quelles
sont les valeurs que l’attribut est susceptible de prendre.
Exemple : Soit la relation FILMS ci-dessous
Donnez les domaines de valeurs de chaque attribut.
Notion de clé primaire
Une clé primaire est un attribut, ou un ensemble d’attributs permettant d’identifier de manière
unique chaque enregistrement, c’est-à-dire chaque ligne de la relation.
Exemple : Soit la relation VOITURES ci-dessous
Marque Couleur Plaque
Renault Bleu 1233 DC 81
BMW Rouge 713 DC 95
Audi Orange 2342 AC 66
Mercedes Argent 867 FK 72
Quel attribut peut être la clé primaire ?
Plaque
On considère une base de données d’une compagnie d’assurance. Dans celle-ci, on considère la
relation VEHICULES qui contient les attributs suivants : l’immatriculation, la marque, le modèle,
l’année et le kilométrage.
On notera alors la relation par VEHICULES(Immatriculation véhicule, Marque, Modèle,
Année, Kilométrage)
Propriétés:
• Dans une relation, il y a un nombre fini d’enregistrements.
Notation : NOM_RELATION(NOM_ATTRIBUT1, NOM_ATTRIBUT1, ...)
• Pour une entité, il doit y avoir un attribut ou un ensemble d’attributs qui permet d’identifier le n-uplet de
manière unique. On parlera d’ intégrité de référence. Cet attribut sera appelé une clef primaire.
• Toute relation doit posséder une clef primaire.
• On trouve dans la littérature sur les bases de données le terme anglais de Primary Key avec l’acronyme
PK.
• Notation : si on considère RELATION(ATTRIBUT1, ATTRIBUT2) pour signifier que ATTRIBUT1 est
la clef primaire, on la soulignera, on aura donc RELATION (ATTRIBUT1, ATTRIBUT2).
Exemple :
Dans la relation précédente nommée VEHICULES , le seul attribut permettant
de définir de manière unique un n-uplet est l’Immatriculation véhicule, il s’agit
donc de la clef primaire.
On notera donc VEHICULES(Immatriculation véhicule, Marque, Modèle,
Année, Kilométrage).
Notion de clé étrangère
Il s’agit d’une clef primaire présente dans une relation dans laquelle elle n’est pas une clé
primaire.
Exemple : Soit la relation VOITURES ci-dessous
Marque Couleur Plaque Identifiant client
Renault Bleu 1233 DC 81 5
BMW Rouge 713 DC 95 1
Audi Orange 2342 AC 66 3
Mercedes Argent 867 FK 72 8
Quel attribut peut être la clé étrangère ?
Identifiant client
La relation VOITURES(Plaque, Marque, Couleur, Identifiant client) admet
comme clef primaire Plaque et comme clé étrangère Identifiant client. Pour
l’indiquer, on utilise un « double soulignement » ou on fera précéder son nom
d’un #.
Notation : VOITURES(Plaque, Marque, Couleur, #Identifiant client)
Remarque : Certaines relations seront indépendantes et d’autres dépendront
d’attributs définis dans d’autres relations à l’aide de clefs étrangères.
Langage algébrique et modèle
relationnel
Le but d’une base de données est de définir des liens entre les différentes
relations, c’est-à-dire entre ces différents ensembles de n-uplets, de créer
aussi de nouvelles relations à la demande.
Pour cela, on effectuera une requête en langage algébrique avec une
relation de départ et éventuellement une relation intermédiaire, le résultat
sera encore une relation ! Ce langage utilise différents types d’opérateurs !
Opérateurs ensemblistes
1) Union
Les relations doivent avoir le même nombre d’attributs. Cette opération unie les n-
uplets en éliminant les éventuels doublons puisque le résultat est une relation.
Exemple :
La compagnie d’assurance 1 rachète une partie des contrats d’une autre assurance 2,
en supposant que leurs bases de données soient construites de manière identique
(mêmes relations avec le même nombre d’attributs…) en appelant R1 la relation de
l’assurance 1 et R2 la relation de l’assurance 2, alors la nouvelle relation de
l’assurance 1 sera construite en effectuant R1 U R2.
2) Intersection
L’intersection réduit l’ensemble aux n-uplets communs aux deux relations.
3) Différence
Pour une différence A-B : de A on retire B.
4) Produit cartésien
A × B : concaténation des n-uplets
Opérateurs unaires
1) Projection
La projection permet de sélectionner certains attributs d’une relation. On notera
Π𝑎𝑡𝑡𝑟𝑖𝑏𝑢𝑡 1, …,𝑎𝑡𝑡𝑟𝑖𝑏𝑢𝑡 𝑛 (𝑅𝑒𝑙𝑎𝑡𝑖𝑜𝑛) la projection permettant de sélectionner les
attributs 1 à n de Relation.
Exemple :
Π𝐼𝑚𝑚𝑎𝑡𝑟𝑖𝑐𝑢𝑙𝑎𝑡𝑖𝑜𝑛 𝑣éℎ𝑖𝑐𝑢𝑙𝑒, 𝑀𝑎𝑟𝑞𝑢𝑒 (VEHICULES) permet de créer une nouvelle
relation. Il faudra faire attention à bien choisir les attributs pour que la Projection
soit bien une relation (règles d’intégrités vues précédemment)
2) Sélection
Avec cet opérateur, on sélectionne un sous ensemble de n-uplets répondant à
certaines conditions. On notera 𝜎𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛 1, …,𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛 𝑛 𝑅𝑒𝑙𝑎𝑡𝑖𝑜𝑛 la sélection de
n-uplets de relation répondant aux conditions 1 à n.
Exemple :
𝜎𝑀𝑎𝑟𝑞𝑢𝑒 = 𝑅𝑒𝑛𝑎𝑢𝑙𝑡 𝑉𝐸𝐻𝐼𝐶𝑈𝐿𝐸𝑆 permet de créer une relation ne contenant que les
n-uplets dont l’attribut Marque vaut Renault.
Opérateur jointure
Il permet d’associer plusieurs relations par un lien logique de données entre les
différentes relations.
Le résultat de l’opération est une nouvelle relation.
Exercices d’applications
(voir la fiche séquence 3
séance 4 du CNED)
Création d’une base de
données
Nous allons apprendre à créer une base de données en utilisant une
bibliothèque Python. Il s’agit de SQLite.
Les base de données prend la forme d'un fichier .db qui sera :
- créé et renseigné par le programme
- ou utilisé par le programme.
Le code suivant permet de créer une base de données appelée ma_bdd
import sqlite3
bdd = sqlite3.connect("ma_bdd.db")
On souhaite créer une relation LIVRES ayant pour attributs :
Un identifiant : id
Un titre : titre
Un auteur : auteur
Une année de publication : ann_publi
Une note entière sur 10 : note
Il va falloir spécifier le domaine de valeur de chacun des attributs.
Pour créer la relation, on va créer un objet requete de type cursor à partir de la base de
données.
On pourra ensuite écrire notre requête en SQL.
Pour valider il faudra utiliser l’objet base de données et la méthode commit().
import sqlite3
bdd = sqlite3.connect("ma_bdd.db") #Création du fichier de base de données
requete = bdd.cursor() #Création d'un 'curseur' qui permet d'écrire des requêtes
requete.execute("""
CREATE TABLE LIVRES (
id INTEGER NOT NULL PRIMARY KEY,
titre TEXT,
auteur TEXT,
ann_publi INTEGER,
note INTEGER)
""") #La requète que l'on veut éxecuter
bdd.commit() #On valide dans le fichier de la bdd la requète.
SQLite utilise les types suivants:
• Le type REAL qui comprend le type REAL et FLOAT
• Le type NULL qui comprend la valeur nulle
• Le type NUMERIC qui comprend DATE, BOOLEAN, …
• Le type INTEGER qui comprend INT, BIGINT,…
• Le type TEXT qui comprend TEXT, CHAR, …
On peut spécifier par exemple à un des attributs d’avoir obligatoirement une valeur en
rajoutant NOT NULL après le typage de l’attribut. Si un attribut est une chaîne de caractère
d’au plus 10 caractères, on indique CHAR(10).
Pour indiquer qu’une clé est primaire, il faut juste après avoir défini le type de
l’attribut, ajouter PRIMARY KEY.