Académique Documents
Professionnel Documents
Culture Documents
“Bases de données”
1° année
Antoine Cornuéjols
www.lri.fr/~antoine
antoine.cornuejols@agroparistech.fr
http://www.lri.fr/~antoine/Courses/AGRO/TC/Cours-1A-BD-(v3)x2.pdf
1. L’informatique
Transports
Avions
Voitures (des ordinateurs sur roues)
Communications
Réseaux (communications par paquets)
Satellites
Modes de pensée
Calculs complexes / Simulations
Connaissances toujours à portée de clics
Modification de la mémoire et de la cognition
!
2
i,j=1
xi yj ?
!
2
xi yj = x1 y1 + x1 y2 + x2 y1 + x2 y2
i,j=1
4 produits + 3 sommes
!
2
xi yj = (x1 + x2 ) (y1 + y2 )
i,j=1
2 sommes + 1 produit
Complexité en O(n2)
Insertion : comme on
n = 106 => O(1012) opérations range des cartes
Tris réfléchis
Quicksort : on prend un
Tri par fusion pivot et on range tous les
éléments < avant et >=
après et on réitère sur les
Tri rapide (quicksort) sous-tableaux
1. Changement de paradigme
La photo numérique
1. Changement de paradigme
La photo numérique
Support numérique
Copies multiples
Affichage sur plusieurs dispositifs
Les appareils à venir vont être très peu chers et très bons ...
La photo numérique
Outils de travail
La bureautique
Le travail collaboratif et Internet
Simulation
Compréhension / prédiction de systèmes complexes
Réalité virtuelle / augmentée
Fouille de données
Régularités, tendances, prédictions, ...
Simulation 2A (ATHENS)
Compréhension / prédiction de systèmes complexes « Informatique et
Sciences de la Vie »
Réalité virtuelle / augmentée
1A TC « SI »
Programmation - Bases de Données 1A « C et télédétection »
2A « Java »
• Représenter le monde
1- Savoir représenter
• Structures de données
• Vérification / Certification
1. L’informatique
• Pour :
• L’efficacité
• Rapidité
• Taille mémoire
• Coût calcul
• Fonctionnement correct
• Est-ce que cela fait ce que l’on veut ?
• Est-ce que le programme donne une réponse ?
• -ilité
• Simplicité et élégance
• Utilisabilité
• Modifiabilité
Comme les sciences
• Maintenabilité de l’ingénieur
• Coût
• ...
1. L’informatique et VOUS
1. L’informatique et VOUS
2. Quelles données ?
• Second Life
• ...
2. Quelles données ?
• Les clients
• Les produits
• Les commandes
• Les factures
• ...
données
du client
données
de la
commande
données
d'un détail
Observations :
1. les données TOTAL-COMMANDE et SOUS-TOTAL sont calculées : inutile de
les conserver, on pourra les recalculer en cas de besoin
2. il est impossible de reconstituer le bon de commande d'origine : quel est le
client de la commande, quelle est la commande d'un détail ?
Observation
Vérifier une commande lors de son enregistrement : le client est-il connu ? son
adresse a-t-elle changé ? les produits commandés sont-ils répertoriés ?
Un dernier exemple :
calculer la répartition du chiffre d'affaire par localité et par produit
Cette question complexe est résolue en une seule instruction SQL de 5 lignes !
La gestion d'une base de données pose des problèmes complexes. Cette gestion est
assurée par des logiciels spécialisés : les systèmes de gestion de bases de
données ou SGBD.
• Gestion des données : le SGBD garantit l'évolution cohérente des données; il vérifie
que les contraintes (unicité, référence entre tables, etc.) sont respectées.
• Accès aux données : le SGBD permet l'accès aux données à la fois par l'utilisateur
occasionnel et par les programmes de traitement de données.
2. Les SGBD
• Volumes et performances.
• Une base de données peut contenir des dizaines de milliers de tables, des milliards
de lignes.
• Maintenance et évolution.
• La structure d'une base de données peut évoluer : ajouter ou supprimer une table,
une colonne, une contrainte.
• Une base de données peut être répartie et/ou dupliquées sur plusieurs ordinateurs
répartis géographiquement.
Qu'en est-il des principes rigoureux des bases de données dans ce contexte ?
II- Les bases de données Informatique - Bases de données • ! A. Cornuéjols 2011 59 /170
• Chaque table contient les données relatives à des entités de même nature.
• Chaque ligne (enregistrement) d’une table décrit les données relatives à une entité.
• Chaque colonne d’une table décrit une propriété des entités (ex : Prix).
3. Notions de base
schéma
ligne
données
colonne colonne
obligatoire facultative
3. Notions de base
identifiant
(clé primaire)
clé étrangère
dans le schéma
dans les données
Une clé étrangère est un groupe de colonnes d'une table S tel qu'il existe,
à tout moment, dans une table T, une ligne dont l'identifiant a pour valeur(s)
celle(s) de ce groupe.
Une table peut posséder plusieurs identifiants. On choisit l'un d'eux, qu'on
déclare primaire (clé primaire). Les autres sont dès lors secondaires.
Il est possible de déclarer une table sans identifiant mais ceci n'est pas
recommandé.
Un identifiant minimal est aussi appelé clé candidate (candidate key). [*]
[*] problème : le terme clé admet plus de 20 acceptions différentes dans le domaine des
bases de données !
Un schéma
Les données
Variantes de schéma
Partie 1 - Place de l’informatique Partie 5 - Manipulation : SQL 3.1 Introduction 3.5 Types d'associations
Partie 2 - Les bases de données Partie 6 - PHP / MySQL 3.2 Modèle Entité-Association 3.6 Exemples de schéma conceptuel
Partie 3 - Bases sur les BD 3.3 Types d'entités 3.7 Exemple détaillé
Partie 4 - Conception des BD 3.4 Attributs
Encore faut-il que le schéma des tables satisfasse les besoins des utilisateurs des
données !
Il faut un autre langage pour exprimer naturellement les informations que doit
contenir une base de données :
le modèle Entité-association
=> Modélisation
On construit une base de données (en fait son schéma) en deux phases :
Analyse
Énoncé
conceptuelle
Schéma
conceptuel
Production du
Schéma SQL
schéma de la BD
quelques instances
=
population
4.4 Attributs
quelques attributs
NumClient = C400
Nom = FERARD
Adresse = 65, r. du Tertre
NumClient = B332
Nom = MONTI
quelques
Adresse = 112, r. Neuve valeurs
NumClient = F010
Nom = TOUSSAINT
Adresse = 5, r. Godefroid
attribut obligatoire/facultatif
CLIENT
CLIENT
NumClient
Nom
Adresse
appartient signe
VEHICULE CONTRAT
NumVéh NumCtr
VEHICULE
Marque Type
couvre
Modèle DateSign
Année
Cylindrée
ACCIDENT CONTRAT
implique NumAcc
ACCIDENT
DateAcc
Montant[0-1]
DEPARTEMENT EMPLOYE
N occupe 1
DEPARTEMENT EMPLOYE
d1 e1
e6
d2 e2
d4 e3 e7
e4
d3
e5
DEPARTEMENT EMPLOYE
1 dirige 1
DEPARTEMENT EMPLOYE
d1 e1
e6
d2 e2
d4 e3 e7
e4
d3
e5
USINE PRODUIT
N fabrique N
USINE PRODUIT
u1 p1
u4 p2
u2 p3
p4
u3
p5
rôle toire
facul
tatif o bliga
rôle
• Pour exploiter ces parcelles, les agriculteurs font appel à un GIE. Celui-ci
fournit de la main d’oeuvre d’appoint, à la journée.
• Chaque employé du GIE a un tarif, qui constitue son salaire journalier brut.
• Pour exploiter ces parcelles, les agriculteurs font appel à un GIE. Celui-ci
fournit de la main d’oeuvre d’appoint, à la journée.
Clé primaire
Aix-les-Bains Chambery 14
Rennes Saint-Malô 75
Saint-Alban Aiglun 23
Les parcelles
Agriculteur Par_Prop
Parcelles
Une relation 1 à n
entre deux tables
La table employé
5 - LE LANGAGE SQL
(Structured Query Language)
SQL permet :
de définir le schéma de la base de données (LDD)
Contenu
1.1 Introduction
1.5 Exemple
5.1 Introduction
Contenu
b) Les identifiants
Contenu
r
leu
r va t
alter table CLIENT modify column CAT set '00'; ie
dif éfa
u
mo ar d
p
le ur
va
alter table CLIENT modify column CAT drop default; m er ut
ri fa
pp dé
su par
2.1 Introduction
Introduction
Personnes
nom prénom adresse téléphone
Martin Pierre 7 allée des vers 258941236
Dupond Jean 32 allé Poivrot 526389152
Dupond Marc 8 rue de l’octet 123456789
On projette la table
Personnes sur les
SELECT nom, prénom colonnes nom et prénom.
FROM Personnes
nom prénom
Martin Pierre
Dupond Jean
Dupond Marc
Personnes
nom prénom adresse téléphone
Martin Pierre 7 allée des vers 258941236
Dupond Jean 32 allé Poivrot 526389152
Dupond Marc 8 rue de l’octet 123456789
Relation de départ :
SELECT * FROM Gens
Gens
1
SELECT Nom
Nom Prenom Age
FROM Gens
Dupond Pierre 24
Martin Marc 48
Gens
Dupont Jean 51 SELECT DISTINCT Nom
Martin Paul 36
Nom 2 FROM Gens
Dupond
Dupond Lionel 68
Martin
Chirac Jacques 70
Gens
Dupont 3
Nom
Martin
Dupond
Dupond
Martin
Chirac
Dupont
Chirac
Personnes Bibliothèque
nom prénom adresse téléphone nom Dernierlivre
Martin Pierre 7 allée des vers 258941236 Dupond Robinson
Dupond Jean 32 allé Poivrot 526389152 Jospin Faust
Martin Misère
select NCLI
from CLIENT null ne peut être comparé à rien,
même pas à lui-même !
where CAT = null;
NCLI
select NCLI
from CLIENT
where CAT is null;
NCLI
D063
K729
select NCLI
from CLIENT
where CAT is not null;
select NCLI
from CLIENT '_' = un caractère
quelconque
where CAT like 'B_';
masques
select NPRO
'%' = une chaîne
from PRODUIT quelconque
where LIBELLE like '%SAPIN%';
CS264 67788
PA45 12789
PH222 37770.6
PS222 47397
select sum(QSTOCK*PRIX)
from PRODUIT
where LIBELLE like '%SAPIN%';
16 16 16 14 Si catégories a 2
valeurs nulles de plus
que les autres attributs
select count(distinct NCLI) as Nombre,
count(distinct NOM) as Noms,
count(distinct LOCALITE) as Localités,
count(distinct CAT) as Catégories
from CLIENT;
Nombre Noms Localités Catégories
16 15 7 4
select *
from PRODUIT
where NPRO in
(select NPRO
from DETAIL
where NCOM in
(select NCOM
from COMMANDE
where NCLI in
(select NCLI
from CLIENT
where LOCALITE='Namur')));
les produits référencés par les détails des commandes des clients de Namur
select *
from T
where CT in (select CS
from S
where <condition>);
update CLIENT
set ADRESSE = ’29, avenue de la Magne’,
LOCALITE = ‘Niort’
where NCLI = ‘F011’ ;
6 - PHP / MySQL
• L’un des plus utilisé au monde (e.g. Wikipedia, Google, YouTube, ...)
• Multi-utilisateur
• Utilisable depuis une grande variété de langages de programmation (C, C++, Java, Python, PHP, ...)
• ...
Outil pour :
Structure :
• clés
• création de la table
Le format CSV est un fichier texte dont chaque ligne représente un enregistrement
On peut changer les valeurs par défaut des séparateurs standards du CSV.
• Il faut nommer la clé, en spécifier le type, et les attributs sur lesquels elle s’applique.
• On peut ajouter une autre colonne à cette clé avant de valider l’ajout de la clé.
Jusqu’ici :
Script Page
HTTP
PHP HTML
Serveur Client
6. MySQL et PHP
Désormais :
Serveur Client
• un mot de passe
• un nom de base
Recherche le téléphone d’une personne portant pour nom la valeur de la chaîne $name.
• L’identificateur de résultat $result permettra à d’autres fonctions d’extraire ligne par ligne
les données retournées par le serveur.
• Chaque appel à cette fonction retournera un tuple du résultat. C’est pourquoi cette
instruction pourra être utilisée au sein d’une boucle while qui s’arrêtera lorsque
mysql_query() renverra FALSE.
Ici, on accède aux valeurs de la ligne par leur indice dans le tableau.
Ici, on accède aux valeurs de la ligne par l’attribut dans le tableau associatif.
$num = mysql_num_rows();
mysql_db_name($result, $row [, $field]) : Lit les noms des bases de données. $result
est l’identifiant de résultat issu de mysql_list_dbs(). $row est l'index dans le résultat.
Retourne FALSE si échec.
$result = mysql_list_dbs();
$num = mysql_num_rows($result); Affiche la liste des bases de données
for ($i=0; $i<$num; $i++) du serveur.
echo mysql_db_name($result, $i).’’<br />’’;
Il est recommandé de tester systématiquement les valeurs retournées par les fonction
de traitement sur une base de données afin d’éviter la pollution de la page web par des
Warning.
Remerciements
• Gérard Berry
• Hugo Etiévant
Merci !!