Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cours BD Relationnelle CanadaCollege

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 120

BASES DE DONNEES RELATIONNELLES

NOVEMBRE 2019

ADMINISTRATION DES BASES DE DONNÉES

(P A R D R . J U S T I N MOSKOLAI)
EXEMPLE INTRODUCTIF

2
CARACTÉRISTIQUES DE L’EXEMPLE

q Plusieurs domaines concernés


o CEFAD : gestion des entreprises, des étudiants…
o Scolarité : gestion des étudiants (données personnelles, parents…)
o Administration générale : gestion des missions des encadreurs…
o Service comptable : remboursement des frais de missions…
o Centre de calcul : notes de stage…

q Plusieurs applications métier è redondance


o plusieurs formats
o plusieurs langages

q Plusieurs problèmes
o difficulté de gestion
o incohérence de données
o problèmes de confidentialité/partage de données
o…

3
EXEMPLE INTRODUCTIF : GESTION SOUHAITÉE

CEFAD

Centre de
Scolarité
calcul
Canada
college

Service Adm.
comptable Générale

4
OBJECTIFS DU COURS

q Acquérir une bonne culture « Bases de Données »


o être capable de cerner les nuances avec les acceptions du langage
courant (différences entre fichier plat et base de données…)

q Acquérir des bases théoriques et conceptuelles solides


o outil mathématique : l’algèbre relationnelle
o outil de conception : formalisme Entité/Association (E/A)

q Acquérir des compétences techniques


o langage (création, manipulation… d’une BD) : SQL
o étude des Systèmes de Gestion de Bases de Données (SGBD) :
MySQL, Access

Prérequis - La théorie des ensembles


- Un peu de logique

5
CONTENU DU COURS

q CM & TD
o Généralités sur les Bases de données (p.09)
o De l’analyse du monde réel aux modèles (p.30)
o L’approche relationnelle
(p.55)
o Le langage SQL (p.88)
q Outils TD/TP
o AnalyseSI
o Microsoft Access
o MySQL Workbench

6
RÉFÉRENCES BIBLIOGRAPHIQUES

q Ouvrages
o Date C.J., An Introduction to Database Systems, Addison Wesley
o Gardarin G., Bases de Données, Eyrolles, 1999
o Ullman J.D. et Widom J., A first Course in Database Systems, Prentice
Hall, 1997

