Académique Documents
Professionnel Documents
Culture Documents
Appliquées de Kenitra
Université Ibn Tofail
Habiba Chaoui
Filière Génie Informatique
Définitions
Système d'information:
2
Définitions
3
Système d'information de
l'entreprise
l'ensemble des éléments qui orientent la
construction d'un système d'information d'entreprise
Les phénomènes, internes ou externes, que
l'entreprise veut représenter
La nature de l'information que l'entreprise s'attend à
obtenir
Le mode par lequel l'entreprise veut représenter les
phénomènes
lors de la reconnaissance de l'événement
les détails de l'entreposage
la précision avec laquelle nous suivons l'évolution du temps
4
Système d'information de
l'entreprise
Les éléments qui composent le système d'information
sont:
Données, structurées et maintenues de façon organisé
De Configuration opérationnelles
De Prise en charge
De statut
Les procédures et processus
Acquisition
Contrôle et traitement
Planification
Des moyens et des outils pour le traitement de l'information
Les serveurs, postes de travail, les terminaux de collecte de
données, équipement de réseau, ...
5
Système d'information de
l'entreprise
Système d'information d'entreprise (définition II)
Ensemble de données, de procédures, de modèles
organisationnels et de moyens adoptés pour utiliser
l‘informatique dans l'entreprise
6
Système d'information de
l'entreprise
Le système d'information d'entreprise est
intrinsèquement dynamique.
Les facteurs qui causent des changements structurels
dans le système d'information
Internes (amélioration de la performance, ...)
Externes (contraintes imposées par l‘état ou par des clients
particuliers ou des fournisseurs, de la dynamique du marché,
..)
7
PLACE DU SYSTEME D ’INFORMATION DANS UNE ORGANISATION
L’approche Systémique permet de représenter une Organisation ou Entreprise ( Système )
en 3 Sous-systèmes interdépendants :
Il permet d ’assigner des
S/SYSTEME DE PILOTAGE objectifs à l’entreprise en
transmettant des ordres au S.I .
Les Membres de Direction Il analyse l ’environnement
interne et externe du Système
Information : pour produire des décisions .
Décision à mémoriser Information
mémorisée
S/SYSTEME D ’INFORMATION
COLLECTE les données Il alimente le Système en
informations d ’origine interne
ENVIRONNEMENT MEMORISE les données manipulées ou externe , les mémorise , les
traite puis les communique aux
EXTERIEUR
TRAITE les données stockées autres sous-systèmes .
Information Information :
mémorisée Représentation à mémoriser
8
Exemple : SYSTEME D ’INFORMATION d’une Entreprise Commerciale
S/SYSTEME D ’INFORMATION
Fournisseur Employés du Service Commercial
Employés du Service comptable
Secrétaires
Bon de livraison
Marchandise
Ordinateurs + imprimantes
Facture Fournisseur Bon de Commande Marchandise + Bon de livraison
Client + Facture Client
S/SYSTEME OPERANT
Représentants commerciaux
Client
9
Structure d’un Système d’Information
au Niveau des Ressources Humaines
10
Distinction entre SYSTEME D’INFORMATION et SYSTEME INFORMATIQUE
Organisation = SYSTEME
11
Conduite d’un Projet de Système Automatisé d’Information ( S.A.I )
Bases de données
Mét
ho
de
s Ou
ti
l
s
*
Te
c
hn
i
que
sde
Ge
s
ti
o
ndef
i
chi
e
rs *
S
ys
t
ème
s
deG
e
st
i
on
def
i
ch
i
er
s
*M
od
è
l
esde
b
as
es
de
do
nn
ée
s(hi
é
ra
rc
hi
qu
e, *
S
ys
t
ème
de
ge
s
t
io
nd
eba
se
de
do
n
né
es
r
é
s
ea
u,
re
la
t
i
on
ne
l
,o
bj
e…
t) (
Mod
e:
Se
rv
e
u
rde
fi
c
hi
er
*A
r
ch
i
te
ct
ur
e
s(
ce
n
tr
al
i
sé
e,
di
st
ri
bu
ée
,
ré
pa
rt
ie) Cl
i
en
t/
Se
rv
e
u
r,T
ra
ns
ac
t
io
n
ne
l
)
Systèmes logiciels
M é
t
ho
de
s O
ut
il
s
M
*a
que
t
ta
ge
d’a
p
pl
i
ca
ti
o
nsi
nf
or
mat
i
qu
es *
En
vi
ro
nn
e
me
nt
ded
év
el
op
pe
me
nt
*
Te
ch
ni
q
ues
dep
r
og
ra
mmat
i
ons
t
ruc
t
ur
ée (
éd
i
te
ur
,c
o
mp
il
a
te
ur
,dé
bo
gu
e
ur
,…
)
(l
a
nga
g
epr
oc
éd
u
ra
l,à
obj
e
ts
,é
vé
ne
men
t
i…
e
l) *Bi
bl
i
ot
hè
q
ue
de
fo
nc
ti
on
s
*A
s
sur
a
nc
e,
Qua
l
i
té
,T
es
tet
Mai
n
te
na
nc
ed
ul
og
il*
c
i
e Gé
né
ra
te
u
rd
’
éc
ran
et
d’
ét
at
13
La Gestion de projet informatique
Etape 1 : Identification des Objectifs de l ’Entreprise
Système de décision
Fo
nct
io
n d
e
ges
ti
on Nive
au N
i
vea
u Ni
vea
u
d
el
’en
t
repr
i
se S
t
rat
égi
que A
d
mi
nis
tr
at
i
f O
p
ér
at
io
nn
el
F
1 O
b
j. O
b
j. O
b
j.
F
2 O
b
j. O
b
j. O
b
j.
…
…. …
…. …
…. …
….
14
Exemple Entreprise « Les grands garages du Sud »
Etape 1: Activités : Vente & réparation de véhicules neufs et d ’occasion
15
Exemple : Entreprise « Les Grands Garages du Sud » ( Suite )
On identifie dans chaque fonction de gestion , les domaines qui feront l’objet
d’une informatisation .
Gérer les Stocks
• Cas de la Fonction Magasin
Décomposition des Activités
Gérer les Entrées Gérer les Sorties
Pla
n P
orte
feu
illed
epr
oje
tsàr
éaliserc
lassé
spa
rpr
ior
ité
S
tra
tégiq
ue
D
éterm in
erlesbe soinse
néquipem entsma
tériele
tlo
giciel
Plan D
ésigneruneé quiped edév
eloppe me
n t(C
h e
fd epro
jet,
T
actiq
ue A
na ly
stesprogr
am m eur
souS SII)
E
ng agementfin
an c
ierparprojet
Ob
je ctifs
P
la
nd’action E
tap e
s,p hases
parpr
oje t C
alend rierd eréa
lisa
tio
n
C
on tra intes
19
Etape 5 : Conduite de projet = Conception & Réalisation
Equipe technique = ( Chef de projet + Analystes progr.) ou SSII
données SGBDR
19-09-2013
2séances
Concepts fondamentaux
22
Banque de données:
Une base de données est développée au sein d’une
entreprise, pour son propre fonctionnement. Inversement,
une banque de données est un ensemble de données,
propres à un domaine d’application, que des producteurs
réunissent pour ensuite en commercialiser l’usage vers le
public extérieur.
23
Fichier:
Dans une entreprise, il convient de faire appel à l’approche
base de données lorsque les données à gérer sont de
natures diverses et possèdent de nombreux liens entre
elles. A contrario, il existe des cas où les données à gérer,
bien que importantes en volume, sont homogènes dans
ces cas, on parle de fichier et on l’utilisera un système de
gestion de fichiers (SGF), moins complexe qu’un SGBD.
Tout système d’exploitation d’un ordinateur contient un
SGF spécifique dont l’usage est plus simple et offrant des
fonctionnalité plus élaborées.
Exemple:
Fichier des abonnés d’une revue.
Fichier du personnel d’une entreprise.
Fichier des produits vendus par un magasins.
24
2- Cycle de vie d’une base de données:
25
Processus de conception d’une base de données
26
3- Modèle de données:
On appelle modèle de données (MD) l’ensemble des
concepts qui permettent la description de données d’une
base et les règles d’utilisation de ces concepts.
On appelle schéma d’une BD l’expression de la
description de la BD d’une entreprise obtenue en
employant un modèle de données.
Les différents schémas établis pour décrire les divers
aspects d’une bases de données sont:
1- Schéma conceptuel des besoins: lors de la phase de
conception il est nécessaire que les utilisateurs puissent
discuter de leurs besoins et exprimer leur vision sous
forme d’une description de la future BD. Pas besoin de
faire appel à des concepts de l’informatique. Ds cette
phase le problème à traiter est de déterminer quelles sont
les informations nécessaire à la vie de l’entreprise
indépendamment de la solution informatique retenue.
Le modèle utilisé est dit conceptuel.
27
Un modèle conceptuel comporte deux parties:
Le modèle statique, concepts permettant de décrire la
structure de données.
Le modèle dynamique, concepts permettant de décrire les
opérations sur les données.
Exemple:
l’expression de la règle « il ne doit pas y avoir plus de 20%
d’écart entre les salaires des employés d’un même
service et d’une même catégorie » il faut introduire une
description explicite des contraintes supplémentaires dites
contraintes d’intégrité.
28
2- Schéma logique:
Si le schéma conceptuel des besoins décrit la future base,
indépendamment des choix techniques d’implantation, la
phases d’implantation demande que la partie décrivant les
données de ce schéma soit traduite ds les concepts du
modèle utilisé par le SGBD choisi.
29
3- schéma interne:
C’est la fonction des administrateurs système qui suivant leur analyse
des traitements qui vont être effectués sur la future BD, détermineront
les paramètres effectifs pour le chargement de la base de données
sous forme d’un ensemble de fichiers. Ces choix seront consignés
dans ce qu’on appelle le schéma interne (SI) de la base de données.
Où les concepts seront ceux de fichier, organisation, chemin d’accès,
clé,…
4- schéma externe:
À chaque utilisateur est associé un schéma dit son schéma externe qui
définit le sous ensemble de la BD auquel il a accès, structuré de façon
à répondre à ses besoins spécifiques.
Les avantages de cette approche:
simplicité: chaque utilisateur n’a dans son schéma externe que ce qui
l’intéresse.
Protection: il n’est pas possible que par une erreur un utilisateur
accède aux données d’autres utilisateurs non décrits dans son schéma
externe.
30
Un SGBD gère donc trois types de schémas pour une base de
données, qui sont organisés en cascade de la façon suivante:
31
Exemple:
Un exemple illustrant ces trois niveaux de schémas pour un SGBD relationnel
est le suivant: Entreprise: un institut de formation permanente.
32
schéma externe du service de gestion:
Professeur : nom, prénom, n°compte_bancaire, nombre _de_cours, liste
(nom_cours)
Tel que Professeur résulte de la combinaison de Enseignant et de cours du
SI, tels que liste (nom_cours) est la liste de nomC se trouvant dans Cours
tel que nom_enseignant dans Cours = nom dans Enseignant et tel que
nombre_cours = cardinalité liste (nom_cours)) .
3- schéma interne (SI)
Étudiant : fichier Fetud,
contenu : nom, prénom, date de naissance, n°étudiant, indexé sur n°étudiant, index
secondaire sur nom+prénom.
Enseignant + cours: fichier FEnsCours,
contenu: nom, prénom, statut, n°compte_bancaire, liste (nomC, cycle) tel que
nom_enseignant dans cours = nom dans enseignant, indexé sur nom.deux index
secondaire, l’1 sur le nomc et l’autre sur cycle
33
Historique des SGBD
34
Approche gestion de fichiers:
Jusqu’aux années 60: organisation classique en fichiers:
Les structures de données sont décrites dans chaque
programme d’application afin d’accéder aux fichiers de
données
35
Caractéristiques:
36
Approche base de données:
Fin des année 60: apparition des premiers SGBD. Séparation
de la description des données de leur manipulation par les
programmes d’application: Modèles réseau et hiérarchique.
Les structures de données sont décrites de façon unique à
l’aide du SGBD qui résout les requêtes des différents
programmes:
37
Caractéristiques:
Uniformisation de la saisie
Contrôle immédiat de la validité des données entre plusieurs
traitements
Limitation de la redondance des données
Standardisation des traitements généraux ( consultation,
restitution sous forme de listes ou tableaux)
Gestion rationnelle de supports
38
A partir de 1970: deuxième génération de SGBD à partir du modèle
relationnel. Enrichissement et simplification des SGBD afin de faciliter
l’accès aux données pour les utilisateurs. Commercialisation depuis
1982. Oracle, Ingres, Sybase,.
Début des années 80: troisième génération de SGBD basées sur le
modèle objet. ONTOS, ObjectStore, Versant, Orion, O2,..
39
Objectifs des SGBD:
A) Indépendance physique
Une modification de l’organisation physique des données n’entraîne pas de
modification dans les programmes d’application
B) Indépendance logique
Un remaniement de l’organisation logique des données (ajout d’une nouvelle
rubrique, ajout d’une nouvelle liaison…) n’entraîne pas de modifications
dans les programmes d’application dont la vision logique n’a pas évolué.
C) Manipulation des données par des langages non procéduraux
Des utilisateurs non informaticiens doivent manipuler simplement les
données càd les interroger et les mettre à jour sans préciser d’algorithme
d’accès.
D) Administration facilitée des données
Un SGBD doit fournir des outils pour décrire les données, permettre leur suivi
de ces structures et autoriser leur évolution. C’est la tâche des
administrateurs de données: conception, création, maintenance, arbitrage.
E) Efficacité des accès aux données
Optimisation de l’utilisation globale de la base de données afin d’éviter
qu’une requête coutre d’un utilisateur attende la fin d’une requête longue
d’un autre utilisateur par exemple.
40
F) Redondance contrôlée des données
Si redondance, volume de stockage plus important,
opérations de mise à jours multiples, incohérences
momentanées ou permanents.
G) Cohérence des données
Un SGBD doit veiller à ce que les applications respectent
cette règle lors des modifications de données. Une telle
règle est appelée contrainte d’intégrité. Ex: l’age d’une
personne doit être un entier positif.
H) Partage des données
Diverses applications doivent pouvoir partager les données
de la base dans le temps et simultanément.
I) Sécurité des données
Les données doivent être protégées contre les accès non
autorisés ou mal intentionnés. La sécurité des données doit
aussi être assurée en cas de panne d’u programme ou du
système, voire de la machine.
41
Architecture d’un SGBD
Au niveau d’abstraction le plus élevé, un SGBD peut être
vu comme une boite noire, assurant la gestion de la BD
conformément aux requêtes de ses utilisateurs:
42
L’interface utilisateur permet aux utilisateurs d’exprimer des requêtes:
soit pour définir le contenu de la BD avec le (LDD), soit pour interroger
la BD (en extraire des informations), soit, enfin pour apporter des
modifications à ce qui a été enregistré avec (langage de manipulation de
données LMD).
43
Il convient donc d’avoir une vision plus fine de l’architecture
d’un SGBD. Celle ci conduit à distinguer trois couches:
44
45
Architecture ANSI – SPARC à trois niveaux d’une base de
données:
46
Fonctionnement d’un SGBD:
1- Le programme d’application A émet une demande de lecture à
l’intention du SGDB.
2- Le SGBD consulte le sous-schéma relatif à A pour obtenir la
description logique de ses données.
3- Consulte le schéma et détermine la structure à extraire.
4- Examine la description physique de la base et détermine les
enregistrements physiques à lire.
5- Lance une commande au système d’exploitation pour
provoquer la lecture de l’enregistrement physique.
6- Le système d’exploitation provoque le transfert de
l’enregistrement entre la base physique et les buffers du SGBD.
7- Le SGBD, à partir du sous-schéma A, extrait les données à
communiquer au programme d’application A.
8- Le SGBD provoque le transfert des données dans la zone de
liaison de A.
9- Le SGBD retourne au programme d’application les informations
d’état relatives à l’échange ( en particulier les codes des erreurs
éventuelles).
47
Modèles logiques de
données
48
Rappel
La conception d’une base de données commence après l’analyse du
monde réel.
A) Analyse:
le monde réel est perçu comme un système abstrait. Ce système
abstrait se traduit par: des classes d’entités, des propriétés sur ces
classes, des liaisons entre ces classes. Le système abstrait est décrit
par un schéma conceptuel.
Modélisation conceptuelle:
Principes à respecter:
Le schéma conceptuel doit être libre de toute considération non
significative du système abstrait ( organisation physique des données,..)
Tout les aspects du système abstrait doivent être décrits dans le schéma
conceptuel, aucun d’eux ne doit intervenir ailleurs en particulier dans les
programmes d’application indépendants du schéma conceptuel.
49
Modélisation logique:
Traduit le modèle conceptuel dans le modèle du SGBD. Il existe
différents types de modèles logiques de SGBD:
hiérarchiques, réseau, relationnel, orientés objets. Certains
modèles peuvent être spécifiques à un SGBD.
Modélisation physique:
Structures de stockage internes.
50
Modèles conceptuels de données
Concepts de base
Entité ( ex: voiture)
Attribut: propriété de l’entité (ex: Numéro d’immatriculation, couleur)
Valeur de l’attribut ( ex: 232 16 3, blanche).
Association: liaison perçue entre entités
Type ( ex: couleur = chaîne de caractères)
Occurrence (deux voitures différentes sont deux occurrences de
l’entité voiture)
Caractéristiques des associations:
Association un à plusieurs ( en abrégé 1-N) entre deux types
d’entités A et B:
Chaque occurrence du type A est associée à zéro, une ou plusieurs
occurrences du type B.
Chaque occurrence du type B est associée à une occurrence du type
A.
51
Exemple: association 1-N entre le type Fournisseur et le
type d’entités Bon de commande.
52
Représentation graphique des associations 1-N et M-N
(formalisme E-A)
53
Représentation graphique des associations 1-N et N-M
(formalisme OMT)
54
Le Modèle Logique des Données ( MLD )
But : Représentation de la structure logique des données du S.I sous une forme
adaptée à l’utilisation d’un Système de Gestion de Base de Données
( SGBD ) ou d’un Système de Gestion de Fichiers ( SGF ) .
Différents types de modèles logiques ( machinables ) sont exploités dans le marché des SGF et SGBD :
* Le Modèle Hiérarchique ( années 60 )
Il permet de gérer des données dans un ensemble de fichiers sous forme d’un ensemble d’arbres ou de
hiérarchies . Seuls les liens 1 à N entre enregistrements sont permis ( liens père-fils ) .
Les liens multivaluées ( N à N ) doivent être transformés sous forme de liens 1 à N .
La recherche d’enregistrements se fait en parcourant l’arbre général par une gestion de pointeurs :
du père vers le 1er fils , puis de celui-ci vers le 2ème ou du père vers le grand-père , etc…
Les utilisateurs ne peuvent accéder aux données que par l’intermédiaire de programmes de gestion
de fichiers ( SGF ) écrits spécifiquement pour eux ( Niveau de réutilisation faible ) .
Exemples de SGF : IMS ( IBM )
55
* Le Modèle Réseau ou CODASYL ( 1971 )
Son but est de lever certaines des contraintes du modèle hiérarchique . Il fonctionne selon le même
principe navigationnel , c’est à dire par pointeurs . Il permet de représenter les liens N à N entre
enregistrements par liaison d’un enregistrement à un ou plusieurs pères et / ou à un ou plusieurs fils.
Il est basé sur les notions de RECORD ( enregistrement ) et de SET ( lien entre 2 enregistrements ) .
Les premiers SGF et SGBD supportant ce modèle sont apparus en 1978 :
Exemples : IDS2 ( Bull ), DBMS ( DEC ), IDMS (Culliname ), ADABAS ( Software AG ), etc...
56
* Le Modèle Relationnel ( Codd - 1970 )
C’est le modèle de plus répandu actuellement sur le marché des SGBD ( 85 % en 1995 ).
Il lève toutes les contraintes des modèles précédents ( hiérarchiques et réseau ).
Il a été crée par des mathématiciens . Il permet de gérer les données sous forme de tables
d’enregistrements . En reliant ces tables à l’aide d ’un système de clés , il est possible de
rechercher des données dans une table ou de collectionner des données à partir de plusieurs tables
( requêtes ) satisfaisant un critère fixé .
Exemples de SGBDR ( SGBD Relationnels ) :
INGRES et INFORMIX ( sur UNIX et DEC/VMS )
ORACLE ( sur tous les systèmes )
DB400 ( sur IBM/AS400 )
DB2 et SQL/DS ( sur gros systèmes IBM )
MS-SQL Server ( sur Windows NT/Server )
MS-ACCESS et Borland PARADOX ( sur MS-DOS et Windows )
57
* Le Modèle Objet ( Années 1990 )
C’est le successeur potentiel du modèle relationnel . Il repose sur la théorie des objets .
Dans cette théorie , le système d’informations peut être représenté comme un ensemble d’objets
possédant des propriétés et des méthodes et communiquant entre eux par échange de messages .
Il s’appuie en amont sur des méthodes de conception de S.I orientées objet comme O.M.T
( Object Modeling Technique ) ou U.M.L ( Unified Modeling Language ) ou O.O.M ( Orientations
objet dans Merise ) , etc…Ce modèle est encore peu utilisé dans le marché commercial mais est appelé
à remplacer le modèle relationnel dans quelques années pour sa puissance et sa sémantique intuitive .
Exemples de S.G.B.D.O ( SGBD Objets ) : O2 ( IBM )
58
Chapitre II:
Le modèle entité-association
59
Le Modèle Conceptuel de données ( MCD )
Exemple :
1,N
COMMANDE
Commander
Qté commandée N° Commande
0,N Date Commande
1,1
PRODUIT Passer
Ref-Produit commande
Désignation
Prix-unitaire CLIENT
1,N
Code-Client
Nom-Client
60
Notion d’ENTITE
Entité 1 i1 , j1
Entité 2
Association
i2 , j2
i1 , i2 = cardinalités mini
j1 , j2 = cardinalités maxi
Exemple
Service
Salarié 1,N 1,8 N° Service
Matricule Affecté à
Date affect. Désignation
Nom
Règles de gestion : RG1 - Un salarié est affecté à un et ou pls services le long de sa carrière
RG2 - A un service , on peut affecter un à plusieurs salariés (maximum 8)
65
Identifiant d’une Association
Il est obtenu par concaténation des identifiants des entités reliées par l’association
Question : Un employé peut-il effectuer plusieurs visites chez le même médecin à des dates différentes ?
Réponse : Ce modèle ne le permet pas même si la propriété « Date Visite » est portée par l’association « Visiter »
66
Identifiant d’une Association ( Suite )
Calendrier
( N° Employé , N° Médecin , Date )
Date
Ce modèle permet , à l’inverse du précédent , de représenter le fait qu’un employé peut visiter le même
médecin plusieurs fois à des dates différentes .
67
Comment doit-on interpréter les cardinalités d’une association ternaire ?
Exemple : Association ternaire ( i2 , j2 )
Médecin
( i1 , j1 )
Employé Visiter
( i3 , j3 ) Calendrier
• Identification de ( i1 , j1 )
Pour un employé fixé ( occurrence E ) , le couple de N° Employé ( N° Médecin , Date Visite )
cardinalités ( i1 , j1 ) traduit le nombre minimal 1 ( 12 , 08/05/01 )
et maximal d’occurrences du couple d’entités 1 ( 10 , 15/06/01 ) Occurrences
( Médecin , Calendrier ) qui sont associées à 1 ( 6 , 09/06/01 ) de « Visiter »
l’occurrence E . 3 ( 10 , 02/06/01 )
Ici : ( i1 , j1 ) = ( 0 , 3 ) 4 ( 12 , 14/06/01 )
4 ( 10 , 14/06/01 )
5 ( 10 , 02/06/01 )
• Identification de ( i2 , j2 )
N° Médecin ( N° Employé , Date Visite )
Pour un médecin fixé ( occurrence M ) , le couple de
cardinalités ( i2 , j2 ) traduit le nombre minimal 12 ( 1 , 08/05/01 )
et maximal d’occurrences du couple d’entités 10 ( 1 , 15/06/01 )
6 ( 1 , 09/06/01 )
( Employé , Calendrier ) qui sont associées à
10 ( 3 , 02/06/01 )
l’occurrence M . 12 ( 4 , 14/06/01 )
Ici : ( i2 , j2 ) = ( 0 , 4 ) 10 ( 4 , 14/06/01 )
10 ( 5 , 02/06/01 )
• Identification de ( i3 , j3 )
En raisonnant de même pour ( i3 , j3 ) on trouve : ( i3 , j3 ) = ( 0 , 2 )
68
Rôles dans une Association
Rôle = Notion précisant le rôle particulier joué par un ensemble
d’occurrences relatives à une entité dans une association .
Les rôles sont portés sur le schéma Entité-Association .
Exemple 1 Livrer Dépôt expéditeur
Nbre colis livrés DEPOT
0,N 0,N
Code dépôt
CLIENT Recevoir Dépôt destinataire
Adresse dépôt
Code Client Nbre colis reçus 0,N
Nom client
0,N
Adresse client
N° Salarié
Nom Est chef de
Prénom 0,N
Fonction
Salarié
N° Subalterne N° Chef
1 2 Occurrences de
1
5 2 l’association
2 2 4
6 1
3
* Les salariés N° 1 et 2 participent aux 2 rôles de l’association .
4
* Le salarié N° 3 ne participe à aucun des rôles de l ’association .
5
6 * Les salariés N° 4 et 5 participent à un seul des rôles de l ’association.
70
Notion d’entité faible et d’identification relative
Une entité faible possède un identifiant relatif qui se rapporte toujours à
celui d’une entité classique . L’identifiant absolu de l’entité faible est
obtenu en concaténant les identifiants des 2 entités.
Exemple :
ETAGE
1,N
CHAMBRE N° Etage HOTEL
( 1,1 )
N° Chambre Nbre de toilettes 1,N Code Hotel
( 1,1 )
Surface Adresse Hotel
Nom Hotel
5 - Transitivité : {X Y et Y Z } => X Z
6 - Pseudo-transitivité : {X Y et Y, Z W } => X, Z W
PROPRIETES
* DF élémentaire : X Y élémentaire si il Z X tel que Z Y
* DF directe : X Y directe si il Z tel que X Z et Z Y
73
DEPENDANCES FONCTIONNELLES
74
DEPENDANCES FONCTIONNELLES
2 - Cas d’une Association hiérarchique ( monovaluée )
COMMANDE CLIENT
1,1 PASSER 0,N Code Client
N° Commande
Nom
Date Commande
Adresse
Montant
DF représentant l’assoc.
N° Commande Code Client Nom
Adresse
Occurrences de « PASSER » Une Association Hiérarchique est une association binaire (dimension = 2)
N° Commande Code Client dont l’une des pattes possède une Cardinalité Maxi égale à 1 .
1 4 Ce type d’association est toujours orienté suivant le sens de la
2 9 dépendance fonctionnelle qui relie les identifiants de ses Entités .
3 4
4 6 Remarque : La dépendance fonctionnelle Code Client ---> N°Commande
5 2 n’existe pas car un Client peut passer plusieurs commandes
( exemple du Client N° 4 )
6 4 75
DEPENDANCES FONCTIONNELLES
3 - Cas d’une Association N-aire multivaluée non porteuse de propriétés
* Exemple 1 : Association binaire non porteuse
Une Association multivaluée
ACTEUR FILM est une association dont toutes les
0,N JOUER
1,N pattes possèdent une Cardinalité
N° Acteur N° Film
Maxi égale à N ( N >= 2 ) .
Nom Titre
Prénom Date N° Auteur ( Nom , Prénom )
Production
N° Film (Titre , Date Product. )
DF représentant l’assoc. ( sans but )
( N°Acteur , N° Film ) -
Calendrier
* Exemple 2 : Association ternaire non porteuse
0,N Date
DF représentant l’assoc.
( N° Facture , Réf. Produit ) Quantité Produitc
DF représentant l’assoc.
( N° Ville Départ , N° Ville Arrivée , N° Route ) Distance
77
DEPENDANCES FONCTIONNELLES
PERSONNE 0,N
Parent PARENTE
N° CIN ( Nom , Prénom )
N° CIN
Enfant
Nom
Prénom 0,2
DF représentant l’assoc.
( N° CIN Parent , N° CIN Enfant ) -
78
DEPENDANCES FONCTIONNELLES
7 - Cas d’une Association de Cardinalités Maxi égales à 1
Exemple :
FACTURE REGLEMENT
0,1 PAYER 1,1
N° Règlement
N° Facture
Date Règlement
Date Facture
Montant Règlement
Montant Facture
Règles de gestion:
Ce type d’association est orienté
RG1 - Une facture fait l’objet d ’un seul règlement dans les 2 sens pour indiquer
l’existence de 2 dépendances
RG2 - Un règlement compense toujours une seule facture
fonctionnelles entre les identifiants
RG3 - A un instant donné , certaines factures peuvent être impayées . des entités de l’association .
N° Facture N° Règlement
Date Montant
Date Montant Règlement Règlement
Facture Facture 79
DEPENDANCES FONCTIONNELLES
8 - Cas des entités faibles
Exemple :
ETAGE
1,N
CHAMBRE N° Etage HOTEL
( 1,1 )
N° Chambre Nbre de toilettes 1,N N° Hotel
( 1,1 )
Surface Adresse Hotel
1,N
1,1
Règles de gestion:
RG1 - Une réservation est effectuée sur une ou plusieurs chambres
RG2 - Une réservation de client à l’hôtel précise le nombre de nuits relatif à chaque chambre ( durée )
RG3 - Une chambre est identifiée relativement à un étage et à un hôtel particuliers
80
Graphe de Dépendances Fonctionnelles
N° fournisseur
82
Le Modèle Logique de Données Relationnel ( MLDR )
Ce modèle permet de constituer une base de données au sens logique au moyen de
tables désignées aussi sous le terme de relations .
2 ) La Relation : Une relation ( appelée aussi table ) est un ensemble d’attributs significativement
associés ( dont l’association a un sens au niveau du S.I ) .
3 ) Les clés d’une relation : soient 3 relations comportant certains attributs communs :
R1 ( A1# , A2 , A3, …….., An )
R2 ( B1# , B2 , B3 , …….., Bn , A1# )
R3 ( A1# , B1# , C1, C2 , C3 , ….., Cn )
- A1# dans R1 et B1# dans R2 sont appelés clés primaires : Chacun de ces attributs a été choisi pour
identifier de manière discriminante 84
Le Modèle Logique de Données Relationnel ( suite 2 )
- A2 est une clé candidate pour R1 à condition que A2 soit un attribut discriminant pour les tuples
de R1 comme c’est le cas de A1#. Une clé candidate est un
attribut ou un groupe d’attributs qui aurait pu servir de clé
primaire mais qui n’a pas été retenu .
- A1# dans R2 est une clé étrangère : c’est un attribut défini sur un domaine primaire ( celui de R1 )
mais qui est présent dans une autre relation ( R2 ) dans le but
de créer un lien entre les relations R1 et R2 .
- Remarques: * une clé primaire ( simple ou composée ) est toujours soulignée dans une relation .
* une clé étrangère ( ou externe ) peut être composée comme dans le cas d’une clé primaire
* l’attribut ou les attributs constituant une clé primaire ou étrangère possèdent un nom
qui se termine par le symbole #
* une relation est toujours identifiée par une clé primaire
* une relation peut présenter une ou plusieurs clés candidates (clés primaires de substitution)
4 ) Schéma relationnel : C’est un ensemble de relations logiques présentant des liens sémantiques .
Cet ensemble est destiné à la création d’une base de données physique .
85
Le Modèle Logique de Données Relationnel ( suite 3 )
* les attributs par rapport à leur domaine de valeurs (contrainte d’intégrité de domaine)
Exemple : Si l’attribut ‘ N° Client ’ est défini sur un domaine de valeurs numériques , il ne
peut pas contenir de lettres .
86
Construction du Modèle Logique de Données Relationnel
Le MLDR est construit à partir du MCD en appliquant des règles de transformation simples
aux entités et aux associations .
Les entités donnent toujours lieu à des relations dans le MLDR .
Les associations , selon leur cardinalités , peuvent ou non donner lieu à des relations .
ENTITE A ENTITE B
ENTITE A ENTITE B
ENTITE A ENTITE B
Identifiant Ao *,1 Association *,1 Identifiant Bo
Propriété A1 Propriété B1
Propriété A2 Propriété B2
*,N
ENTITE A
Représentation graphique
Identifiant Ao Association du MLDR
Propriété A1
Propriété A2
A
*,N
Ao #
Relations obtenues : A,B A1
A2 B
A ( Ao# , A1 , A2 , ... )
Ao1 #
B ( Ao1# , Ao2# ) : Cas d’une assoc. non porteuse Ao2 #
B ( Ao1# , Ao2# , B1 , B2 , ...) : Cas d’une assoc. porteuse B1
B2
Exemple :
Est parent de Relations obtenues :
PERSONNE 0, N
PERSONNE ( N° CIN # , Nom , Prénom )
N° CIN Parenté
Nom
Prénom 0, 2 PARENTE ( N° CIN_Parent # , N° CIN_Enfant # )
Est enfant de
91
Construction du Modèle Logique de Données Relationnel ( suite 5 )
2.5 ) Association réflexive hiérarchique Un [ 0, 1 ou 1, 1 ] à Plusieurs [ 0, N ou 1, N ]
*,N
ENTITE A
Représentation graphique
Identifiant Ao Association du MLDR
Propriété A1
Propriété A2
A
*,1
Ao #
A1
Relation obtenue : A A2
Ao‘ #
A ( Ao# , A1 , A2 , ... , Ao’ # )
Exemple :
92
Construction du Modèle Logique de Données Relationnel ( suite 6 )
2.6 ) Association relative incluant une entité faible
ENTITE A ENTITE B
Cette association traduit le rattachement d’une entité faible ( A ) à une entité classique ( B ) .
L’identifiant absolu de l’entité A est : Ao + Bo .
PROJET
PHASE Relations obtenues :
( 1, 1 ) 1, N N° Projet
PROJET ( N° Projet # , Nom Projet , Date début )
N° Phase
Nom Projet
Désignation PHASE ( N° Projet # , N° Phase # ,
Date début
Durée Désignation , Durée )
93
Construction du Modèle Logique de Données Relationnel ( suite 7 )
4 ) Application : Schéma relationnel d’un service clientèle dans un café
SERVEUR MLDR
1# 1,N 0,N CALENDRIER
AFFECTER
2
9# SERVEUR ( 1 # , 2 )
Dictionnaire de données
95
Règles de normalisation
Une forme normale est une propriété d’une base
de données relationnelle qui garantie la qualité,
càd l’abscence de certains défauts.
Quand une relation n’est pas normalisée ceci
presente des anomalies :
Presence de redondance,
96
Normalisation
C’est une procédure qui permet de
transformer les schemas non normalisés en
des schémas satisfaisant une forme normale.
La normalisation est utilisée comme
technique de verification des résultats de la
conception d’une BD.
Ne constitue pas une méthodologie de
concecption.
97
Une relation avec anomalies
98
Anomalies
Le salaire de chaque employé est répété dans toutes les t-
uples relatives.
redondance
99
Pourquoi ces phénomes
indésirables ?
Nous avons utilisé une seule relation pour
representer des informations hétérogénes.
100
Les formes normales
o Les formes normales représentent les différents stades de qualité qui permettent
d’éviter des anomalies dans les bases de données relationnelles.
o elles représentent l’état des tables relationnelles en fonction de leurs dépendances
fonctionnelles.
o Plus le niveau de normalisation est élevé, plus la table sera exemptée d’anomalies
o Une table en forme normale de niveau x est automatiquement en forme normale de
niveau x-1
o À la suite d’une modélisation, la plupart des modèles seront déjà en forme normale de
Boyce-Codd (ou presque)
101
Première Forme Normale (1FN)
o Dans une entité, toutes les propriétés sont élémentaires et il existe au mois
un identifiant caractérisant chaque occurrence de l’entité autrement dit: Une
table est en forme normale si tous ses attributs sont simples et non
décomposables.
o Si une table n’est pas en 1FN, alors elle est FNN (Forme Non Normalisée)
o Si les tables relationnelles résultant de la modélisation ne sont pas déjà en
1FN, il serait approprié de retourner à l’étape de modélisation. Une
modélisation de qualité minimale devrait toujours être en 1FN.
Client
Nom_client
Adresse_client
o Ici, pas de clé primaire et la propriété « adresse » est la concaténation de
rue ville et pays, ce qui donne des tables résultantes en 1FN.
Rq: donc toute table doit avoir une clé primaire et les champs non
décomposables.
102
Deuxième Forme Normale (2FN)
o Une table est en deuxième forme normale si elle est en 1FN et que l’une de ces
trois conditions est respectée:
N°Cde, Ref
Libellé
quantité
N’est pas en 2FN car: la clé est la concaténation de N°Cde+ Ref mais la
DF N°Cde +Ref et libellé n’est pas élémentaire. La table
Lignedecommande doit être décomposable comme suit:
104
Exemple 2 :
Supposons mnt la table suivante représentant des modèles génériques
de télévisions construites par différents fabricants. La marque et le
modèle permettent d’identifier de façon unique chaque sorte de
télévision. Le mode sonore ainsi que la résolution sont spécifiques au
modèle et non à la marque.
105
Troisième Forme Normale (3FN)
Une table est en 3FN si elle est déjà en 2FN et qu’aucun attribut ne faisant pas
partie de la clé ne dépend d’un autre attribut ne faisant pas partie lui non plus
de la clé; AUTREMENT DIT: dans une relation toute propriété doit dépendre
de la clé primaire par une dépendance fonctionnelle élémentaire directe.
Il y a donc une DF entre "Année" et "Prix", ce qui signifie que cette table n’est pas en
3FN. Il faut donc décomposer cette table en deux.
107
Forme Normale de Boyce-Codd (FNBC)
il s’agit d’une extension de la 3FN, plus rigide que celle-ci, faite par R.F. Boyce et E.F.
Codd, qui ont constaté que la 3FN pouvait comporter certaines anomalies.
Un modèle relationnel en FNBC est considéré comme étant de qualité suffisante pour
l’implantation d’une BD.
Une table est en FNBC si elle est déjà en 3FN et qu’aucun attribut faisant partie de la
clé ne dépend d’un attribut ne faisant pas partie de la clé primaire.
Les cas de tables modélisées et transformées en 3FN qui ne sont pas déjà en FNBC
sont très rares.
Cours
Matière, N°Classe
CodeProfesseur
109
Une strategie plus pratique
110
Conception et normalisation
111
Nom Code
fornissuer
Nom
produit
Adresse
Produit
TVA Prix
112
Analyse de l’entité
L’entité
viole la 3FN à cause de la
dépendance:
TVA NomFornisseur Adresse
113
Nom TVA Nom
produit Code fornisseur
(1,1) (0,N)
Produit Fournir Fornisseur
Prix Adresse
114
Depratement
(0,N)
(0,N) (0,1)
Professeur Theses Etudiant
(0,N)
Cours de master
116
(0,N)
Departement
Affecter
(1,1)
(0,N) (0,1)
Professeur Theses Etudiant
(0,N)
Cours de master
117
Analyses sur les dépendances
118
(1,1)
Inscription
(0,N)
Cours de master
119
Exercice: Normalisation du cas de l’aéroport
Soit le modèle relationnel résultant de la modélisation pour la gestion
de l’aéroport:
AÉROPORT (CodeAéroport, Nom, Ville, Prov-État, Pays, Altitude, LongueurPiste)
Les tables AÉROPORT, VOL, RÉSERVATION, ENVOLÉE, PASSAGER, PILOTE et AVION ont des
clés formées d’un seul attribut (condition 1 de la 2FN) et les tables JOURNÉES-VOL et HABILITATION
ont des clés constituées de tous les attributs de la table (condition 2 de la 2FN), donc le modèle est en
2FN.
Dans la table AÉROPORT, il existe une DF qui a pour origine les attributs "Ville" et "Prov-État" et dont
dépend "Pays" (Avec une ville et une province (ou état) donnés, il ne correspond qu’un seul pays). On
divise donc cette table en deux de la façon suivante :
Il n’existe pas d’autres DF entre attributs ne faisant pas partie de la clé, donc ce modèle est en 3FN.
Il n’existe pas de DF entre des attributs ordinaires et des parties de clé, donc le modèle est en FNBC.
121
Apres décomposition le modèle final en FNBC est donc le suivant :
AÉROPORT (CodeAéroport, Nom, Ville, Prov-État, Altitude, LongueurPiste)
123
Algèbre Relationnelle
1- Notion d’algèbre Relationnelle:
L’algèbre relationnelle représente une collection d’opérations formelles
pouvant être exécutées sur les relations d’un modèle de données logique
relationnel (MLDR).
On distingue:
Les opérations ensemblistes:
Elles découlent de la théorie des ensembles. Elles permettent d’obtenir
une nouvelle relation comme le résultat d’une opération d’ensemble sur 2
ou plusieurs relations.
Exemple: union, intersection, différence, produit cartésien, etc…
Les opérations relationnelles:
Elles sont propres à l’algèbre relationnelle. Elles peuvent utiliser:
Des opérateurs unaires ( sélection, projection)
126
Opérateur DIFFERENCE Formalisme: R = DIFFERENCE ( R1, R2)
Exemple: E1 = Enseignants affectés aux relations extérieures.
E2 = Enseignants représentants syndicaux
On désire connaître les enseignants affectés aux relations extérieures qui ne sont
pas des représentants syndicaux.
R = DIFFERENCe (E1, E2).
R N°Enseignant Nom_Enseignant
3 Chaoui
5 Benzakour
127
Opérateur PRODUIT CARTESIEN Formalisme: R = PRODUIT (R1, R2)
Exemple: R1 = Étudiant R2 =Épreuve
R1 N°Étudiant Nom R2 LibelléEpreuve Coefficient
101 X Informatique 5
102 Y Mathématiques 3
Gestion Financière 2
Examen = PRODUIT ( Étudiant, Épreuve).
R N°Étudiant Nom LibelléEpreuve Coefficient
101 X Informatique 5
101 X Mathématiques 3
101 X Gestion Financière 2
102 Y Informatique 5
102 Y Mathématiques 3
102 Y Gestion Financière 2
128
1-2) les opérateurs relationnels
Opérateur PROJECTION Formalisme: R = PROJECTION ( R1, Liste des attributs)
Exemple: R1 = Joueur Joueur N°Licence Catégorie Année naissance
130
Opérateur JOINTURE ( Equijointure)
Formalisme: R = JOINTURE ( R1, R2, Condition d’égalité entre attributs)
Exemple:
R1= Produit R2 = Détail_Commande
R1 Code Prod Libellé Prix unitaire R2 N°Cde Code Prod Quantité
590A Hd 1.6Go 1615 97001 590A 2
588J ScanerHP 1700 97002 515P 1
515P PrinterOKI 1820 97003 515P 3
Cet opérateur porte sur 2 relations qui doivent avoir au moins un attribut défini dans le
même domaine sémantique.
La condition de jointure peut porter sur l’égalité d’un ou plusieurs attributs définis dans le
même domaine ( mais n’ayant pas forcement le même nom).
Les tuples de la relation résultat sont formés par la concaténation des tuples des relations
d’origine qui vérifient la condition de jointure. Les tuples doublons sont éliminés.
Remarque: des jointures plus complexes que l’équijointure peuvent être réalisées en
généralisant l’usage de la condition de jointure à d’autre critères de comparaison que
l’égalité( <, >, <=, >=, <>)
131
Opérateur DIVISION Formalisme: R= DIVISION ( R1, R2)
Exemple:
R1 = Participer R2 = Épreuve R= DIVISION(Participer, Épreuve)
Athlète Épreuve Épreuve Athlète
Driss 200m 200m Driss
Manu 400m 400m
Driss 400m 110mh
Khalid 110mH
Driss 110mH
Manu 200m
Cet opérateur porte sur 2 relations qui doivent avoir au moins un attribut défini dans le même
domaine sémantique.
Tous les attributs du diviseur (ici Épreuve) doivent être des attributs du dividende (ici
Participer)
La relation dividende doit avoir au moins une colonne de plus que la relation diviseur.
La relation résultat, le quotient, possède les attributs non communs aux deus relations
initiales.
La relation quotient est formée de tous les tuples qui, concaténés à chacun des tuples du
diviseur (ici Épreuve) donnent tjs un tuple du dividende (ici Participer).
132
1-3) les opérateurs complémentaires
Opérateur de TRI Formalisme: R= TRI( R1, Liste des attributs et options de tri)
Exemple: R1 = Livraison
R1 N°Client Date livraisonArticle Qté Prix unit -A: Tri ascendant
006 10-10-00 Filtre écran 10 250.00 -D: Tri descendant
015 08-05-01 printerHPLaserJet6L 2 3500.00
004 12-05-02 Calvier 102T 5 500.00
015 11-09-02 SourisPS-2 10 100.00
006 28-02-03 PrinterHP LaserJet6L 1 3500.00
002 03-11-03 HP Brio 64Mo-350Mhs 2 13000.00
On désire obtenir le chiffre d’affaire total HT, ainsi que le nombre total de produits
commandés:
R = CALCULER ( Ligne_Commande, Somme( qté), somme( Qté *PrixU. HT)
R Nbre_Produits_commndés Chiffre_Affaire_HT
124 5810
135
Opérateur REGROUPER et CALCULER
Formalisme: R = REGROUPER_ET_CALCULER ( R0, att1, att2,.., Foncton1, Fonction2,…)
Exemple:
R0 = Ligne_Commande R0 N°BonCommande CodeProd Qté PrixU. HT
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32
On désire obtenir le montant total de chaque bon de commande:
R = REGROUPER_ET_CALCULER ( Ligne_Commande, N°BonCommande,
Mont_HT:Somme(Qté*Prix.U.HT)
Le regroupement s’effectue sur un sous ensemble R N°BonCommade MontantHT
des attributs de la relation R0. 96008 1950
La relation résultat R comporte autant de ligne 96009 1660
que de groupes de tuples, les fonctions 96010 2200
s’appliquent à chacun des groupes séparément.
136
Les opérateurs de base
Représentation Graphique des
opérateurs
137
Représentation graphique des opérateurs projection, restriction,
jointure
138
139
MODULE 2
140
Qu’est-ce qu’une base de données ? ( BD )
Une base de données ( BD ) est un ensemble structuré de données enregistrées avec le minimum
de redondance sur un support de stockage informatique et accessibles à plusieurs utilisateurs de
manière sélective et simultanée au moyen d’un système de gestion de base de données ( SGBD ) .
- Une réservation : « Liste des passagers qui ont réservé un vol déterminé ? »
- Un équipage : « Quel est le pilote du vol Royal Air Maroc Casablanca – Londres du 15 Octobre
Départ 15 H 30 ? »
141
Un Système de Gestion de Bases de Données
- Sécurité : vérifier les droits d’accès des utilisateurs sur les données
- Intégrité : définir des règles qui maintiennent une cohérence entre les données compte tenu
de leur structure ( contraintes d’intégrité )
- Concurrence d’accès : détecter et traiter les cas où il y a conflit d’accès entre plusieurs
utilisateurs et les traiter correctement .
142
Créer, ouvrir et fermer une base de données
Pour créer une nouvelle base de données, Fichier / Nouvelle base de
données... et entrer un nom de fichier (Access ajoutera l'extension .MDB).
Pour ouvrir une base de données, Fichier / Ouvrir une base de données...
Pour fermer une base de données, Fichier / Fermer la base de données.
La fenêtre Base de données, en cours de travail , comporte 6 onglets que
nous allons découvrir au fur et à mesure :
143
Tables : Structure générale
Une table est un groupe d'informations sur un domaine précis. Par
exemple tout
ce qui concerne les clients peut être enregistré dans une table, et tout
ce qui
concerne les produits dans une autre.
Conception d’une table
* Définissez la nature des champs et le type de données stockées
dans chaque champ.
* Déterminez ainsi la structure de base de la table.
* après avoir nommé et sauvegardé la table, vous pouvez lui
ajouter des données.
Clé primaire: i.e. un ou plusieurs champs qui assurent l ’unicité de
chacun des enregistrements. il Sert à identifier chaque
enregistrement, et, accessoirement, ordonner une table.
144
Tables : Définition des index
Propriété Signification
Spécifie que l’index est une clé primaire ou non
Primaire
Unique Permet de tolérer ou non des doublons dans les valeurs de la colonne indexée
145
Tables : Opérations de traitement diverses
But: - Attacher une table externe
- Exploiter les données d ’une table
- Importer une table
- Modifier les propriétés des champs et définir la clé
primaire
d’une table importé
- Exporter une table sous la forme d’un fichier Excel
Exemple : Effectuer différents traitements sur les données du tableau suivant
provenant
d ’une feuille de calcul Microsoft EXCEL : « STOCK.XLS » :
146
Tables : Opérations de traitement diverses ( Suite )
148
Tables : Opérations de traitement diverses ( Suite )
2 - Exploiter les données d’une table attachée (
Suite )
Cliquez dans la zone « Format » dans la partie inférieure de la fenêtre
Sélectionner le format « monétaire ».
Cliquez sur le bouton « Mode feuille de données » de la barre d ’outils, Access vous
demande alors de sauvegarder les modifications apportées à cette table, cliquez sur le
bouton « OK »
149
Tables : Opérations de traitement diverses ( Suite )
3- Importer une table
Si vous voulez exploiter d ’une manière définitive les données avec Access au lieu du tableur (par ex:
Excel), cela
signifie qu ’il n ’est plus nécessaire de faire appel à une table attachée. Vous pouvez maintenant importer
directement cette table dans Access ( Attention : la table , n’est plus disponible dans Excel )
Exemple:
Sélectionnez dans le menu « Fichier », « Données Externes / Importer »
151
Tables : Opérations de traitement diverses ( Suite )
5 - Exporter une table sous la forme d ’un fichier Excel
Supposons que vous désirez employer Excel pour analyser les données de la table
« Dépôt » sous forme de graphe.
Exemple:
Sélectionner dans le menu « Fichier », « Enregistrement sous / Exporter.. » pour exporter la table
« Dépôt » dans un fichier Excel.
Une boite de dialogue s ’affiche:
L’intégrité référentielle garantit une cohérence des données entre chaque couples de tables jointes
( table mère et table fille ) :
- Une table fille doit présenter des valeurs non nulles au niveau d ’un attribut de type clé étrangère .
Ces valeurs doivent appartenir au domaine de valeurs de l’attribut clé primaire correspondant
figurant dans la table mère . Cette vérification est effectuée automatiquement par le système
lorsque la 1ère case sur la figure est cochée
- Lorsque la valeur d’une clé primaire est modifiée dans une table mère , il est possible de répercuter
cette modification sur les valeurs des clés étrangères correspondantes dans toutes les tables filles
qui lui sont jointes en activant la 2ème case à cocher . Même raisonnement pour déclencher des
suppressions d ’enregistrements en cascade à partir d ’une table mère à l’aide de la 3ème case à
cocher
153
MODULE 4
154
Interrogation simples
Les interrogations expriment quoi chercher et pas
comment chercher.
Le comment est produit par l’interpreteur SQL du SGBD
qui traduit la requête SQL avec des opérations interenes
sur les données qui produisent la réponse.
L’utilisateur ne doit donc pas se préocuper à comment
trouver le résultat.
Les operations d’interrogration vont être spécifiées avec
l’instruction select
155
LE LANGAGE DE REQUETES SQL
1 – Origines et évolutions
- SQL est dérivé de l’algèbre relationnelle et du langage SEQUEL ( Structured English Query Language ).
- Premiére proposition : SEQUEL, IBM Research 1974
- Premiére implémentation sur les plateformes SQL/DS (IBM) , DB2, puis Oracle (1981) , INGRES ,
INFORMIX , etc…
* Langage de contrôle de données ( LCD ) : Il permet de gérer la sécurité des données, les transactions
et les accès concurrents GRANT et REVOKE , BEGIN et END TRANSACTION , COMMIT et
ROLLBACK, etc…
156
Implementation
Certains DBMS commerciaux
• ORACLE Un DBMS
• DB2 (IBM) tipico
• Access (Microsoft)
• MSSQL server (Microsoft)
SQL-3
• Informix
SQL-2
• Mysql
• …..
SQL-89
SQL-1
157
Definition des données
On peut utiliser 6 domaines (types de données ) predefinis
Les types des données sont utiliser pour les attributs (colones) des
relations lors de l’établissement du dictionnaire de données.
158
Ie type caractere
Representé par des simples caractéres aphanumérique ou bien chaines
de caractéres de longuer fixe ou variable.
char
char(longueur)
varchar(longueur)
char varying (longueur)
On définit l’attribut Nom de la relation Employes avec une séquence de
caractéres de longueurs maximale 20
bit
bit(longueur)
bit varying (longueur)
Tavailleur bit
160
Types numériques exacts
Representent les nombres entiérs ou décimaux avec vigule fixe
Ils sont utils pour representer par exemple des grandeurs physiques (à
virgule flotante)
Le paramètre de précision définit la longueur de la mantisse
float float(precision)
double precision
real
Masse real
date
time time(precision)
timestamp timestamp(precision)
Chacun de ces domaines est décomposable en un ensemble de champs (année, mois,
jour, heure, minutes, secondes)
interval PremiereUnitéDeTemps
interval PremiereUnitéDeTemps to DerniéreUnitéDetemps
Exemples
Durée du service en années et en mois (ancienneté)
AncienntéService interval year to month
Temps de livraison en jours et heures
Exemples
165
BLOB e CLOB
Binary Large Object (BLOB) et Character Large Object (CLOB) permetent
d’inclure directement dans la database des ficihiers trés grands.
BLOB et CLOB sont des types définis seulement dans SQL-3, mais
réalisés dans différents DBMS commerciaux.
Les ordres LMD sont des instructions SQL créées à partir des commandes suivantes :
Commande Rôle
SELECT Interroger une base de données en vue d’extraire les enregistrements qui répondent à
des critères particuliers
INSERT Insérer ( charger ) des lots de données dans la base de données en une seule opération
UPDATE Modifier ( mettre à jour ) des valeurs d’attributs dans une table ou bien des valeurs
d’enregistrements entiers répondant à des critères particuliers
DELETE Supprimer des enregistrements dans une table de base de données sélectionnés d’après
un critère donné .
Chaque commande peut utiliser une ou plusieurs clauses obligatoires et des clauses optionnelles .
Les clauses permettent de définir l’origine et la nature des données qu’il faut sélectionner ou manipuler .
Clause Rôle
FROM Nommer une ou plusieurs tables ou vues à partir desquelles les enregistrements doivent
être sélectionnés
WHERE Spécifier des conditions de jointure et / ou de sélection sur les enregistrements
GROUP BY Spécifier les attributs de regroupement lors d’une opération de calcul et / ou
regroupement
HAVING Spécifier des conditions de sélection sur les enregistrements obtenus après une
opération de regroupement
ORDER BY Trier les enregistrements sélectionnés pour être projetés dans un ordre particulier
167
COMMANDE SELECT : Forme générale
SELECT [DISTINCT] < liste d’attributs de projection simples , calculés ou renommés >
FROM < liste de tables ou vues >
[WHERE < critère de jointure naturelle, théta-jointure, jointure externe > ]
[ AND < critère de sélection simple > ]
[ AND < critère de sélection complexe appelant une sous-requête > ]
[GROUP BY < liste d’attributs de regroupement > ]
[HAVING < critère de sélection sur des attributs calculés ou regroupés > ]
[UNION / INTERSECT / EXCEPT ( autre requête SELECT ) ]
[ORDER BY < liste d’attributs de tri avec ordre de tri > ]
* Liste des données sur les produits dont le poids est supérieur à 15 Kg
SELECT * FROM Produit WHERE Poids > 15 ;
* Liste des libellés de produits différents dont le poids est compris entre 15 et 40 Kg
SELECT DISTINCT Libellé _Produit FROM Produit WHERE Poids BETWEEN 15 AND 40 ;
* Liste des produits dont le poids n’est pas compris entre 15 et 40 Kg et dont la couleur est
verte , rouge ou bleue
SELECT * FROM Produit
WHERE Poids NOT BETWEEN 15 AND 40
AND Couleur IN ( ‘Vert’, ‘Rouge’, ‘Bleu’ ) ;
•Sous-requête renvoyant une seule valeur ( relation à une seule ligne et une seule colonne ) :
•Sous-requête renvoyant plusieurs valeurs ( relation à une seule colonne et plusieurs lignes ) :
L’opérateur : IN
Liste des produits dont la couleur est la même que celle de l’une des tables
SELECT Libellé_Produit FROM Produit
WHERE Couleur IN ( SELECT Couleur FROM Produit WHERE Libellé_Produit = ‘Table’ )
Liste des produits dont le prix unitaire est différent de celui de toutes les armoires
SELECT Libellé_Produit FROM Produit
WHERE Prix_U NOT IN ( SELECT Prix_U FROM Produit WHERE Libellé_Produit = ‘Armoire’ )
170
COMMANDE SELECT : Les Sélections ( restrictions ) avec sous-requête ( suite 1 )
* Sous-requête renvoyant plusieurs valeurs ( relation à une seule colonne et plusieurs lignes ) :
=> Liste des produits dont le poids et la couleur sont identiques à ceux de l’article N° 125
SELECT Libellé_Produit FROM Produit
WHERE ( Poids , Couleur ) = ( SELECT Poids , Couleur FROM Produit WHERE N_Produit = 125 )
171
COMMANDE SELECT : Les Sélections ( restrictions ) avec sous-requête ( suite 2 )
* Sous-requête renvoyant au moins 1 ligne ( relation à 1 ou plusieurs colonnes comportant au moins 1 ligne ) :
L’opérateur : EXISTS
=> Liste des produits stockés dans au moins un dépôt avec une quantité supérieure à 1000 unités ?
SELECT Libellé_Produit FROM Produit AS P
WHERE EXISTS ( SELECT * FROM STOCKER WHERE [N_Produit#] = P. N_Produit
AND Qté_Stockée > 1000 )
=> Liste des produits qui ne sont stockés dans aucun dépôt ?
SELECT Libellé_Produit FROM Produit AS P
WHERE NOT EXISTS ( SELECT * FROM STOCKER WHERE [N_Produit#] = P. N_Produit )
* Sous-requêtes multiples
Lorsque les attributs de projection appartiennent tous à la requête principale , on peut utiliser plusieurs
sous-requêtes imbriquées au lieu d’utiliser des jointures
=> Liste des produits ( Libellé, Prix_U et Poids ) stockés à Tanger dans le dépôt ‘Grossisterie Znibar‘ ?
SELECT Libellé_Produit, Prix_U, Poids FROM Produit
WHERE N_Produit IN ( SELECT [ N_Produit# ] FROM STOCKER
WHERE [ N_Dépôt# ] IN ( SELECT N_Dépôt FROM Dépôt
WHERE Ville = ‘Tanger’
AND Nom_Dépôt = ‘Grossisterie Znibar’ )
172
COMMANDE SELECT : Les Sélections ( restrictions ) avec sous-requête ( suite 3 )
=> Liste des prix unitaires les plus élevés de chaque type de produit
SELECT Libellé_Produit, Prix_U FROM Produit AS P1
WHERE Prix = ( SELECT MAX ( Prix_U ) FROM PRODUIT P2
WHERE P2. Libellé_Produit = P1. Libellé_Produit )
=> Liste des dépôts stockant tous les produits ( simulation de l’opérateur relationnel ‘Division‘ )
SELECT Nom_Dépôt , Ville FROM Dépôt AS D
WHERE NOT EXISTS ( SELECT * FROM Produit AS P
WHERE NOT EXISTS ( SELECT * FROM STOCKER S
WHERE S. [N_Produit#] = P. N_Produit
AND S. [N_Dépôt#] = D. N_Dépôt )
173
COMMANDE SELECT : Les Fonctions Statistiques
Le langage SQL offre la possibilité de récupérer des données chiffrées sur des tables ou des vues .
On peut par exemple obtenir le nombre de tuples répondant à un critère de sélection avec la fonction
COUNT , la valeur moyenne d’une colonne avec la fonction AVG , la valeur maximale ou minimale
et la somme d’une colonne avec les fonctions MAX , MIN et SUM .
=> Calculer la somme globale , la moyenne , le maximum et le minimum des quantités stockées du produit
N° 122
174
COMMANDE SELECT : Les Regroupements
On appelle « Groupe » un ensemble de lignes ( tuples ) dans une relation qui possèdent une valeur identique dans
une ou plusieurs colonnes . Cette colonne ( ou ensemble de colonnes ) peut être définie comme un
« facteur de regroupement » à l’aide de la clause « GROUP BY » de la commande SELECT .
SQL permet alors d’effectuer des calculs sur les autres colonnes ( qui ne sont pas des facteurs de regroupement )
en utilisant les fonctions statistiques ( fonctions d’agrégation ) : COUNT , SUM , AVG, MAX et MIN .
La clause « HAVING » permet d’appliquer une condition de sélection ( restriction ) à chaque groupe dans la
relation résultat de la requête au niveau des colonnes de regroupements et / ou de calcul .
Remarque : Dans la commande SELECT , les colonnes de calcul sont toujours spécifiées dans la liste des
attributs de projection . Toutes les autres colonnes ( non calculées ) figurant dans cette liste sont alors
considérées comme des facteurs de regroupement et doivent figurer dans la clause « GROUP BY » .
1ère Forme
INSERT [INTO] < Nom de Table >
[ < Liste d’attributs entre parenthèses > ]
VALUES < Liste de valeurs correspondant aux attributs entre parenthèses >
2ème Forme
INSERT [INTO] < Nom de Table >
[ < Liste n° 1 d’attributs entre parenthèses > ]
SELECT < Liste n°2 d’attributs correspondant en type à ceux de la Liste n°1 >
FROM < liste de tables ou vues >
[WHERE < critère de jointure naturelle, théta-jointure, jointure externe > ]
[ AND < critère de sélection simple > ]
[ AND < critère de sélection complexe appelant une sous-requête > ]
[etc… ]
Remarques :
- Les attributs non spécifiés dans la liste n°1 restent à NULL ou à leur valeur par défaut après l’insertion de tuples
- On doit toujours fournir une valeur dans l’ordre INSERT pour les attributs déclarés NOT NULL
( déclaration effectuée lors de la création de la table )
176
COMMANDE INSERT : Exemples
Schéma relationnel : PRODUIT ( N_Produit , Libellé_Produit , Prix_U , Poids , Couleur )
ARTICLE ( N_Article , Désignation , Prix_U )
* Insertion de 2 lignes ( 2 tuples ) dans la table PRODUIT avec certaines valeurs nulles
INSERT INTO PRODUIT VALUES ( 21 , ‘VERRE CRISTAL’ , 50 , 0.25 , NULL ) ,
( 22 , ‘FOURCHETTE INOX’, 10 , NULL , NULL )
* Insertion de 2 lignes dans la table PRODUIT avec spécification des attributs d’insertion
INSERT INTO PRODUIT ( N_Produit , Libellé_Produit )
VALUES ( 23 , ‘CUILLERE INOX’ ) , ( 24 , ‘COUTEAU INOX’ )
* Insertion de tous les tuples de la table PRODUIT dont le prix est supérieur à 200 DH dans la Table ARTICLE :
( la structure des colonnes dans la table cible doit être la même que celle des colonnes dans la table source )
INSERT INTO ARTICLE
SELECT N_Produit , Libellé_Produit , Prix_U FROM PRODUIT
WHERE Prix_U > 200 ;
* Requête interdite : la duplication des tuples d’une table par un INSERT avec une sous-requête sur la même table
INSERT INTO PRODUIT
SELECT * FROM PRODUIT ;
177
COMMANDE UPDATE : Forme générale
1ème Forme
UPDATE < Nom de Table >
SET < Attribut1 = Valeur1 > ,
< Attribut2 = Valeur2 > , etc …
[WHERE < critère de sélection simple
ou critère de sélection complexe appelant une sous-requête > ]
2ème Forme
UPDATE < Nom de Table >
SET < Attribut1 = Valeur1 > ,
< Attribut2 = Valeur2 > , etc …
FROM < liste de tables ou vues >
WHERE < critère de jointure naturelle, théta-jointure, jointure externe >
[ AND < critère de sélection simple > ]
[ AND < critère de sélection complexe appelant une sous-requête > ]
178
COMMANDE UPDATE : Exemples
Schéma relationnel : PRODUIT ( N_Produit , Libellé_Produit , Prix_U , Qté_Stock )
ACHETER ( N_Produit , N_Client , Qté_Achetée , Date_Achat )
CLIENT ( N_Client , Nom , Adresse , Tél , Chiffre_Affaire )
* Mise à jour du prix de tous les produits pour tenir compte d’une augmentation de 10 DH
UPDATE PRODUIT SET Prix_U = Prix_U + 10 ;
* Mise à jour des produits de luxe dont le prix est supérieur à 1000 DH seulement ( augmentation de 15 % )
UPDATE PRODUIT SET Prix_U = Prix_U * 1.15
WHERE Prix_U > 1000 ;
* Mise à la valeur nulle des adresses et téléphones et initialisation du chiffre d’affaires réalisé avec tous les clients
dont le nom commence par la lettre B ( dans le but de recommencer leur saisie )
UPDATE CLIENT SET Adresse = Null , Tél = Null , Chiffre_Affaire = 0
WHERE Nom LIKE ‘ B% ’ ;
* Mise à jour de la Qté en stock de tous les produits ayant fait l’objet de ventes durant la journée
du 10/01/2001 ( seule une vente par produit sera prise en compte à cette date )
UPDATE PRODUIT SET Qté_Stock = Qté_Stock - A.Qté_Achetée
FROM PRODUIT P , ACHETER A
WHERE P.N_Produit = A.N_Produit
AND A.Date_Achat = ‘ 10/01/01’
179
COMMANDE UPDATE : Exemples ( suite )
Attention !
Une instruction UPDATE ne met jamais à jour une même ligne à deux reprises.
Le schéma relationnel considéré suppose qu'un produit peut être vendu à plusieurs reprises
( acheté par plusieurs clients ) le même jour .
Avec l’ordre UPDATE précédent , il y aura exécution sans erreur, mais chaque produit ne sera mis à jour
qu'avec une seule vente, en dépit du nombre de ventes ayant réellement eu lieu à la date spécifiée .
Solution du problème :
Au cas où plusieurs ventes ont lieu le même jour pour un produit donné, toutes les ventes de chaque
produit doivent être additionnées dans l’ordre UPDATE et le stock mis à jour à l’aide de la somme obtenue ,
comme le montre l’ordre SQL suivant :
UPDATE PRODUIT P
SET Qté_Stock = Qté_Stock -
( SELECT SUM ( Qté_Achetée )
FROM ACHETER A
WHERE P.N_Produit = A.N_Produit
AND Date_Achat = ‘ 10/01/01’ ) ;
Les ordres LDD sont des instructions SQL créées à partir des commandes suivantes :
Commande Rôle
Chaque commande peut utiliser une ou plusieurs clauses obligatoires et des clauses optionnelles
182
COMMANDE CREATE TABLE : Forme générale
Les contraintes constituent une méthode normalisée par l’ANSI pour assurer l’intégrité des
données .
Chaque type d’intégrité ( de domaine , d’entité ou référentielle ) est mis en œuvre à l’aide de types
de contraintes spécifiques ( voir tableau ).
Les contraintes garantissent la validité des valeurs saisies dans les colonnes et le maintien des
relations entre les tables .
L’écriture d’un ordre CREATE TABLE utilisant ces contraintes peut différer légèrement suivant
le SGBD utilisé ( ACCESS , SQL Server , ORACLE , SYBASE , INFORMIX , etc… )
183
COMMANDE CREATE TABLE : Les Contraintes d’intégrité
1ère Forme :
ALTER TABLE < Nom de Table >
[ ADD < Nom attr. > < Type > [ < Contrainte d’attr. > ] ] , …
ou [ ADD CONSTRAINT < Nom contrainte > < Contrainte > ] , …
2ème Forme :
ALTER TABLE < Nom de Table >
[ DROP COLUMN < Nom attr. > ] , ...
ou [ DROP CONSTRAINT < Nom contrainte > ] , …
3ème Forme :
ALTER TABLE < Nom de Table >
[ ALTER COLUMN < Nom attr. > < Nouveau Type > [ < Contrainte d’attr. > ] ] , .
187
COMMANDE ALTER TABLE : Exemples ( Suite )
- Ajout d’une colonne simple à la structure d’une table
ALTER TABLE Vente ADD Commission MONEY NULL ;
But : Supprimer un objet table , index ou vue de la base de données en éliminant les
informations de structure liées à cet objet et les données qui lui sont attachées .
Exemples :
189
COMMANDE CREATE INDEX : Forme générale et Exemples
On utilise un index sur un attribut ou un groupe d’attributs de table dans les situations suivantes :
* Pour implémenter l’intégrité de relation ( de table ) permettant de garantir l’unicité des valeurs
de la clé primaire ( Commande CREATE INDEX avec le qualificatif UNIQUE )
* Pour définir une ou plusieurs clés candidates ( attributs à valeurs distinctes ) dans une table
* Pour accélérer le temps de réponse de certaines opérations de traitement sur la base de données
lorsque le nombre d’enregistrements des tables est très important :
- Recherche ou Tri croissant / décroissant sur une ou plusieurs colonnes
- Requête de sélection utilisant un filtre sur une ou plusieurs colonnes avec une clause WHERE
- Requête utilisant des jointures sur certains attributs communs à 2 ou plusieurs tables
On définit alors un indexe sur la ou les colonnes en question ( colonnes de recherche , de tri ,
de sélection , de jointure , etc… )
Exemples :
CREATE UNIQUE INDEX PK_Pilote ON Pilote ( N_Pilote ) ; // Clé primaire simple
CREATE UNIQUE INDEX PK_Stocker ON Stocker ( N_Produit , N_Dépôt ) ; // Clé primaire composée
CREATE INDEX IX_Vente ON Vente ( Date_V DESC , Réf_Produit ) ; // Index sur un couple
d’attributs de190
tri
COMMANDE CREATE VIEW : Forme générale et Exemples
CREATE VIEW < Nom de Vue > ( < Nom Attr. > , < Nom attr. > , … )
AS < Instruction SELECT > ;
1 - Notion de Vue : Une vue est une table virtuelle déterminée à partir d’autres tables à l’aide d’une requête de
sélection . Les données affichées par une vue ne sont pas physiquement stockées dans la base de données mais
correspondent au résultat de l’exécution d’une requête d’interrogation sur les données stockées dans d’autres
tables .
191
COMMANDE CREATE VIEW : Exemples ( Suite )
* Renforcement de la sécurité des données par masquage des attributs et des tuples dans les tables à certains
utilisateurs :
L’exemple suivant montre 2 vues définies pour 2 catégories de représentants commerciaux dans une entreprise :
ceux affectés à la région d’Agadir et ceux affectés à celle de Casa .
Chacune de ces vues permet d’obtenir les informations sur les clients d’une région mais ne donnent pas accès
aux données des autres régions ni à celles des autres attributs des tables Client et Commande .
CREATE VIEW Commande_Client_Agadir AS
SELECT A.N_Client , A.Nom_Client , B.N_Produit , B.Désignation , B.Qté_Commandée
FROM Client A , Commande B
WHERE A.N_Client = B.N_Client
AND A.Ville = ‘’Agadir ‘’ ORDER BY 2 , 3 ;
Check option specifie que aprés les opérations de modification les lignes
doievent continuer à être dans la vue.
Avec l’option cascaded le controle doit être etendu aux vues liées.
Avec l’option local le controle doit être effectué juste sur cette vue.
193
Vue et interrogations
194
Controle des accées
195
Ressources et priviléges
196
La commande grant
197
grant option
198
La commande revoke
Les priviléges peuvent être révoqués seulement par qui il les a accordés.
On peut provoquer une cascade de revocation.
Il n’est pas necessaire de revoquer tous les priviléges accordés.
199
Un exemple récapitulatif traité d’un cas réel
200
Descrizione del problema
L’associazione si occupa di disabili ed è in grado fornire numerosi
servizi medici e sociali (visite mediche, terapie riabilitative,
laboratori in cui si insegna informatica, comunicazione, ...)
I servizi vengono rimborsati all’associazione dalle ASL nel caso si tratti di
servizi coperti dal servizio sanitario
Le informazioni da gestire sono
dati medici relativi agli utenti
201
L’obbiettivo
dell’informazione
Creare un sistema informativo centralizzato
evita duplicazioni dell’informazione
premette agli operatori dell’associazione un semplice e immediato
accesso a tutte le informazioni disponibili
garantisce segretezza e sicurezza dei dati
202
Analisi del problema: i
requisiti generali
L’associazione possiede più di una sede:
i dati aggiornati devono essere disponibili in tutte le sedi
ove possibile, i dati devono essere modificabili da ogni sede
203
Analisi del problema: i
requisisti
La politica di sicurezza:
generali II
esistono quattro figure professionali con diritti di accesso
chiaramente distinti (medici, terapisti, segretari, amministratori)
con dati sensibili ci sono problemi di privacy
i diritti di accesso cambiano nel tempo e devono essere flessibili
Esempi paradossali:
i segretari devono avere accesso ai dati medici ?
sì, …. se i medici non imparano a scriversi le anamnesi!!
L’amministrazione modifica le anagrafiche pazienti ?
sì, … perché i pazienti forniscono nomi errati alle segreterie!!
204
Analisi del problema: i
requisisti generali
L’informatizzazione cambia il modo di lavorare
III
ridefinire i compiti del personale e i modi di interazione
vincoli troppo stretti bloccano il lavoro, troppo deboli permettono di fare
errori
il cambiamento sarà graduale e il sistema deve essere molto flessibile in
modo da affrontare gli inevitabili aggiustamenti
Esempi
Chi inserisce i dati anagrafici del paziente, i segretari alla prenotazione o i
medici alla prima visita ?
Le segreterie prenotano le visite, i medici segnalano le assenze dei
pazienti, gli amministratori controllano le autorizzazioni dell’ASL … come
essere sicuri di non perdere niente?
205
La struttura del sistema
Un DBMS per sede contiene una copia dei dati
garantisce la segretezza
fornisce strumenti per la sicurezza
fornisce strumenti per la replicazione fra le sedi
206
La struttura del sistema
Driver Applicazione
JDBC java Client 1
Server sede1
DBMS : : :
Driver Applicazione
JDBC java Client n
207
Analisi: pazienti e
personale
I pazienti sono caratterizzati da
nome, cognome, codice fiscale, data di nascita, recapito, residenza
asl e codice sanitario attuali
invalidità se presente
….
Personale operante nel centro
nome, cognome, indirizzo, ...
ruolo svolto nel centro
(medico, terapista,segretario,amministratore)
sede presso la quale il terapista opera
…
208
Schema concettuale:
pazienti e operatori
residenza recapito
209
Analisi: registrare le
prestazioni erogate
Un piano è un atto con cui l’ASL autorizza un paziente a effettuare un
certo numero di terapie presso il centro
paziente
numero di sedute autorizzate, tipologia della prestazione
medico autore della richiesta
stato del piano (previsto, scritto dal medico, autorizzato,…)
….
Una seduta è una prestazione erogata dall’associazione
piano cui la seduta si riferisce
medico/terapista che la eroga
orario di inizio e di fine
stato della seduta (prenotata, erogata, paziente assente, operatore
assente, contabilizzata ….)
210
Schema concettuale: piani
e sedute
Dati aut. ASL. terapis
tipo trattamento medici ti
stato
(0,N)
numero sedute (0,N) (0,N)
diagnosi Piani (1,1)
stesura
codice sanitario
sede
visita
(0,N)
terapia
(1,1)
(1,1)
ora inizio
(1,1) ora fine
afferenza Sedute data
tipo seduta
stato
211
Schema concettuale:
riassunto
Anagrafica Anagrafica
Pazienti Operatori
(0,N)
autorizzazione
amministrat
medici segretari terapisti
ori
(0,N) (0,N)
(0,N)
(1,1)
(1,1) terapia
Piani stesura visita
(0,N)
(1,1) (1,1)
(1,1)
afferenza
Sedute
212
La tabella operatori
Create table operatori (
id int not null primary key, Numero
cognome varchar (30) not null , crescente
nome varchar (30) not null ,
data_nas smalldatetime,
cit_nas varchar (30), Codici delle
pro_nas char (2), tre sedi
sede char (1) check(sede in (‘A’,’B’,’C’)),,
ruolo char (1) check(ruolo in (‘A’,’B’,’C’,’D’)),
ind_res varchar (50),
Codici dei
cit_res varchar (30),
ruoli
. . . .)
Realizza le
sottoclassi
213
La tabella pazienti
Create table pazienti ( Numero
id int not null primary key, crescente
cognome varchar (30) not null ,
nome varchar (30) not null ,
data_nas date,
cod_san char (12),
Codici delle
cod_fis char (16),
invalidita char (4),
deceduto bit, tre sedi
nota varchar (1000),
sede char (1) check(sede in (‘A’,’B’,’C’)),
.....
)
214
La tabella piani
Create table piani (
id int not null primary key, Riferimento
paziente int not null references pazienti(id), ai pazienti
operatore int refences operatori(id) ,
data_cre smalldatetime,
Riferimento
stato char (1) check(stato in (‘A’,’B’,’C’,’D’,’E’)),
num_sed int,
agli operatori
num_imp char (10),
usl char (5),
cod_usl char (5),
cod_san char (12),
....
)
215
La tabella sedute
Create table sedute (
id int not null,
Riferimento
piano int not null references piani(id),
ai piani
operatore int not null refernces operatori(id),
dalle datetime not null , Riferimento
alle datetime not null , ai medici o
stato char (1) check(stato in (‘A’,’B’,’C’,’D’,...)), terapisti
tipo char (1) check(stato in (‘A’,’B’,’C’,’D’,...)),
data datetime
.....
)
216
Pratica di programmazione:
i codici
Stato di un piano, di una seduta, trattamenti erogabili, … sono oggetti che
devono essere codificati
Si introduce un’entità astratta codici a cui tutti questi oggetti
appartengono
L’entità è realizzata con una tabella e gli oggetti con viste
Codici
218
Estrarre la lista dei piani e
dei pazienti
La seguente vista mostra i dati dei piani e dei pazienti, includendo anche i
pazienti che non hanno piani
219
Analisi: informazioni da
estrarre
Per semplificare le interrogazioni si creano viste in modo che
le interrogazioni dei client siano semplici, quasi tutte del tipo
SELECT attr1, attr2, …. FROM vista
le viste racchiudono il codice comune delle interrogazioni più
frequenti
le viste realizzano le interrogazioni più complesse
lista dei piani con contabilità delle visite erogate, rinviante, prenotate, …
220
Contare le sedute:
la funzione CASE
Una vista su sedute che trasforma lo stato in un attributo:
permette di contare le sedute secondo criteri diversi
CREATE VIEW sedute_espanse AS
SELECT id, data, piano, operatore,
CASE WHEN stato='A' THEN 1 ELSE 0 END AS Prenotata,
CASE WHEN stato=’B' THEN 1 ELSE 0 END AS Rinviata,
CASE WHEN stato=’C' THEN 1 ELSE 0 END AS Erogata,
CASE WHEN stato=’C' THEN 1 ELSE 0 END AS Erogata
FROM orario_ambulatoriale
I campi nulli sono presenti quando un piano non ha sedute di un certo tipo
Per trasformare i campi nulli si poteva usare la funzione coalesce
coalesce(expr1,expr2)
E’ equivalente a
case when expr1 is not null then expr1 else expr2 end
223
Estrarre la lista delle
sedute
Una vista che mostra le sedute, i nomi dei pazienti, i nomi degli operatori, il
numero delle sedute rimanenti
224
Estrarre la lista delle
sedute
paziente data dalle alle operatore rimanenti
Rossi paolo 2/2/01 8:30 9:00 trapattoni 10
Paperino paolino 3/2/01 12:00 13:00 disney 1
Benigni roberto 2/2/01 14:00 16:00 pinocchio 0
La vista lista_sedute calcola il numero delle sedute per ogni piano tutte le
volte che viene acceduta
computazionalmente costoso
225
L’attributo id e i trigger
Nelle maggior parte delle tabelle è presente un attributo id, che deve identificare
univocamente le righe
evitare di generare id uguali lavorando in sedi diverse
226
L’attributo id e i trigger II
Una possibile soluzione
ogni sede ha a disposizione una sequenza di indici: ad esempio 1, 11, 21,
31, 41 ...
un trigger si attiva ad ogni inserimento, legge in una tabella la sequenza
assegnata e inserisce il prossimo indice disponibile
Quando si
Create trigger mytrigger
attiva il
after insert on pazienti
update pazienti
trigger
set id=(select max(id)+10 from prova azion
where id%10=(select sequenza from servers
e
where name= “current server”) )
where id is null
227
Tenere traccia di chi fa
cosa
Memorizzare le modifiche fatte ai dati
attraverso il log del DBMS (troppo complicato)
usando dei trigger
228
L’attributo “ultima
modifica”
Le tabelle new_table, old_table
contengono le righe prima della modifica e dopo la modifica
sono in sola lettura
per modificare le righe già modificate deve esistere una chiave
MS SQL server permette il vincolo identity con cui si genera
automaticamente gli identificatori
Create table pazienti( Genera automaticamente
id int identity(1,10), . . .) id a partire da 1, a passi
create trigger mytrigger on pazienti for update as
di 10
update pazienti set data_modifica=getdate(),
utente_modifica=user_name()
where id in (select id from inserted) In MS SQL server,
inserted=new_tabl
e 229
Gestione dei dati
distribuiti
Cosa succede se i dati sono distribuiti su più server ?
Server collegati da una rete
230
Gestione dei dati
distribuiti II
La sede che possiede il record è indicata da un attributo presente
ogni tabella
Un trigger assicura che il vincolo sia rispettato
Per poter cambiare il proprietario di un record, il vincolo non si applica per
utenti con diritti speciali
A suivre…..
232