Chapitre 5: Introduction aux bases de données relationnelles
5.1 Généralités sur Sql et MySql
5.2 Concept de modèle relationnel
5.3 Opérations de l’algèbre relationnelle
5.4 Types d’attribut en Sql
5.5 Création de relation
108
5.1 Généralités sur Sql et MySql
Définition:
Le SQL, Structured Query Language, est un langage Standard permettant à
un client de communiquer des instructions à la base de données.
Il se décline en quatre parties :
— le DDL (Data definition language) comporte les instructions qui
permettent de définir la façon dont les données sont représentées.
— le DML (Data manipulation language) permet d’écrire dans la base et
donc de modifier les données.
— le DQL (Data query language) est la partie la plus complexe du SQL, elle
permet de lire les données dans la base à l’aide de requêtes.
— le DCL (Data control language), qui ne sera pas vu dans ce cours permet
de gérer les droits d’accès aux données.
109
5.1 Généralités sur Sql et MySql
Définition:
Le modèle relationnel est une manière de modéliser les relations
existantes entre plusieurs informations, et de les ordonner entre elles.
Un SGBD (Système de Gestion de Bases de Données) est un logiciel qui stocke
des données de façon organisées et cohérentes.
• MySQL dérive directement de SQL et est un SGBD qui exploite le modèle
relationnel.
• Le serveur de base de données MySQL est très souvent utilisé avec le
langage de création de pages web dynamiques : PHP.
110
5.1 Généralités sur Sql et MySql
Base de MySQL Script
données PHP
Serveur
HTTP
Page
HTML
111
5.2 Concept de modèle relationnel
▪ Domaine : ensemble des valeurs d’un attribut (champ).
▪ Relation : sous ensemble du produit cartésien d’une liste de
domaines.
C’est un tableau à deux dimensions dont les colonnes
correspondent aux domaines et dont les lignes contiennent
des tuples (enregistrements).
▪ Attribut : une colonne d’une relation, caractérisé par un nom.
▪ Tuple : ligne d’une relation (liste) constituée des valeurs des
attributs
112
5.2 Concept de modèle relationnel
▪ Une relation est comme une classe (programmation orientée
objet) dont chaque instance représenterait un tuple.
▪ Une relation est une table comportant des colonnes
(attributs) dont le nom et le type caractérisent le contenu qui
sera inséré dans la table.
e_nom type adresse téléphone
Iut Lokossa Institut Lokossa +229 -
113
5.2 Concept de modèle relationnel
▪Une base de données contient plusieurs tables.
▪Une table est un ensemble d’enregistrements.
▪Un enregistrement contient un nombre déterminé de valeurs d’attributs
(champs)
▪(par exemple: login, nom, prénom et adresse)
▪Les attributs ont des formats précis
(date, chaîne de caractère, nombre…)
▪Si dans une table un attribut est défini comme clé primaire, chaque
enregistrement doit alors se différencier par sa clé primaire.
114
5.2 Concept de modèle relationnel
Définition: le schéma d'une table définit sa structure. Il spécifie
notamment :
1. le nom de la table,
2. pour chaque colonne: son nom, son type, son caractère
obligatoire,
3. l'identifiant (clé) primaire (liste de colonnes)
4. les identifiants secondaires éventuels (liste de colonnes)
5. les clés étrangères éventuelles (liste de colonnes et table
cible).
115
5.2 Concept de modèle relationnel
Définition: un identifiant est un attribut ou groupe d’attributs d'une
table T tel qu'il ne puisse, à tout moment, exister plus d'une ligne dans
T qui possède des valeurs déterminées pour ces attributs.
Exemples:
1. Un identifiant numérique unique: id
2. Le couple (‘nom,’ ’prenom’) avec interdiction de la valeur NULL
pour éviter les doublons dans notre table Etudiants.
La connaissance du couple (nom, prenom) seul suffit à identifier sans
ambiguïté un et un seul enregistrement.
116
5.2 Concept de modèle relationnel
Définition: la contrainte d’unicité pour un attribut consiste à ce que
deux enregistrements ne pourront pas avoir une valeur identique pour
cet attribut.
Définition: une clé (identifiant) est dite primaire quand elle est
constitué d’un ou des attribut(s) obligatoire(s).
PS: la clé primaire ne doit jamais être vide(NOT NULL ) et est unique.
Définition: un identifiant est minimal si chacun de ses attributs est
nécessaire pour garantir la contrainte d'unicité. Exp: (‘nom’, ‘prenom’)
117
5.2 Concept de modèle relationnel
Remarques: une clé étrangère:
1. référence en principe l'identifiant primaire (parfois le secondaire) de la
table cible.
2. est associée à une contrainte référentielle
3. a la même composition: même nombre d’attributs de mêmes types pris
deux à deux, que l'identifiant qu'elle référence.
Définition: la contrainte référentielle consiste à ce que la clé étrangère
désigne une colonne existante de la table cible (table de départ).
118
5.2 Concept de modèle relationnel
Thèmes anglais:
1. L’option Clé primaire (PRIMARY KEY) regroupe NOT NULL et
UNIQUE : epx: ‘id’
2. Une clé qui n’est pas primaire est secondaire (secondary key):
exp: ‘nom’
2. Un identifiant minimal est aussi appelé clé candidate
(candidate key) exp: ‘nom, prenom’
3. Clé étrangère : foreign key. Exp: ‘e_nom’
119
5.3 Opérations de l’algèbre relationnelle
L’algèbre relationnelle regroupe toutes les opérations possibles
sur les relations.
Operations possibles :
1. Projection : on ne sélectionne qu’un ou plusieurs attributs
d’une relation (on ignore les autres).
Procédure: SELECT from
Exp: n’afficher que les colonnes e_nom et adresse de la table
Ecoles.
120
5.3 Opérations de l’algèbre relationnelle
e_nom type adresse téléphone
IUT Lok Institut Lokossa +299- Ecoles
UAC University Calavi +299-
UP University Parakou +299-
On projette la table
Ecoles sur les colonnes
e_nom et adresse.
SELECT e_nom, adresse
FROM Ecoles
e_nom adresse
IUT Lok Lokossa
UAC Calavi
UP Parakou
121
5.3 Opérations de l’algèbre relationnelle
L’algèbre relationnelle regroupe toutes les opérations possibles sur les
relations.
2. Jointure : on fabrique une nouvelle relation à partir de 2 ou
plusieurs autres sur la base d’1 ou plusieurs attributs.
Procédure: SELECT …. WHERE
Exp: concaténer les tables Ecoles et Etudiants en fonction du nom de
l’école
122
5.3 Opérations de l’algèbre relationnelle
L’algèbre relationnelle regroupe toutes les opérations possibles sur les
relations.
3. Sélection : on sélectionne tous les tuples ou bien seulement une
partie en fonction de critères de sélection qui portent sur les
valeurs des attributs.
Procédure: SELECT …. WHERE
Exp: afficher uniquement les Ecoles de type université.
123
5.3 Opérations de l’algèbre relationnelle
e_nom type adresse téléphone Ecoles
IUT Lok Institut Lokossa +299-
UAC University Calavi +299-
UP University Parakou +299-
SELECT *
FROM Ecoles
WHERE type= ‘university’’
e_nom type adresse téléphone
UAC University Calavi +299-
UP University Parakou +299-
124
5.4 Types d’attribut en Sql
Types Exemples
Nombre entier quantité commandée, âge
Nombre à virgule prix, taille
Chaîne de caractères nom, adresse
Date et heure date de naissance, heure de
parution
Énumération Un statut parmi une liste
prédéfinie
Ensemble une ou des monnaies parmi
une liste prédéfinie
125
5.4 Types d’attribut en Sql
nom borne inférieure borne supérieure
TINYINT -128 127
TINYINT UNSIGNED 0 255
SMALLINT -32768 32767
SMALLINT UNSIGNED 0 65535
MEDIUMINT -8388608 8388607
MEDIUMINT UNSIGNED 0 16777215
INT -2147483648 2147483647
INT* UNSIGNED 0 4294967295
BIGINT -9223372036854775808 9223372036854775807
BIGINT UNSIGNED 0 18446744073709551615
UNSIGNED - type sans signe permet d'interdire les nombres négatifs (en
supprimant le bit de signe)
126
5.4 Types d’attribut en Sql
Attributs de type nombre.
nom domaine négatif : Domaine positif :
borne inférieure borne inférieure
borne supérieure borne supérieure
FLOAT -3.402823466E+38 1.175494351E-38
-1.175494351E-38 3.402823466E+38
DOUBLE -1.7976931348623157E+308 2.2250738585072014E-308
-2.2250738585072014E-308 1.7976931348623157E+308
REAL est un synonyme de DOUBLE.
127
5.4 Types d’attribut en Sql
Attribut de type chaîne de caractères
nom longueur
CHAR(M) Chaîne de taille fixe à M, où 1<M<255, complétée avec
des espaces si nécessaire.
CHAR(M) BINARY Chaîne de taille fixe à M insensible à la casse lors des tris
et recherches.
VARCHAR(M) Chaîne de taille variable, de taille maximum M, où
1<M<255, complété avec des espaces si nécessaire.
VARCHAR(M) BINARY VARCHAR(M)
insensible à la casse lors des tris et recherches.
TINYTEXT Longueur maximale de 255 caractères.
TEXT Longueur maximale de 65535 caractères.
MEDIUMTEXT Longueur maximale de 16777215 caractères.
LONGTEXT Longueur maximale de 4294967295 caractères.
DECIMAL(M,D) Nombre flottant de D chiffres après la virgule et de M
chiffres au maximum.
128
5.4 Types d’attribut en Sql
Attribut de type chaîne de caractères
nom longueur
TINYTEXT, TEXT, MEDIUMTEXT et insensibles à la casse lors des tris et
LONGTEXT recherches.
▪peuvent remplacer les types
TINYTEXT, TEXT, MEDIUMTEXT et
LONGTEXT
TINYBLOB, BLOB, MEDIUMBLOB et ▪sensibles à la casse lors des tris et
LONGBOB. recherches.
▪peuvent être utilisés pour stocker
des données binaires
VARCHAR, TEXT et BLOB taille variable
CHAR et DECIMAL (NUMERIC) taille fixe
129
5.4 Types d’attribut en Sql
Types des attributs: dates et heures
Nom Description Format
DATE Date au format anglophone AAAA-MM-JJ
DATETIME Date et heure au format AAAA-MM-JJ HH:MM:SS
anglophone. La date et
l’heure sont séparées par
un espace
TIMESTAMP Affiche la date et l’heure AAAAMMJJHHMMSS
sans séparateur :
TIMESTAMP(M) M (entier pair entre 2 et Affiche les M premiers
14) caractères de
TIMESTAMP
TIME Heure HH:MM:SS
YEAR Année AAAA
130
5.4 Types d’attribut en Sql
Types des attributs: dates et heures
nom description
TIMESTAMP(2) AA
TIMESTAMP(4) AAMM
TIMESTAMP(6) AAMMJJ
TIMESTAMP(8) AAAAMMJJ
TIMESTAMP(10) AAMMJJHHMM
TIMESTAMP(12) AAMMJJHHMMSS
TIMESTAMP(14) AAAAMMJJHHMMSS
131
5.4 Types d’attribut en Sql
Type des attributs: énumération
ENUM(‘’valeur 1’’,’’valeur 2’’…)
ENUM(‘’valeur 1’’,’’valeur 2’’…) NULL
nom description
Valeurs possibles ▪valeurs définies lors de la création de la table
▪chaîne vide
▪NULL
▪65535 valeurs distinctes insensibles à la
casse.
Index associé à chaque de 0 à N-1 si N valeurs ont été définies
valeur
Valeurs retournées ▪contexte numérique: l‘index de la valeur
▪ autrement: la valeur elle-même
132
5.4 Types d’attribut en Sql
Type des attributs: ensemble
Un attribut de type SET peut prendre une liste de 64 valeurs maximum qui
doivent être déclarées lors de la définition de l’attribut
Définition Valeurs retournées
▪chaîne vide
▪CFA
SET(‘CFA’, ‘$ US, ’EURO’) NOT NULL ▪‘CFA, $ US’
▪‘CFA, $ US, EURO’
▪autres combinaisons de listes des trois
valeurs .
SET(‘CFA’, ‘$ US, ’EURO’) NULL ▪ les valeurs précédentes
▪ NULL
133
5.5 Création de relation
Commandes: CREATE
▪TEMPORARY donne pour durée de vie à la
CREATE [TEMPORARY] TABLE table : le temps de la connexion de
nom_relation [IF NOT EXISTS] ( l’utilisateur au serveur,
nom_attribut TYPE_ATTRIBUT ▪En l’absence de TEMPORARY, la table sera
[OPTIONS] permanente
… ▪IF NOT EXIST permet de ne créer cette table
) si une table de même nom n’existe pas
encore
Exemple de la table Ecoles:
CREATE TABLE Ecoles ( Chacune des écoles à ajouter occupera une
‘e_nom’ VARCHAR(40), ligne de cette table
‘type’ VARCHAR(24),
‘adresse’ TINYTEXT,
‘téléphone’ DECIMAL(10,0)
)
134
5.5 Création de relation
Commandes: CREATE
Exemples 2:
CREATE TABLE Ecoles (
‘id’ SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
‘e_nom’ VARCHAR(40),
‘type’ VARCHAR(24),
‘adresse’ TINYTEXT,
‘téléphone’ DECIMAL(10,0)
)
▪L’ identifiant numérique unique ‘id’ est une « clé primaire ».
▪L’option AUTO_INCREMENT signifie que la valeur du «’id’ » croit d’elle-
même à chaque enregistrement
▪La numérotation des clés primaires, débute à 1 et non à 0.
135
5.5 Création de relation
Commandes: CREATE
Exemples 3:
CREATE TABLE Ecoles (
‘id’ SMALLINT UNSIGNED AUTO_INCREMENT,
‘e_nom’ VARCHAR(40),
‘type’ VARCHAR(24) NOT NULL,
‘adresse’ TINYTEXT,
‘telephone’ VARCHAR(40)
PRIMARY KEY (‘e_nom’,’type’)
)
▪On souhaite simplement interdire d’avoir des doublons sur le couple
(‘e_nom’,’type’)
▪Ce couple devient alors la « clé primaire ».
136
5.5 Création de relation
Commandes: CREATE
Option Valeur automatique en absence de valeur
attribuée
Lors de l’ajout d’un enregistrement cette
DEFAULT valeur sera affectée à l’attribut si aucune
valeur n’est donnée
CREATE TABLE Ecoles (
…
‘telephone’ DECIMAL(10,0) DEFAULT ‘229300294’,
)
PS: Les attributs de type chaîne de caractères de la famille TEXT et BLOB ne
peuvent pas avoir de valeur par défaut.
137
5.5 Création de relation
Commandes: CREATE
Option Type d’attribut Valeurs automatiques en
absence de valeur par défaut
ou attribuées
chaîne de caractères la chaîne vide ‘’ ’’
NOT NULL.
nombre Valeur numérique 0
date et l’heure 0000-00-00 00:00:00
CREATE TABLE Ecoles (
PS: on utilisera l’option NULL
… si on autorise l’absence de valeur.
‘adresse’ TINYTEXT NOT NULL,
)
138
5.5 Création de relation
Commandes: CREATE
Option Description
UNIQUE Pour interdire l’apparition de doublon pour un attribut
[nomdelacontrainte]
(liste des attributs)
CREATE TABLE Ecoles (
e_nom adresse
-------
IUT Lok LOKOSSA
‘e_nom’ VARCHAR (40),
UP Parakou
‘adresse’ TINYTEXT NOT NULL,
IUT Lok LOKOSSA
UNIQUE (‘e_nom’)
)
enregistrement impossible (doublon)
139
5.5 Création de relation
Commandes: CREATE
Option Description
INDEX index (liste des ▪La création d’un index associé à un attribut ou à un
attributs) ensemble ordonné d’attributs crée une liste ordonnée
des valeurs de ces attributs et de l’adresse de la ligne
associée.
▪ les recherches et les tris se font sur les valeurs de
cette liste.
▪Un index peut porter sur 15 colonnes maximum.
▪Une table peut posséder au maximum 16 indexs.
▪Un index peut avoir une taille d’au maximum 256 octets et ne doit
porter que sur des attributs NOT NULL.
140
5.5 Création de relation
Commandes: CREATE
Exemples d’OPTION Index
CREATE TABLE Ecoles (
-------
‘e_nom’ VARCHAR (40),
‘type’ VARCHAR (40) NOT NULL,
INDEX idx_type (‘type’ (3)),
KEY idx_enom_type (‘e_nom’, ‘type’ (3))
)
PS: Il suffit d’utiliser les types d’attribut (CHAR, VARCHAR) pour préciser le
nombre des premiers caractères nécessaires pour l’indexation.
141