q Ressources en ligne
o Administrez vos Bases de Données avec MySQL
(www.siteduzero.com)
o Formation Access
(lecompagnon.info/access)
o Tutoriel Access (en anglais) basé sur un exemple complet
(http://www.itu.dk/~slauesen/UID/AccessTutorial.pdf)

7
SOMMAIRE

q GÉNÉRALITÉS SUR LES BASES DE DONNÉES


q DE L’ANALYSE DU RÉEL AUX MODÈLES
q L’APPROCHE RELATIONNELLE
q LE LANGAGE SQL

SJP
SAINT JÉRÔME POLYTECHNIQUE

8
EXEMPLES

q Le contexte = stage de Canada College


o un étudiant, par exemple Jupy, une entreprise, par exemple,
Alucam Edea, sont des données
• permet de décrire des objets
o une relation, par exemple, effectue un stage (dans Jupy
effectue un stage chez Alucam Edéa) est aussi une donnée
• permet de structurer le lien entre un étudiant et une entreprise

9
TERMINOLOGIES

q Définitions
o une Donnée constitue un fragment d’information quelconque

o une Base de Données (BD) est un gros ensemble d’informations


élémentaires, structurées, mémorisées sur un support permanent
(disque), facilement interrogeables (langage de haut niveau)

o un Système de Gestion de Bases de Données (SGBD) est un


logiciel de haut niveau qui permet de manipuler les informations
stockées dans une Base de Données

10
REMARQUES

q L’exemple de l’introduction (feuille Excel des stages de SJP)


o conforme à la définition de BD présentée,
o mais tout ensemble de données (de fichiers) n’est pas une BD

q Quels critères doit remplir un ensemble de données pour avoir le


qualificatif de BD ?
o il doit être interrogeable selon s’importe quel critère
ex. : quels sont les étudiants encadrés par M. Oumarou Bouba ?
o il doit être possible de retrouver la structure des données
ex. : un étudiant possède un matricule, un nom, un prénom

q Un SGBD se distingue d’un Système de fichiers


o il permet la description de données (par ex. définition du type de la donnée
Nom, du format de la donnée Matricule…) de manière séparée de leur
utilisation (mise à jour, recherche)
o il permet de retrouver les caractéristiques d’un type de données à partir de
son nom (par ex. comment est décrit un étudiant de SJP)
o un système de fichiers ne prend pas en compte la structures des données

11
COMPOSANTES/COUCHES D’UN SGBD

SGBD
externe
SGBD Terminaux
Programmes interne
d’application

Gestionnaire

Mémoire 2nd

de fichiers

(Source : Gardarin, 1999)

12
RÔLE DE CHAQUE COUCHE

q Le Gestionnaire de fichiers
o gère les récipients des données
o fournit aux autres couches des mémoires secondaires adressables par
objets, capables d’effectuer des recherches sur ces objets

q Le SGBD interne
o gère les données stockées dans les fichiers
o gère l’assemblage de ces données en objets, le placement de ces objets
dans les fichiers, les liens entre objets
o gère les structures permettant d’accélérer l’accès aux aux données

q Le SGBD externe
o gère la mise en forme et la présentation des données aux applications et
aux utilisateurs (ces derniers expriment leurs demandes/requêtes à
l’aide de langages utilisant notamment des expressions logiques)

13
PRINCIPAUX TYPES DE SGBD
q Systèmes de fichiers (années 60)
o les BD sont développées sous forme de fichiers reliés par des pointeurs
o les fichiers contiennent des articles stockés stockés de manière chaînée
o ex.: IMS.1 (IBM) et IDS.1 (Honeywell) è programme APOLLO

q Modèles hiérarchiques ou réseau (fin 60) : 1ère génération de SGBD


o séparation de la description des données et de leur manipulation
o représentation conforme au CODASYL (sous forme arborescente ou de
graphe)
o ex.: IMS.2, IDS.2

q Modèles relationnels (fin 70) : 2ème génération de SGBD


o simplification et enrichissement du SGBD pour faciliter l’accès aux données
o elles sont représentées sous forme de relations entre domaines de valeurs
o les requêtes sont effectuées à l’aide d’un langage procédurale standardisé,
proche du langage naturel
o ex.: ACCESS, ORACLE, MYSQL, POSTGRES, SQL Server, SYBASE

q Autres générations de SGBD


o modèles objet, relationnel-objet, sémantique…

14
MODÈLES HIÉRARCHIQUE ET RÉSEAU

q Dans un modèle hiérarchique, chaque enregistrement n’a qu’un seul


« possesseur »
o limitations pour représenter certaines réalités du monde réel

q Le modèle réseau est une extension du modèle hiérarchique


o autorisation des liens transversaux

q Les deux modèles sont encore utilisés


o par souci d’efficacité (domaines qui se prêtent à ces types de
représentation)

15
UN EXEMPLE DE MODÈLE HIÉRARCHIQUE

- code
club - libellé

- matricule - code
- nom étudiant filière - libellé
- prénom

spécialisation - code
- libellé
q Problèmes liés à cette représentation
o pour accéder aux informations concernant un étudiant il faut passer
son club
o la suppression d’un club entraîne la suppression de tous les
étudiants, des filières et des spécialisations concernées
o difficulté de représenter le fait que les étudiants suivent une filière
donnée

16
UN EXEMPLE DE MODÈLE RÉSEAU

- code
club - libellé

- matricule - code
- nom étudiant filière - libellé
- prénom

spécialisation -- code
libellé

17
SYNTHÈSE SUR LA NOTION DE DONNÉES

q Les Données
o ensemble de fichiers reliés (par des pointeurs)
o interrogées et mises à jour par des programmes d’application, écrits par
les utilisateurs (ex. C), ou fournis avec le SGBD
o accessibles par un langage unifié (par ex. SQL)

q Représentation en BD
o les données modélisent les objets d’une partie du monde réel, ou les
associations entre ces objets
o les objets modélisés sont représentés par des articles (enregistrements)
de fichiers
o les associations entre objets correspondent à des liens entre articles

18
ENVIRONNEMENT D’UN SGBD

programme
… d’application …
(C)
(Source : Gardarin, 1999)

langage d’accès unifié


(SQL)
SGBD
E/S disques

disques

19
ARCHITECTURE (ANSI, 78)

q Trois niveaux
o trois représentations/schémas équivalentes de la même donnée
o champs d’interventions des principaux acteurs

q Le niveau externe
o description d’une partie de la base de données (extraites ou calculées à partir de la
base physique)
o vision d’un programme ou d’un utilisateur è vue

q Le niveau conceptuel
o description du domaine considéré en terme de types d’objets ou de liens logiques
(contraintes) entre objets
o schéma indépendant de toute représentation en machine

q Le niveau interne/physique (nécessite le choix d’un SGBD)


o description des données en terme de représentation en machine
o spécification des structures de mémorisation
o spécification des méthodes de stockage et d’accès

20
EXEMPLE ILLUSTRATIF
q Niveaux externe
o la scolarité de Saint Jérôme : liste des étudiants (matricule, nom, prénom) et
programme des enseignements (code, intitulé)
o le centre de calcul : note des étudiants (matricule, nom, prénom, code,
année, note)

q Niveau conceptuel
o un étudiant est décrit par son matricule, son nom et son prénom, un EC est
décrit par son code et un intitulé
o le lien entre un étudiant et un EC est décrit par étudiant, EC ainsi que
l’année et la note associées

q Niveau interne/physique
o implémentation d’un premier fichier indexé sur le code :
chaque enregistrement contient le code, l’intitulé d’un EC
o implémentation d’un second fichier :
chaque enregistrement contient le matricule, le nom, le prénom (d’un
étudiant), suivis d’un « pointeur » sur chaque EC choisi, puis de l’année et la
note associées
• un index sur matricule permet d’accéder directement aux articles de ce fichier
• un index sur année permet d’accéder à l’année et aux EC suivis

21
SCOLARITE CENTRE DE CALCUL

… schéma …
externe liste_étudiants notes_étudiants
-matricule -matricule
-nom -nom
-prénom -prénom
-code
programme_ec -année
-code -note
-intitulé

niveau ETUDIANT (matricule, nom, prénom)


conceptuel EC (code, intitulé)
EC_CHOISIS (ETUDIANT, EC, année, note)

fichier_étudiants fichier_EC
-matricule -code
-nom -intitulé
-prénom
-refEC
niveau -année
interne -note

SJP

22
SAINT JÉRÔME POLYTECHNIQUE
ARCHITECTURE FONCTIONNELLE

q Atout et inconvénient de l’architecture à trois niveaux (ANSI)


o permet de comprendre la description et la manipulation des données
o mais peu suivie (fonctionnellement)

q Ce qui est fait en pratique


o les SGBD sont basés sur deux niveaux
• niveaux interne et conceptuel intégrés un seul niveau
• niveau externe
o pour la description des données
• les SGBD utilisent un dictionnaire de données è « métabase » i.e.
décrivant les autres bases
• pour la manipulation des données (recherche, ajout…) è processus
(analyse, contrôle, optimisation, exécution)

23
OBJECTIFS D’UN SGBD

q Objectifs Les utilisateurs voient les


o indépendance physique des données données indépendamment de
(entre schémas interne et conceptuel) leur implantation en machine

o indépendance logique des données


(entre schémas externe et conceptuel)
o manipulation des données par des langages non procéduraux
o administration facilitée des données
o performances dans la gestion des données
• efficacité d’accès,
• redondance contrôlée,
• cohérence,
• partage,
• gestion de la sécurité et des pannes

24
SYNTHÈSE SUR LES SGBD

q Un SGBD est en définitive un outil informatique


o destiné à gérer (sauvegarde/insertion, interrogation, modification…) un
gros volume de données,
o de manière persistante (plusieurs années) et fiable (pannes),
o partageables entre plusieurs utilisateurs ou programmes
(confidentialité/sécurité),
o manipulées indépendamment de leur représentation physique

25
MÉTIERS AUTOUR DES SGBD

q Consultant/Analyste
o travail autour de l’analyse de l’univers du discours

q Concepteur de BD
o travail axé sur la modélisation

q Administrateur de BD (DBA – Data Base Administrator)


o gestion des données et des utilisateurs

q Développeurs d’applications
o utilisation des BD pour des applications métier

26
EXERCICES

q Notions de base
o Quelles sont les différences majeures entre un fichier informatique et
une base de données ?

q Représentation des données


o Vous devez représenter votre arbre généalogique.
Quel modèle de données (hiérarchique, réseau, relationnel) vous
semble-t-il le plus adapté ?

27
SOMMAIRE

q GÉNÉRALITÉS SUR LES BASES DE DONNÉES


q DE L’ANALYSE DU RÉEL AUX MODÈLES
q L’APPROCHE RELATIONNELLE
q LE LANGAGE SQL

SA IN T JÉ R ÔSJP

28
M E PO LY T E C H N IQ U E
ÉTAPES DE CONCEPTION D’UNE BD

q Analyse du monde réel


o conceptualisation du domaine considéré
o analyse du discours / collecte d’infos (entretiens)

q Modélisation des données


o modèle conceptuel
o modèle logique
o remise en cause des modèles

q Implantation de la BD
o choix d’un SGBD
o création/interrogation

29
POURQUOI UNE DÉMARCHE D’ANALYSE

q Le monde réel est par nature complexe


o toute démarche d’analyse offre un cadre et des outils pour l’appréhender
et simplifier le monde réel

q En vue de la modélisation d’une BD, elle permet


o de bien cerner les besoins des utilisateurs
o d’identifier les objectifs et les processus d’alimentation en données de la
BD

30
q ANALYSE DU MONDE RÉEL
q MODÉLISATION DES DONNÉES
q ASTUCES SUR CAS SPÉCIAUX

EC-TC-P313 SJP
P: OLYTECHNIQUE
BA S E S D E DO N N É E S - SJP (PA R R. HOUE NGOUNA - J. MOSKOLAI - M. TEKINZANG)

31
SAINT JÉRÔME
RÉALISATION D’UNE DÉMARCHE D’ANALYSE

q La modélisation des données relève d’un champ de compétences


spécifique
o elle peut être réalisée en interne (au sein de l’entreprise)
o ou bien confiée à un cabinet de consulting

q Les principales étapes en vue d’extraire ce qui est utile


o entretiens (avec les utilisateurs)
o analyses des flux d’information et des processus métier

32
QUELQUES PRÉCONISATIONS

q Méthodologie préconisée
o décrire l’activité globalement en termes simples :
« sujet-verbe-complément »
o indiquer les règles utilisées pour caractériser les liens entre objets

q On utilise généralement deux types de phrases


o celles décrivant les liens entre objets du monde réel (une action ou une
propriété) ; ex.: un cours a un enseignant
o celles qui caractérisent la manière dont sont reliés les objets ; ex.: un
étudiant peut suivre plusieurs cours

q La prise en compte de la dimension temps


o ne pas confondre l’aspect simultané d’une action avec la possibilité de la
réitérer sur une période
o ex.: un étudiant peut effectuer plusieurs stages ó il peut effectuer plusieurs
stages à des périodes différentes (mais pas la même année)

33
EXEMPLE : FONCTIONNEMENT D’UN HÔTEL

q On peut proposer en première approximation la phrase :


o « un hôtel loue des chambres à des clients qui effectuent des réservations »

q Après analyse du discours, on extraie :


o « un client loue une chambre »
o « un client réserve une chambre »

q Ensuite on caractérise les liens (louer, réserver)


o une chambre peut ne pas être réservé, peut ne pas être louée
o un client ds la base a effectué soit une réservation, soit une location
o un client peut réserver une ou plusieurs chambres
o une chambre peut être réservée une ou plusieurs fois, mais pas pendant la
même période

34
EXEMPLE DE L’HÔTEL (SUITE)

q On décrit les données des objets et des liens


o un client est caractérisé par son nom, son adresse, son numéro de
téléphone
o une chambre est caractérisée par son numéro, un nombre de places,
son tarif journalier
o une location est caractérisée par une date de début, un nombre de jours
o une réservation est caractérisée par une date de début, un nombre de
jours

35
q ANALYSE DU MONDE RÉEL
q MODÉLISATION DES DONNÉES
q ASTUCES SUR CAS SPÉCIAUX

SJP

36
SAINT JÉRÔME POLYTECHNIQUE
LE MODÈLE ENTITÉ/ASSOCIATION

q Le modèle entité/association (E/A)


o présenté par P. Chen (1976)
o représentation sous forme de diagrammes

q Le monde réel est schématiquement être représenté


o par entités qui représentent les objets perçus dans le monde réel (univers du
discours) è rectangles
o par des associations entre ces objets qui représentent des liens
sémantiques entre objets è ellipses

q Caractérisation des entités et des associations


o par des attributs (informations élémentaires dont la valeur dépend de l’entité
ou de l’association)
o ex. : un client a pour attribut nom, adresse, téléphone

37
EXEMPLE DE MODÈLE E/A

client loue
IDclient dateDébut
nom nbJours
adresse chambre
numTéléphone numéro
nomPlace
réserve tarif
dateDébut
nbJours

38
REMARQUES

q Chaque entité doit disposer d’un identifiant


o un identifiant (attribut ou ensemble d’attributs) permet de distinguer deux
occurrences de la même entité
o ex. : ajout d’un attribut fictif (par rapport à la réalité du monde réel perçu)
pour l’entité client
on aurait pu choisir la liste des attributs en faisant le pari que l’on n’aura
pas deux clients ayant le même nom, la même adresse et le même
numéro de téléphone

q Le nombre d’associations entre entités


o une association peut relier une entité à elle-même è association unaire
(ex.: un client « est marié » à un client)
o les autres types d’association : binaire, ternaire…

39
CARACTÉRISATION DES ASSOCIATIONS

q On utilise deux nombres


o ils indiquent le nombre minimal et maximal (d’occurrences) d’entités
impliqués dans l’association
o ex. : un client peut réserver 1 ou plusieurs chambres è (1,n) ; une
chambre peut ne pas être réservée, ou réservée par plusieurs client (à
des dates différentes) è (0,n)

q Définition
o les nombres par lesquels on caractérise une association s’appellent
cardinalités de l’association

40
MODÈLE COMPLET DE L’EXEMPLE

(1,n)
client loue ??
IDclient dateDébut (0,1)
nom (1,n) nbJours
adresse chambre
numTéléphone numéro
nomPlace
réserve (0,n) tarif
dateDébut
nbJours

41
q ANALYSE DU MONDE RÉEL
q MODÉLISATION DES DONNÉES
q ASTUCES SUR CAS SPÉCIAUX

SJP

42
SAINT JÉRÔME POLYTECHNIQUE
ÉVOLUTION D’UN MODÈLE

q Qualité des attributs


o ne stocker que les attributs strictement nécessaires
(ou bien procéder par méta-modélisation pour prévoir large)
o ne pas retenir les attributs déductibles
(soit par calcul, soit par concaténation)
o utiliser comme nom d’attributs, des termes porteurs de sens

q Réorganisation des entités


o par redécoupage ou fusion

q Réorganisation des associations


o par élimination d’associations
o par fusion d’associations

43
ILLUSTRATION DE LA RÉORGANISATION D’ENTITÉS

livre
lecteur
ISBN
titre emprunte NumLecteur
auteur nom
dateEmprunt
éditeur prenom
adresse

q Que se passe-t-il si la bibliothèque possède plusieurs


exemplaires du même ouvrage ?
o séparer l’entité « livre » en « livre » et « ouvrage » :
un lecteur emprunte un exemplaire
un livre représente un exemplaire d’un ouvrage

44
ouvrage
lecteur
Cote emprunte
ISBN NumLecteur
dateEmprunt nom
prenom
adresse

exemplaire de
livre
ISBN
titre
auteur
éditeur

q Que se passe-t-il si un même ouvrage possède plusieurs auteurs


?
o créer une entité supplémentaire relié à l’entité « livre »
(ayant pour attribut un numéro, un nom, un prénom)

SJP

45
SAINT JÉRÔME POLYTECHNIQUE
ouvrage lecteur
emprunte
NumLecteur
Cote dateEmprunt nom
prenom
adresse
livre
exemplaire de ISBN
titre
éditeur auteur
NumAuteur
nom
prenom
a écrit

q Que se passe-t-il si un auteur emprunte un ouvrage ?


o fusionner les entités « auteur » et « livre » en une seule, dénommée
« personne »

SJP

46
SAINT JÉRÔME POLYTECHNIQUE
personne
ouvrage Numero
nom
Cote emprunte prenom
dateEmprunt
adresse

exemplaire de
a écrit

livre
ISBN
titre
éditeur

SJP

47
SAINT JÉRÔME POLYTECHNIQUE
ÉLIMINATION D’ASSOCIATIONS
stage convention
Code (1,1)
(1,1) Numero
sujet dateSignature
dateDebut possède
rémunération

stage Cette fusion n’a de sens que


parce que les entités fusionnées
Code sont sémantiquement « proches »
sujet
dateDebut Dans certains cas, il est préférable
rémunération d’accepter la redondance, en intégrant
numéroConv la clé de chaque entité dans l’autre
dateSignature entité, lors du passage au modèle
relationnel

48
FUSION D’ASSOCIATIONS

(1,1) évalue
stage rapport (0,n)
enseignant
Code note_r
(1,1)
sujet Code
dateDebut
évalue (0,n) nom
rémunération travail prénom
note_t

stage
enseignant
Code (1,1) (0,n)
sujet évalue Code
dateDebut type_eval nom
rémunération note_r prénom

49
SYNTHÈSE DE LA MODÉLISATION (E/A)

q Pour définir le monde réel avec le modèle E/A il faut définir


o les types d’entités (ex. : client, chambre…)
o les types d’association (ex. : location, réservation…)
o les attributs des entités et/ou des associations
(remarque : une association peut ne pas avoir d’attribut)
o les cardinalités (elles précisent la manière dont les entités sont reliées
entre elles)

50
PASSAGE DU MODÈLE E/A AU RELATIONNEL

q Il se fait en utilisant les 3 principales règles suivantes


o R1 : les entités deviennent des relations
(i.e. on crée une entité par relation)
o R2 : pour les associations type « un à plusieurs »
• l’identifiant de l’entité A est intégré dans B,
de même que les attributs de l’association si elle en possède
o R3 : pour les associations de type « plusieurs à plusieurs »
• on crée une nouvelle relation dont la clé primaire est constituée des
clés de A et de B;
si l’association possède des attributs, ils sont intégrés dans cette
nouvelle relation

(0,n) ou (0,1) ou (0,n) ou (0,n) ou


A (1,n) (1,1)
B A (1,n) (1,n)
B

« un à plusieurs » « plusieurs à plusieurs »

51
EXERCICES D’APPLICATION
Exercice1
La société « Pickup » aimerait informatiser la gestion de ses factures.
Un client identifié par un numéro, un nom et une adresse, passe des
commandes. Sur une commande peut apparaître plusieurs produits (référence
produit, désignation produit, prix du produit), mais chaque produit est toujours
commandé à l’unité. Une commande peut donner lieu à plusieurs factures.
Réaliser le MCD correspondant
Exercice2
Etablissez un MCD à partir de la liste des propriétés et des règles de gestion
suivantes:
• liste des propriétés : Num_Logement, Type, Surface, Nb_Pièces,
Num_Immeuble, Ad_Rue, Ad_Ville, Ad_CP, Num_Concierge, Nom_Concierge,
Prénom_Concierge.
• Règles de gestion :
RG1: Tout immeuble contient au moins un logement.
RG2 : Un immeuble ne dépend pas toujours d'un concierge. Par contre, un
concierge peut être responsable de plusieurs immeubles adjacents.

SA IN T JÉ R ÔSJP

52
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR DR. MOSKOLAI)
SOMMAIRE

