ESA - Namur Structure des bases de données Y. Mine

publicité
ESA - Namur
Structure des bases de données
1 Bac en Comptabilité
2010 – 2011
Y. Mine
Table des matières
Chapitre 1 Les bases de données relationnelles
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
Introduction
Pourquoi une base de données
Différentes formes
Le stockage des données (les tables)
L’algèbre relationnel
Le SGBD
Le matériel
Les différents modèles de bases de données
Les identificateurs
Notions de clé primaire
Chapitre 2 Le modèle entité/associations
2.1
2.2
2.3
2.4
Chapitre 3
Les entités et leurs attributs
Les associations
Les cardinalités
Traduction en mode relationnel
Les attributs
3.1 Les types d’attributs
3.2 Les entiers
3.3 Les flottants
3.4 Les chaines
3.5 Dates et heures
Chapitre 4
Les index
4.1 Avantages
4.2 Inconvénients
4.3 Index sur plusieurs champs
Exercices
Chapitre 1 : Les bases de données relationnelles
1.1 Introduction
Une base de données (bd) est un système d'organisation de l'information, conçu pour une
localisation et une mise à jour rapide et facile des données. Une bd organise l'information
qu'elle contient en tables, en champs (les colonnes) et en enregistrements (les lignes).
Chaque enregistrement correspond à un item stocké dans la base de données.
Réduire le plus possible la saisie d'informations redondantes est l'un des gros problèmes
auquel se sont heurtés les gestionnaires de données.
En pratique, on manipule souvent des données ayant la même structure (ex. : liste des
membres du personnel : pour chaque personne, on enregistre le nom, le prénom, le sexe, la
date de naissance, l'adresse, la fonction dans l'entreprise, etc.) Toutes ces données ont la
même structure et peuvent être facilement gérées par des moyens informatiques. Dans le
même ordre d'idée, l'encodage d'un achat doit automatiquement afficher dans le masque de
saisie toutes les coordonnées du fournisseur dès que l'on a encodé son nom ou son
identifiant unique.
une base de données est un ensemble structuré de données,
géré à l'aide de l'informatique
•
Une collection de données qui supporte les définitions de
– données de la base
• Structure intégrée
• Lien sémantiques
• Contraintes d’intégrité
• Contraintes de sécurité
– vues de la base
•
Une collection de données qui supporte les manipulations de
– recherche de données
• Interactive
• Logiquement et physiquement performante
– insertion, Mise à jour, Suppression de données
• Cohérente
• Partagée
• Fiable
En outre, il y a aussi les notions de :
exhaustivité : la base contient toutes les informations requises
unicité : la même information n'est présente qu'une seule fois
Exemples d'utilisation :
les fournisseurs
les clients
les contacts
les commandes
les factures …
1.2 Pourquoi une base de données ?
•
•
•
•
•
•
Intégration de données
– Moins de duplications
Partage de données
Fiabilité de données
– Transactions, reprises sur pannes, tolérance de pannes
Sécurité de données
Langages de requêtes
– SQL, QBE
Interfaces conviviales
– Web
1.3 Différentes formes :
•
•
•
BDs personnelles
– MsAccess etc.
– 10 KO – 100 KO
BDs professionnelles typiques
– 100 KO – 100 GO
BDs professionnelles très grandes
– Very Large Databases (VLDB) > 100 GO
1.4 Le stockage des données (les tables)
Dans une base de données, le stockage se fait de manière organisée. On distingue plusieurs
éléments constitutifs.
Il y a tout d'abord des tables. Elles portent un nom qui généralement correspondra aux
informations contenues. Pour un carnet de contacts, on aura une table appelée Contacts qui
contiendra toutes les personnes que l'on connaît.
Une table contient des enregistrements. En voyant la table comme un tableau, un
enregistrement correspond à une ligne. On pourra dire dans notre exemple, que les
différentes personnes constituent les enregistrements de la table Contacts.
Un enregistrement est fait de plusieurs champs. Ces derniers correspondent aux
informations contenues. Ce sont les enregistrements qui contiennent effectivement des
données. Ils correspondront aux colonnes du tableau. Un champ est de plus défini par un
type selon les données qui pourront y être enregistrées. Celui-ci indiquera par exemple que
le contenu du champ pourra être de un ou plusieurs caractères, un ou plusieurs chiffres, une
date, ...
Des données ayant une même structure peuvent être rangées dans un même tableau. Dans
le cas ci-dessous, la première colonne (appelée aussi attribut) contiendra les noms, la
seconde les prénoms, la troisième le sexe, la quatrième la date de naissance, etc. La
caractéristique d'un tel tableau est que toutes les données d'une même colonne sont du
même type. Dans une base de données, un tel tableau s'appelle une table.
Cette table, nommée "personnes" aura pour attributs (colonnes) : nom, prénom, sexe,
adresse, ville et code postal. Les lignes que contiendra cette table seront appelées
enregistrements ou tuples.
Nom
Prénom
Sexe Adresse
Durand Pierre
Chose
M
Stéphanie F
Trombe Jean
M
Ville
Code postal
16, rue de Fer Namur
5000
3, Bld d'Avroy Liège
4000
3, rue Neuve
Bruxelles 1000
…
Dans une table, les termes ligne et enregistrement sont synonymes. Il en est de même
pour les termes colonnes et champs. (row) et (column).
1.5 L'algèbre relationnel
L’algèbre relationnel regroupe toutes les opérations possibles sur les relations.
Projection : on ne sélectionne qu’un ou plusieurs attributs d’une relation (on ignore les
autres). Par exemple n’afficher que les colonnes nom et prénom de la table Personnes.
Personnes
nom
prénom
adresse
téléphone
Martin
Pierre
7 allée des vers 0258941236
Dupond
Jean
32 allé Poivrot
0526389152
Dupond
Marc
8 rue de l’octet
0123456789
SELECT nom, prénom
FROM Personnes
nom
prénom
Martin
Pierre
Dupond
Jean
Dupond
Marc
Jointure : on fabrique une nouvelle relation à partir de 2 ou plusieurs autres en prenant
comme pivot 1 ou plusieurs attributs. Par exemple, on concatène la table du carnet
d’adresse et celle des inscrits à la bibliothèque en fonction du nom de famille (c’est
typiquement du recoupement de fichiers).
Bibliothèque
Personnes
nom
prénom
adresse
nom
Dernierlivre
Martin
Pierre
7 allée des vers 0258941236
Dupond
Robinson
Dupond
Jean
32 allé Poivrot
Jospin
Faust
Martin
Misère
téléphone
0526389152
On joint les deux tables, grâce à
la colonne nom.
SELECT Personnes.prénom, dernierlivre
FROM Personnes, Bibliothèque
WHERE Personnes.nom = Bibliothèque.nom
prénom
Dernierlivre
Jean
Robinson
Pierre
Misère
Et on combine cette jointure à
une projection sur les attributs
nom et dernierlivre.
Attention à lever toute ambiguïté sur les noms d’attribut
dans le cas où deux tables
possèdent des colonnes de
même nom.
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. Par exemple n’afficher que les
lignes de la table Personnes qui vérifient la condition suivante : le nom est ‘Dupond’.
Personnes
nom
prénom
adresse
téléphone
Martin
Pierre
7 allée des vers 0258941236
Dupond
Jean
32 allé Poivrot
0526389152
Dupond
Marc
8 rue de l’octet
0123456789
SELECT *
FROM Personnes
WHERE nom = ‘’Dupond’’
On ne sélectionne que les
tuples dont l’attribut nom
est égale à ‘Dupond’.
nom
prénom
adresse
téléphone
Dupond
Jean
32 allé Poivrot
0526389152
Dupond
Marc
8 rue de l’octet
0123456789
Cette algèbre est facilement possible avec les commandes de MySQL (SELECT… FROM…
WHERE…).
1.6 Le logiciel (SGBD)
•
Système de Gestion de Base de Données (SGBD)
– Système logiciel gérant une BD
• Peut avoir des composants matériels
–
–
–
Mono ou multiposte
En général, peut gérer plusieurs BDs
Peut aussi accéder aux BDs d’autres SGBDs
Le logiciel qui gère une base de données s'appelle un système de gestion de base de
données. (SGBD - DBMS pour Data Base Management System).
Tous les SGBD présentent à peu près les mêmes fonctionnalités. Ils se distinguent par leur
coût, par le volume de données qu'ils sont capables de gérer, par le nombre d'utilisateurs qui
peuvent interroger la base simultanément, par la facilité avec laquelle ils s'interfacent avec
d'autres logiciels, etc.
Une BDD peut servir à une seule personne, ou être à la disposition de dizaines de milliers
d'agents (systèmes de réservation des billets d'avion).
Un SGBD est principalement constitué d'un moteur et d'une interface graphique. Le
moteur assure les fonctions essentielles : saisir les données, les stocker, les manipuler, etc.
L'interface graphique permet à l'utilisateur de communiquer avec le logiciel.
Pour dialoguer avec les SGBD qui ne sont pas équipés d'une interface graphique, il faut
utiliser le langage SQL (Structured Query Language), et introduire les instructions à l'aide
d'un éditeur de lignes.
Langage normalisé de manipulation des bases de données, SQL est utilisable avec
pratiquement tous les SGBD du marché. Cependant, chaque éditeur ayant développé son
propre "dialecte" il faut pouvoir disposer d'un "dictionnaire" pour transporter une BDD d'un
SGBD à l'autre. Ce "dictionnaire" a été développé par Microsoft sous le nom ODBC (Open
Data Base Connectivity).
1.7 Le matériel (serveur de BDD)
Dépend du volume des données stockées dans la base et du nombre maximum d'utilisateurs
simultanés.
Lorsque le nombre d'enregistrements par table n'excède pas le million, et que le nombre
d'utilisateurs varie de une à quelques personnes, un pc actuel de bonnes performances, un
logiciel système pour poste de travail, et un SGBD "bureautique" suffisent. Exemple :
Microsoft Access 2007, installé sur un PC récent, doté de 2 Go de mémoire vive et
fonctionnant sous Windows XP ou Seven.
Si ces chiffres sont dépassés, il faut utiliser un serveur de BDD, dont les accès aux disques
sont nettement plus rapides. Le système client doit être remplacé par un système serveur
(multi-utilisateurs), et le SGBD bureautique par un SGBD prévu pour les grosses BDD multiclients.
1.8 Les différents modèles de bases de données
Les bases de données du modèle "relationnel"* sont les plus répandues, car elles
conviennent bien à la majorité des besoins des entreprises. Le SGBD qui gère une BDD
relationnelle est appelé "SGBD relationnel" (SGBDR).
* Base de données qui contient des tables et autres sujets, et dont l'information est
organisée par différentes relations entre tables.
D'autres modèles de bases de données ont été proposés : hiérarchique, en réseau, orienté
objet, relationnel objet. Aucun d'entre eux n'a pu détrôner le modèle relationnel (sauf le
relationnel objet - Oracle).
Malgré sa généralité, le modèle relationnel ne convient pas à toutes les BDD rencontrées en
pratique. Il existe donc des SGBD spécialisés. Les deux exemples les plus connus
concernent la gestion des BDD bibliographiques (ou documentaires), et celle des BDD
géographiques gérées à l'aide d'un SIG (Système d'Information Géographique).
1.9 Les identificateurs
Les noms des bases, relations, attributs, index et alias sont constitués de caractères
alphanumériques et des caractères _ et $.
Un nom comporte au maximum 64 caractères
Comme les bases de données et les relations sont codées directement dans le système de
fichiers, la sensibilité à la casse de MySQL dépend de celle du système d’exploitation sur
lequel il repose. Sous Windows, la casse n’a pas d’importance ; alors que sous Unix, elle en
a.
Le point . est un caractère réservé utilisé comme séparateur entre le nom d’une base et celui
d’une relation, entre le nom d’une relation et celui d’un attribut.
Exemple :
SELECT base1.table25.attribut5
FROM base1.table25
1.10 Notions de clé primaire
L’option PRIMARY KEY qui regroupe les contraintes NOT NULL (ne peut pas être vide) et
UNIQUE (pas de doublon) va permettre d'identifier tous les enregistrements d'une table.
nom
prénom
Dupond
Marc
Dupont
Pierre
Martin
Marc
Martin
Pierre
Martin
Marc
enregistrement interdit car le
couple (‘Martin’, ‘Marc’) est un
doublon du couple (nom,‘prénom’)
Chapitre 2 : Le modèle entité / associations
Le modèle Entité – Association – Cardinalité
Ce modèle compte 4 concepts principaux : entité, attribut, association et cardinalité.
Entité = classe générique d'individus ou d'objets ayant les mêmes caractéristiques.
Ex: les entités "clients", "livres" ou "fournisseurs", dans une base de données de
librairie.
Association = classe générique de liens reconnus ou possibles entre individus ou
objets. Ex: l'association "achète" lie les clients et les livres d'une librairie.
Attribut = propriété distinctive d'une entité ou d'une association. Ex: le nom d'un client
est un attribut de l'entité "clients".
Cardinalité = caractérisation de l'implication de l'association (p.ex. l'expression (1,N),
où 1 représente le minimum et N le maximum d'occurrences dans l'association), qui
permet de dénombrer les éléments de l'entité d'arrivée en relation avec un élément
de l'entité de départ
Exemple d'entité : une base de livres qui sont caractérisés par un titre, un auteur principal,
un ISBN, un éditeur, une année de parution et un nombre de pages. Ces différents éléments,
(qui sont les attributs de l'entité) sont communs à tous les livres. Pour chaque livre, leur
contenu est unique et ne changera pas.
2.1 Les entités et leurs attributs
Les entités seront représentées de la manière suivante :
Voici un système composé de 3 entités, chacune possède ses propres attributs
2.2 Les associations
Ces entités sont liées par des associations à qui on peut donner un nom, afin de clarifier
leur rôle : acheter, livrer, … et qui reflètent les interactions présentes entre ces entités.
2.3 Les cardinalités
Une cardinalité, dans une association, exprime le nombre de participations possibles d'une
occurrence de chaque entité à l'association. Ce nombre étant variable, on note la cardinalité
minimum et la cardinalité maximum. Comme il y a deux entités (au moins) associées, la
cardinalité est précisée pour chaque entité.
Il existe différents types de cardinalités:
modèle "1 - 1":
à une occurrence de l'entité E1 peut correspondre au maximum une occurrence de
l'entité E2.
Ex: l'association "vente" liant les entités "livres" et "fournisseurs" : un livre ne peut
être vendu que par un seul fournisseur à la fois.
modèle "1 - n":
à une occurrence de l'entité E1 peuvent correspondre de une à plusieurs occurrences
de l'entité E2,
Ex: l'association "posséder" liant les entités "propriétaires" et "voitures" : un
propriétaires peut posséder une ou plusieurs voiture.
modèle "n - n":
à plusieurs occurrences de l'entité E1 peuvent correspondre plusieurs occurrences
de l'entité E2.
Ex: l'association "achète" liant les entités "clients" et "produits" d'un supermarché
modèles "0 - 1", "0 - N"
Exercice 01 : établir des modèles Entité – Association – Cardinalité
2.4 Traduction en mode relationnel
Après avoir établi le modèle entité/association, il faut traduire le schéma en mode relationnel,
c'est-à-dire dans un format réellement exploitable par la base de données qui va être créée.
Cette traduction peut s'opérer selon 2 règles différentes, en fonction de la cardinalité
présente sur l'association.
Chaque association va être examinée afin de voir si on y trouve des cardinalités (1-1) ou (01)
1ère règle : il n'y a PAS de cardinalité (1-1) ou (0-1) :
L'association disparaît
On crée une relation (une table) "achats"
On crée une contrainte d'intégrité référentielle * entre clé primaire et secondaire
* contraintes d'intégrité référentielle
Une contrainte d'intégrité est une clause permettant de contraindre la
modification de tables, faite par l'intermédiaire de requêtes d'utilisateurs, afin
que les données saisies dans la base soient conformes aux données attendues.
Ces contraintes doivent être exprimées dès la création de la table grâce aux
mots clés suivants:
*
*
*
*
*
CONSTRAINT
DEFAULT
NOT NULL
UNIQUE
CHECK
DEFAULT Le langage SQL permet de définir une valeur par défaut lorsqu'un champ de la
base n'est pas renseigné grâce à la clause DEFAULT. Cela permet notamment de faciliter
la création de tables, ainsi que de garantir qu'un champ ne sera pas vide.
La clause DEFAULT doit être suivie par la valeur à affecter. Cette valeur peut être un des
types suivants:
*
*
*
*
*
*
*
constante
constante
le mot clé
le mot clé
le mot clé
le mot clé
le mot clé
numérique
alphanumérique (chaîne de caractères)
USER (nom de l'utilisateur)
NULL
CURRENT_DATE (date de saisie)
CURRENT_TIME (heure de saisie)
CURRENT_TIMESTAMP (date et heure de saisie)
NOT NULL vérifie que le contenu du champ n'est pas nul
Unique Une table peut posséder une ou plusieurs contraintes d'unicité, chacune étant
composée d'une ou plusieurs colonnes de la table.
La clause UNIQUE permet de vérifier que la valeur saisie pour un champ n'existe pas déjà
dans la table. Cela permet de garantir que toutes les valeurs d'une colonne d'une table
seront différentes.
CHECK définit une condition que chaque rang doit satisfaire
Les index sont utilisés pour trouver des lignes de résultat avec une valeur spécifique,
très rapidement. Sans index, MySQL doit lire successivement toutes les lignes, et à
chaque fois, faire les comparaisons nécessaires pour extraire un résultat pertinent. Plus
la table est grosse, plus c'est long. Si la table dispose d'un index pour les colonnes
utilisées, MySQL peut alors trouver rapidement les positions des lignes dans le fichier de
données, sans avoir à fouiller toute la table. Si une table à 1000 lignes, l'opération sera
alors 100 fois plus rapide qu'une lecture séquentielle. Notez que si vous devez lire la
presque totalité des 1000 lignes, la lecture séquentielle se révélera alors plus rapide,
malgré tout.
Les index de MySQL sopnt PRIMARY , UNIQUE et INDEX.
En MySQL, il est possible de définir des clés, c'est-à-dire spécifier la (ou les) colonne(s)
dont la connaissance permet de désigner précisément un et un seul tuple (ligne).
Primary Key (clé primaire). un ou plusieurs champs qui définissent de manière unique
un enregistrement.. Elle peut être composée d'une ou plusieurs colonnes (champs) de la
table. Toutes les lignes (enregistrements) de la table doivent satisfaire aux conditions
suivantes :
Toutes
les
colonnes
des
clés
primaires
doivent
ne
pas
Toutes les lignes doivent posséder une valeur de clé primaire différente.
Une et une seule clé primaire par table
être
nulles.
Foreign key (clé étrangère ou secondaire) Les systèmes de base de données utilisés
sont le plus souvent de type relationnel. Par ce terme est exprimé le fait que des
relations entre les tables vont exister. On aura alors la présence de clés étrangères.
Une clé étrangère est une clé primaire pour une table qui est stockée dans une autre
table afin d'établir un lien entre les deux. Une table dépendante peut disposer d'une ou
plusieurs clés étrangères, chacune étant constituée d'une ou plusieurs colonnes de la
table. Chaque clé étrangère fait référence à une (ou plusieurs) colonne(s)
correspondante(s) d'une clé primaire dans la table parent. Pour chaque clé étrangère,
toutes les lignes de la table dépendante doivent posséder une valeur correspondante
dans la table parent ou avoir une ou plusieurs colonnes de la clé étrangère nulles.
N'est supporté qu'à partir de MySQL 5.0
Trigger (gâchette): garantie de l'intégrité référentielle
Les clés étrangères permettent de définir les colonnes d'une table garantissant la validité
d'une autre table. Ainsi, il existe des éléments (appelés triggers, ou en français gâchettes
ou déclencheurs) permettant de garantir l'ensemble de ces contraintes que l'on désigne
par le terme d'intégrité référentielle, c'est-à-dire notamment de s'assurer qu'un tuple
utilisé à partir d'une autre table existe réellement.
Ces triggers sont ON DELETE et ON UPDATE:
* ON DELETE est suivi d'arguments entre accolades permettant de spécifier l'action à
réaliser en cas d'effacement d'une ligne de la table faisant partie de la clé étrangère:
o CASCADE indique la suppression en cascade des lignes de la table étrangère
dont les clés étrangères correspondent aux clés primaires des lignes effacées
o RESTRICT indique une erreur en cas d'effacement d'une valeur correspondant à
la clé
o SET NULL place la valeur NULL dans la ligne de la table étrangère en cas
d'effacement d'une valeur correspondant à la clé
o SET DEFAULT place la valeur par défaut (qui suit ce paramètre) dans la ligne de
la table étrangère en cas d'effacement d'une valeur correspondant à la clé
* ON UPDATE est suivi d'arguments entre accolades permettant de spécifier l'action à
réaliser en cas de modification d'une ligne de la table faisant partie de la clé étrangère:
o CASCADE indique la modification en cascade des lignes de la table étrangères
dont les clé primaires correspondent aux clés étrangères des lignes modifiées
o RESTRICT indique une erreur en cas de modification d'une valeur correspondant
à la clé
o SET NULL place la valeur NULL dans la ligne de la table étrangère en cas de
modification d'une valeur correspondant à la clé
o SET DEFAULT place la valeur par défaut (qui suit ce paramètre) dans la ligne de
la table étrangère en cas de modification d'une valeur correspondant à la clé
2ème règle : il y a une ou des cardinalités (1-1) ou (0-1) :
L'association disparaît
On crée une contrainte d'intégrité référentielle entre clé primaire et secondaire
One ne crée PAS de relation (table) supplémentaire
Dans notre exemple :
La relation clients-livres appartenant à la 1ère règle :
on crée une clé primaire dans la table "Clients" via un n° unique nommé IDclient
on crée une nouvelle table nommée "Achats"
on crée une clé primaire dans la table "Achats" via un attribut à n° unique nommé
N°Achat
on crée une clé primaire dans la table "Livres" sur l'attribut ISBN car il est unique
on crée une clé secondaire IDclient dans la table "Achats" liée à la clé primaire
IDclient de la table "Clients"
on crée une clé secondaire ISBN dans la table "Achats" liée à la clé primaire ISBN de
la table "Livres"
La relation fournisseurs-livres appartenant à la 2ère règle :
on crée une clé primaire dans la table "Fournisseurs" sur l'attribut TVA car il est
unique
on crée une clé secondaire TVA_fourn dans la table "Livres" liée à la clé primaire
TVA_fourn de la table "Fournisseurs"
Les clés secondaires se placent en principe du côté de la cardinalité (1-1). Attention toutefois
aux logiciels de design de DB qui placent les cardinalités "à l'envers".
Une fois le schéma relationnel complété et validé, on peut commencer à créer la db.
Chapitre 3 : Les attributs
3.1 Les types d’attributs
Les types des attributs peuvent être de types différents :
•
Nombre entier (quantité commandée, âge)
•
Nombre à virgule (prix)
•
Chaîne de caractères (nom, adresse)
•
Date et heure (date de naissance, heure de parution)
•
Énumération (une couleur parmi une liste prédéfinie)
•
Ensemble (une ou des monnaies parmi une liste prédéfinie)
Il s’agit de choisir le plus adapté.
Ces types requièrent une plus ou moins grande quantité de données à stocker. Par exemple,
ne pas choisir un LONGTEXT pour stocker un prénom mais plutôt un VACHAR(40).
3.2 Les entiers
nom
borne inférieure
borne supérieure
TINYINT
-128
127
TINYINT UNSIGNED 0
255
SMALLINT
-32768
32767
SMALLINT
UNSIGNED
MEDIUMINT
0
65535
-8388608
8388607
MEDIUMINT
UNSIGNED
INT*
0
16777215
-2147483648
2147483647
INT* UNSIGNED
0
4294967295
BIGINT
9223372036854775807
9223372036854775808
BIGINT UNSIGNED 0
18446744073709551615
(*) : INTEGER est un synonyme de INT
UNSIGNED permet d’avoir un type non signé
ZEROFILL : remplissage des zéros non significatifs
3.3 Les flottants
nom
domaine négatif :
borne inférieure
borne supérieure
Domaine positif :
borne inférieure
borne supérieure
FLOAT
-3.402823466E+38
-1.175494351E-38
1.175494351E-38
3.402823466E+38
DOUBLE
ou REAL
-1.7976931348623157E+308 2.2250738585072014E-308
-2.2250738585072014E-308 1.7976931348623157E+308
3.4 Les chaînes
nom
longueur
CHAR(M)
VARCHAR(M)
BINARY
TINYTEXT
Chaîne de taille fixée à M, où 1<M<255,
complétée avec des espaces si nécessaire.
Idem, mais insensible à la casse lors des tris et
recherches.
Chaîne de taille variable, de taille maximum M, où
1<M<255, complété avec des espaces si
nécessaire.
Idem, mais insensible à la casse lors des tris et
recherches.
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)
ou NUMERIC
Simule un nombre flottant de D chiffres après la
virgule et de M chiffres au maximum. Chaque
chiffre ainsi que la virgule et le signe moins (pas
le plus) occupe un caractère.
CHAR(M) BINARY
VARCHAR(M)
Les types TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT peuvent être judicieusement
remplacés respectivement par TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB.
Ils ne diffèrent que par la sensibilité à la casse qui caractérise la famille des BLOB. Alors que
la famille des TEXT sont insensibles à la casse lors des tris et recherches.
Les BLOB peuvent être utilisés pour stocker des données binaires.
Les VARCHAR, TEXT et BLOB sont de taille variable. Alors que les CHAR et DECIMAL sont
de taille fixe.
3.5 Dates et heures
nom
description
DATE
Date au format anglophone AAAA-MM-JJ.
DATETIME
Date et heure au format anglophone AAAA-MM-JJ
HH:MM:SS.
TIMESTAMP
Affiche la date et l’heure sans séparateur :
AAAAMMJJHHMMSS.
TIMESTAMP(M) Idem mais M vaut un entier pair entre 2 et 14. Affiche les M
premiers caractères de TIMESTAMP.
TIME
Heure au format HH:MM:SS.
YEAR
Année au format AAAA.
nom
description
TIMESTAMP(2) AA
TIMESTAMP(4) AAMM
TIMESTAMP(6) AAMMJJ
TIMESTAMP(8) AAAAMMJJ
TIMESTAMP(10) AAMMJJHHMM
TIMESTAMP(12) AAMMJJHHMMSS
TIMESTAMP(14) AAAAMMJJHHMMSS
Les formats DATETIME, DATE et TIMESTAMP
DATETIME est utilisé pour indiquer la date et l'heure.
MySQL affiche les valeurs DATETIME sous la forme 'YYYY-MM-DD HH:MM:SS'. Les limites
en sont : '1000-01-01 00:00:00' à '9999-12-31 23:59:59'.
DATE est utilisé pour indiquer la date, sans plus. MySQL affiche les valeurs DATE sous la
forme 'YYYY-MM-DD' format. Les limites en sont '1000-01-01' à '9999-12-31'.
TIMESTAMP possède diverses propriétés, liées à la version de MySQL et au mode SQL
utilisé par le serveur.
Des valeurs hors limites dans les champs DATETIME, DATE ou TIMESTAMP seraient
converties en ``zero'' ('0000-00-00 00:00:00', '0000-00-00', or 00000000000000).
Chapitre 4 : Les index
Lors de la recherche d’informations dans une relation, MySQL parcours la table
correspondante dans n’importe quel ordre. S’il y a un grand nombre de lignes, cette
recherche est très longue.
Pour y remédier, une optimisation possible et recommandée, est d’utiliser des index.
La création d’un index associé à un attribut ou à un ensemble ordonné d’attributs va créer
une liste ordonnée des valeurs de ces attributs et de l’adresse de la ligne associée. C’est sur
les valeurs de cette liste que se feront les recherches et les tris. Les algorithmes de
recherche et de tri sur des ensembles ordonnés sont beaucoup plus rapides.
Un index offre toutefois l'inconvénient de ralentir les mises à jour (insertion, suppression,
modification de clé).
On choisira de créer des index sur les attributs qui seront les plus sollicités par les
recherches ou utilisés comme critère de jointure. Par contre, on épargnera les attributs qui
contiennent peu de valeurs différentes les unes des autres et ceux dont les valeurs sont très
fréquemment modifiées.
Un index peut porter sur 15 colonnes maximum.
Une table peut posséder au maximum 16 index
Un index peut avoir une taille maximale de 256 octets et ne doit porter que sur des attributs
NOT NULL.
Il faut suffixer l’attribut (CHAR, VARCHAR) pour ne prendre que les M premiers caractères
pour l’indexation
N° Titre
Auteur Éditeur Année ISBN
etc.
1 Mon jardin J. Machin Eyrolles 1998 5-1234-4321-8 ...
2 Access
A. Chose Dunod 2002 3-6789-9876-2 ...
3 Les écoles S. Truc Lattès 2001 4-1985-5891-3 ...
4 etc.
Un index est représenté par une table à une seule colonne. Dans le premier index (index sur
le titre), le premier titre par ordre alphabétique correspond au livre n° 2 (Access), suivi du
livre n° 3 (Les écoles) et du livre n° 1 (Mon jardin). Les autres index s'interprètent de la
même façon.
2
3
1
..
Index titre
2
1
3
..
Index auteur
2
1
3
..
Index éditeur
1
3
2
..
Index année
2
3
1
..
Index ISBN
4.1 Avantages :
accélérer les recherches d'information, car l'index est une représentation de la table,
triée sur un champ donné. On peut donc lui appliquer les méthodes de recherche
rapide sur un ensemble ordonné (c'est le SGBD qui se charge de l'opération,
transparente pour l'opérateur) ;
vu sa taille très inférieure à celle de la table : on peut le remettre à jour en temps réel
à chaque modification de cette dernière ;
empêcher la redondance de l'information.
4.2 Inconvénients :
la création et la mise à jour d'un index devant être mis à jour immédiatement
augmente la charge de travail, et par conséquent freine le système, surtout sur des
bases de grande taille.
un index occupe de la place sur le disque
4.3 L'index sur plusieurs champs
Imaginons que nous ayons séparé le nom et le prénom dans le masque de saisie. Un index
sur les deux champs nom et prénom correspond en fait à l'index créé sur un champ unique
dans lequel seront concaténés le nom et le prénom.
On appelle "doublon" une information qui apparaît au moins deux fois dans une table (erreur
de saisie ou manipulation de l'information). La notion de doublons s'applique à une colonne
donnée, ou à plusieurs colonnes, ou à la totalité des colonnes d'une même table. Dans ce
dernier cas, nous avons affaire à deux enregistrements (ou plus) identiques.
A
1
2
3
1
B
aa
bb
cc
dd
C
$
%
+
-
Doublon sur
1 colonne
A
1
2
3
1
B
aa
bb
cc
aa
C
$
%
+
-
Doublon sur
2 colonnes
A
1
2
3
1
B
aa
bb
cc
aa
C
$
%
+
$
Enregistrement
dupliqué
Lorsque nous introduisons de l'information dans une table pourvue d'un index, le SGBD met
ce dernier à jour en temps réel. Au cours de cette opération, il peut détecter facilement si
cette nouvelle information constitue un doublon sur les champs concernés. Il est donc aisé
de doter le SGBD d'une fonction permettant, si on le désire, d'empêcher la validation de la
saisie d'un enregistrement constituant un doublon.
Chapitre 5 : Détermination du contenu des bases et des tables
Le schéma heuristique, vision globale et synthétique
Au début des années 70, Tony Buzan, à la suite de ses recherches sur l'apprentissage et le
cerveau humain, a donné naissance à une méthode d'organisation des idées, sous forme de
dessin ou d'arborescence, d'où découle le concept de MindMap.
Le Mind Map (ou schéma heuristique) apparaît fort utile pour aider à produire une image
visuelle de ce que l'on sait ou pour tracer un plan d'ensemble de ce que l'on a appris ou
retenu sur un sujet.
Par le pouvoir d'association, de regroupement et de visualisation des idées d'un schéma
heuristique, il devient facile de constituer un éventail d’idées et d'obtenir une image globale
de notre pensée sur un sujet. De plus, les structures schématiques obtenues améliorent les
capacités d'organisation et de compréhension du système.
Heuristique signifie apprentissage par la prise en compte
des activités antérieures
Pour ces différentes raisons, son utilisation pour la structuration des relations au sein d’une
base de données, surtout si elle est complexe, apparaît judicieuse.
Carte heuristique
Une carte heuristique (mind map), également appelée carte des idées, carte conceptuelle
ou carte mentale, est un diagramme qui représente les connexions sémantiques (signification des
mots composés, rapports de sens entre les mots) entre différentes idées, les liens hiérarchiques
entre différents concepts intellectuels. À la base, il s'agit d'une représentation principalement
arborescente des données, basée sur les mêmes principes que l'organigramme (l'un étant en fait
une variante de l'autre et réciproquement).
Une carte heuristique met en œuvre différentes composantes améliorant son exploitation :
utilisation de formes, de couleurs et de graphismes (illustrations, symboles) qui permettent
théoriquement une compréhension aisée par un fonctionnement optimal et conjoint des
hémisphères cérébraux.
Les Mind Maps (schémas heuristiques) servent à représenter graphiquement le schéma de
la pensée d'une personne – ou d’un groupe de personnes - et le réseau d'association de ses
idées. Il faut cependant respecter un minimum de règles de manière à faciliter la création du
schéma heuristique, l'association des mots et des images, l'organisation des idées et la
présentation du contenu.
* Placer le support papier à l'horizontale, dessiner l'image principale évocatrice du sujet
au centre de la page
* Noter les idées à partir d'un mot qui exprime concrètement l'essentiel
* Écrire sous forme de Mots-Clés pour favoriser les associations
* Utiliser des images pour augmenter le pouvoir d'expression, d'association et de
mémorisation
* Générer des ramifications à partir de l'image principale pour poser les images ou les
mots associés
* Inscrire un mot unique par branche pour plus de fluidité (plus grand nombre
d'associations)
* Tracer les lignes de même longueur que les mots pour un meilleur rapprochement entre
les mots, faciliter l'association et faire un gain d'espace
* Tracer les branches centrales (lignes) plus épaisses et les branches périphériques
(lignes) plus fines
* Appliquer la mise en exergue du contenu en donnant l'illusion du volume, du mouvement
et de la profondeur (Variation de la taille des caractères, volume des ramifications
sinueuses ou grosseur des images)
* Ajouter des signes ou symboles pour créer l'illusion du mouvement
* Utiliser des codes de couleurs ou des formes pour désigner les personnes, tâches,
projets, éléments ou procédés
Exercices et solutions
Exercice 01 : établir des modèles Entité – Association – Cardinalité
A/ Soient un ensemble de personnes et un ensemble de voitures. Une personne est
caractérisée par un numéro qui l'identifie et par les voitures dont elle est l'unique propriétaire.
Une voiture est caractérisée par un numéro de plaque, une marque et une date de mise en
circulation.
--------------------------------------------------------------------------------------------------------------------------B/ Les différents départements d'une entreprise occupent des employés. Un employé est
décrit par son numéro matricule (unique dans l'entreprise), son nom, son grade et le
département dans lequel il travaille. Un département est décrit par son numéro dans
l'entreprise et par son directeur qui doit être un de ses employés.
--------------------------------------------------------------------------------------------------------------------------C/ Un exploitant possède plusieurs salles de cinéma. Un film fait généralement l'objet de
plusieurs séances par jour. Décrire un schéma qui permette à l'exploitant d'obtenir des
renseignements sur le chiffre d'affaire d'un film, d'une salle, d'une séance où d'un jour
déterminé (un seul film par salle à un même endroit).
--------------------------------------------------------------------------------------------------------------------------D/ Définir un schéma décrivant une nomenclature de type de pièces. Chaque type de pièce
est caractérisé par son numéro, les types de pièces qui la composent et ceux dont il est le
composant.
--------------------------------------------------------------------------------------------------------------------------E/ Définir un schéma décrivant les liens familiaux d'une population de personnes identifiables
par un numéro.
--------------------------------------------------------------------------------------------------------------------------F/ Gestion de la production et des stocks
Une société a décidé de concevoir une base de données pour l'assister dans la gestion de
sa production et des ses stocks.
Une unité de fabrication est identifiée par un numéro est caractérisée par un nom, une
localisation et une capacité globale de production. Elle peut fabriquer plusieurs produits.
A tout moment, on connaît, pour une unité de fabrication et pour un produit que cette unité
fabrique, la quantité en cours de fabrication et les capacités minimum et maximum de
fabrication.
Un dépôt est également identifié par un numéro et possède un nom, une localisation et une
capacité globale de stockage. Un dépôt peut stocker plusieurs produits. A chaque instant, on
connaît, pour un dépôt et pour un produit qui y est stocké, la quantité due.
Un produit peut-être fabriqué par plusieurs unités de fabrication et stocké dans plusieurs
dépôts. A chaque produit est associé un numéro qui l'identifie. Un produit possède
également un nom, une unité de mesure et un prix. Une quantité unitaire de produit fini ou
semi-fini est toujours fabriquée à partir de quantités déterminées d'autres produits semi-finis
et/ou de matières premières qu'une unité de fabrication commande à ce dépôt.
Une commande d'une unité de fabrication est adressée à un seul dépôt, est identifiée par un
numéro, possède une date et concerne un ou plusieurs produits dont elle spécifie la quantité
commandée.
--------------------------------------------------------------------------------------------------------------------------G/ Gestion d'employés, de locaux, de départements et de projets
Une société a décidé de construire une base de données regroupant ses départements, ses
bureaux (locaux), ses projets et ses employés.
Un département est identifié par un numéro (unique dans la société). Il est dirigé par un chef
de département - qui est un employé de ce département - et dispose d'un certain budget. Un
département fait travailler des employés sur des projets dont il est responsable, et dispose
d'un certains nombre de locaux.
Un bureau, identifié par un numéro (unique dans la société) et caractérisé par une surface
utile (exprimée en m2 , est mis à disposition d'un département. Un ou plusieurs postes
téléphoniques sont raccordés dans un bureau. Un poste téléphonique, placés dans un
bureau, possède un seul numéro d'appel.
Un projet est géré par un département et est identifié par un numéro (unique dans un
département). Chaque projet possède un budget de fonctionnement propre.
Un employé est identifié par un numéro matricule (unique dans la société). Un employé
travaille pour un seul département; il ne peut dès lors être le chef que d'un seul département.
Un employé est affecté à un projet, dispose d'un bureau et peut être accessible par un seul
numéro d'appel. Par contre plusieurs employés d'un même bureau peuvent être appelés par
le même numéro de téléphone.
La société a établi un inventaire des fonctions (concepteur, analyste, programmeur, ...)
identifiées par un numéro et caractérisées par un salaire plancher et un salaire plafond. La
société souhaite mémoriser l'historique des fonctions de chaque employé avec la date
d'entrée en fonction et le salaire initial attribué.
--------------------------------------------------------------------------------------------------------------------------H/ Octroi d'un prêt dans un organisme bancaire.
Les activités liées à l'octroi d'un prêt d'un prêt dans la banque X sont décrites dans ce qui
suit.
Le client se rend à une agence de la banque X et soumet sa demande de prêt à un employé
en lui indiquant le montant qu'il souhaite emprunter, la durée, le motif du prêt ainsi que des
renseignements généraux tels que son nom, son adresse, et son revenu mensuel.
L'employé de l'agence constitue un dossier avec ses différents renseignements et les
transmet au service crédit du siège de la banque.
Un préposé de celui-ci parcourt le dossier et décide sur base du revenu mensuel et du motif
du prêt de refuser la demande ou de l'étudier de façon plus approfondie.
Dans ce cas, il émet une demande de renseignement auprès du service d'informations.
Ces renseignements portent d'une part sur le comportement du client vis-à-vis d'éventuels
autres prêts qu'il aurait contracté antérieurement et d'autre part sur l'identité du client, son
revenu mensuel, ...
Dans l'attente de ces informations, le préposé établit un premier plan de financement: le taux
à appliquer, le montant et la durée du prêt puis, quand il a reçu le réponse du service
d'informations, il peut formuler une ou plusieurs propositions à présenter au client ou refuser
la demande de prêt. Les propositions sont adjointes à la demande qui retourne à l'agence.
A la réception du dossier, le gérant de l'agence examine les propositions avec le client : soit
le client accepte une des propositions, soit il n'en accepte aucune, il en accepte une sous
réserve de modifications (rectification de la durée, diminution du montant emprunté, ...).
Dans ce dernier cas, le gérant établit, avec le client, une nouvelle proposition qui tient
compte des changements demandés.
Une proposition de prêt acceptée par le client doit encore être approuvée par la direction.
Celle-ci 'occupe des dossiers de prêt en fin de semaine ou lorsqu'elle en a au moins vingt en
attente. Ensuite les dossiers approuvés retournent en agence où ils donnent lieu à
l'établissement du contrat de prêt.
On connaît le nom, l'adresse, le salaire mensuel d'un client et les prêts qu'il a déjà
éventuellement contractés auprès de la banque X ou d'une autre institution financière ainsi
que pour chacun de ceux-ci, la façon dont il rembourse (régulier, tardif, mauvais).
On connaît également les demandes de prêt qu'un client a déjà éventuellement émises
auprès de la banque X et, si elles ont été acceptées, les différentes propositions auxquelles
elles ont donnés lieu.
Une demande de prêt comporte les renseignements suivants ; montant demandé, durée
demandée, date d'introduction de la demande e motif du prêt.
Pour une institution financière, on connaît son nom, son type (banque, organisme privé,
organisme public) et les différents prêt contractés par les clients de la banque X auprès de
cette institution.
Pour un prêt, on connaît son numéro, son montant, sa durée, la personne qui l'a contracté,
l'organisme auprès duquel il a été contracté, le type d'échéance,(mensuelle, trimestrielle,
annuelle), les date de début et de fin de remboursement, le taux d'intérêt appliqué à
l'emprunt et le montant à rembourser (montant prêté + intérêts).
Une proposition de prêt est caractérisée par sa date, la durée et le montant du prêt proposé,
le taux d'intérêt. Si elle a effectivement donné lieu à un prêt, on connaît le prêt
correspondant.
On enregistre quotidiennement le taux d'escompte qui permet à la banque X de calculer le
taux d'intérêt applicable. En effet, le taux d'intérêt est déterminé par en fonction du motif, du
montant, de la durée du prêt et du taux d'escompte.
Les valeurs des différentes informations relatives à un prêt sont nécessairement identiques
aux informations correspondantes de la proposition qui lui a donné lieu (si elle existe).
Exercice 02 : traduire en mode relationnel
G/ Gestion d'employés, de locaux, de départements et de projets
Exercice 04 : création DB #1
1/ Existant
Une organisation non gouvernementale d’aide humanitaire aux pays du tiers-monde effectue
des interventions d’aide à l’éducation (enseignements professionnels, alphabétisation,
puériculture,...), au développement (agriculture, irrigation,...), à la prévention sanitaire
(vaccinations, mise en service de dispensaires, ...) dans divers pays.
Ses interventions sont programmées pour une durée limitée (de quelques mois à deux ans).
Chaque intervention possède un responsable sur place nommé en principe pour toute la
durée de l’intervention. Pour chaque intervention, sont également définis un site principal
(base d’intervention) et des sites secondaires, lieux géographiques dans lesquels
l’organisation est présente au titre de cette intervention.
Des intervenants bénévoles ou rémunérés sont affectés aux différentes interventions pour
des missions de quelques jours ou de quelques mois.
Le siège européen de l’organisation souhaite rassembler dans une base de données les
informations relatives aux interventions, aux responsables, aux sites d’intervention et aux
intervenants (actuellement en mission ou disponibles pour une nouvelle affectation). Il pense
ainsi pouvoir accéder facilement à des informations telles que :
- la liste des interventions, avec les coordonnées de leurs responsables ;
- la liste des intervenants possibles ;
- la liste des personnes intervenant dans une mission donnée à une date donnée ;
- des pages d’information avec, pour chaque mission, la liste des personnes qui y
interviennent ou y sont intervenus, etc.
2/ analyse et mise en place du modèle Entité - Attributs - Association – Cardinalité
3/ traduction en mode relationnel
4/ création des tables
Téléchargement