Académique Documents
Professionnel Documents
Culture Documents
Chaque ligne dune table reprend les donnes relatives une entit.
Chaque colonne dune table dcrit une proprit commune des entits.
Les lignes dune table sont distinctes. Cest sur une (voire plusieurs) colonne(s) que se joue cette unicit.
Le jeu de colonnes dont les valeurs sont uniques constitue un identifiant de la table.
Importance du SGBD
-
Organisation des donnes : tables permanentes stockes sur disque; il cre les mcanismes garantissant
un accs rapide aux donnes; il informe les utilisateurs sur ces structures.
Gestion des donnes garantit l'volution cohrente des donnes; il vrifie que les contraintes (unicit,
rfrence entre tables, etc.) sont respectes.
Accs aux donnes : permet l'accs aux donnes la fois par l'utilisateur occasionnel et par les
programmes de traitement de donnes.
Protection contre les accidents : garantit l'intgrit et l'accessibilit des donnes en cas d'incident
Gestion des accs concurrents : permet l'accs simultan aux donnes
Contrle des accs : garantit que seuls les utilisateurs autoriss peuvent accder aux donnes.
Cl trangre
Une cl trangre est un groupe de colonnes d'une table S tel qu'il existe, tout moment, dans une table T, une
ligne dont l'identifiant a pour valeur(s) celle(s) de ce groupe. La valeur de la cl trangre sert rfrencer une
ligne de la table T.
Si une des colonnes d'une cl trangre est facultative, il est recommand de les rendre toutes facultatives.
Une cl trangre et l'identifiant qu'elle rfrence ont la mme composition : mme nombre de colonnes et
colonnes de mmes types prises deux deux.
Il se peut que les colonnes d'une cl trangre appartiennent, en tout ou en partie, un identifiant.
Table
Le schma d'une table dfinit sa structure. Il spcifie notamment :
-
le nom de la table,
pour chaque colonne, son nom, son type, son caractre obligatoire,
l'identifiant primaire (liste des colonnes)
les identifiants secondaires ventuels (liste des colonnes)
les cls trangres ventuelles (liste des colonnes et table cible).
P a g e 1 | 11
Contraintes dintgrit
-
colonne obligatoire
contrainte d'unicit (pas 2 lignes avec la mme valeur)
contrainte rfrentielle.
COMMANDE
NCOM
NCLI
DATECOM
id: NCOM
ref : NCLI
CLIENT
NCLI
NOM
ADRESSE
id: NCLI
Supprimer une ligne client qui tait cl trangre d'une autre table de commandes. 4 Comportements :
-
T1 (dterminant, dtermin)
T2 (dterminant, rsidu)
T2.dterminant cl trangre vers T1
Une table sans dpendance fonctionnelle anormale est dite normalise. Dcomposer une table de manire
liminer ses dpendances anormales consiste normaliser cette table
P a g e 2 | 11
Index
On choisit une colonne indexe et la base de
donnes va crer des mtadonnes.
-
char(10),
char(32),
char(60),
char(30),
char(2),
decimal(9,2) );
Colonnes obligatoires
Une colonne est facultative par dfaut, il faut dclarer explicitement les colonnes obligatoires
create table CLIENT ( NCLI
Cl primaire
create table CLIENT ( NCLI
char(10) not null,
primary key (NCLI) );
Identifiants secondaires
create table CLIENT ( NCLI
char(10) not null,
NOM
char(32) not null,
primary key (NCLI),
unique (NOM) );
Cl trangre
create table COMMANDE (NCOM
char(12) not null,
NCLI
char(10) not null,
primary key (NCOM),
foreign key (NCLI) references CLIENT);
P a g e 3 | 11
Contraintes de colonne
create table CLIENT (NCLI char(10) not null primary key );
create table COMMANDE (NCOM
char(12) not null,
constraint COMPK primary key (NCOM));
table
table
table
table
table
table
table
table
table
Les index
create index XCLI_LOC on CLIENT (LOCALITE);
Select
select
select
select
select
CLIENT where
CLIENT where
CLIENT where
CAT in ('C1','C2','C3');
LOCALITE not in ('Toulouse','Breda');
COMPTE between 1000 and 4000;
Fonctions SQL
trim(both ' ' from ADRESSE)||' '||upper(LOCALITE)
position('NEUVE' in upper(ADRESSE)) > 0
upper(ADRESSE) like '%'||upper(LOCALITE)||'%'
cast(DATECOM as char(12))
CLI.COMPTE - cast(QCOM*PRIX as decimal(9,2))
extract(year from DATECOM) + 1
P a g e 4 | 11
Fonctions agrgatives
select 'Namur',avg(COMPTE) as Moyenne,
max(COMPTE)-min(COMPTE) as Ecart_max,
count(*) as Nombre$
select sum(QSTOCK*PRIX)
select distinct count(NCLI) SERA DIFFERENT DE select count(distinct NCLI)
Les Sous-requtes
Contrairement ce quon pourrait croire,
ceci nest pas un texte qui sert expliquer
le schma d ct, je trouvais juste que
un gros blanc comme a faisait vraiment
moche et je ne voulais pas non plus laisser
un schma qui aurait pris trop de place
sans aucun texte.
Jai hsit raconter ma vie au dbut puis
je me suis dit que au final, ctait toujours
plus intressant que de se manger encore
de la thorie pure parce que cest vrai
quoi, arriv ici dans la synthse, a
commence tre lourd.
En plus, le schma est relativement simple comprendre, il est self-explainatory comme ils disent en anglais
ou un truc du genre (non, je nirai pas vrifier lorthographe).
C est une variable qui chaque instant rfrence la ligne courante de CLIENT dans la requte externe (on
suppose qu'on examine successivement les lignes de CLIENT)
P a g e 5 | 11
Quantificateurs ensemblistes
Le prdicat exists(E), o E est une sous-requte, est vrai si l'ensemble dsign par E est non vide. Not exists(E),
est vrai si l'ensemble dsign par E est vide.
select NPRO, LIBELLE
from
PRODUIT as P
where exists (select *
from
DETAIL
where NPRO = P.NPRO);
Les jointures
La jointure permet de produire une table constitue de donnes
extraites de plusieurs tables.
select NCOM, CLIENT.NCLI, DATECOM, NOM, LOCALITE
from
COMMANDE, CLIENT
where COMMANDE.NCLI = CLIENT.NCLI;
Cette requte ignore les lignes de client qui nont pas de ligne
correspondante dans COMMANDE.
Les lignes suivantes seront dites clibataires
select '--', NCLI, '--', NOM, LOCALITE
from
CLIENT
where not exists (select * from COMMANDE
where NCLI = CLIENT.NCLI);
Les unions
Union permettra davoir la liste de tous les rsultats
diffrents en supprimant les doublons.
Intersect donnera les lments en commun entre les
deux tables seulement, sans doublons.
Except prend uniquement les lments qui nont aucun
doublon. Ici, il renverra GILLET et PONCELET
All permet davoir les doublons sur chacune des commandes prcdentes. Sur except, il permet davoir les
rsultats qui seraient galement dans T1 en plus des deux dj prsents.
Ces oprateurs peuvent tre combins entre eux (ex : diffrence symtrique)
P a g e 6 | 11
H.NPRO,H.LIBELLE,C.QTE,B.NPRO,B.LIBELLE
PRODUIT H, COMPOSITION C, PRODUIT B
C.COMPOSE = H.NPRO
C.COMPOSANT = B.NPRO
H.NPRO = 'p4';
P a g e 7 | 11
Having permet de restreindre avec une fonction dagrgation. Il ne sutilise pas sans group by
select LOCALITE, count(*), avg(COMPTE)
from
CLIENT
group by LOCALITE
having count (*) >= 3;
slection des groupes
La requte suivante est donc invalide car il faut galement Group By sur base de QSTOCK
select P.NPRO, QSTOCK - sum(D.QCOM) as SOLDE
from
DETAIL D, PRODUIT P
where D.NPRO = P.NPRO
group by P.NPRO;
Correction : group by P.NPRO, QSTOCK
Cette structure explique pourquoi les alias de select ne peuvent tre utiliss que dans le Order By alors que
ceux de From peuvent tre utiliss partout.
l'utilisateur crateur d'un objet (table, vue, index, procdure, etc.) en devient le propritaire; il peut
effectuer sur cet objet toutes les oprations techniquement permises;
le propritaire d'un objet peut accorder un autre utilisateur un privilge sur cet objet pour certaines
oprations;
le propritaire d'un objet peut autoriser l'utilisateur auquel il a accord un privilge transmettre tout
ou partie de celui-ci un troisime utilisateur;
le propritaire d'un objet peut retirer un privilge accord.
P a g e 8 | 11
all privileges
// donne toutes les autorisations dont on dispose
CLIENT
P_MERCIER, S_FINANCIERS
grant option;
// donne le droit de donner les autorisation
grant run
on
SUP_DETAIL
to
public;
revoke update(PRIX)
on
PRODUIT
from
P_MERCIER;
dans le dernier cas, si la personne avait transmis ses privilges dautres, il y a 2 cas possibles :
-
Notion de rles
Privilge associ un rle et rle
associ un utilisateur (permet de grer
les privilges plus simplement).
On peut rvoquer soit un privilge, soit
un rle entier. On ne peut pas donner
une partie de ses privilges, on donne
son rle.
Permet:
-
de donner des infos prcises un utilisateur qui n'a pas besoin de tout et qui en a besoin plusieurs fois
en peu de temps
limiter les accs en base de donnes
faire voluer la base de donnes (on cre une vue qui existe comme l'ancienne table existait)
crer des requtes complexes (une fonction agrgative sur le rsultat dune autre ne fonctionne pas)
o on cre une vue sur la 1re agrgative et une requte sur la vue pour la 2e agrgative.
On peut modifier les donnes depuis une vue (pas connaitre conditions)
P a g e 9 | 11
natural join: peut s'utiliser sur certains SGBD => on va chercher la cl primaire de l'un et rechercher s'il
trouve une colonne avec la mme syntaxe dans une autre table et cre une jointure dessus
cross join: est le produit relationnel (select et from sans where => tous les rsultats)
outer join remplace union
select *
from
CLIENT cross join COMMANDE
where ...
select *
from
CLIENT C join COMMANDE M
on (C.NCLI = M.NCLI)
where ...
P a g e 10 | 11
Les entits
Simples reprsentations de la ralit sous forme dobjet. Pour la gestion
dune cole, les diffrentes entits seraient par exemple : professeur,
tudiant, cours, local, examen.
Les attributs
Permettent de donner un caractre informationnel aux entits. Pour un tudiant, on peut avoir son nom, son
adresse ou une date de naissance.
Identifiants
Mme principe quune cl primaire, chaque entit aura son ou ses
identifiant(s) propre(s).
-
Exemple : Voyages en train (en gros, tu comprends le schma en dessous, tes bien parti)
P a g e 11 | 11