Chapitre III :
Modèle Relationnel
• Présentation du Modèle
• Les éléments constitutifs
• Les règles de transformation
• Exercices d’application

SJP

53
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
INTRODUCTION

Le modèle relationnel a déjà été introduit dans le chapitre précédent.

Dans ce modèle, les données sont représentées par des tables, sans
préjuger de la façon dont les informations sont stockées dans la
machine. Les tables constituent donc la structure logique du modèle
relationnel. Au niveau physique, le système est libre d’utiliser n’importe
quelle technique de stockage (fichiers séquentiels, indexage, adressage
dispersé, séries de pointeurs, compression, . . .) dès lors qu’il est
possible de relier ces structures à des tables au niveau logique. Les
tables ne représentent donc qu’une abstraction de l’enregistrement
physique des données en mémoire.

SA IN T JÉ R ÔSJP

54
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
I- PRÉSENTATION DU MODÈLE

q De façon informelle, on peut définir le modèle relationnel de la


manière suivante :
q Les données sont organisées sous forme de tables à deux
dimensions, encore appelées relations, dont les lignes sont
appelées n-uplet ou tuple en anglais ;
q Les données sont manipulées par des opérateurs de l’algèbre
relationnelle ;
q L’état cohérent de la base est défini par un ensemble de contraintes
d’intégrité.
q Au modèle relationnel est associée à la théorie de la normalisation
des relations qui permet de se débarrasser des incohérences au
moment de la conception d’une base de données relationnelle.

SJP

55
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
II- ÉLÉMENTS CONSTITUTIFS DU MODÈLE LOGIQUE

La représentation du modèle logique s’appuie sur trois concepts de base:


• La clé primaire,
• La clé étrangère,
• Le passage du modèle conceptuel (entité-association) au modèle
Logique (relationnel).

Clé primaire : La clé primaire d’une relation est une de ses clés
candidates. Pour signaler la clé primaire, ses attributs sont généralement
soulignés.
Clé étrangère : Une clé étrangère dans une relation est formée d’un ou
plusieurs attributs qui constituent une clé primaire dans une autre relation
Schéma relationnel : Un schéma relationnel est constitué par
l’ensemble des schémas de relation.

SA IN T JÉ R ÔSJP

56
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
III- RÈGLES DE PASSAGE DU MODÈLE CONCEPTUEL AU
MODÈLE LOGIQUE

Relation binaire aux cardinalités (x,n) - (x,1)


Afin de représenter la relation, on duplique la clé primaire de la table basée sur
l'objet à cardinalité (x,n) dans la table basée sur l'objet à cardinalité (x,1). Cet
attribut est appelé clé étrangère. Les deux tables sont liées par une flèche
nommée selon la relation, qui pointe de la table à clé étrangère vers la table qui
contient la clé primaire correspondante.
Exemple:
Auteur Livre
NoAuteur Ecrit NoLivre
(0,n) (1,1)
Nom Nom

AUTEUR LIVRE
NOAUTEUR Ecrit
NOLIVRE
NOM # NOAUTEUR
NOM

SJP

57
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE AUX CARDINALITÉS (X,N) - (X,1)

Lorsque la relation contient elle-même des propriétés, celles-ci


deviennent également attributs de la table basée sur l’objet à cardinalité
(x,1).
Exemple:

Personne Voiture
NoPersonne Possède NoVoiture
(0,n) (1,1)
Nom Date_achât Marque
Adresse

PERSONNE VOITURE
NOPERSONNE NOVOITURE
NOM Possède # NOPERSONNE
ADRESSE MARQUE
DATE_ACHÂT

SA IN T JÉ R ÔSJP

58
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE AUX CARDINALITÉS (X,1) - (X,1)

Relation binaire (0,1)-(1,1)


On duplique la clé de la table basée sur l'objet à cardinalité (0,1) dans la table
basée sur l'objet à cardinalité (1,1).
Exemple:
Client Carte_membre
NoClient dispose NoCarte
0,1 1,1
Nom Type_abonnement
Prénom Date_création
Adresse
Code_Postal
Localité

CLIENT
CARTE_MEMBRE
NOCLIENT
NOM NOCARTE
PRÉNOM dispose
# OCLIENT
N
ADRESSE TYPE_ABONNEMENT
CODE_POSTAL DATE_CRÉATION
LOCALITÉ

SJP

59
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE (0,1)-(0,1)

Relation binaire (0,1)-(0,1)


On duplique la clé d'une des tables dans l'autre. Lorsque la relation contient
elle-même des propriétés, celles-ci deviennent également attributs de la table
dans laquelle a été ajoutée la clé étrangère.
Exemple:
Salarié Entreprise
NoSalarié Assure NoEntreprise
0,1 0,1
Nom Nom
Prénom Adresse_Siège

SALARIÉ ENTREPRISE SALARIÉ ENTREPRISE


NOSALARIÉ NOENTREPRISE NOSALARIÉ NOENTREPRISE
Assure NOM Assure NOM
NOM NOM
PRÉNOM ADRESSE_SIÈGE
PRÉNOM ADRESSE_SIÈGE # NOSALARIÉ
# NOENTREPRISE

SA IN T JÉ R ÔSJP

60
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE AUX CARDINALITÉS (X,N) - (X,N)

On crée une table supplémentaire ayant comme clé primaire une clé
composée des identifiants des 2 objets. Lorsque la relation contient elle-
même des propriétés, celles-ci deviennent attributs de la table
supplémentaire.
Exemple:

Commande Article
NoCommande Contenir Code_Article
1,n 0,n
Date Quantité Libellé
Prix_Unaire

COMMANDE LIGNE_COMMANDE
ARTICLE
NOCOMMANDE NOCOMMANDE
Code_Article
DATE CODE_ARTICLE
Libellé
QUANTITÉ
Prix_Unaire

SJP

61
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION TERNAIRE
Enseignant
NoEnseignant Matière
Enseigne
Nom 1,n 0,n Code_Matière
Prénom Libellé
Date_de_naissance
1,n

Classe
Nom_Classe
Cycle

ENSEIGNANT ENSEIGNE
NoEnseignant MATIÈRE
NOENSEIGNANT
NOM Code_Matière CODE_MATIÈRE
PRÉNOM Nom_Classe LIBELLÉ
DATE_DE_NAISSANCE

CLASSE
NOM_CLASSE
CYCLE

SA IN T JÉ R ÔSJP

62
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
Exercice 1 : Entreprise NANA
Transformez le MCD suivant, qui représente la facturation de la société «NANA»
en un MLD en respectant toutes les règles du passage MCD à MLD

Client
Article
NoClient Facture Porter
Obtenir NoArticle
Nom 1,1 NoFacture 1,n 0,n
Prénom
1,n Quantité Libellé
Date_Facture
Adresse Prix_Unitaire
Code_Postal
Localité

SJP

63
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
SOLUTION

CLIENT
FACTURE PORTER ARTICLE
NOCLIENT
NOM NOFACTURE NOFACTURE NOARTICLE
PRÉNOM # NOCLIENT NOARTICLE LIBELLÉ
ADRESSE PRIX_UNITAIRE
DATE_FACTURE QUANTITÉ
CODE_POSTAL
LOCALITÉ

SA IN T JÉ R ÔSJP

64
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
Exercice «Gestion d'école»
Transformez le MCD suivant, qui représente «la gestion d'une école» en un
MLD en respectant toutes les règles du passage MCD à MLD.
Elève
NoMatricule Classe
Fréquenter
Nom 1,n 1,n Nom_Classe
Année_scolaire Cycle
Prénom
Date_naissance
1,n

Matière Enseigner
Code_Matière 0,n
Libellé Année

0,n

Professeur
Code_Prof
Nom
prénom

SJP

65
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
ELÈVE FRÉQUENTER
CLASSE
NO_MATRICULE NOMATRICULE
NOM_CLASSE
NOM NOM_CLASSE
CYCLE
PRÉNOM ANNÉE_SCOLAIRE
DATE_NAISSANCE

MATIÈRE ENSEIGNER
Code_Matière NOM_CLASSE
Libellé CODE_PROF
CODE_MATIÈRE
ANNÉE

PROFESSEUR
CODE_PROF
NOM
PRÉNOM

SA IN T JÉ R ÔSJP

66
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
SOMMAIRE

Chapitre IV : Le
Langage SQL
• Présentation générale
• recherche dans une BD
• Définition et modification de schémas
• Mise à jour de données

SJP

67
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
BREF APERÇU DE SQL

q SQL (Structured Query Language)

q Bref historique
o langage créé par IBM en 1981,
o dérivé de SEQUEL, dérivé de SQUARE

q Structure du langage
o 3 familles fonctionnellement distinctes
o LDD (langage de définition de données)
• permet la description de la structure des données)
o LMD (langage de manipulation des données)
• permet de rechercher, modifier, mettre à jour, ajouter des données
o LCD (langage de contrôle des données)
• contient les primitives de gestion des transactions et des privilèges d’accès
aux données

68
NOTATIONS

q Dans la suite
o [a] signifie que l’élément a est optionnel
o {a b} signifie que les éléments a et b sont considérés comme un élément
unique
o {a | b} signifie un choix possible entre l’alternative a ou b
o < a > signifie que a est un paramètre qui doit être remplacé par une
valeur effective
o un exposant + signifie que l’élément qui précède peut être répété n fois
(n>0), chaque occurrence étant séparé de la précédente par une virgule
o un exposant multiplié * indique que l’élément qui précède peut être
répété n fois (n≥0), chaque occurrence étant séparé de la précédente
par une virgule

69
q PRÉSENTATION GÉNÉRALE
q RECHERCHE DANS UNE BD
q DÉFINITION ET MODIFICATION DE SCHÉMAS
q MISE À JOUR DE DONNÉES

SA IN T JÉ R ÔSJP
EC-TC-P313 : BASES DE DONNÉES - SJP (PAR R. HOUE NGOUNA - J. MOSKOLAI - M. TEKINZANG)

70
M E PO LY T E C H N IQ U E
LA RECHERCHE DE DONNÉES

q Principales requêtes
o projection
o sélection
o jointure
o sous-questions
o questions quantifiées
o union / intersection
o fonctions de calculs et de groupes (agrégats)
o fonctions de dates

71
LA PROJECTION

q Définition et remarques
o en algèbre relationnelle, cette opération effectue l’extraction des
colonnes (attributs) spécifiées, puis élimine les tuples en doublon
o en SQL, les doublons ne sont pas éliminés, à moins que cela soit
explicitement spécifié avec le mot-clé DISTINCT
o SQL permet en outre d’appliquer des fonction de calcul sur les colonnes
(ex. fonctions arithmétiques d’addition, soustraction, multiplication...)

q Syntaxe SQL
SELECT [ALL|DISTINCT] <expression de valeurs>+
FROM <nom de table> [nom de variable] ;

72
LES DONNÉES DES EXEMPLES À SUIVRE
q Soient les relations suivantes
o etudiant (matricule, nom, prenom)
o stage (code, #matricule, entreprise, note)

73
EXEMPLES (PROJECTION)

q Exemples de requêtes
(donner les noms et prénoms des étudiants ; doublons possibles)
SELECT nom, prenom FROM etudiant ;

(donner les noms et prénoms des étudiants, sans les doublons)


SELECT DISTINCT nom, prenom FROM etudiant ;

(donner tous les attributs de la relation etudiant)


SELECT DISTINCT * FROM etudiant ;

(donner le matricule et la moyenne sur 10 des notes de stage)


SELECT matricule, note/2 as note_sur_dix FROM stage ;

74
SJP

75
SAINT JÉRÔME POLYTECHNIQUE
LA SÉLECTION

q Définition et remarque
o une sélection s’exprime comme une projection avec en plus une
condition de recherche

q Syntaxe SQL
SELECT [ALL|DISTINCT] {<expression de valeurs>+ | *}
FROM <nom de table> [nom de variable]
WHERE <condition de recherche> ;

76
LA SÉLECTION

q Condition de recherche
o elle définit un critère de recherche à l’aide de prédicats
o un prédicat de restriction permet de comparer deux expressions de valeurs

q Exemples de prédicats
o de comparaison : =, ≠, <, >, ≤, ≥
o d’intervalle : BETWEEN
(teste si la valeur est comprise entre 2 constantes)
o de comparaison de texte : LIKE
(teste si une chaîne de caractère contient 1 ou plusieurs sous-chaînes)
o de test de nullité : teste si un attribut est égal à NULL
(i.e. sa valeur est inconnue)
o d’appartenance : teste (avec IN) si la valeur d’un attribut appartient à une
liste de constantes

77
EXEMPLES (SÉLECTION)

SELECT matricule FROM stage WHERE note < 15 ;


SELECT matricule FROM stage WHERE note BETWEEN 10 AND 12 ;
SELECT matricule FROM stage WHERE note IN (15, 20) ;
(le nom commence par MA, suivi de n’importe quels caractères)
SELECT nom, prenom FROM etudiant WHERE nom LIKE 'MA%' ;
(le prénom commence par P, suivi de n’importe quels caractères, très
exactement au nombre de 4)
SELECT nom, prenom FROM etudiant
WHERE prenom LIKE 'P- - - -' ;
(le prénom commence par n’importe quel caractère, très exactement un
seul, suivi de n’importe quels caractères)
SELECT nom, prenom FROM etudiant
WHERE prenom LIKE '-M%' ;

78
LA JOINTURE

q Définition et remarques
o un cas particulier de jointure sans qualification est le produit cartésien
o la jointure avec qualification peut s’exprimer comme la restriction du
produit cartésien par un prédicat

q Syntaxe SQL
SELECT [ALL|DISTINCT] {<expression de valeurs>+ | *}
FROM <nom de table_1> , … , <nom de table_n>
[WHERE <condition de jointure>] ;

79
EXEMPLES (JOINTURE)

SELECT nom, prenom, note


FROM etudiant, stage
WHERE etudiant.matricule = stage.matricule ;
SELECT nom, prenom, note
FROM etudiant, stage
WHERE etudiant.matricule = stage.matricule
AND note > 13 ;
SELECT nom, prenom, note
FROM etudiant, stage
WHERE etudiant.matricule = stage.matricule
AND note BETWEEN 15 AND 20 ;
SELECT etudiant.nom, prenom, note
FROM etudiant, stage
WHERE etudiant.matricule = stage.matricule
AND etudiant.matricule LIKE 'SJP1%' ;

80
SJP

81
SAINT JÉRÔME POLYTECHNIQUE
CAS PARTICULIER : AUTO-JOINTURE

q Définition
o une auto-jointure est une jointure d’une relation avec elle-même,
o très pratique lorsque la condition de jointure compare des attributs de la
même relation, en particulier pour les relations ayant une structure
hiérarchique (par ex. relation parent/enfant…)

q Syntaxes SQL d’une auto-jointure


SELECT [ALL|DISTINCT] {<expression de valeurs>+ | *}
FROM <nom de table_gauche>
INNER JOIN <nom de table_droite>
ON <condition de jointure>
[WHERE <condition de restriction>] ;
ou
SELECT [ALL|DISTINCT] {<expression de valeurs>+ | *}
FROM <nom de table> <variable 1>, <nom même table> <variable 2>
WHERE <condition de jointure> [AND <condition de restriction>] ;

82
CAS PARTICULIER : JOINTURES EXTERNES

q Rappel
o une jointure externe permet de récupérer les enregistrements des
relations correspondant à la condition de jointure, mais aussi ceux pour
lesquels il n’existe pas de correspondance

q Syntaxe SQL d’une jointure externe


SELECT [ALL|DISTINCT] {<expression de valeurs>+ | *}
FROM <nom de table_gauche>
[LEFT OUTER | RIGHT OUTER | FULL OUTER] JOIN
<nom de table_droite> ON <condition de jointure>
[WHERE <condition de restriction>] ;

83
EXEMPLES
(AUTO-JOINTURE ET JOINTURES EXTERNES)

(noms, prénoms, notes des étudiants, y compris ceux qui n’ont pas
effectué de stage è il s’agit peut-être d’un oubli de saisie !)
SELECT nom, prenom, note
FROM etudiant LEFT OUTER JOIN stage
ON etudiant.matricule = stage.matricule ;

(noms, prénoms, notes des étudiants dont la note de stage > 13)
SELECT nom, prenom, note
FROM etudiant LEFT OUTER JOIN stage
ON etudiant.matricule = stage.matricule
WHERE note > 13;

84
SJP

85
SAINT JÉRÔME POLYTECHNIQUE
LES SOUS-QUESTIONS

q Le principe : requêtes imbriquées


o SQL permet l’imbrication de sous-questions dans la clause WHERE
sous-question dont le résultat peut être :
- une valeur simple
- ou un ensemble de valeurs

q Syntaxe
SELECT … FROM … WHERE … SELECT …

q Remarques
o un sous-question peut être considérée argument des prédicats (de
comparaison ou d’appartenance à une liste)
o une sous-question elle-même invoquer de sous-question

86
EXEMPLES (REQUÊTES IMBRIQUÉES)

(noms et prénoms des étudiants ayant effectué un stage à la SONEL)


SELECT nom, prenom FROM etudiant
WHERE matricule IN (
SELECT matricule FROM stage
WHERE entreprise = 'SONEL') ;

(auto-jointure è matricules et notes des étudiants dont la note de stage


est supérieure à la moyenne des notes de tous les étudiants)
SELECT s1.matricule, s1.note FROM stage s1
INNER JOIN stage s2
ON s1.matricule = s2.matricule
WHERE s1.note > (SELECT AVG(note) FROM stage) ;

87
SA IN T JÉ R ÔSJP

88
M E PO LY T E C H N IQ U E
LES QUESTIONS QUANTIFIÉES

q Le contexte
o on peut être amené à comparer la valeur d’un attribut :
• à tous les résultats d’une sous-question,
• ou seulement à l’une quelconque des valeurs trouvées
o il est également possible de vouloir tester si la valeur d’un attribut existe
dans le(s) résultat(s) d’une sous-question

q La syntaxe en SQL
o SQL propose l’écriture de sous-questions quantifiées avec les mots-clés
suivants, précédant la sous-question : ALL, ANY, EXISTS

q Signification
o ALL permet de vérifier si la comparaison est vrai pour tous les résultats de
la sous-question
o ANY vérifie si elle est vrai pour au moins un résultat de la sous-question
o EXISTS teste l’existence de la valeur d’un attribut dans le résultat

89
EXEMPLES (QUESTIONS QUANTIFIÉES)

(matricules des étudiants ayant une note supérieure à la note de tous les
étudiants i.e. le ou les étudiants ayant la meilleure note de stage)
SELECT matricule FROM stage
WHERE note >= ALL
SELECT note FROM stage ;

(matricules des étudiants ayant une note supérieure à la note d’au moins un
étudiant)
SELECT matricule FROM stage
WHERE note > ANY
SELECT note FROM stage ;

(matricules, noms et prénoms des étudiants ayant effectué un stage à la SONEL)


SELECT DISTINCT etudiant.matricule, nom, prenom
FROM stage, etudiant
WHERE EXISTS
(SELECT * FROM stage
WHERE entreprise = 'SONEL'
AND stage.matricule = etudiant.matricule) ;

90
rappel

SA IN T JÉ R ÔSJP

91
M E PO LY T E C H N IQ U E
L’UNION
q Syntaxe SQL
o utilisation du mot-clé UNION entre les requêtes relatives à l’opération
d’union
q Exemple
(matricules des étudiants ayant effectué leur stage à la SONEL, plus les
matricules de ceux ayant une note > 14)
SELECT matricule FROM stage WHERE entreprise = 'SONEL'
UNION
SELECT matricule FROM stage WHERE note > 14 ;

92
L’INTERSECTION

q Syntaxe SQL
o utilisation du mot-clé INTERSECT entre les requêtes relatives à
l’opération d’intersection

q Exemple
(matricules des étudiants ayant effectué leur stage à la SONEL et ayant
une note > 10)
SELECT matricule FROM stage WHERE entreprise = 'SONEL'
INTERSECT
SELECT matricule FROM stage WHERE note > 10 ;

93
LES FONCTIONS DE CALCULS ET DE GROUPES

q Les principales fonctions de calcul


o COUNT : pour compter le nombre de valeurs d’un ensemble
o SUM : pour sommer le nombre de valeurs d’un ensemble
o AVG : pour calculer la valeur moyenne d’un ensemble
o MAX : pour calculer la valeur maximum d’un ensemble
o MIN : pour calculer la valeur minimum d’un ensemble

q Utilisation
o ces fonctions peuvent être utilisées dans la clause SELECT
(par ex. pour afficher la moyenne générale des notes de stage)
o elle sont également utilisées pour effectuer des calculs sur des groupes
avec GROUP BY <spécification des colonnes>+
(par ex. pour calculer les moyennes de notes par entreprise)
o il est possible d’appliquer une sélection sur une groupe, avec
HAVING <condition de sélection>, après la clause GROUP BY
(par ex. pour calculer les moyennes de notes par entreprise, mais
uniquement pour les notes supérieures à 10)

94
EXEMPLES (CALCULS ET GROUPES)

(moyenne générale des notes de stage)


SELECT AVG(note) as MOYENNE_NOTE FROM stage ;

(moyennes des notes de stage par entreprise, avec le nom de l’entreprise


concernée)
SELECT entreprise, AVG(note) as moyenne FROM stage
GROUP BY entreprise ;

(idem que précédemment, mais uniquement pour s’il y a plus d’une note
dans la groupe i.e. l’entreprise a reçu au moins 2 étudiants)
SELECT entreprise, AVG(note) as moyenne FROM stage
GROUP BY entreprise HAVING COUNT(matricule) > 1 ;

95
rappel

SA IN T JÉ R ÔSJP

96
M E PO LY T E C H N IQ U E
FONCTIONS DE DATES

q Fonctions de base q Autres fonctions


SELECT NOW() ; WEEK()
(retourne la date courante au format 'YYYY-MM-DD’) YEAR()
SELECT DAY('date_deb') FROM stage ; …
Idem avec DAYOFMONTH()
(retourne le jour d’une date : 1, 2, … 31)
SELECT DAYNAME('date_deb') FROM stage ;
(retourne le nom du jour de la semaine d’une date :
Monday, Tuesday, … Sunday)
SELECT DAYOFWEEK('date_deb') FROM stage ;
(retourne l’index du jour de la semaine d’une date :
1pour Monday, 2 pour Tuesday, … 7 pour Sunday)
SELECT DAYOFYEAR('date_deb') FROM stage ;
(retourne le jour d’une date dans un intervalle de 1 à
366)
SELECT MONTH('date_deb') FROM stage ;
(retourne le numéro de mois d’une date : 1, 2, … 12)
SELECT MONTHNAME('date_deb’) FROM stage ;
(retourne les noms de mois des dates de début des
stages : January, February, … December)

97
FONCTIONS DE DATES

SELECT entreprise FROM stage


WHERE TO_DAYS(NOW()) - TO_DAYS(date_deb) <= 30 ;
(liste des entreprises au sein desquelles les stages ont débuté depuis moins
de 30 jours)

q Remarques
o La fonction TO_DAYS convertit une date en nombre de jours
• Elle accepte les champs de type DATETIME et ignore la partie horaire
o La fonction NOW() calcule la date ou l’heure actuelle (celle de l’horloge
du système)

98
q PRÉSENTATION GÉNÉRALE
q RECHERCHE DANS UNE BD
q DÉFINITION ET MODIFICATION DE SCHÉMAS
q MISE À JOUR DE DONNÉES

SA IN T JÉ R ÔSJP

99
M E PO LY T E C H N IQ U E
CRÉATION DE TABLES

q Syntaxe SQL
CREATE TABLE <nom de table> (élément de table>+)

o un nom de table peut être un nom simple (par ex. etudiant) ou un nom
composé d’un nom de schéma (i.e. une BD) suivi par le nom de la table (par
ex. sjp1.etudiant)
o un élément de table est
• soit une définition de colonne (par exemple :
<nom d’un attribut> : <type de donnée>, par ex. note : FLOAT(n,d)),
• soit une définition de contrainte (par ex. matricule PRIMARY KEY pour
définir le matricule comme clé primaire)

q Contraintes d’intégrité
o les contraintes de colonnes : permettent de spécifier différentes
contraintes d’intégrité portant sur un seul attribut
o les contraintes de relations : peuvent porter sur plusieurs attributs

10
0
LES CONTRAINTES D’INTÉGRITÉ

q Les contraintes de colonnes


o valeur nulle impossible : NOT NULL
o unicité des valeurs prises par l’attribut : UNIQUE
o contrainte référentielle :
REFERENCES <table référencée> [colonne référencée]
(le nom de la colonne référencée est optionnel s’il est identique à celui
de la colonne référençante)
o contrainte générale : CHECK <condition>
(la condition est une condition pouvant spécifier des plages ou des listes
de valeurs possibles)

10
1
LES CONTRAINTES D’INTÉGRITÉ

q Les contraintes de relation


(contraintes d’unicité, référentielles ou générales)
o unicité : UNIQUE <attribut>+
o contrainte référentielle (pour spécifier quelles colonnes référencent
celles d’une autre table) :
FOREIGN KEY (<colonne référençante>+) REFERENCES <table
référencée> [(<colonne référencée>+)]
o contrainte générale : CHECK <condition>

10
2
PRINCIPAUX TYPES

q Chaînes de caractères
o CHAR(longueur) : l’attribut doit avoir un nb. De caractères exactement égal au
nombre spécifié
o VARCHAR (longueur) : le nombre de caractère est variable, et est au maximum,
égal à la valeur spécifiée entre parenthèse

q Types numériques
o TINYINT(n) : entiers de -128 à +127 ou de 0 à 255
o SMALLINT(n) : entiers de -32768 à +32768 ou de 0 à 65535
o INT(n) : entiers de -2147483648 à 2147483647 ou de 0 à 4294967295
o FLOAT(n,d) : nombres à virgule flottante, en simple précision
o DOUBLE(n,d) : nombres à virgule flottante, en double précision

q Types temporels
o DATE : date au format 'YYYY-MM-DD'
o DATETIME : combinaison de date et heure, au format 'YYYY-MM-DD HH:MM:SS’

10
3
EXEMPLE (CRÉATION DE TABLES)

q Création en SQL de la table associée à la relation STAGE


CREATE TABLE etudiant (
matricule VARCHAR (10) PRIMARY KEY,
nom VARCHAR (80) NOT NULL,
prenom VARCHER (80)
);

CREATE TABLE stage (


code VARCHAR (10) PRIMARY KEY,
matricule VARCHAR (10) NOT NULL,
entreprise VARCHAR (80),
note INT (2),
FOREIGN KEY matricule REFERENCES etudiant,
CHECK (note BETWEEN 0 AND 20)
);

10
4
LA DÉFINITION DE SCHÉMAS

q Définition des vues


o une vue est une table virtuelle calculée à partir des tables de base par une
question, et dont la syntaxe de création est :

CREATE VIEW <nom de la vue> [(<nom de colonne>+)] AS <spécification


de la question> [WITH CHECK OPTION] ;

o exemple (stagiaires de SONEL, avec leurs notes) :


CREATE VIEW stagiaires_sonel AS
SELECT matricule, note FROM stage
WHERE entreprise = 'SONEL' ;

q Suppression de tables
DROP TABLE <nom de la table>
exemple : DROP TABLE stages ;

10
5
LA MODIFICATION D’UN SCHÉMA

q Le principe
o changer la structure d’une table en spécifiant la nature du changement

q Principales spécifications
o ajout d’une colonne
o suppression d’une colonne
o suppression d’une contrainte
o ajout d’une contrainte
o modification de la définition d’une colonne (changement du type)
o renommage d’une table
o renommage d’une colonne

q Syntaxe générale SQL


ALTER TABLE <nom de table> <spécification de modification>+

10
6
AJOUT DE COLONNE

q Syntaxe SQL
ALTER TABLE <nom de table>
ADD {[COLUMN] <nom de colonne> <type de la colonne>}+
[FIRST | AFTER <nom de colonne>] ;

q Remarque
o le mot-clé COLUMN est optionnel ; toutefois, en le spécifiant, la valeur par défaut de la
colonne est définie comme NULL

Exemples :
ALTER TABLE etudiant
ADD COLUMN email VARCHAR(80) ;

ALTER TABLE etudiant


ADD serie_bac VARCHAR(5) AFTER prenom ;

ALTER TABLE etudiant


ADD (adresse VARCHAR(160), ville VARCHAR (30)) ;

10
7
SUPPRESSION DE COLONNE

q Syntaxe SQL
ALTER TABLE <nom de table>
DROP [COLUMN] <nom de colonne>
[RESTRICT | CASCADE] ;

q Remarques
o l’option [RESTRICT | CASCADE] permet de spécifier une suppression en
cascade (ou pas), notamment lorsque la colonne en question est référencée
dans une autre table
o la suppression n’est possible que si la colonne considérée ne fait pas partie
d’une vue, d’un index ou d’une contrainte (ex. clé)

Exemple :
ALTER TABLE etudiant DROP email ;

10
8
SUPPRESSION ET AJOUT DE CONTRAINTE

q Syntaxe SQL de quelques cas de suppression de contrainte


ALTER TABLE <nom de table> DROP PRIMARY KEY ;
ALTER TABLE <nom de table> DROP
FOREIGN KEY <nom de la clé> ;
ALTER TABLE <nom de table> DROP
INDEX <nom de l’index> ;

q Syntaxe SQL de quelques cas d’ajout de contrainte


ALTER TABLE <nom de table> ADD
[CONSTRAINT] PRIMARY KEY <nom de colonne> ;
ALTER TABLE <nom de table> ADD
[CONSTRAINT] UNIQUE <nom de colonne> ;
ALTER TABLE <nom de table> ADD
[CONSTRAINT] {FOREIGN KEY
<nom de colonne> REFERENCES <nom de table>}+ ;

10
9
MODIFICATION DÉFINITION D’UNE COLONNE

q Syntaxe SQL de quelques cas de modification


ALTER TABLE <nom de table>
ALTER
{
[COLUMN] <nom de colonne> <type> |
[COLUMN] <nom de colonne> SET DEFAULT <valeur> |
[COLUMN] <nom de colonne> DROP DEFAULT |
[COLUMN] <nom de colonne> {SET | DROP} NOT NULL
}+ ;

11
0
RENOMMER UNE COLONNE OU UNE TABLE

q Syntaxe SQL
ALTER TABLE <nom de table>
RENAME {
COLUMN <ancien nom> TO <nouveau nom de colonne> |
TO <nouveau nom de table>
}

q Exemples
ALTER TABLE stage
RENAME COLUMN note TO note_rapport ;

ALTER TABLE stage


RENAME TO stage_sjp1 ;

11
1
q PRÉSENTATION GÉNÉRALE
q RECHERCHE DANS UNE BD
q DÉFINITION ET MODIFICATION DE SCHÉMAS
q MISE À JOUR DE DONNÉES

SJP

11
SAINT JÉRÔME POLYTECHNIQUE

2
LA MISE À JOUR DE DONNÉES

q Principales requêtes
o insertion de tuples
o mise à jour de tuples
o suppression de tuples

11
3
INSERTION DE TUPLES

q Cas d’utilisation
o une insertion de tuples (ajout de nouveaux enregistrements) peut être
réalisée en mentionnant les tuples à insérer è directe
o elle peut également se faire à partir des résultats d’une question
(requête) è via une question

q Syntaxe SQL
INSERT INTO <nom de table> [(<nom de colonne>+)]
{VALUES (<constante>+) | <commande de recherche>} ;
o dans le cas où la liste de colonne n’est pas spécifiée, les valeurs
insérées seront attribuées aux attributs de la table dans l’ordre dans
lequel ils ont été définis dans le schéma
(si seulement certaines valeurs sont spécifiées, les autres attributs
auront une valeur nulle)

11
4
EXEMPLE (INSERTION DE TUPLES)
q Insertion directe
INSERT INTO etudiant (matricule, nom, prenom)
VALUES ('SJP1006', 'Noundou', 'Lucrèce') ;

INSERT INTO etudiant (matricule, nom, prenom)


VALUES ('SJP1007', 'Demgne', 'Carole'),('SJP1008', 'Kidba', 'André');

q Insertion via une question


o on suppose que la table etudiant contient tous les étudiants de SJP
o on souhaite à présent séparer les données dans des tables distinctes

INSERT INTO etudiant_sjp2


SELECT matricule, nom, prenom FROM etudiant
WHERE matricule LIKE 'SJP2%' ;

11
5
MISE À JOUR DE TUPLES

q Le principe
o elle permet de changer des valeurs d’attributs des tuples existants
o elle peut être réalisée,
• soit en indiquant directement les valeurs à modifier
• soit modifiant une valeurs à partir du résultat d’une question
o si aucune condition n’est spécifiée (dans la clause WHERE) tous les
tuples seront modifiés !!! d’où l’intérêt
des vues

q Syntaxe SQL
UPDATE <nom de table>
SET {<nom de colonne> = {<expression de valeur> | NULL}}+
[WHERE {<condition de recherche>}] ;

11
6
EXEMPLE (MISE À JOUR DE TUPLES)

q Modification de tous les tuples d’une table


(attention danger !!!)
UPDATE stage
SET note = 18 ;

q Modification de tuples vérifiant une condition


(à utiliser avec précaution, si condition mal écrite)
UPDATE stage
SET note = 18
WHERE entreprise = 'SONEL' ;

UPDATE stage
SET note = 18
WHERE matricule= 'SJP1001' ;

11
7
MISE À JOUR AVEC RECHERCHE DANS LA MÊME TABLE

q Écriture incorrecte
UPDATE stage
SET note = note * 1.1
WHERE matricule IN
SELECT matricule FROM stage
WHERE note > SELECT AVG(note) FROM stage ;

q Nécessité de passer par des tables temporaires


UPDATE stage s1
SET s1.note = s1.note * 1.1
WHERE s1.matricule IN
SELECT matricule FROM (SELECT * FROM stage) s2
WHERE s2.note >
(
SELECT AVG(s3.note) FROM (SELECT * FROM stage) s3
);

11
8
SUPPRESSION DE TUPLES

q Le principe
o elle permet d’enlever des tuples existants d’une relation
o si aucune condition n’est spécifiée (dans la clause WHERE) tous les
tuples seront supprimés !!!

q Syntaxe SQL
DELETE FROM <nom de table>
[WHERE {<condition de recherche>}] ;

q Exemple
DELETE FROM etudiant
WHERE matricule NOT LIKE 'SJP%' ;

11
9
SYNTHÈSE

120
SA IN T JÉ R ÔSJP
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)

Vous aimerez peut-être aussi