FORMATION DE BASE LA
BUSINESS INTELLIGENCE
01/07/2012
1/151
H I S T O R I Q U E
D E S
V O L U T I O N S
Auteur ALPHA
S O M M A I R E
01/07/2012
2/151
Chapitre 1
01/07/2012
3/151
2 CONCEPTS DU RELATIONNEL.........................................................................................14
2.1 2.2 2.3 2.4 2.5 Domaine et relation........................................................................................................14 Dpendance fonctionnelle.............................................................................................15 Les diffrentes cls........................................................................................................15 Normalisation.................................................................................................................16 Exercice sur les concepts du relationnel.......................................................................20
3 LE LANGAGE SQL.................................................................................................................21
3.1 Les oprateurs................................................................................................................21 3.2 Le langage de dfinition..................................................................................................24 3.3 Le langage de requte....................................................................................................30 3.4 Le langage de manipulation............................................................................................35 3.5 Le langage de contrle (Commandes DCL) => Cf Annexe...........................................37 3.6 Optimisation des requtes..............................................................................................38 3.7 Initiation aux procdures stockes.................................................................................40
2 LE PROCESSUS DCISIONNEL.........................................................................................79
2.1 La ralit des systmes dinformations..........................................................................79 2.2 Vue globale.....................................................................................................................80
3 LE DATAWAREHOUSE........................................................................................................81
3.1 Objectifs...........................................................................................................................81 3.2 Dfinition..........................................................................................................................81
01/07/2012
4/151
4 LES DATAMARTS..................................................................................................................83
4.1 Objectif............................................................................................................................83 4.2 Dfinition..........................................................................................................................83 4.3 Mise en place..................................................................................................................84
5 ANALYSE MULTIDIMENTIONNELLE.............................................................................85
5.1 Les axes danalyses........................................................................................................85 5.2 Les indicateurs................................................................................................................86 5.3 Navigation dans les donnes..........................................................................................87
2 ARCHITECTURE DCISIONNELLE.................................................................................96
2.1 Description des bases intermdiaires au DWH .............................................................96 2.2 Architecture ODS -> DWH..............................................................................................97 2.3 Architecture ODS -> DWH -> DTM.................................................................................98 2.4 Architecture ODS -> DTM...............................................................................................99
3 LA MODLISATION............................................................................................................101
3.1 Dfinition des lments constituants............................................................................101 3.2 Les diffrents types de modlisation dcisionnelle......................................................103 3.3 Gestion de lintgrit des donnes...............................................................................107
4 OPTIMISATION....................................................................................................................110
4.1 Agrgation de tables de faits........................................................................................110 4.2 Partitionnement de tables de faits................................................................................110
3 REPORTING..........................................................................................................................144
3.1 Degrs danalyse..........................................................................................................144 3.2 Cibles.............................................................................................................................145 3.3 Mtiers...........................................................................................................................145
01/07/2012
5/151
ITS Formation Base B.I. 3.4 Type utilisateurs............................................................................................................145 3.5 Exemple : Cognos ReportNet.......................................................................................146
01/07/2012
6/151
1 LA BASE DE DONNE
1.1 Introduction : langage SQL
Le SQL est un langage de requte structur (Structured Query Language) destin communiquer avec des bases de donnes relationnelles implmentes dans des SGBDR (Systme de Gestion de Bases de Donnes Relationnelles) tels que Oracle, Access, SQL Server ou encore Sybase. Le langage SQL permet d'effectuer diverses oprations comme la cration, l'extraction, la modification, la suppression, la fusion, etc., sur des collections de donnes, par l'intermdiaire d'instructions particulires appeles des commandes, souvent assistes d'ailleurs par des clauses ou des options. Malgr l'existence d'un standard destin assurer un degr de compatibilit optimal entre les diffrents SGBDR, les diteurs ont pour la plupart intgr des adjuvants, soit des extensions propritaires amliorant leur propre implmentation. L'ensemble de ce cours est videmment tributaire des diffrences entre les diffrentes implmentations.
<----------------------( Ligne )
Ces colonnes sont reprsentes d'une part par un nom individuel servant leur identification dans une table et d'autre part par un type de donnes pour le genre
01/07/2012
7/151
ITS Formation Base B.I. d'informations qu'elles comprennent comme du texte, des nombres, des dates et des heures ou encore des valeurs binaires (BLOB : Binary Large OBject) telles que des images. Fiche_Personne Prenom VARCHAR(20)
ID NUMBER(10)
Nom
VARCHAR(20)
CP NUMBER(5 )
Chaque enregistrement d'une table doit possder une cl unique, utilise pour les distinguer individuellement, l'image d'un numro de scurit sociale pour chaque individu. Une colonne spcialement conue cet effet doit contenir ce genre d'informations o aucun doublon n'est permis. Cette colonne est appele la cl primaire d'une table. L'indexation ainsi effectue permet un accs rapide et sans quivoque un enregistrement particulier d'une table. La manipulation des donnes s'effectue par l'intermdiaire de requtes regroupant plusieurs instructions SQL. Une requte prcise est capable entre autres, d'accomplir des extractions, des ajouts, des mises jour, des suppressions de donnes. L'excution de certaines requtes sur des bases de donnes peut retourner des objets spcifiques, comme des vues. Une vue est une table virtuelle dont le contenu est dtermin par une requte. Une vue possde donc une structure identique celle d'une table de base de donnes hormis que ses lignes et ses colonnes proviennent d'une plusieurs tables indiques dans la requte.
01/07/2012
8/151
ITS Formation Base B.I. instrustion_CREATE_VIEW instruction_GRANT }; La commande CREATE SCHEMA propose un moyen de crer des tables, des vues et d'accorder des privilges pour les objets partir d'une unique instruction.
Exemple :
NUMERIC(8, 0) -> 10 000 000 L'chelle d'une valeur numrique reprsente le nombre de chiffres de la partie dcimale, soit celle droite du sparateur dcimal, le point ou la virgule selon les spcifications du systme local.
Exemple :
NUMERIC(3, 5) -> 742.23876 Les donnes alphanumriques peuvent tre de longueur fixe ou variable. Dans le premier cas, il sera toujours demand un argument indiquant la taille en octets de la chane de caractres.
Exemple :
CHARACTER(10) La taille du texte est fixe 10 caractres. Dans le second cas, le type devra tre suivi d'une instruction spcifique, en l'occurrence VARYING permettant un champ d'accepter des chanes de caractres de taille variable. En outre, une taille maximum peut galement tre indique en argument.
Exemple :
CHARACTER VARYING(16384) La taille du texte est limite 16 384 caractres.
01/07/2012
9/151
01/07/2012
10/151
ITS Formation Base B.I. 000 caractres. CHAR(n) reprsente une chane de caractres non-Unicode d'une longueur fixe d'un maximum de 8 000 caractres. VARBINARY reprsente une valeur binaire de taille variable d'un maximum de 8 000 octets. BINARY reprsente une valeur binaire de taille fixe d'un maximum de 8 000 octets. IMAGE reprsente une valeur binaire de taille variable d'un maximum de 2 147 483 647 octets. UNIQUEIDENTIFIER reprsente un identificateur unique global (GUID : Global Unique IDentifier). CURSOR reprsente la valeur contenu dans un curseur.
01/07/2012
11/151
ITS Formation Base B.I. VARCHAR. VARCHAR(Nb_Octet) VARCHAR2(Nb_Octet) Reprsente une chane de caractres d'une longueur variable maximum de 4 096 octets. LONG VARCHAR(Nb_Octet) Reprsente une chane de caractres d'une longueur variable maximum de 2 gigaoctets. CLOB reprsente une grande chane de caractres UNICODE-UCS-2 d'une longueur variable d'un maximum de 2 gigaoctets. BIT(Nb_Bit) reprsente la valeur d'un bit, soit 0 ou 1. RAW(Nb_Octet) reprsente des donnes binaires brutes d'une taille maximum de 2 000 octets. BINARY(Nb_Octet) reprsente une valeur binaire de taille fixe d'un maximum de 4 096 octets VARBINARY(Nb_Octet) utilis pour le stockage, reprsente une valeur binaire d'une longueur variable. LONG VARBINARY(Nb_Octet) utilis pour le stockage, reprsente des donnes binaires brutes d'une taille variable maximum de 2 gigaoctets. LONG reprsente une chane de caractres d'une longueur variable d'une taille maximum de 2 gigaoctets. LONG RAW(Nb_Octet) reprsente des donnes binaires brutes d'une taille maximum de 2 gigaoctets. BLOB reprsente une grande valeur binaire d'une taille d'un maximum de 2 147 483 647 octets. ROWID reprsente une valeur hexadcimale de 16 octets reprsentant l'adresse unique d'une ligne de tableau.
01/07/2012
12/151
ITS Formation Base B.I. respectivement la mise jour ou la suppression de lignes de donnes mise en relation rfrentielles par la cl concordante. La commande CONSTRAINT permet de dfinir une contrainte sur une colonne lors de la cration d'une table. Syntaxe : CONSTRAINT Dfinition_Contrainte Les contraintes peuvent tre modifies ou supprimes par l'intermdiaire de la commande ALTER TABLE. Syntaxe : ALTER TABLE nom_table MODIFY CONSTRAINT nom_contrainte ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte
Exemple :
CREATE TABLE Personne ( ID INTEGER PRIMARY KEY, ID_Service INTEGER NOT NULL, Nom VARCHAR(20) NOT NULL, Prenom VARCHAR(20) NOT NULL, Date_Naissance DATE NOT NULL, Ville_Naissance VARCHAR(20) NOT NULL, Situation_Familiale NOT NULL, Adresse VARCHAR(50) NOT NULL, Code_Postal INTEGER NOT NULL, Ville VARCHAR(20) NOT NULL, Telephone INTEGER NULL, eMail VARCHAR(50) NULL UNIQUE, CONSTRAINT CONST_ID FOREIGN KEY ID_Service REFERENCE TABLE_Service(ID) ON UPDATE CASCADE ON DELETE CASCADE )
GEOGRAPHIE Ville varchar(128) Postal Code integer Transport Code char(1) Transport Type varchar(64) Frequence Transport Paris integer Region Code varchar(5) Region Descritpion varchar(164)
01/07/2012
13/151
2 CONCEPTS DU RELATIONNEL
2.1 Domaine et relation
2.1.1 Dfinition
Un domaine est un ensemble de valeurs smantiquement homognes
Exemple :
Prenons la table CINEMA : DOM_NOM = {UGC Le Renoir, Espace Cin, Le Fontenelle} DOM_CODE = {01, 04, 02} Toute donne ne doit pouvoir tre insre dans la base que si elle satisfait la dfinition de son domaine. Cette vrification doit tre assure par le SGBD. Il faudrait pour cela pouvoir dfinir les domaines grce un Langage de Dfinition des Donnes (DDL en anglais) qui reste crer. Certes il existe un DDL SQL normalis ISO, mais il nest pour linstant mis en uvre par aucun SGBD du march. En revanche, beaucoup de SGBD du march ont dfini un typage de donnes, c'est--dire des rgles que doivent respecter les donnes. Cest pour linstant ce qui se rapproche le plus de la notion de domaine
Une relation est un sous ensemble (dot dun prdicat et doprateurs) du produit cartsien dune liste de domaines, tel que chaque ligne satisfasse un critre de vrit du micromonde modlis.
Exemple :
Produit cartsien des deux domaines dfinis les plus hauts : DOM_CODE x DOM_NOM Cinma Code Le Fontenelle Le Renoir Espace Cin Cinma Nom 01 03 04
2.1.2 Terminologie
Relation nest pas synonyme de table. Une table nest quune relation dun type particulier. Il existe dautres relations qui ne sont pas des tables : les vues Degr dune relation : nombre dattributs
01/07/2012
14/151
ITS Formation Base B.I. Cardinalit dune relation : nombre de lignes Schma dune relation : nom de la relation, suivi de la liste de ses attributs (Ex : CINEMA {CODE, NOM})
Exemple :
Dans la table CINEMA, CODE -> NOM Dans la table JOUER, ACTEUR NOM -> ACTEUR PRENOM (seulement si pas dhomonyme) Remarque Dans la ralit, rares sont les attributs naturels qui sont dterminants dautre attributs. On a donc frquemment recours des attributs artificiels qui dterminent tous les autres. La cration de tels identifiants artificiels ne doit tre ralise quen cas de besoin rel, et respecter des rgles qui requirent des comptences en modlisation des donnes et ne font pas lobjet de ce cours. Il est en particulier indispensable dinventorier la totalit des dpendances fonctionnelles de la relation pour sassurer quune combinaison de ses attributs naturels ne dtermine pas les autres
01/07/2012
15/151
2.3.1 Cl candidate
Ensemble minimum dattributs qui dterminent tous les autres Elle peut tre simple (mono-attribut) ou multi-attributs
2.3.2 Cl primaire
Cl choisie parmi les cls candidates Par dfinition, la cl primaire nous permet didentifier de faon unique chacune des lignes de la table. Comme, par dfinition, cette cl primaire est compose dun ensemble minimum dattribut, il faut respecter la rgle dintgrit dentit : Aucun des attributs de la cl primaire ne peut prendre la valeur nulle
2.4 Normalisation
2.4.1 Premire forme normale
Une table est en premire forme normale si : Pour une ligne et un attribut de donnes, on ne peut trouver au plus quune valeur
Exemple :
Table Non first Normal Form JOUER Acteur Nom Kidman Wayne Cruise Table 1NF JOUER Acteur Nom Kidman Wayne Cruise Cruise Remarque sur les Valeurs Nulles La premire forme normale interdit davoir plus dune valeur pour une ligne et un attribut de donnes. 01/07/2012 16/151 Acteur Prnom Nicole John Tom Pnlope Acteur Prnoms Nicole John Tom, Pnlope
ITS Formation Base B.I. Il est en revanche possible de ne pas avoir de valeur pour une ligne et une colonne donnes. Attention, Nulle ne veut pas dire gale zro mais non connue La normalisation consiste liminer les redondances induites par le respect de la premire forme normale Pour cela on dfinit six tapes de normalisation : 1NF, 2NF, 3NF, BCNF, 4NF et 5NF
Exemple :
Soit la relation (en premire forme normale), qui permet de stocker des informations sur les films et les acteurs associs : JOUER Jouer Code 01 02 03 05 06 Titre Dogville Dogville Dogville Breaking the waves Pulp Fiction Acteur Nom Kidman Bettany Skarsgard Skarsgard Travolta Acteur Prnom Nicole Paul Stellan Stellan John Rle Grace Tom Edison Chuck Jan Vincent Vega
Cette relation contient un certain nombre de redondances dinformations et sera, de ce fait, difficile manipuler sans perdre dinformations ou introduire des incohrences. Difficults pour les mises jour lies aux redondances : Si Skarsgard change de nom (dans cet exemple, peu probable), il faut mettre jour toutes les lignes qui le rfrencent. Difficults lors des suppressions : Supprimer la ligne (05) fait perdre les informations relatives au film et lacteur dont les existences ne sont pas forcment lies.
01/07/2012
17/151
Exemple :
En partant des informations stockes dans la table Jouer, on dfinit les rgles de gestion suivantes : Un film peut avoir plusieurs acteurs Un acteur peut travailler sur plusieurs films Seul le couple (Film Code, Acteur Code) dtermine lensemble des autres attributs. Il doit donc tre choisi comme cl primaire La relation initiale doit donc tre fragmente en 3 relations respectant la 2me forme normale. FILM JOUER ACTEUR Film Code Film Code Acteur Code Titre Acteur Code Nom Genre Rle Prnom Date
Exemple :
Dans la table Cinma, une rgle de gestion simpose : un type de cinma ne correspond quun groupe de cinma. CINEMA Cinema Code 01 02 03 04 05 Cinema Nom UGC Le Renoir Le Fontenelle Gaumont Wilson Espace Cin Le toulouse Ville Aix-enProvence Marly-le-Roi Toulouse Epinay-surSeine Toulouse Cinema Type C1 C0 C2 C0 C0 Cinema Groupe UGC Indpendant Gaumont Indpendant Indpendant
La dpendance fonctionnelle Cinema Code -> Cinema Groupe est transitive et cela induit de la redondance : Cinema Code -> Cinema Type -> Cinema Groupe CINEMA doit donc tre dcompose pour respecter la troisime forme normale : CINEMA Cinema Code Cinema Nom Ville Cinema Type
01/07/2012
18/151
ITS Formation Base B.I. CINEMA TYPE Cinema Type Cinema Groupe
2.4.5 Rcapitulatif
Schmatiquement, on peut dire quune relation est normalise 3FN lorsque : Elle a une cl primaire qui identifie chaque ligne de manire unique Tout attribut non cl dpend : o De la cl o De toute la cl (2NF) o Rien que de la cl (3NF) Avantage : la redondance est limite aux cls Risque : il faut sassurer que les valeurs de la cl dune relation duplique dans une autre existent bien dans la relation dont elles sont senses tre issues. On parle dintgrit rfrentielle qui peut tre assure par les programmes applicatifs et/ou le SGBD.
On dit alors que les tables FILM et JOUER dune part, ACTEUR et JOUER dautre part, doivent respecter le principe dintgrit rfrentielle. Dfinitions La table qui contient les valeurs de rfrence de lattribut est dite table parente (ou de rfrence). Une table qui fait rfrence cet attribut est dite table fille (ou dpendante) La colonne Film Code de la table JOUER est une cl trangre faisant rfrence la table FILM. La colonne Acteur Code de la table JOUER est une cl trangre faisant rfrence la table ACTEUR. La cl trangre, ciment des relations, ne peut avoir une autre valeur que : Nulle Egale une valeur de la cl primaire de la relation parent Si lintgrit rfrentielle nexiste pas ou nest pas mise en uvre, elle doit tre alors prise eb charge par les programmes applicatifs, qui assurent de ce fait une partie des tches du SGBD.
01/07/2012
19/151
Rponses 1/ Postal Code <-> Ville ; Transport Code <-> Transport Type ; Transport Code -> Frquence Transport Paris ; Postal Code -> Frquence Transport Paris ; Ville -> Frquence Transport Paris ; Transport Type -> Frquence Transport Paris ; Postal Code -> Rgion Code ; Ville -> Rgion Code ; Postal Code -> Rgion Description ; Ville -> Rgion Description ; Rgion Code <-> Rgion Description ; 2/ (Ville, Transport Code) (Ville, Transport Type) (Postal Code, Transport Code) (Postal Code, Transport Type) Cl primaire : (Postal Code, Transport Code) => il est prfrable dutiliser des codes integer (surtout en cas dhomonyme de villes par exemple). 3/1NF 4/ 2NF VILLE FREQUENCE TRANSPORT 3NF VILLE REGION FREQUENCE TRANSPORT
Rgion Code
Rgion Description
Transport Type
Ville
Rgion Code
5/ Cls trangres : Postal Code dans table Frquence, Transport Code dans table Frquence, Rgion Code dans table Rgion Parent/Fille : Ville/Frquence, Transport/Frquence, Rgion/Ville
01/07/2012
20/151
3 LE LANGAGE SQL
3.1 Les oprateurs
3.1.1 Oprateurs arithmtiques et de concatnations
Ces oprateurs permettent d'effectuer des calculs arithmtiques ou des oprations de concatnation l'intrieur de requtes SQL. Instruction SELECT Col1 - ((Col1 * Col2)/100), Col2 FROM Table1 Les oprateurs arithmtiques et de concatnations Expression1 + Expression2 accomplit l'addition des deux expressions. Expression1 - Expression2 accomplit la soustraction des deux expressions. Expression1 * Expression2 accomplit la multiplication des deux expressions. Expression1 / Expression2 accomplit la division de la premire expression par la seconde. Expression1 % Expression2 accomplit le modulo des deux expressions. Expression1 + Expression2 (|| sous Oracle) accomplit la concatnation de deux expressions. Le signe plus + est utilis par SQL Server et || par Oracle.
Exemple :
SELECT TITRE, ACTEUR_NOM + ' '+ ACTEUR_PRENOM FROM JOUER WHERE GENRE = 'Epouvante' Faux-Semblants Irons Jeremy
ITS Formation Base B.I. Expression1 { != | <> | ^= } Expression2 vrifie la diffrence entre les deux expressions. Expression1 > Expression2 vrifie si la premire expression est suprieure la seconde. Expression1 >= Expression2 vrifie si la premire expression est suprieure ou gale la seconde. Expression1 !> Expression2 vrifie si la premire expression n'est pas suprieure la seconde. Expression1 < Expression2 vrifie si la premire expression est infrieure la seconde. Expression1 <= Expression2 vrifie si la premire expression est infrieure ou gale la seconde. Expression1 !< Expression2 vrifie si la premire expression n'est pas infrieure la seconde.
Exemple :
SELECT * FROM PROJECTION WHERE Jour >= '20020502' 2002-05-03 2002-05-02 05 05 02 02
Exemple :
SELECT titre FROM JOUER WHERE Genre='Drame' and date >= '20000101' Dogville
01/07/2012
22/151
ITS Formation Base B.I. A l'instar des oprateurs de comparaison symboliques, les oprateurs logiques provoquent le retour d'une valeur boolenne True ou False. Souvent, les oprateurs logiques ne comparent pas deux expressions, mais une seule par rapport une valeur dtermine soit par le type de l'oprateur comme IS NULL, soit par un modle pass en paramtre comme pour LIKE. Les oprateurs logiques Expression1 { =, !=, >, <, <=, >=, !<, !> } ALL (Expression2) retourne True si la comparaison entre les expressions Expression1 et Expression2 est True sur toutes les paires (valeur_Expression1, valeur_Expression2). Expression1 { =, !=, >, <, <=, >=, !<, !> } ANY | SOME (Expression2) retourne True si la comparaison entre les expressions Expression1 et Expression2 est True sur quelques paires (valeur_Expression1, valeur_Expression2). Expression_Test [ NOT ] BETWEEN Expression_Dbut AND Expression_Fin = True | False dfinit un intervalle sur lequel la recherche doit tre applique. EXISTS (Sous-Requte) retourne True si l'enregistrement point par la sous-requte existe. Expression_Test [ NOT ] IN ( Sous-Requte | Expression ) retourne True si l'expression correspond ou ne correspond pas (NOT) une des valeurs pointes par la sous-requte ou l'expression. Expression IS [NOT] NULL indique si la valeur est nulle ou non-nulle (NOT). Expression IS [ NOT ] OF Type_Donnes retourne True si l'expression possde ou ne possde pas (NOT) le type de donne indiqu. Expression [ NOT ] LIKE Modle [ ESCAPE Caractre_Echappement ] retourne True si le modle correspond l'expression. Le modle peut comporter des caractres gnriques %, _, [Caractres] ou [^Caractres] reprsentant respectivement une chane de zro plusieurs caractres, n'importe quels caractres, l'inclusion ou l'exclusion d'un plusieurs caractres. Le caractre d'chappement permet d'inclure un caractre gnrique prcit dans la mise en correspondance. NOT (Expression) retourne la valeur boolenne inverse de l'expression. UNIQUE (Expression) retourne la valeur boolenne True si l'expression ne possde pas de doublons.
Exemple :
SELECT * from projection WHERE jour is NOT NULL Toutes les lignes retournes
01/07/2012
23/151
ITS Formation Base B.I. Requte1 UNION Requte2 retourne toutes les lignes slectionnes par l'une et l'autre des requtes. Requte1 UNION ALL Requte2 retourne toutes les lignes slectionnes par l'une et l'autre des requtes en incluant tous les doubles. Requte1 INTERSECT Requte2 retourne les lignes distinctes slectionnes par les deux requtes. Requte1 MINUS Requte2 retourne les lignes distinctes slectionnes par la premire requte mais pas par la seconde.
Exemple :
SELECT Jour FROM PROJECTION WHERE Jour >= '20020502' UNION SELECT date FROM JOUER WHERE Genre='Drame' and date >= '20000101' 2002-01-01 2002-05-02 2002-05-03 SELECT Jour FROM PROJECTION WHERE Jour >= '20020502' UNION ALL SELECT date FROM JOUER WHERE Genre='Drame' and date >= '20000101' 2002-01-01 2002-01-01 2002-01-01 2002-05-02 2002-05-03
01/07/2012
24/151
ITS Formation Base B.I. ( nom_col type [ NULL | NOT NULL | PRIMARY KEY | UNIQUE ], [ nom_colN type [ NULL | NOT NULL | PRIMARY KEY | UNIQUE ] ] ); Avant d'excuter une telle commande, il est ncessaire de rassembler certains lments indispensables. Un nom de table unique doit tre prcis afin de l'identifier dans la base de donnes. Pour chaque colonne crer l'intrieur de la table, il faut spcifier des noms de colonnes distincts. Chaque colonne ncessitant un type de donne, il faut indiquer le type de donnes assigner chacune des colonnes crer. Toute table ncessitant une colonne faisant office de cl primaire, il faut imprativement en dterminer une avec une contrainte d'unicit UNIQUE. Des contraintes peuvent tre galement spcifies pour les valeurs d'une colonne lors de la cration de la table. NULL NOT NULL PRIMARY KEY UNIQUE : indique que la colonne peut contenir des valeurs nulles. : indique que la colonne ne peut contenir de valeurs nulles. : indique que la colonne constitue la cl primaire de la table. : impose que chaque valeur de la colonne doit tre unique.
Plus prcisment, les contraintes peuvent tre appliques au moyen de la clause CONSTRAINT.
Exemple :
create table JOUER ( JOUER_CODE int not null, FILM_CODE int not null, TITRE varchar(128) null, GENRE varchar(64) null, DATE datetime null, ACTEUR_CODE int not null, ACTEUR_NOM varchar(64) null, ACTEUR_PRENOM varchar(64) null, ROLE varchar(128) null, constraint PK_JOUER primary key (JOUER_CODE) ) go JOUER JOUER_ FILM_ ACTEUR ACTEUR_ ACTEUR_ TITRE GENRE DATE CODE CODE _CODE NOM PRENOM ... ... ... ... ... ... ... ...
ROLE ...
01/07/2012
25/151
01/07/2012
26/151
Exemple :
ALTER TABLE projection ADD prix DECIMAL(7, 2) GO Ajout dune colonne prix ALTER TABLE projection ALTER COLUMN prix DECIMAL(5, 0) GO Modificaction du format de la colonne prix ALTER TABLE projection DROP COLUMN prix GO Suppression de la colonne prix
Exemple :
DROP TABLE jouer
01/07/2012
27/151
Exemple :
TRUNCATE TABLE jouer
Exemple :
CREATE INDEX idx_jouer1 ON jouer (jouer_code) CREATE INDEX idx_jouer2 01/07/2012 28/151
01/07/2012
29/151
ITS Formation Base B.I. L'instruction OR REPLACE cre nouveau la vue si elle existe dj. Les clauses FORCE et NOFORCE indiquent respectivement que : o la vue est cre sans se soucier de l'existence des tables qu'elle rfrence ou des privilges adquats sur les tables, o la vue est cre seulement si les tables existent et si les permissions requises sont donnes. La clause WITH CHECK OPTION limite les insertions et les mises jour excutes par l'intermdiaire de la vue. La clause CONSTRAINT est un nom optionnel donn la contrainte WITH CHECK OPTION.
La modification d'une vue s'effectue au moyen de la commande ALTER. L'instruction OR REPLACE vu prcdemment spcifique Oracle peut tre galement utilise pour modifier la vue. Instruction ALTER VIEW [ nom_base . ] [ propritaire . ] nom_vue [ ( nom_colonne [ ,...n ] ) ] [ WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } [ ,...n ] ] AS instruction_selection... [ WITH CHECK OPTION ] Les vues peuvent tre supprimes par l'intermdiaire de la commande DROP. Instruction DROP VIEW nom_vue;
Exemple :
CREATE VIEW vue_personnel AS SELECT jouer_code, film_code, titre, genre, date FROM jouer WHERE genre='drame' Table cre avec 5 colonnes et alimente partir de la table Jouer filtre sur le genre Drame
01/07/2012
30/151
Exemple :
Select Titre from jouer Where Genre = 'Drame' Dogville Dogville Dogville Breaking the waves Breaking the waves 01/07/2012 31/151
ITS Formation Base B.I. Crash Crash Crash Chasseur blanc, coeur noir Select Distinct Titre from jouer Where Genre = 'Drame' Breaking the waves Chasseur blanc, coeur noir Crash Dogville
Il existe deux types d'alias : les alias de tables et les alias de champs. Les alias peuvent galement s'appliquer une fonction d'agrgation retournant des donnes sous forme de colonnes. Instruction SELECT Alias_table.nom_champ AS Alias_champ FROM nom_table AS Alias_table La clause AS affectant un alias une table ou une colonne, peut tre remplac par un simple espace blanc.
Exemple :
Select T1.Ville, T1.Cinema_nom Cinema, T2.Jour from cinema T1, projection T2 where T1.cinema_code=T2.cinema_code and T1.cinema_type='C0' Ville Marly-le-Roi Marly-le-Roi Epinay-sur-Seine Epinay-sur-Seine Marly-le-Roi Marly-le-Roi Marly-le-Roi Marly-le-Roi Cinema Le Fontenelle Le Fontenelle Espace Cin Espace Cin Le Fontenelle Le Fontenelle Le Fontenelle Le Fontenelle Jour 1985-05-09 00:00:00.000 1990-12-08 00:00:00.000 1994-04-08 00:00:00.000 1994-11-06 00:00:00.000 1996-12-02 00:00:00.000 2002-05-01 00:00:00.000 2002-05-02 00:00:00.000 2002-05-03 00:00:00.000
01/07/2012
32/151
ITS Formation Base B.I. La commande GROUP BY spcifie des groupes dans lesquels les lignes de sortie doivent tre places et calcule une valeur de rsum pour chacun des groupes si des fonctions d'agrgation sont employes avec la commande SELECT. Instruction SELECT nom_champ, Fonction_Agregation FROM nom_table GROUP BY nom_champ2 Le critre de la clause GROUP BY peut tre soit le nom, soit le numro d'une des colonnes slectionnes par la requte.
Exemple :
ALTER TABLE projection ADD prix DECIMAL(7, 2) GO Select cinema_code , sum(prix) prix from projection WHERE Jour <= '20000101' GROUP BY cinema_code Cinema_code 1 2 3 4 Prix NULL NULL NULL NULL
Exemple :
Select distinct acteur_nom, acteur_prenom from jouer WHERE Genre ='Drame' 01/07/2012 33/151
ITS Formation Base B.I. ORDER BY acteur_nom Arquette Bettany Eastwood Hunter Kidman Skarsgard Spader Watson Rosanna Paul Clint Holly Nicole Stellan James Emily
Exemple :
Select T1.Ville, T1.Cinema_nom Cinema, T2.Jour from cinema T1, projection T2 where T1.cinema_code=T2.cinema_code and T1.cinema_type='C0' Ville Marly-le-Roi Marly-le-Roi Epinay-sur-Seine Epinay-sur-Seine Marly-le-Roi Marly-le-Roi Marly-le-Roi Marly-le-Roi Cinema Le Fontenelle Le Fontenelle Espace Cin Espace Cin Le Fontenelle Le Fontenelle Le Fontenelle Le Fontenelle Jour 1985-05-09 00:00:00.000 1990-12-08 00:00:00.000 1994-04-08 00:00:00.000 1994-11-06 00:00:00.000 1996-12-02 00:00:00.000 2002-05-01 00:00:00.000 2002-05-02 00:00:00.000 2002-05-03 00:00:00.000
01/07/2012
34/151
ITS Formation Base B.I. Les jointures externes OUTER JOIN sont employes pour retourner tous les enregistrements, y compris ceux ne possdant aucune correspondance. Ces jointures peuvent s'appliquer gauche (LEFT), droite (RIGHT) ou sur les deux (FULL). Instruction ( gauche) SELECT T1.Nom_champ1, T2.Nom_champ2 FROM Nom_table1 T1, Nom_table2 T2 WHERE T1.Nom_Champ_joinA(+) = T2.Nom_Champ_joinA SELECT T1.Nom_champ1, T2.Nom_champ2 FROM Nom_table1 T1 LEFT OUTER JOIN Nom_table2 T2 ON T1.Nom_Champ_joinA = T2.Nom_Champ_joinA
Exemple :
Select T1.Ville, T1.Cinema_nom Cinema, T2.Jour from cinema T1 LEFT OUTER JOIN projection T2 ON T1.cinema_code=T2.cinema_code Where T1.cinema_type='C0' Ville Marly-le-Roi Marly-le-Roi Epinay-sur-Seine Epinay-sur-Seine Marly-le-Roi Marly-le-Roi Marly-le-Roi Marly-le-Roi Toulouse Cinema Le Fontenelle Le Fontenelle Espace Cin Espace Cin Le Fontenelle Le Fontenelle Le Fontenelle Le Fontenelle Le toulouse Jour 1985-05-09 00:00:00.000 1990-12-08 00:00:00.000 1994-04-08 00:00:00.000 1994-11-06 00:00:00.000 1996-12-02 00:00:00.000 2002-05-01 00:00:00.000 2002-05-02 00:00:00.000 2002-05-03 00:00:00.000 NULL
3.4.1 Insertion
La commande INSERT INTO permet d'ajouter des donnes dans une table. Instruction INSERT INTO Nom_Table (Champ_1, Champ_2, ..., Champ_N) VALUES (Valeur_1, Valeur_2, ..., Valeur_N)
01/07/2012
35/151
ITS Formation Base B.I. L'ajout de donnes dans une table demande videmment, la parfaite connaissance de la structure de la table, puisqu'il est ncessaire de fournir le nom des champs dans le bon ordre et des informations correspondant leur type de donnes respectifs. Les valeurs de colonnes doivent tre encadres par des guillemets simples (') s'il s'agt de chane de caractres, les nombres ne ncessitant pas de guillemets. VALUES ('Chane de caractres', 100) Il est galement possible d'insrer des donnes provenant d'une autre table par l'intermdiaire d'une commande SELECT. Une clause WHERE peut tre ajoute avec des conditions pouvant comporter des sous-requtes. Instruction INSERT INTO Nom_Table SELECT nom_champ, ..., Nom_champN FROM nom_table WHERE Condition L'insertion de valeur nulle peut se faire par l'intermdiaire du mot-cl NULL ou d'une chane vide ''.
Exemple :
insert into JOUER values(1,5,'Dogville','Drame','01/01/2002',01,'Kidman', 'Nicole','Grace'); insert into JOUER values(2,5,'Dogville','Drame','01/01/2002',02,'Bettany','Paul',' Tom Edison') ; Lorsque la liste des valeurs est complte, on peut omettre les noms de colonnes
01/07/2012
36/151
ITS Formation Base B.I. Instruction UPDATE nom_table1 AS tab1 SET tab1.nom_champ = valeur WHERE tab1.nom_champ IN (SELECT tab2.nom_champ FROM nom_table2 AS tab2 WHERE Condition)
Exemple :
UPDATE JOUER SET acteur_nom = 'Cruise' WHERE Jouer_code=1 1 enregistrement mis jour
3.4.3 Suppression
La commande DELETE FROM permet de supprimer des enregistrements au sein d'une table. Instruction DELETE FROM Nom_Table WHERE Condition La clause conditionnelle WHERE dtermine les enregistrements slectionner pour effectuer leur suppression complte de la table. Une sous requte peut tre utilise pour slectionner des enregistrements supprimer. Instruction DELETE FROM Nom_Table AS tab1 WHERE tab1.nom_champ = (SELECT tab2.nom_champ FROM nom_table AS tab2 WHERE Condition)
Exemple :
DELETE from JOUER WHERE Genre='drame' 9 enregistrements mis jour
01/07/2012
37/151
Exemple :
substr(name, 1,2)=DU amount * 12>20000 amount + 0 = 1200 trunc(date) = 01-JAN-2000 name||=DUPONT name not = DUPONT De plus un index ne peut tre utilis avec les oprateurs suivants : != IS NULL IS NOT NULL NOT IN avec une liste LIKE avec une colonne de type date ou numrique LIKE avec une chane de comparaison dbutant par un mta caractre (% par exemple). NOT IN avec une sous interrogation peut utiliser un index, mais on utilisera de prfrence NOT EXISTS surtout si la colonne slectionne peut contenir des valeurs nulles. En consquence, il faut essayer dappliquer les fonctions aux constantes ou aux colonnes non indexes. Un index compos de plusieurs colonnes sera utilis si les premires colonnes le composant sont renseignes dans la clause WHERE.
01/07/2012
38/151
ITS Formation Base B.I. Une table sera accde beaucoup plus rapidement par rowid que par un full scan. Ces notions sont importantes puisquon les retrouve dans les plans dexcution des requtes que lon est amen optimiser. Avant de commencer analyser veiller ce que lcriture des ordres SQL se rapproche le plus possible des principes suivants
01/07/2012
39/151
3.6.2.7 Sous-select
Eviter au maximum leur utilisation. Prfrer les jointures et ventuellement la clause EXISTS.
3.6.2.10
Ordre DELETE
Utiliser quand cest possible le rowid ou la rfrence du curseur pour les mises jour. Utiliser lordre TRUNCATE pour supprimer tout le contenu dune table (cet ordre provoque un commit implicite).
01/07/2012
40/151
ITS Formation Base B.I. [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS instructions_SQL... GO La clause VARYING, applicable aux paramtres de type CURSOR, indique le jeu de rsultats pris en charge comme La clause OUTPUT permet de retourner la valeur aux instructions appelantes. L'instruction WITH RECOMPILE spcifie que la procdure est recompile l'excution sans utiliser le cache pour le plan de la procdure. L'option RECOMPILE est gnralement utilise pour des valeurs temporaires ou atypiques sans remplacer le plan d'excution plac en mmoire cache. La clause WITH ENCRYPTION indique un cryptage de l'entre de la table syscomments contenant le texte de l'instruction CREATE PROCEDURE. L'argument ENCRYPTION permet d'viter la publication de la procdure dans le cadre de la rplication SQL Server. La clause FOR REPLICATION indique que la procdure stocke doit tre excute lors de la modification de la table concerne par un processus de rplication. La clause AS indique les actions entreprises par la procdure. L'instruction GO signale la fin d'un jeu d'instructions. Instruction Oracle CREATE [OR REPLACE] PROCEDURE [schema .] procedure [ ( argument [ IN | OUT | IN OUT ] [ NOCOPY ] type_donnee [, argumentN [ IN | OUT | IN OUT ] [ NOCOPY ] type_donnee] ) ] [ AUTHID { CURRENT_USER | DEFINER }] { IS | AS } { instruction_pl/sql | instruction_langage }; La commande OR REPLACE recre la procdure stocke si elle existe dj. La clause OUT permet de retourner la valeur aux instructions appelantes. La clause IN est utilise pour spcifier une valeur pour l'argument en appelant la procdure. La clause AS (dprci) ou IS indique les actions entreprises par la procdure. Les procdures stockes peuvent tre appeles au moyen de l'instruction EXECUTE partir d'une autre procdure ou d'un lot d'instructions. SQL Server utilise une abrviation EXEC. Instruction EXECUTE Procedure @Parametre = Valeur, ..., @ParametreN = ValeurN
01/07/2012
41/151
01/07/2012
42/151
ITS Formation Base B.I. WHERE REALISATEUR_NOM='BESSON' 5/ CREATE VIEW CINEMA_TOULOUSE AS SELECT cinema_nom, cinema_groupe FROM cinema WHERE ville='toulouse' 6/ Select acteur_nom from jouer where acteur_prenom='Paul' 7/ Select acteur_nom + ' ' + acteur_prenom identifiant from jouer 8/ Select Titre from jouer where date >'01/01/1998' and genre='drame' 9/ Select distinct T1.Acteur_nom, T1.Acteur_prenom From Jouer T1, Projection T2, Cinema T3 Where T1.Film_code = T2.Film_code and T2.cinema_code = T3.cinema_code and T3.cinema_nom = 'Le fontenelle' order by T1.Acteur_nom desc 10/ Select count(T1.Acteur_nom) From Jouer T1, Projection T2, Cinema T3 Where T1.Film_code = T2.Film_code and T2.cinema_code = T3.cinema_code and T3.cinema_nom = 'Le fontenelle' and T1.acteur_nom = 'Skarsgard' group by T1.Acteur_nom
01/07/2012
43/151
5 ANNEXES SQL
5.1 Les commandes DCL
Les commandes DCL (Data Control Language) permettent la gestion des droits d'accs aux objets d'une base de donnes. Un utilisateur de base de donnes doit possder un compte de scurit afin d'accder aux tables ou tout autre lment. Pour cela, il faut non seulement que l'utilisateur soit cr mais galement que des privilges lui soient accords. Des permissions peuvent tre attribues explicitement un utilisateur ou implicitement si ce dernier appartient un rle. Un rle est un objet SQL spcifique auquel est attribu un ou plusieurs privilges. Ce rle peut tre affect des utilisateurs qui possdent alors ses autorisations. En outre, les commandes DCL servent modifier ou supprimer des privilges, voire mme des utilisateurs ou des rles.
01/07/2012
44/151
ITS Formation Base B.I. La clause USING package permet de crer un rle d'application, lequel est un rle qui peut tre activ seulemet par les applications en utilisant un package autoris. La clause EXTERNALLY indique la cration d'un utilisateur externe qui doit tre authentifi par un service externe avant l'activation du rle. La clause GLOBALLY indique la cration d'un utilisateur global qui doit tre autoris utiliser le rle par le service de rpertoire d'entreprise avant que le rle ne soit activ. Un rle sous Oracle s'active en utilisant l'instruction SET ROLE. La clause DEFAULT TABLESPACE spcifie l'espace de table par dfaut pour les objets crs par l'utilisateur. Si la clause est omise, les objets vont dans un espace de table SYSTEM. La clause TEMPORARY TABLESPACE spcifie l'espace de table pour les sgments temporaires d'utilisateur. Si la clause est omise, l'espace de table SYSTEM accueille les sgments. La clause QUOTA permet l'utilisateur d'allouer jusqu' un certain espace en nombre d'octets dans l'espace de table. K signifie kilo-octets, M, mga-octets. L'option UNLIMITED fournit l'utilisateur un espace illimit. La clause PROFILE indique le profile affecter l'utilisateur. La clause PASSWORD EXPIRE indique si le mot de passe de l'utilisateur doit expirer. La clause ACCOUNT vrouille ou dvrouille le compte d'utilisateur. Le processus de cration d'un utilisateur dans une base de donnes SQL Server diffre fortement puisqu'il est ncessaire de faire appel une procdure stocke. EXEC sp_adduser [ @loginame = ] 'login' [, [ @name_in_db = ] 'nom_utilisateur' ] [, [ @grpname = ] 'groupe' ] La suppression d'un utilisateur s'effectue par l'intermdiaire d'une autre procdure stocke. sp_dropuser [ @name_in_db = ] 'nom_utilisateur' Exemple CREATE USER "webmaster@site.com" IDENTIFIED EXTERNALLY; CREATE USER utilisateur_invite IDENTIFIED BY site_produit DEFAULT TABLESPACE espace_invite QUOTA 5M ON demonstration TEMPORARY TABLESPACE temp_demo QUOTA 1M ON system PROFILE util_inv PASSWORD EXPIRE; EXEC sp_adduser 'jj_annaud', 'raphael', 'invite'
01/07/2012
45/151
ITS Formation Base B.I. La clause IDENTIFIED indique de quelle manire Oracle authentifie un utilisateur. La clause BY mot_passe indique par quel mot de passe un utilisateur est autoris se connecter la base de donnes. La clause USING package permet de crer un rle d'application, lequel est un rle qui peut tre activ seulemet par les applications en utilisant un package autoris. La clause EXTERNALLY indique la cration d'un utilisateur externe qui doit tre authentifi par un service externe avant l'activation du rle. La clause GLOBALLY indique la cration d'un utilisateur global qui doit tre autoris utiliser le rle par le service de rpertoire d'entreprise avant que le rle ne soit activ. Un rle sous Oracle s'active en utilisant l'instruction SET ROLE. La clause DEFAULT TABLESPACE spcifie l'espace de table par dfaut pour les objets crs par l'utilisateur. Si la clause est omise, les objets vont dans un espace de table SYSTEM. La clause TEMPORARY TABLESPACE spcifie l'espace de table pour les sgments temporaires d'utilisateur. Si la clause est omise, l'espace de table SYSTEM accueille les sgments. La clause QUOTA permet l'utilisateur d'allouer jusqu' un certain espace en nombre d'octets dans l'espace de table. K signifie kilo-octets, M, mga-octets. L'option UNLIMITED fournit l'utilisateur un espace illimit. La clause PROFILE indique le profile affecter l'utilisateur. La clause PASSWORD EXPIRE indique si le mot de passe de l'utilisateur doit expirer. La clause ACCOUNT vrouille ou dvrouille le compte d'utilisateur. La clause DEFAULT ROLE spcifie des rles par dfaut l'utilisateur. Les clauses GRANT et REVOKE donne respectivement l'autorisation et l'interdiction de la connection. La clause CONNECT THROUGH identifie le proxy de connexion Oracle La clause WITH ROLE autorise le proxy se connecter comme l'utilisateur spcifi et activer seulement les rles spcifis. La clause WITH ROLE ALL EXCEPT autorise la proxy se connecter comme l'utilisateur spcifi et activer tous les rles l'exception de ceux spcifis. La clause WITH NO ROLES autorise le proxy se connecter comme l'utilisateur spcifi, mais interdit le proxy d'activer n'importe lequel des rles de cet utilisateur aprs la connexion.
01/07/2012
47/151
ITS Formation Base B.I. La clause AUTHENTICATED USING permet une authentification par proxy pour tre manipul par une autre source que le proxy. Cette clause est adquat seulement pour la clause GRANT CONNECT THROUGH. La clause PASSWORD entrane la prsentation par le proxy du mot de passe de base de donnes de l'utilisateur pour l'authentification. La clause DISTINGUISHED NAME autorise le proxy agir comme l'utilisateur identifi globalement indiqu par le nom distingu. La clause CERTIFICATE autorise le proxy agir comme l'utilisateur identifi globalement dont le nom distingu est contenu dans le certificat possdant un type et une version prciss. Exemple ALTER USER jean_francois IDENTIFIED BY commercial DEFAULT TABLESPACE ser_com; ALTER USER poste_compta PROFILE pr_cpt; ALTER USER jc_merite GRANT CONNECT THROUGH cpt_2 WITH ROLE utilisateur_restreint;
01/07/2012
48/151
ITS Formation Base B.I. La clause IDENTIFIED indique qu'un utilisateur doit tre autoris par la mthode spcifie avant que le rle ne soit activ par l'instruction SET ROLE. La clause BY mot_passe indique qu'un utilisateur est autoris dans la base de donnes condition qu'un mot de passe correct soit fourni afin d'activer le rle. La clause USING package permet de crer un rle d'application, lequel est un rle qui peut tre activ seulemet par les applications en utilisant un package autoris. La clause EXTERNALLY indique la cration d'un utilisateur externe qui doit tre autoris par un service externe avant l'activation du rle. La clause GLOBALLY indique la cration d'un utilisateur global qui doit tre autoris utiliser le rle par le service de rpertoire d'entreprise avant que le rle ne soit activ. Un rle sous Oracle s'active en utilisant l'instruction SET ROLE. SET ROLE { nom_rle [IDENTIFIED BY mot_passe] [, nom_rleN [IDENTIFIED BY mot_passe]] | ALL [EXCEPT nom_rle [, nom_rle]] | NONE }; La modification d'un rle est accomplie par ALTER ROLE et la suppression par DROP ROLE. ALTER ROLE nom_rle { NOT IDENTIFIED | { BY mot_passe | USING [schma .] package | EXTERNALLY | GLOBALLY } }; DROP ROLE nom_rle; L'attribution (GRANT) ou la rvocation (REVOKE) d'un, plusieurs (ROLE) ou tous les rles l'exception de certain (ALL EXCEPT) un utilisateur peut tre faite par l'entremise de la commande ALTER USER. ALTER USER nom_utilisateur [, nom_utilisateurN ] { { GRANT | REVOKE } CONNECT THROUGH proxy WITH { { ROLE { nom_rle [, nom_rleN] | ALL EXCEPT nom_rle [, nom_rleN] 01/07/2012 49/151
ITS Formation Base B.I. } | NO ROLES }; La commande ALTER USER permet de mme, d'attribuer un plusieurs rles par dfaut un seul utilisateur. ALTER USER nom_utilisateur DEFAULT ROLE { { nom_rle [, nom_rleN] } | { ALL [EXCEPT nom_rle [, nom_rleN]] } | NONE }; Syntaxe sous SQL Server
Le processus de cration d'un rle sous SQL Server diffre puisqu'il est ncessaire de passer par une procdure stocke du systme. EXEC sp_addrole [ @rolename = ] 'nom_rle' [ , [ @ownername = ] 'propritaire' ] L'ajout d'un membre un rle, s'effectue par l'intermdiaire d'une autre procdure stocke. EXEC sp_addrolemember [ @rolename = ] 'nom_rle' , [ @membername = ] 'compte_scurit' La suppression d'un membre d'un rle s'accomplit par sp_droprolemember. sp_droprolemember [ @rolename = ] 'nom_rle' , [ @membername = ] 'compte_scurit' La suppression du rle s'effectue par sp_droprole. sp_droprole [ @rolename = ] 'nom_rle' Exemple CREATE ROLE role_utilisateur; CREATE ROLE role_developpeur IDENTIFIED GLOBALLY; EXEC sp_addrole 'role_developpeur', 'dbo'
01/07/2012
50/151
ITS Formation Base B.I. GRANT { { { ALL | instruction [ ,...n ] } TO compte_scurit [ ,...n ] } | { { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( nom_colonne [ ,...n ] ) ] ON { nom_table | nom_vue } | ON { nom_table | nom_vue } [ ( nom_colonne [ ,...n ] ) ] | ON { procdure_stocke | procdure_tendue } | ON { fonction_utilisateur } } TO compte_scurit [ ,...n ] [ WITH GRANT OPTION ] [ AS { groupe | rle } ] } } Les clauses TO et FROM indiquent la liste des comptes de scurit. La cause ALL indique l'attribution de toutes les autorisations possibles pour le compte de scurit indiqu. La clause PRIVILEGES est facultative. En fait elle n'est inclus que pour se conformer aux spcifications SQL-92. La clause ON indique l'application des autorisations un objet indiqu. La commande WITH GRANT OPTION indique la possibilit pour le compte de scurit de pouvoir lui-mme accorder des autorisations d'autres utilisateurs. La clause AS {groupe | rle} indique le nom facultatif d'un groupe ou d'un rle pour lequel les autorisations seront accordes. Syntaxe sous Oracle GRANT { { { systme_privilge | rle | ALL PRIVILEGES } [, { systme_privilgeN | rle | ALL PRIVILEGES }] TO { { utilisateur | rle | PUBLIC } [, { utilisateurN | rle | PUBLIC }] } [IDENTIFIED BY mot_passe] [WITH ADMIN OPTION] } | { { objet_privilge | ALL [PRIVILEGES] } 01/07/2012 51/151
ITS Formation Base B.I. [( nom_colonne [, nom_colonne]... )] [, { objet_privilgeN | ALL [PRIVILEGES] } [( nom_colonne [, nom_colonneN]... )]] ON { { schema . objet } | { { DIRECTORY nom_rpertoire } | { JAVA { SOURCE | RESOURCE } [schma .] objet } } } TO { { utilisateur | rle | PUBLIC } [, { utilisateurN | rle | PUBLIC }] } [WITH GRANT OPTION] [WITH HIERARCHY OPTION] } }; La clause IDENTIFIED BY permet d'identifier un utilisateur existant par un mot de passe ou pour crer un utilisateur inexistant. La clause WITH ADMIN OPTION fournit un utilisateur la possibilit d'administrer un rle. La cause ALL PRIVILEGES indique l'attribution de toutes les autorisations appliques au compte de scurit indiqu. L'option PUBLIC indique l'attribution de privilges ou de rles tous les utilisateurs. La clause ON indique l'application des autorisations sur un objet indiqu. La clause DIRECTORY indique l'objet DIRECTORY sur lequel les privilges doivent tre accords. La clause JAVA { SOURCE | RESOURCE } permet de spcifier une source Java ou l'objet de schma de ressource sur lequel les privilges doivent tre accords. La clause FROM indique la liste des comptes de scurit. La clause TO indique la liste des comptes de scurit. La commande WITH GRANT OPTION indique la possibilit pour le compte de scurit de pouvoir lui-mme accorder des privilges d'autres utilisateurs. La clause WITH HIERARCHY OPTION indique la permission d'tendre les privilges d'objets spcifis tous les sous-objets. Exemple GRANT CREATE PROCEDURE, CREATE ANY PROCEDURE, 01/07/2012 52/151
ITS Formation Base B.I. ALTER ANY PROCEDURE, DROP ANY PROCEDURE, EXECUTE ANY PROCEDURE TO developpeur WITH ADMIN OPTION; GRANT INSERT, UPDATE, DELETE ON tbl_produit TO 'jk_fort', 'f_troyes' GO
01/07/2012
53/151
ITS Formation Base B.I. Les clauses TO et FROM indiquent la liste des comptes de scurit. La clause CASCADE indique la suppression des autorisations pour le compte de scurit et de toutes les autres qui auraient t accordes par le propritaire de ce compte. La clause AS {groupe | rle} indique le nom facultatif d'un groupe ou d'un rle pour lequel les autorisations seront supprimes. Syntaxe sous Oracle REVOKE { { { systme_privilge | rle | ALL PRIVILEGES } [, { systme_privilge | rle | ALL PRIVILEGES }] FROM { { utilisateur | rle | PUBLIC } [, { utilisateurN | rle | PUBLIC }] } } | { { objet_privilge | ALL [PRIVILEGES] } [( nom_colonne [, nom_colonne]... )] [, { objet_privilgeN | ALL [PRIVILEGES] } [( nom_colonne [, nom_colonneN]... )]] ON { { schma . objet } | { { DIRECTORY nom_rpertoire } | { JAVA { SOURCE | RESOURCE } [schma .] objet } } } FROM { { utilisateur | rle | PUBLIC } [, { utilisateurN | rle | PUBLIC }] } [ CASCADE CONSTRAINTS ] [ FORCE ] } } [, ... ] ; La clause ALL PRIVILEGES indique la suppression de toutes les autorisations appliques au compte de scurit indiqu. L'option PUBLIC indique la rvocation des privilges ou des rles pour tous les utilisateurs. La clause DIRECTORY indique l'objet DIRECTORY sur lequel les privilges doivent tre rvoqus. 01/07/2012 54/151
ITS Formation Base B.I. La clause JAVA { SOURCE | RESOURCE } permet de spcifier une source Java ou l'objet de schma de ressource sur lequel les privilges doivent tre rvoqus. La clause FROM indique la liste des comptes de scurit. La clause CASCADE CONSTRAINTS annule les contraintes d'intgrit rfrentielle et est applicable uniquement une rvocation du privilge REFERENCES ou ALL PRIVILEGES. La clause FORCE permet de rvoquer les privilges EXECUTE sur les objets dfinis par l'utilisateur avec des tables ou de types de dpendances. Exemple REVOKE SELECT ON tbl_employee TO role_employee REVOKE UPDATE ON vue_personnel FROM PUBLIC;
01/07/2012
55/151
ITS Formation Base B.I. La commande SAVEPOINT vite une annulation complte des transactions par la commande ROLLBACK. Transactions... SAVEPOINT nom_point Transactions... ROLLBACK TO nom_point; D'ailleurs, une commande spcifique permet de supprimer des points de sauvegardes crs par la commande SAVEPOINT. RELEASE SAVEPOINT nom_point; Exemple SET TRANSACTION; SAVEPOINT sup1; DELETE FROM tbl_produit WHERE fabricant = 'AME et Cie'; SAVEPOINT sup2; DELETE FROM tbl_produit WHERE fabricant = 'EROS'; SAVEPOINT sup3; DELETE FROM tbl_produit WHERE num_produit BETWEEN 12045367 AND 12045401; SAVEPOINT maj; INSERT INTO tbl_produit SELECT * FROM vue_nouveau_produit; ROLLBACK TO sup3; COMMIT; BEGIN TRANSACTION USE base_donnee GO UPDATE tbl_produit SET prix = (( prix * 12 ) / 100 ) + prix WHERE fabricant = 'CACO LOCA' GO COMMIT GO
01/07/2012
56/151
ITS Formation Base B.I. Les calculs effectus par ces fonctions consiste faire sur une colonne, la somme, la moyenne des valeurs, le dcompte des enregistrements ou encore l'extraction de la valeur minimum ou maximum. Hormis la fonction COUNT, les fonctions d'agrgation ne tiennent pas compte des valeurs NULL. Fonction AVG BINARY_CHECKSU M CHECKSUM CHECKSUM_AGG COUNT COUNT_BIG MAX MIN SUM STDEV STDEVP VAR VARP Description retourne la moyenne des valeurs d'un groupe. retourne la valeur totale de contrle binaire calcule partir d'une ligne d'une table ou d'une liste d'expressions. retourne la valeur de checksum calcule dans une ligne d'une table ou dans une liste d'expressions. retourne le checksum des valeurs d'un groupe. retourne le nombre d'lments figurant dans un groupe. retourne le nombre d'lments figurant dans un groupe. retourne la valeur maximale de l'expression. retourne la valeur minimale de l'expression. retourne la somme de toutes les valeurs retourne l'cart type de toutes les valeurs de l'expression spcifie. retourne l'cart type de remplissage pour toutes les valeurs de l'expression spcifie. retourne la variance de toutes les valeurs de l'expression spcifie. retourne la variance de remplissage pour toutes les valeurs de l'expression spcifie.
Exemple SELECT COUNT(Livre) FROM Librairie ' retourne 7 SELECT SUM(Prix) FROM Librairie ' retourne 1 571
ITS Formation Base B.I. EXP(Expression) retourne la valeur exponentielle de l'expression. FLOOR(Expression) retourne la valeur minimale de l'expression. POWER(Expression, Exposant) retourne la puissance de l'expression (ExpressionExposant). ROUND( Expression , Longueur [ , Fonction ] ) retourne l'arrondi de l'expression la longueur indique et ventuellement la troncature fournie. SIGN(Expression) retourne le signe de l'expression. SIN(Expression) retourne le sinus de l'expression. SQRT(Expression) retourne la racine carre de l'expression. TAN(Expression) retourne la tangente de l'expression. TO_NUMBER(expression) convertit des chanes de caractres en valeur numrique. Exemple SELECT valeur, SIN(valeur), COS(valeur), TAN(valeur) FROM tbl_angle; SELECT SQRT(POWER(AB, 2) + POWER(BC, 2)) AS AB FROM tbl_triangle
ITS Formation Base B.I. convertit la chane de caractres en lettres majuscules. LOWER (chaine) convertit la chane de caractres en lettres minuscules. SUBSTR(nom_colonne, position_dpart, longueur) retourne une sous-chane de caractres extraite de la colonne spcifie partir d'une position de dpart et jusqu' une certaine longueur. Pour SQL Server, la fonction se dnomme SUBSTRING. INSTR(nom_colonne, jeu_caractres, position_dpart, nb_occurrence) recherche le jeu de caractres dans une colonne et retourne la position de la premire lettre du jeu. LTRIM(nom_colonne, jeu_caractres) supprime les caractres situs la gauche de la chane de caractres. RTRIM(chaine, jeu_caractres) supprime les caractres situs la droite de la chane de caractres. DECODE(nom_colonne, valeur1, valeur2, [valeur1, valeur2, valeur_dfaut]) recherche les valeurs valeur1 dans la colonne et les remplace par les valeurs valeur2 et toutes les autres valeurs sont remplaces par la valeur par dfaut. LENGTH(chaine) retourne la longueur de la chane de caractres. NVL(nom_colonne, valeur) remplace les valeurs nulles de la colonne par une valeur de substitution. LPAD(nom_colonne, longueur, caractre) remplit gauche des valeurs de la colonne un certain nombre du caractre indiqu pour arriver la longueur voulue. RPAD(nom_colonne, longueur, caractre) remplit droite des valeurs de la colonne un certain nombre du caractre indiqu pour arriver la longueur voulue. ASCII(jeu_caractres) retourne la valeur ASCII d'un jeu de caractres indiqu. TO_CHAR(expression) convertit des valeurs numriques en chanes de caractres. Exemple SELECT CONCAT(CONCAT(UPPER(nom), ' ')), prenom) FROM tbl_client WHERE montant_vente >= 1000; SELECT LPAD(nom, 15, '.'), RPAD(prenom, 15, '.') FROM tbl_client WHERE date_naissance = SYSDATE; SELECT num_client, NVL(email, 'adresse@email.com') FROM tbl_client WHERE email = NULL;
ITS Formation Base B.I. Dans de nombreuses applications SQL, des donnes temporelles sont associes diverses informations lors de leur saisie manuelle ou automatique. Table d'abonns Par exemple, un nouvel abonn reprsent par des champs tels Num_Abonne que le nom, le prnom et l'adresse postale entre autres, pourrait Date_Abonnement galement saisir une date de naissance par l'intermdiaire d'un Nom formulaire, puis au moment de l'ajout de l'enregistrement dans la Prenom base de donnes, une date et ventuellement une heure Date_Naissance seraient insres automatiquement dans la ligne de donnes Adresse afin de conserver un historique des demandes d'abonnement. ... En outre, les dates et les heures peuvent permettre de slectionner des jeux d'enregistrements avec des requtes contenant des conditions temporelles. Ainsi, un commercial aurait la possibilit de consulter l'ensemble des individus ayant souscrit un abonnement dans un intervalle de temps prcis. Le format des dates et des heures dpend souvent des diffrentes implmentations SQL. Nanmoins, des formats standardiss ont t spcifis afin d'viter une trop grande htrognit. AAAA-MM-JJ reprsente un format de date respectivement, anne-mois-jour, avec un intervalle allant de 0001-01-01 jusqu' 9999-12-31. HH:MN:SS.nnn reprsente un format horaire respectivement, heures:minutes:secondes, allant de 00:00:00 jusqu' 23:59:61.999 Le standard ANSI prvoit trois types de donnes principaux de date et d'heure. D'autres types peuvent exister selon les implmentations. DATE = AAAA-MM-JJ stocke une date (ex: 10/01/2002). TIME = HH:MN:SS.nnn stocke une heure (ex: 10:12:42) TIMESTAMP = AAAA-MM-JJ HH:MN:SS.nnn stocke une valeur de date et d'heure combines. Les serveurs SQL tels que SYBASE et SQL Server utilisent les types de donnes DATETIME combinant les formats de date et d'heure, ainsi que SMALLDATETIME identique au prcdent hormis que l'intervalle de date autoris est plus restreint. Les types de donnes de date et d'heure sont divisibles en plusieurs lments distincts. YEAR = AAAA stocke une anne, allant de 0001 jusqu' 9999. MONTH = MM stocke le mois, allant de 01 jusqu' 12 DAY = JJ stocke le jour d'une date, allant de 01 jusqu' 31. HOUR = HH
01/07/2012
60/151
ITS Formation Base B.I. stocke les heures, allant de 00 jusqu' 23 MINUTE = MN stocke les minutes, allant de 00 jusqu' 59. SECONDE = SS.nnn stocke les secondes, allant de 00 jusqu' 61.999 Diverses commandes et fonctions permettent une manipulation aise des dates et des heures dans des applications SQL. Les fonctions
Les fonctions de date et d'heure permettent diverses manipulations sur des informations temporelles. La rcupration de la date en cours est possible par l'intermdiaire de la fonction GETDATE sous SQL Server et Sybase alors que Oracle utilise la fonction SYSDATE. SELECT GETDATE() AS Date, nom_champ, ... FROM nom_table SELECT SYSDATE AS Date, nom_champ, ... FROM nom_table Les heures et les dates sont dcomposables en plusieurs valeurs telles que les secondes, les minutes, les heures, le jour, le mois et l'anne entre autres partir d'une valeur DATETIME ou TIMESTAMP. SELECT DATEPART (yyyy, GETDATE()) FROM nom_table SELECT { fn YEAR ( { fn CURDATE() } ) } FROM nom_table Dans cet exemple, les deux syntaxes respectivement sous SQL Server et Oracle, retournent l'anne de la date courante. Il est galement possible d'effectuer des calculs sur des dates et des heures comme des additions ou des soustractions. SELECT DATEADD(mm, 3, GETDATE()) FROM nom_table SELECT SYSDATE + INTERVAL '3' MONTH FROM nom_table Ces exemples permettent d'ajouter trois mois la date courante. Pour ajouter un jour, il suffit sous SQL Server de modifier la partie mm par dd et MONTH par DAY pour Oracle. SELECT DATEADD(dd, 7, GETDATE()) FROM nom_table SELECT SYSDATE + INTERVAL '7' DAY FROM nom_table Sous Oracle, il est possible d'additionner ou de soustraire directement un nombre entier reprsentant des jours, une date. SELECT SYSDATE + 7 FROM nom_table D'autres lments de date et d'heure peuvent tre ajouts ou extraits par le mme biais sous Oracle. //soustrait une heure de la date courante SELECT SYSDATE - 1/24 FROM nom_table //soustrait 10 minutes de la date courante
01/07/2012
61/151
ITS Formation Base B.I. SELECT SYSDATE - 1/144 FROM nom_table Les fonctions Fonctions SQL Server DATEADD ( partie_date, nombre, date ) ajoute un nombre reprsentant une partie de date la date spcifie. DATEDIFF ( partie_date , date_dpart , date_fin ) soustrait la date de fin de celle de dpart en fonction de la partie spcifie. DATENAME ( partie_date , date ) retourne une chane de caractres dtermine partir de la date et de la partie indiques. DATEPART ( partie_date , date ) retourne la partie indique par le premier argument partir d'une date. DAY ( date ) retourne un entier reprsentant le jour partir de la date spcifie. GETDATE() retourne la date et l'heure courantes. GETUTCDATE() retourne la date et l'heure UTC (Universal Time Coordinates) courantes. MONTH ( date ) retourne le mois sous forme d'un entier partir d'une date spcifie. YEAR ( date ) retourne l'anne sous forme d'une entier partir de la date spcifie. Fonctions Oracle ADD_MONTHS(date, nb_mois) ajoute un nombre de mois spcifi une date. { fn CURDATE ( [ expression_date ] ) } retourne la date courante. CURRENT_DATE retourne la date courante. CURRENT_TIME retourne l'heure courante. CURRENT_TIMESTAMP retourne la date et l'heure courantes. { fn CURTIME ( [ expression_date ] ) } retourne l'heure courante. { fn DAYNAME ( [ expression_date ] ) } retourne le nom du jour de la semaine. { fn DAYOFMONTH ( [ expression_date ] ) } retourne le jour du mois sous forme d'entier. { fn DAYOFWEEK ( [ expression_date ] ) } retourne le jour de la semaine sous forme d'un entier. { fn DAYOFYEAR ( [ expression_date ] ) } retourne le jour d'une anne sous forme d'un entier. HOUR ( expression_temps ) retourne l'heure partir d'une expression horaire. INTERVAL ( valeur partie_date ) spcifie un intervalle de temps pour effectuer des oprations. LAST_DAY ( date ) retourne une date qui reprsente le dernier jour du mois dans lequel la date s'est produite. { fn MINUTE ( expression_temps ) } retourne les minutes partir d'une expression horaire. { fn MONTH ( expression_temps ) } 01/07/2012 62/151
ITS Formation Base B.I. retourne le mois partir d'une expression horaire. { fn MONTHNAME ( expression_temps ) } retourne le nom d mois partir d'une expression horaire. MONTHS_BETWEEN ( date_1, date_2 ) retourne le nombre de mois entre les deux valeurs de date. NEXT_DAY ( date, chane ) retourne la date du premier jour de la semaine correspondant la chane de caractres spcifie. NOW retourne la date et l'heure courante comme une valeur de TIMESTAMP. ROUND ( date, format ) retourne la date spcifie selon le format fourni. { fn SECOND ( expression_temps ) } retourne le nombre de secondes partir d'une expression horaire. SYSDATE retourne la date et l'heure courantes. TIMESTAMPADD ( intervalle, nombre, date ) retourne le rsultat de l'addition d'une date un nombre entier selon un intervalle spcifi (SQL_TSI_FRAC_SECOND, SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_YEAR). TIMESTAMPDIFF ( intervalle, nombre, date ) retourne le rsultat de la soustraction d'une date et d'un nombre entier selon un intervall spcifi (voir ci-dessus). TO_DATE ( chane ) convertit une chane de caractres en une valeur de date et d'heure valide. TRUNC ( date, format ) retourne le rsultat d'une troncature d'une date selon un format spcifi. { fn WEEK ( expression_date ) } retourne la semaine d'une anne sous la forme d'un entier. { fn YEAR ( expression_date ) } retourne une anne sous la forme d'un entier. Exemple SELECT TO_CHAR(ADD_MONTHS(debut_abonnt, 6)) AS 'Fin abonnement', num_abonnt FROM tbl_abonne WHERE date_abonnt = SYSDATE - (INTERVAL '5' MONTH); USE base GO CREATE TABLE tbl_employees ( num_employe NUMERIC(9, 0) PRIMARY KEY, date_embauche DATETIME DEFAULT GETDATE(), nom VARCHAR(40) NOT NULL, prenom VARCHAR(20) NOT NULL, adresse VARCHAR(255) NOT NULL, code_postal VARCHAR(5) NOT NULL ville VARCHAR(30) NOT NULL, telephone VARCHAR(10) NULL, email VARCHAR(50) NULL )
01/07/2012
63/151
ITS Formation Base B.I. GO Les formats de date sous Oracle Les formats de date sous Oracle permettent de formater des valeurs de date et d'heure selon un masque prcis. Day, Month DD,YYYY HH24:MI:SS Friday, December 28, 2001 23:16:41 DD/MM/YYYY HH:MI:SS AM 28/12/2001 11:16:41 AM Les formats de date et d'heure peuvent tre utiliss en argument avec les fonctions ROUND et TRUNC. ROUND ( '10/12/2001' YEAR ) TRUNC ( '10/12/2001' DD) La fonction INTERVAL peut galement comporter de tels lments afin d'indiquer le type de la valeur fournie. INTERVAL '3' DAY Format SCC | CC YEAR SYEAR YYYY SYYYY IYYY YYY | YY | Y IYY | IY | I Y,YYY Q MM MONTH Month month MON Mon mon WW IW W DDD DD D DAY Day day DY Dy dy 01/07/2012 Description reprsente le sicle. Le "S" indique les dates BC (Before Christ) avec "-". | | reprsente une anne. reprsente une anne sur quatre chiffres. reprsente une anne sur quatre chiffres, base sur le standard ISO. reprsente respectivement les trois, deux ou un chiffre(s) d'une anne. reprsente respectivement les trois, deux ou un chiffre(s) d'une anne base sur le standard ISO. reprsente une anne avec une virgule. reprsente le trimestre d'une anne (1-4). reprsente le mois sur deux chiffres (1-12). reprsente le nom littral du mois (JANUARY-DECEMBER). reprsente une abrviation littrale du nom de mois (JAN-DEC). reprsente le numro reprsente le numro reprsente le numro reprsente le numro reprsente le numro reprsente le numro de la semaine sur une anne (1-53). de la semaine bas sur le standard ISO (1-52/53). de la semaine d'un mois (1-5). du jour sur une anne (1-365). du jour sur un mois (1-31). du jour sur une semaine (1-7).
reprsente le nom littral du jour (SUNDAY-SATURDAY). reprsente le nom littral abrg du jour (SUN-SAT)).
64/151
ITS Formation Base B.I. AM | PM A.M. | P.M. HH | HH12 HH24 MI RM RR SS SSSSS - / . ; : "texte" reprsente l'indicateur mridien. reprsente l'indicateur mridien avec des priodes. reprsente l'heure d'une journe sur douze heures (1-12). reprsente l'heure d'une journe sur vingt-quatre heures (0-23). reprsente les minutes (0-59). reprsente le numro du mois sous forme de chiffres romains. reprsente les deux chiffres d'une anne pour les annes dans d'autres pays. reprsente les secondes (0-59). reprsente les secondes sur vingt-quatre heures (0-86399). reprsente les signes de ponctuation et les guillemets pour du texte permis.
Les formats de date sous SQL Server Les formats de date et d'heure sous SQL Server peuvent prendre quasiment n'importe quelle forme l'aide des lments cits dans le tableau ci-dessous. dddd, MMMM dd,yyyy hh:mm:ss.ffff tt Friday, December 28, 2001 11:16:41.0021 AM dd/MM/yyyy HH:mm:ss 28/12/2001 23:16:41 Format yyyy yy qq | q MM | M MMMM MMM dd | d dddd ddd hh | h HH | H mm | m ss | s f tt Description reprsente une anne sur quatre chiffres. reprsente une anne sur deux chiffres. reprsente le trimestre d'une anne. reprsente le mois sur deux chiffres. reprsente le nom littral du mois. reprsente le nom littral abrg du mois. reprsente le jour sur deux chiffres. reprsente le nom littral du jour de la semaine. reprsente le nom littral abrg du jour de la semaine reprsente l'heure d'une journe sur douze heures. reprsente l'heure d'une journe sur vingt-quatre heures. reprsente les minutes. reprsente les secondes. reprsente les fractions de secondes. reprsente l'indicateur mridien AM/PM.
Les parties de date pour les fonctions DATEADD, DATEDIFF, DATENAME et DATEPART peuvent tre utilises dans leur forme littrale comme dans leurs abrviations. Partie de date year quart month dayofyear day weeek weekday hour minute second millisecond Abrviations yy, yyyy qq, q mm, m dy, y dd, d wk, ww dw hh min ss, s ms Description Anne Trimestre Mois Jour de l'anne (1 - 365) Jour Semaine Jour de la semaine Heures Minutes Secondes Millisecondes
01/07/2012
65/151
01/07/2012
66/151
ITS Formation Base B.I. { ENABLE | DISABLE } TRIGGER { ALL | nom_dclencheur [ , nom_dclencheurN ] }
01/07/2012
67/151
ITS Formation Base B.I. } ON { { [ schma. ] SCHEMA } | DATABASE } WHEN ( Condition ) { instruction_PL/SQL | instruction_procdure }; } La commande OR REPLACE recre le dclencheur s'il existe dj. La clause BEFORE indique que le dclencheur doit tre lanc avant l'excution de l'vnement. La clause AFTER indique que le dclencheur doit tre lanc aprs l'excution de l'vnement. Les instructions INSERT et DELETE indique au dclencheur de s'excuter lors respectivement d'une insertion ou d'une suppression dans la table. La clause UPDATE OF indique que le dclencheur doit tre lanc lors de chaque mise jour d'une des colonnes spcifies. Si elle est omise, n'importe quelle colonne de la table modifie provoque le dcle,chement du Trigger. La clause ON dsigne le nom de la table associ son schma pour lequel le dclencheur a t spcifiquement cr. La clause FOR EACH ROW dsigne le dclencheur pour tre un dclencheur de ligne. Oracle lance un dclencheur de ligne une fois pour chaque ligne qui est affecte par l'instruction de dclenchment. Si la clause est omise, le dclencheur est un dclencheur d'instruction. Oracle lance un dclencheur de d'instructionune fois seulement lorsque l'instruction dclenchante est mise si la contrainte du dclencheur optionnelle est rencontre. La clause REFERENCING permet de spcifier des noms de corrlation. Il est possible d'utiliser les noms de corrlation dans des blocs d'instructions PL/SQL et dans la condition WHEN d'une dclencheur de ligne pour se rfrer spcifiquement des valeurs anciennes et nouvelles de la ligne courante. Les noms de corrlation par dfaut sont OLD et NEW. Si le dclencheur de ligne est associ une table nomme OLD ou NEW, l'utilisation de cette clause permet de spcifier des noms de corrlations diffrents afin d'viter une confusion entre les noms de table et les noms de corrlation. Si le dclencheur est dfini sur une table imbrique, OLD et NEW se rfrent la ligne de la table imbrique, et PARENT se rfre la ligne courante de la table parente. Si le dclencheur est dfini sur une table ou une vue, OLD et NEW se rfre aux instances d'objet. La clause REFERENCING n'est pas valide avec les dclencheurs INSTEAD OF sur les vnements DDL de cration. Pour de plus amples renseignements consulter la documentation d'Oracle. Exemple /* Premier exemple */ CREATE OR REPLACE TRIGGER declencheur_suppression AFTER DELETE ON tbl_1 FOR EACH ROW 01/07/2012 68/151
ITS Formation Base B.I. WHEN (1 = 1) DECLARE action_utilisateur VARCHAR2(50); BEGIN SELECT user INTO action_utilisateur FROM DUAL; INSERT INTO delete_log VALUES ('tbl_1',action_utilisateur,TO_CHAR(SYSDATE, 'DD/MON/YYYY'), TO_CHAR(SYSDATE, 'HH24:MI:SS')); END; /* Second exemple */ CREATE TABLE tbl_1 (col_a INTEGER, col_b CHAR(20)); CREATE TABLE tbl_2 (col_c CHAR(20), col_d INTEGER); CREATE TRIGGER declencheur_insertion AFTER INSERT ON tbl_1 FOR EACH ROW WHEN (NEW.col_a <= 10) BEGIN INSERT INTO tbl_2 VALUES(:NEW.col_b, :NEW.col_a); END; Le premier exemple cre un dclencheur qui insre un champ log l'intrieur d'une table, pour chaque ligne supprime dans la table spcifie. Le second exemple cre un dclencheur qui insre un enregistrement l'intrieur de la seconde table lorqu'une opration d'insertion s'est accomplie dans la premire table. Le dclencheur vrifie si le nouvel enregistrement possde un premier composant infrieur ou gal 10 et si c'est le cas, inverse les enregistrements l'intrieur de la seconde table. Les variables spciales NEW et OLD sont disponibles pour se rfrer respectivement des nouveaux ou d'anciens enregistrements. Les deux points (:) prcdent NEW et OLD dans VALUES sont dans ce cas obligatoires, par contre dans la clause conditionnelle WHEN, ils doivent tre omis.
01/07/2012
69/151
ITS Formation Base B.I. } La syntaxe ci-dessous ne permet la cration que de deux types de dclencheur. Nanmoins, des structures conditionnelles donnent la possibilit de tester les modifications apportes aux colonnes spcifies. CREATE TRIGGER nom_dclencheur ON { nom_table | nom_vue } [ WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [,] [ UPDATE ] [ WITH APPEND ] [ NOT FOR REPLICATION ] AS [ { IF UPDATE ( nom_colonne ) [ { AND | OR } UPDATE ( nom_colonne ) ] [ ...n ] | IF ( COLUMNS_UPDATED() { Operateur_Niveau_Bit } Mise_Jour_Masque_Bit ) { = | > } Colonne_Masque_Bit [ ...n ] }] instruction_SQL... } } La clause ON dsigne la table ou la vue concernes par le dclencheur. La clause WITH ENCRYPTION indique que SQL Server crypte les entres syscomments qui contiennent le texte de l'instruction CREATE TRIGGER. La clause FOR indique le dclenchement du Trigger pour un type d'vnement. La clause AFTER indique le dclenchement du Trigger suite un type d'vnement. La clause INSTEAD OF indique un excution des instructions du Trigger la place de celles normalement produites par l'vnement dclencheur. Les instructions INSERT, UPDATE et DELETE reprsentent chacun un type de dclencheur respectivement sur une insertion, une mise jour et une suppression. La clause WITH APPEND indique la ncesit d'ajouter un dclencheur supplmentaire d'un type existant. La clause NOT FOR REPLICATION indique que le dclencheur ne doit pas tre excut lors de la modification de la table concerne par un processus de rplication. La clause IF UPDATE excute des tests pour une opration INSERT ou UPDATE sur une ou plusieurs colonnes spcifies la suite de l'instruction. Les colonnes tester, peuvent tre articules autour d'un oprateur AND ou OR afin d'effectuer un test conditionnel sur l'une ou/et l'autre des colonnes. La clause retourne une valeur boolenne. La clause COLUMNS_UPDATED retourne un modle de bit de type varbinary indiquant les colonnes ayant subi des modifications suite un test dans un dclencheur de type INSERT ou UPDATE uniquement. 01/07/2012 70/151
ITS Formation Base B.I. IF (COLUMNS_UPDATED() & 15) = 15 IF (COLUMNS_UPDATED() & 15) > 0 La valeur 15 suivant l'oprateur de niveau de bit & reprsente les cinq premires colonnes d'un tableau. Le signe gal = permet de vrifier dans ce cas si les cinq colonnes ont t modifies. Dans l'autre exemple, le signe suprieur > est spcifi, il s'agit ici d'une vrification sur l'une ou l'autre des cinq colonnes indiques. Exemple /* Premier exemple */ CREATE TABLE tbl_produit ( nom VARCHAR(20), identificateur INTEGER ) GO INSERT tbl_produit SELECT 'dentifrice', 1 UNION SELECT 'savon', 2 UNION SELECT 'savon', 0 UNION SELECT 'brosse dent', 3 UNION SELECT 'brosse dent', 0 UNION SELECT 'rasoir', 4 UNION SELECT 'mousse raser', 5 UNION SELECT 'serviette', 6 UNION SELECT 'serviette', 0 UNION SELECT 'peigne', 7 UNION SELECT 'brosse cheveux' 8 GO CREATE TRIGGER declencheur_suppression ON tbl_produit FOR DELETE AS SELECT nom AS "Lignes supprimer" FROM deleted GO CREATE TRIGGER declencheur_insteadof ON tbl_produit INSTEAD OF DELETE AS DELETE tbl_produit FROM tbl_produit INNER JOIN deleted ON tbl_produit.nom = deleted.nom WHERE tbl_produit.identificateur = 0 GO DELETE tbl_produit WHERE nom IN ('brosse dent', 'serviette', 'savon') GO SELECT * FROM tbl_produit GO DROP TABLE tbl_produit /* Second exemple */ CREATE TRIGGER envoi_email ON nom_table FOR INSERT, UPDATE, DELETE AS EXEC master.dbo.xp_sendmail @recipients = 'Administrateur', @message = 'Attention une modification a t effectue dans la table : nom_table.', 01/07/2012 71/151
ITS Formation Base B.I. @subject = 'Modification sur une table.' GO /* Troisime exemple */ CREATE TRIGGER avertissement ON nom_table FOR INSERT, UPDATE, DELETE AS RAISERROR ('Attention une modification a t effectue dans la table', 16, 10) GO Le premier exemple met en exergue le processus permettant de faire appel diffrents types de dclencheurs au sein d'une table. Le premier dclencheur FOR DELETE s'excute lors d'une suppression en slectionnant les lignes supprimes partir de la table temporaire deleted. Le second Trigger se dclenche et excute ses propres instructions la place de la commande de dclenchement DELETE afin d'effectuer une comparaison entre les noms de produit sur les deux tables tbl_produit et deleted pour ensuite supprimer les enregistrements possdant un identificateur gal zro. Les deux derniers exemples dmontrent qu'il est possible d'excuter diverses instructions telles que respectivement, l'envoi d'un courrier lectronique notifiant une modification l'administrateur de la base de donnes et du retour d'un message d'erreur par l'instruction RAISERROR.
01/07/2012
72/151
Chapitre 2
01/07/2012
73/151
2 CONCEPTS DU RELATIONNEL.........................................................................................14
2.1 2.2 2.3 2.4 2.5 Domaine et relation........................................................................................................14 Dpendance fonctionnelle.............................................................................................15 Les diffrentes cls........................................................................................................15 Normalisation.................................................................................................................16 Exercice sur les concepts du relationnel.......................................................................20
3 LE LANGAGE SQL.................................................................................................................21
3.1 Les oprateurs................................................................................................................21 3.2 Le langage de dfinition..................................................................................................24 3.3 Le langage de requte....................................................................................................30 3.4 Le langage de manipulation............................................................................................35 3.5 Le langage de contrle (Commandes DCL) => Cf Annexe...........................................37 3.6 Optimisation des requtes..............................................................................................38 3.7 Initiation aux procdures stockes.................................................................................40
2 LE PROCESSUS DCISIONNEL.........................................................................................79
2.1 La ralit des systmes dinformations..........................................................................79 2.2 Vue globale.....................................................................................................................80
3 LE DATAWAREHOUSE........................................................................................................81
3.1 Objectifs...........................................................................................................................81 3.2 Dfinition..........................................................................................................................81
01/07/2012
74/151
4 LES DATAMARTS..................................................................................................................83
4.1 Objectif............................................................................................................................83 4.2 Dfinition..........................................................................................................................83 4.3 Mise en place..................................................................................................................84
5 ANALYSE MULTIDIMENTIONNELLE.............................................................................85
5.1 Les axes danalyses........................................................................................................85 5.2 Les indicateurs................................................................................................................86 5.3 Navigation dans les donnes..........................................................................................87
2 ARCHITECTURE DCISIONNELLE.................................................................................96
2.1 Description des bases intermdiaires au DWH .............................................................96 2.2 Architecture ODS -> DWH..............................................................................................97 2.3 Architecture ODS -> DWH -> DTM.................................................................................98 2.4 Architecture ODS -> DTM...............................................................................................99
3 LA MODLISATION............................................................................................................101
3.1 Dfinition des lments constituants............................................................................101 3.2 Les diffrents types de modlisation dcisionnelle......................................................103 3.3 Gestion de lintgrit des donnes...............................................................................107
4 OPTIMISATION....................................................................................................................110
4.1 Agrgation de tables de faits........................................................................................110 4.2 Partitionnement de tables de faits................................................................................110
3 REPORTING..........................................................................................................................144
3.1 Degrs danalyse..........................................................................................................144 3.2 Cibles.............................................................................................................................145 3.3 Mtiers...........................................................................................................................145
01/07/2012
75/151
ITS Formation Base B.I. 3.4 Type utilisateurs............................................................................................................145 3.5 Exemple : Cognos ReportNet.......................................................................................146
01/07/2012
76/151
1 ENJEUX ET DFINITION
1.1 Enjeux du dcisionnel
Avec l'apparition des ordinateurs personnels et des rseaux locaux, une autre activit a merg, tout fait distincte de l'informatique de production. Avec la monte en puissance des micros ordinateurs et l'avnement de l'architecture client - serveur, on observe aujourd'hui un dcloisonnement remarquable. Le mot d'ordre principal est : fournir tout utilisateur reconnu et autoris, les informations ncessaires son travail . Ce slogan fait natre une nouvelle informatique, intgrante, oriente vers les utilisateurs et les centres de dcision des organisations. C'est l're du client-serveur qui prend vraiment tout son essor la fin des annes 90 avec le dveloppement des technologies Intranet. Par ailleurs, un environnement de concurrence plus pressant contribue rvler l'informatique dcisionnelle. La qualit et l'exhaustivit des informations sont primordiales pour la direction gnrale. En effet, ce niveau, les dcideurs sont confronts des ralits trs complexes ou de nombreux phnomnes se trouvent lis entre eux. Chaque couche du systme (voir schma ci dessous) produit ses propres indicateurs et prend des dcisions. Cependant, plus on se trouve haut dans la pyramide plus les informations extrieures l'entreprise vont rentrer en compte et prendre de l'importance.
Lentreprise construit un systme dcisionnel pour amliorer sa performance. Elle doit dcider et anticiper en fonction de linformation disponible et capitaliser sur ses expriences. Depuis plusieurs dizaines dannes, une importante masse dinformations est stocke sous forme informatique dans les entreprises. Les systmes dinformation sont destins garder la trace dvnements de manire fiable et intgre. Ils automatisent de plus en plus les processus oprationnels. Paralllement, les entreprises ralisent la valeur du capital dinformation dont elles disposent. Au del de ce que linformatique leur apporte en terme fonctionnel, elles prennent conscience de ce quelle pourrait apporter en termes de contenu informationnel. Considrer le systme dinformation sous cet angle en tant que levier pour accrotre leur comptitivit et leur ractivit nest pas nouveau. Par contre, tant donn lenvironnement concurrentiel actuel, cela devient une question de survie. Linformatique dcisionnelle a un rle jouer, en permettant lentreprise de devenir plus entreprenante et davoir une meilleure connaissance de ses clients, de sa comptitivit ou de son environnement. Il est intressant de calculer les retours sur investissement rendus publics. Ils se calculent rarement en termes de baisse de cots, mais en termes de gains. Par exemple, ils permettent un meilleur suivi des ventes, une meilleure comprhension des habitudes dachats des clients, dune adaptation des produits une clientle mieux cible.
01/07/2012
77/151
1.2 Le dcisionnel
On peut parler de dcisionnel lorsque les donnes de production sont valorises en information. Cette valorisation est effective ds que l'on sort du monde de la production. Le systme d'information dcisionnel est un ensemble de donnes organises de faon spcifique, facilement accessible et appropries la prise de dcision ou encore une reprsentation intelligente de ces donnes au travers d'outils spcialiss. La finalit d'un systme dcisionnel est le pilotage de l'entreprise. Les systmes dcisionnels sont ddis au management de l'entreprise pour l'aider au pilotage de l'activit, et indirectement oprationnels car n'offrant que rarement le moyen d'appliquer les dcisions. Ils constituent une synthse d'informations oprationnelles, internes ou externes, choisies pour leur pertinence et leur transversalit fonctionnelles, et sont bass sur des structures particulires de stockage volumineux (Datawarehouse, bases OLAP).
01/07/2012
78/151
2 LE PROCESSUS DCISIONNEL
2.1 La ralit des systmes dinformations
A premire vue, les systmes oprationnels seraient des mines dor informationnelles. En fait, il nen est rien. Les donnes contenues dans ces systmes sont : Eparpilles : il existe souvent de multiples systmes, conus pour tre efficace pour les fonctions sur lesquelles ils sont spcialiss. Peu structures pour lanalyse : la plupart des systmes informatiques actuels ont pour objet de conserver en mmoire linformation, et sont structurs dans ce but. Focalises pour amliorer le quotidien : toutes les amliorations technologiques se sont focalises pour amliorer cette capacit en terme de volume, qualit, rapidit daccs. Il manque trs souvent la capacit nous donner les moyens de tirer parti de cette mmoire pour prendre des dcisions. Utilises pour des fonctions critiques : la majorit des systmes existants est conue dans le but unique de nous servir avec des temps de rponse corrects. Le tableau ci-dessous prsente les diffrences entre les bases oprationnelles et dcisionnelles. Base oprationnelle Type de donnes Nombre dutilisateurs Type de travail
Orientes application, dtailles, prcises au moment de laccs Trs important Prdfini (ex. crans de saisie)
Base dcisionnelle
Oriente activit (thme, sujet), condenses, reprsentes des donnes historiques Allant croissant et pouvant atteindre des chiffres trs levs Souvent indfini De simple complexe (jointures, tris, ) Dpend beaucoup du travail de modlisation en amont
Peu de lignes Trs nombreuses lignes (balayage complet de Volume de donnes tables) balay lors de lexcution dune requte De faon continue avec gestion des Gnralement par batch, plus rarement au fil de Mises jour ralises
leau Quasiment jamais de concurrence daccs grer Plus importante (notion dhistorique et dagrgats) Clients qui ont achet un article donn durant une priode donne
Sil existe effectivement des informations importantes, il nen est pas moins ncessaire de construire une structure pour les hberger, les organiser et les restituer des fins danalyse. Cette structure est le DataWarehouse ou entrept de donnes . Ce nest pas une usine produire linformation, mais plutt un moyen de la mettre disposition des utilisateurs de manire efficace et organise.
01/07/2012
79/151
ITS Formation Base B.I. Le DataWarehouse permet la mise en place dun outil dcisionnel sappuyant sur les informations pertinentes pour lentreprise, centres sur le mtier utilisateur.
Le processus peut se dcomposer en trois phases : Construction de la base de donnes dcisionnelle (Datawarehousing) : modlisation conceptuelle des donnes multiformes et multisources, alimentation de lentrept (extraire, nettoyer, transformer, charger), stockage physique des donnes. Slection des donnes analyser selon les besoins de lutilisateur : DataMart, cubes multidimensionnels, tableaux ou tables bidimensionnels. Analyse des donnes : statiques et reporting, base OLAP, Datamining. Deux contraintes apparaissent : la simplicit du modle de donnes et la performance malgr les grands volumes.
01/07/2012
80/151
3 LE DATAWAREHOUSE
3.1 Objectifs
Le Datawarehousing est un processus visant permettre le traitement des fins dcisionnelles de gros volumes de donnes caractrisant le fonctionnement de lentreprise. Avant dtre charge dans le DataWarehouse (DWH), linformation doit tre extraite, nettoye et prpare. Puis, elle est intgre et mise en forme de manire comprhensible pour tre comprise par lutilisateur. Le Datawarehousing permet de transformer les donnes stockes en informations utiles. Toutes les donnes quelles proviennent du systme de production de lentreprise ou quelles soient achetes vont devoir tre organises, coordonnes, intgres et stockes, pour donner lutilisateur une vue intgre et oriente mtier. Les objectifs de ralisation dun DWH sont les suivants : Intgrer des donnes internes comme externes, et fournir les informations importantes en les rendant lisibles et facilement manipulables. Offrir un accs direct lutilisateur, et en rgle gnrale augmenter le nombre daccs aux donnes. Fournir un cadre assez flexible, pouvant supporter la croissance (nombre dutilisateurs, nouveaux outils, volumes de donnes)
3.2 Dfinition
Le DataWarehouse est une collection de donnes orientes sujet, intgres, non volatiles et historises, organises pour le support dun processus daide la dcision.
01/07/2012
81/151
ITS Formation Base B.I. Avant dtre intgres dans le DataWarehouse, les donnes doivent tres mises en forme et unifies afin davoir un tat cohrent. Par exemple, la consolidation de lensemble des informations concernant un client donn est ncessaire pour donner une vue homogne de ce client. Une donne doit avoir une description et un codage unique. Cette phase dintgration est trs complexe et reprsente 60 90 % de la charge totale dun projet.
01/07/2012
82/151
4 LES DATAMARTS
4.1 Objectif
Avec un DataWarehouse, il y a des risques dchec. Rien ninvite lutilisateur se servir dun DataWarehouse. Le succs dun DataWarehouse dpend donc uniquement de son effective utilisation. Un des gros risques de sa construction est de se cristalliser autour de la problmatique informatique et de se dtourner de lutilisateur. Le DataMart minimise la complexit informatique. Il est donc plus facile de se concentrer sur les besoins utilisateurs.
4.2 Dfinition
Le DataMart est une base de donnes moins coteuse que le DataWarehouse, et plus lgre puisque destine quelques utilisateurs dun dpartement. Il sduit plus que le DataWarehouse les candidats au dcisionnel. Cest une petite structure trs cible et pilote par les besoins utilisateurs. Il a la mme vocation que le DataWarehouse (fournir une architecture dcisionnelle), mais vise une problmatique prcise avec un nombre dutilisateurs plus restreint. En gnral, cest une petite base de donnes (SQL ou multidimensionnelle) avec quelques outils, et alimente par un nombre assez restreint de sources de donnes. Mais pour russir, il y a quelques prcautions prendre, gage de son volutivit vers le DataWarehouse. DataWarehouse Toute lentreprise Eleve SQL type serveur A lchelle de lentreprise Multi sujets, neutre Multiples Base de donnes Centaine de GO et plus 9 18 mois pour les 3 tapes DataMart Dpartement Faible ou moyen SQL milieu de gamme, bases multidimensionnelles Dpartement Quelques sujets, spcifique Quelques unes Plusieurs bases distribues Une 2 dizaines de GO 6 12 mois (installation en plusieurs tapes)
Cible utilisateur Implication du service informatique Base de donnes dentreprise Modles de donnes Champ applicatif Sources de donnes Stockage Taille Temps de mise en place
01/07/2012
83/151
01/07/2012
84/151
5 ANALYSE MULTIDIMENTIONNELLE
Ce type danalyse permet d'analyser la rpartition d'un indicateur comme le " chiffre d'affaires" en fonction des axes ou dimensions " clients ", " produit ", " temps". En outre, des hirarchies seront dfinies pour chaque axe d'analyse (par exemple, l'anne, puis la saison, le mois et la semaine, pour l'axe temps).
Temps Client
4000 8000 7000 1000
3000 8000
12000
1000
2000 6000
8000
Produit
5.1 Les axes danalyses
Les axes d'analyse (dimension) selon lesquels on veut tudier des donnes observables (faits) donnent aux utilisateurs des renseignements ncessaires la prise de dcision. Il peut s'agir des clients ou des produits d'une entreprise, d'une priode de temps comme un exercice financier, des activits menes au sein d'une socit, etc Le modle de donnes multidimensionnel est un tableau n dimensions (hypercube). Chaque axe danalyse possde une hirarchie associe de plusieurs niveaux de consolidation. Chaque position dans un tableau multidimensionnel, correspondant une intersection de toutes les dimensions est appele une cellule. Ces axes danalyses peuvent tre affins, dcomposes en hirarchies, afin de permettre lutilisateur dexaminer ses indicateurs diffrents niveaux de dtail, de " descendre " dans les donnes, allant du niveau global au niveau le plus fin. Par exemple, une date pourra tre dcompose en <anne, mois, semaine, jour>. On aura alors une vision pyramidale des donnes, la base de la pyramide reprsentant le niveau le plus dtaill et le haut le niveau le plus global.
01/07/2012
85/151
Mois
Produit Priode
Dimensions d'analyse
Indicateurs numriques
01/07/2012
86/151
Marque
Segment
Article
01/07/2012
87/151
01/07/2012
88/151
Chapitre 3
01/07/2012
89/151
2 CONCEPTS DU RELATIONNEL.........................................................................................14
2.1 2.2 2.3 2.4 2.5 Domaine et relation........................................................................................................14 Dpendance fonctionnelle.............................................................................................15 Les diffrentes cls........................................................................................................15 Normalisation.................................................................................................................16 Exercice sur les concepts du relationnel.......................................................................20
3 LE LANGAGE SQL.................................................................................................................21
3.1 Les oprateurs................................................................................................................21 3.2 Le langage de dfinition..................................................................................................24 3.3 Le langage de requte....................................................................................................30 3.4 Le langage de manipulation............................................................................................35 3.5 Le langage de contrle (Commandes DCL) => Cf Annexe...........................................37 3.6 Optimisation des requtes..............................................................................................38 3.7 Initiation aux procdures stockes.................................................................................40
2 LE PROCESSUS DCISIONNEL.........................................................................................79
2.1 La ralit des systmes dinformations..........................................................................79 2.2 Vue globale.....................................................................................................................80
3 LE DATAWAREHOUSE........................................................................................................81
3.1 Objectifs...........................................................................................................................81 3.2 Dfinition..........................................................................................................................81
01/07/2012
90/151
4 LES DATAMARTS..................................................................................................................83
4.1 Objectif............................................................................................................................83 4.2 Dfinition..........................................................................................................................83 4.3 Mise en place..................................................................................................................84
5 ANALYSE MULTIDIMENTIONNELLE.............................................................................85
5.1 Les axes danalyses........................................................................................................85 5.2 Les indicateurs................................................................................................................86 5.3 Navigation dans les donnes..........................................................................................87
2 ARCHITECTURE DCISIONNELLE.................................................................................96
2.1 Description des bases intermdiaires au DWH .............................................................96 2.2 Architecture ODS -> DWH..............................................................................................97 2.3 Architecture ODS -> DWH -> DTM.................................................................................98 2.4 Architecture ODS -> DTM...............................................................................................99
3 LA MODLISATION............................................................................................................101
3.1 Dfinition des lments constituants............................................................................101 3.2 Les diffrents types de modlisation dcisionnelle......................................................103 3.3 Gestion de lintgrit des donnes...............................................................................107
4 OPTIMISATION....................................................................................................................110
4.1 Agrgation de tables de faits........................................................................................110 4.2 Partitionnement de tables de faits................................................................................110
3 REPORTING..........................................................................................................................144
3.1 Degrs danalyse..........................................................................................................144 3.2 Cibles.............................................................................................................................145 3.3 Mtiers...........................................................................................................................145
01/07/2012
91/151
ITS Formation Base B.I. 3.4 Type utilisateurs............................................................................................................145 3.5 Exemple : Cognos ReportNet.......................................................................................146
01/07/2012
92/151
1 LA CONCEPTION
1.1 Gnralits
Quatre caractristiques clients ont des effets dterminants sur la dmarche de conception dun DataWarehouse : Les volutions technologiques : un systme dinformation peut se construire par intgration dun certain nombre de composants, chacun pouvant tre choisi par rapport son contexte dutilisation. Lentreprise dfinit son architecture en fonction de ses besoins. La stratgie de lentreprise : le DataWarehouse est trs proche de la stratgie de lentreprise. Lobjectif du DataWarehouse se dfinit en terme mtier. Il faut donc impliquer les utilisateurs ayant le plus de connaissances dans leur entreprise ou dans leur mtier. Lamlioration continue : un DataWarehouse doit voluer en fonction des demandes utilisateurs ou des nouveaux objectifs de lentreprise. La maturit de lentreprise : certaines entreprises ont dj un systme dcisionnel. Dautres nont aucun acquis. Dans tous les cas, il nexiste pas de cadre fig pour la conception dun DataWarehouse. Chaque entreprise doit adapter le projet son contexte, en ne perdant pas les objectifs de vue. Cet objectif est de mettre en place un systme dinformation cohrent et intgr, le systme devant tre dcompos en applications, chacune sintgrant dans le DataWarehouse. Il ne faut pas oublier quil est possible de commencer petit et voir grand : limiter lobjectif un domaine prcis (DataMart) ou faire un prototype. Ceci permet davoir un retour sur investissement rapide et de prouver le bien fond du concept. Lors dune phase de conception dcisionnelle, la phase danalyse technico-fonctionnelle des besoins clients doit aborder les thmes suivants : Dfinition des axes danalyses avec leur hirarchie respective. Souhait dhistorisation des donnes ou des liens hirarchiques. Dfinition des indicateurs avec le type dagrgation sur chaque axe Description des besoins en termes de reporting (Cube, reports) Analyse de lexistant technique (architecture et outils) Description des sources de donnes Scurit et administration des donnes Performance et volumtrie Reprise dun historique de donnes Attention : lexistant est une bonne base dtude dans le choix des restitutions finales, il ne doit pas constituer lobjectif atteindre. Par ailleurs, la connaissance fonctionnelle est videmment un plus pour la comprhension du besoin. Nanmoins, il sagit souvent de faire preuve de bon sens et dapporter une vision plus analytique et dcisionnelle. Le schma ci-dessous donne un aperu du cheminement dun processus de conception : partir des lments prcdents, lobjectif sera de dfinir une architecture technique avec un choix doutils associs.
01/07/2012
93/151
01/07/2012
94/151
01/07/2012
95/151
2 ARCHITECTURE DCISIONNELLE
2.1 Description des bases intermdiaires au DWH
Comme le montre le schma ci-dessous, il est frquent davoir recours la cration dun Staging et/ou dun Oprational Data Storage (ODS) pour transfrer les donnes sources vers le DWH.
2.1.1 Le staging
Ce dpt de donnes doit permettre dacclrer et de synchroniser le processus dextraction des donnes oprationnelles. Cest une structure intermdiaire qui stocke les donnes issues des systmes htrognes de production oprationnelle dans un format proche de ces derniers sur un modle homogne. Ce sas assure l'isolation des mondes "oprationnel" et "dcisionnel" afin de minimiser les perturbations du systme de production oprationnel (performances et exploitation) et permet galement de reconstituer toute ou une partie de lODS partir de donnes lmentaires. Le staging ne contient pas lhistorique de chargement. Son alimentation doit se faire en purge puis insertion des donnes sources.
2.1.2 LODS
LODS est un environnement qui sert la prise de dcisions tactiques, qui contient des donnes dtailles, extraites en presque temps rels des systmes oprationnels pour rpondre des besoins de reporting immdiat et qui peut tre mis jour par les utilisateurs
01/07/2012
96/151
ITS Formation Base B.I. La ralisation dun ODS a pour objectif de nettoyer les donnes provenant du Staging et de les stocker historises, figes et rfrences afin de mettre disposition de l'utilisateur ces informations pour la construction du DWH. Ce processus aboutit intgrer ces donnes dans un modle normalis. La normalisation est un processus qui mne des structures, flexibles, efficaces et maintenance aise, de base de donnes. Une base de donnes relationnelle normalise fournit plusieurs atouts : limination des redondances sur les donnes provenant du STA, modlisation proche de la ralit des entits mondiales et de leurs relations, structuration des donnes pour que le modle soit flexible. Ce sas de transit a pour vocation d'historiser les donnes lmentaires dans un format assez proche du systme source avec un minimum de transformations et d'agrgations afin de prserver des possibilits de reengineering ; lODS permet de reconstruire toute ou une partie du DataWarehouse final, par exemple en cas de modification du rfrentiel (restructuration du rseau commercial, des filires produits, ...). On rapatrie lhistorique en un coup partir de lancien systme dalimentation via le STA Ainsi, il nest pas rare de voir des reporting oprationnels ce plugger cette base propre et vierge de tout filtrage.
ITS Formation Base B.I. Centralisation totale de linformation. Inconvnients Lorientation Mtier devient particulirement complexe dfinir. La phase danalyse dvient prdominante. Lvolutivit complexe car dpend dans des besoins fonctionnels aval et des sources de donnes en Amont. Orientation Solution de restitution multidimensionnelle, o le cube joue le rle de DM.
01/07/2012
98/151
01/07/2012
99/151
ITS Formation Base B.I. Orientation Premire mise en place de solutions dcisionnelles.
01/07/2012
100/151
3 LA MODLISATION
3.1 Dfinition des lments constituants
La modlisation multidimensionnelle t introduite par Ralph Kimball. Elle consiste en deux nouveaux concepts tels que les faits et les dimensions. Chaque modle multidimensionnel est compos dune table contenant une cl, la table des faits qui permettent de mesurer lactivit et dun ensemble de tables dimensionnelles qui contiennent les informations contextuelles faisant varier les mesures de lactivit en question. Chaque table de faits possde une cl qui la relie avec la cl primaire de chaque table de dimension. Cinq axes permettent de qualifier un modle dcisionnel : Lisibilit du point de vue de l'utilisateur final Performances de chargement Performances d'excution Administration, c'est dire faire vivre le DataWarehouse Evolutivit, que tous les autres projets dcisionnels s'intgrent facilement Parmi ces objectifs, beaucoup sont antagonistes : Optimiser les performances lexcution implique souvent dajouter des redondances, des agrgations physiques dont le calcul alourdira les phases de chargement, De mme, plus il existe de redondances, plus le modle risque dtre complexe administrer. Selon, le contexte du projet, il sagira dassocier un poids chacun de ces objectifs et de dfinir son architecture de manire avoir le meilleur quilibre possible.
01/07/2012
101/151
01/07/2012
102/151
Caractristiques : Une table de faits contient les valeurs numriques de ce quon dsire mesurer; Une table de fait contient les cls associes aux dimensions. Il sagit des cls trangres dans la table de faits; Une table de fait contient plus denregistrements quune table de dimension; Les informations dans une table de fait sont caractrises par : o Elles sont numriques et sont utilises pour faire des SUM, AVG... o Les donnes doivent tre additives ou semi-additives o Toutes les colonnes reprsentant les faits (mesure1, mesure2.. dans la figure 1) dans la table de fait doivent rfrer et avoir un lien direct aux cls de dimensions (Date Cal, ID Dim1... dans la figure 1) dans la mme table; Structure de base dune table de faits
Date Cal (FK) Id Dim1 (FK) Id DimN (FK) Code Dim Deg 1 Code Dim Deg N Mesure1 MesureN
Dimensions dgnres
Faits ou mesures
01/07/2012
103/151
ITS Formation Base B.I. Elle consiste en une grande table de faits (fact table) et un cercle dautres tables qui contient les lments descriptifs du fait, appeles dimensions . Quand illustr, le modle ressemble une toile, cest dailleurs lorigine du terme En toile . La figure suivante illustre le schma en toile (star schema)
Avantages : Lisibilit : Ce modle est trs parlant pour lutilisateur car il prsente de manire claire sa finalit. Il est orient sujet et dfinit clairement les indicateurs danalyse. Performances : Les chemins daccs la base sont prvisibles. Mme si la table de faits comporte des millions de lignes, les tables de dimensions seront plus rduites. Par une indexation, il est possible davoir des temps de rponse proportionnels au rsultat attendu. De plus, les tables de faits ne possdent que des informations numriques et des identifiants et si elles sont importantes en nombre de lignes, la taille de chacune des lignes est rduite. Inconvnients : Manque de compltude volution du modle trs problmatique due une orientation du modle rapidement trs mtier. Il est donc plus adapt aux datamarts.
01/07/2012
104/151
ITS Formation Base B.I. La figure suivante illustre le schma en flocons de neige (snowflake schema)
Explication du schma :
Table de la dimension produit. Cette table du schma en toile est compose de plusieurs niveaux
Tous les attributs des niveaux hirarchiques se retrouvent dans une table isole
Avantages : Normalisation des dimensions, rduisant la taille de chacune des tables. Formalisation de la notion de hirarchie au sein dune dimension. Gestion des diffrents niveaux dagrgation Inconvnients : 01/07/2012 105/151
ITS Formation Base B.I. Plus complexe grer que les modles en toile Jointures reconstruire
01/07/2012
106/151
ITS Formation Base B.I. Avantages : Relation Directe entre les lments dune dimension et ses lments parents dans une mme hirarchie Filtre et recherche plus rapide et plus efficace. Inconvnients : Augmentation de la taille des tables de dimension. Cette modlisation est conseille pour les outils de type ROLAP.
Exemple :
Une ligne de faits qui a comme rfrence Produit un produit qui nest pas prsent dans la table de dimension Produit. Une ligne de dimension Produit qui a comme rfrence Marque une marque qui nest pas prsent dans la table de dimension Marque. Il existe 2 mthodes de gestion Les rfrences manquantes sont remplaces de manire unique par un code arbitrairement cr. Les rfrences manquantes sont insres dans les tables des dimensions.
3.3.1.1 Mthode 1
On remplace les rfrences manquantes par un code unique Cette gestion implique que lon cre dans les tables parentes ce code unique avec le libell correspondant (sur tous les niveaux de la hirarchie)
01/07/2012
107/151
Libell Produit Produit Non Rfrenc produit AAAAA produit AAAAB Produit AAAAC
Avantages : Facilit de dfinition des orphelins des Hirarchies Inconvnients : Pertes dinformations si cette dernire est incohrente
3.3.1.2 Mthode 2
Les rfrences manquantes sont insres dans les tables des dimensions. Les autres informations de la table sont alimentes par des valeurs fictives. En cas de hirarchie plusieurs niveaux, cette gestion implique que lon cre dans les tables de niveaux suprieures un code unique permettant un rattachement du code cr aux niveaux suprieurs.
N Produit AAAAA AAAAB AAAAC . N Commande Ligne Cmd 000123 1 Cmd 000123 2 Date Commande 01/02/2005 01/02/2205 N Produit Produit AAAAA Produit AABAA Libell Produit produit AAAAA produit AAAAB Produit AAAAC
Libell Produit produit AAAAA produit AAAAB Produit AAAAC Libell rf AABAA
Avantages : Conservation de la totalit de linformation. Le choix nest quarbitraire au niveau de la prsentation Inconvnients : Peut-tre complexe grer au niveau dans une Hirarchie prsentant plusieurs niveaux. Facteur de complexit galement dans le cas dune conservation de lhistorique des dimensions.
01/07/2012
108/151
Exemple :
Numrique : -1 Code : NA Libell : Not Affected Date : 99/99/9999
Le but est de : Faciliter une analyse et simplifier la comprhension des donnes en assurant la compltude de linformation. Permettre des jointures directes entre les diffrentes tables et amliorer les performances. Dans le cas de la mise en place dun systme multi-dimensionnelle, la gestion des valeurs nulles nest pas ncessaire. En effet, la plupart de ces outils intgre cette fonctionnalit.
01/07/2012
109/151
4 OPTIMISATION
4.1 Agrgation de tables de faits
Les tables dagrgation sont des tables supplmentaires ajoutes au modle de donnes pour rpondre des problmatiques de performance. Elles sont gnralement utilises pour les bases prsentant une forte volumtrie. Elles sont dfinies suivant des niveaux dagrgation suprieurs de dimensions et en fonction des besoins finaux dutilisateurs. Pour tre efficaces, elles doivent apporter une diminution notable des lignes traites par une requte SQL. Il est donc important de calculer le Facteur dagrgation. Le facteur dagrgation reprsente le ratio entre le nombre de lignes de la table initiale et le nombre de ligne de la table agrge. < 5 lagrgation na pas dintrt. 10 lagrgation apporte un rel plus.
Exemple :
On cre une table des ventes mensuelles reprsentant la somme des ventes journalires par magasin et cela sur chacun des mois.
ventes journalires
VENTES
Ventes mensuelles
Ventes annuelles
Cette technique d'optimisation trouve ses limites lorsque les bases des donnes atteignent un volume important.
ITS Formation Base B.I. On peut aussi imaginer un clatement des tables de fait suivant toute autre dimension.
Exemple :
Ventes Prigord
VENTES
Ventes Provence
Ventes Autres
01/07/2012
111/151
GEOGRAPHIE Ville varchar(128) Postal Code integer Transport Code char(1) Transport Type varchar(64) Frequence Transport Paris integer Region Code varchar(5) Region Description varchar(164)
Ce schma reprsente la base oprationnelle. Maintenant que nous avons identifi la base oprationnelle, nous allons lister les axes danalyses et les diffrents indicateurs de manire raliser un staging. Axes danalyses Temps (anne, mois, jour) Cinma (Cinema, Groupe) Gographie (Cinema, Ville, Rgion) Film/Acteur Indicateurs Nombre de spectateurs Recette Dure du Film
01/07/2012
112/151
ITS Formation Base B.I. Rappel : le staging a une structure identique aux bases oprationnelles (ajout/suppression dinformations) et ne contient pas de cls trangres. Base STG
JOUER CINEMA Cinema Code Cinema Nom Ville Cinema Type Cinema Groupe Date Creation Date MAJ Indicateur Activite int <pk> varchar(64) varchar(128) varchar(2) varchar(64) datetime datetime int Jouer Code Film Code Titre Genre Date Acteur Code Acteur Nom Acteur Prnom Rle Date Creation Date MAJ Indicateur Activite int <pk> int varchar(128) varchar(64) datetime int varchar(64) varchar(64) varchar(128) datetime datetime int
PROJECTION Jour Film Code Cinema Code Nombre Spectateurs Recette Duree Film Date Creation Date MAJ datetime <pk> int <pk> int <pk> int int int datetime datetime
GEOGRAPHIE Postal Code Ville Region Code Region Description Date Creation Date MAJ Indicateur Activite integer <pk> varchar(128) varchar(5) varchar(164) datetime datetime int
Script STG
/*==============================================================*/ /* Table : CINEMA */ /*==============================================================*/ create table CINEMA ( CINEMA_CODE int not null, CINEMA_NOM varchar(64) null, VILLE varchar(128) null, CINEMA_TYPE varchar(2) null, CINEMA_GROUPE varchar(64) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_CINEMA primary key (CINEMA_CODE) ) go /*==============================================================*/ /* Table : GEOGRAPHIE */ /*==============================================================*/ create table GEOGRAPHIE ( POSTAL_CODE integer not null, VILLE varchar(128) null, REGION_CODE varchar(5) null, REGION_DESCRIPTION varchar(164) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null,
01/07/2012
113/151
01/07/2012
114/151
FK_FILM_ACTEUR_FI_ACT EUR
FK_JOUER_FILM_JOUE_FILM CINEMA Cinema Code Cinema Nom Cinema Groupe Vil le Region Description Date Creati on Date MAJ Indicateur Activite PROJECT ION FILM int <pk> int <fk> varchar(128) varchar(64) datetime int datetime datetime
int <pk> Jour varchar(64) Film Code varchar(64) Cinema Code varchar(128) Nombre Spectateurs FK_PROJECTI_CINEMA_PR_CINEMA varchar(128) Recette datetime Duree Film datetime Date Creation int Date MAJ
datetime <pk,fk3> Film Code int <pk,fk1> Acteur Code int <pk,fk2> T FK_PROJECTI_FILM_PROJ_FILMitre int Genre int Date int Indicateur Activite datetime Date Creation datetime Date MAJ
FK_PROJECTI_TEMPS_PRO_T EMPS
01/07/2012
115/151
01/07/2012
116/151
alter table JOUER add constraint FK_JOUER_ACTEUR_JO_ACTEUR foreign key (ACTEUR_CODE) references ACTEUR (ACTEUR_CODE) go alter table JOUER add constraint FK_JOUER_FILM_JOUE_FILM foreign key (FILM_CODE) references FILM (FILM_CODE) go alter table PROJECTION add constraint FK_PROJECTI_CINEMA_PR_CINEMA foreign key (CINEMA_CODE) references CINEMA (CINEMA_CODE) go alter table PROJECTION add constraint FK_PROJECTI_FILM_PROJ_FILM foreign key (FILM_CODE) references FILM (FILM_CODE) go alter table PROJECTION add constraint FK_PROJECTI_TEMPS_PRO_TEMPS foreign key (JOUR) references TEMPS (JOUR) go
01/07/2012
117/151
CINEMA GROUPE Cinema Type Cinema Groupe Date Creation Date MAJ Indicateur Activite int <pk> varchar(64) datetime datetime int
FK_FILM_ACTEUR_FI_ACTEUR
FK_CINEMA_GROUPE_CI_CINEMA_G FK_JOUER_FILM_JOUE_FILM CINEMA Cinema Code Postal Code Cinema Type Cinema Nom Date Creation Date MAJ Indicateur Activite PROJECTION FILM int <pk> int <fk> varchar(128) varchar(64) datetime int datetime datetime
int <pk> Jour int <fk2> Film Code int <fk1> Cinema Code varchar(64) Nombre Spectateurs FK_PROJECTI_CINEMA_PR_CINEMA datetime Recette datetime Duree Film int Date Creation Date MAJ
datetime <pk,fk3> Film Code int <pk,fk1> Acteur Code int <pk,fk2> Titre FK_PROJECTI_FILM_PROJ_FILM int Genre int Date int Indicateur Activite datetime Date Creation datetime Date MAJ
FK_CINEMA_VILLE_CIN_VILLE FK_PROJECT I_TEMPS_PRO_TEMPS VILLE Postal Code Region Code Ville Date Creation Date MAJ Indicateur Activite int <pk> int <fk> varchar(64) datetime datetime int TEMPS Jour datetime <pk> Mois integer Annee integer
FK_VILLE_REGION_VI_REGION
REGION Region Code Region Description Date Creation Date MAJ Indicateur Activite int <pk> varchar(64) datetime datetime int
01/07/2012
118/151
01/07/2012
119/151
) go
/*==============================================================*/ /* Table : PROJECTION */ /*==============================================================*/ create table PROJECTION ( JOUR datetime not null, FILM_CODE int not null, CINEMA_CODE int not null, NB_SPEC int not null, RECETTE int not null, DUREE_FILM int not null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, constraint PK_PROJECTION primary key (JOUR, FILM_CODE, CINEMA_CODE) ) go /*==============================================================*/ /* Table : REGION */ /*==============================================================*/ create table REGION ( REGION_CODE int not null, REGION_DESCRIPTION varchar(64) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_REGION primary key (REGION_CODE) ) go /*==============================================================*/ /* Table : TEMPS */ /*==============================================================*/ create table TEMPS ( JOUR datetime not null, MOIS integer not null, ANNEE integer not null, constraint PK_TEMPS primary key (JOUR) ) go /*==============================================================*/ /* Table : VILLE */
01/07/2012
120/151
01/07/2012
121/151
CINEMA GROUPE Cinema Type Cinema Groupe Date Creation Date MAJ Indicateur Activite int <pk> varchar(64) datetime datetime int
FK_FILM_ACTEUR_FI_ACTEUR
FK_CINEMA_GROUPE_CI_CINEMA_G FK_JOUER_FILM_JOUE_FILM CINEMA Cinema Code Postal Code Region Code Cinema Type Cinema Nom Date Creation Date MAJ Indicateur Activite PROJECTION FILM int <pk> int <fk> varchar(128) varchar(64) datetime int datetime datetime
int <pk> Jour int <fk2> Film Code int Cinema Code int <fk1> Nombre Spectateurs FK_PROJECTI_CINEMA_PR_CINEMA varchar(64) Recette datetime Duree Film datetime Date Creation int Date MAJ
datetime <pk,fk3> Film Code int <pk,fk1> Acteur Code int <pk,fk2> Titre FK_PROJECTI_FILM_PROJ_FILM int Genre int Date int Indicateur Activite datetime Date Creation datetime Date MAJ
FK_CINEMA_VILLE_CIN_VILLE FK_PROJECTI_TEMPS_PRO_TEMPS VILLE Postal Code Region Code Ville Date Creation Date MAJ Indicateur Activite int <pk> int <fk> varchar(64) datetime datetime int TEMPS Jour datetime <pk> Mois integer Annee integer
FK_VILLE_REGION_VI_REGION
REGION Region Code Region Description Date Creation Date MAJ Indicateur Activite int <pk> varchar(64) datetime datetime int
Seule la table Cinema a t modifie avec lajout dune rfrence directe au niveau Rgion.
01/07/2012
122/151
Chapitre 4
01/07/2012
123/151
2 CONCEPTS DU RELATIONNEL.........................................................................................14
2.1 2.2 2.3 2.4 2.5 Domaine et relation........................................................................................................14 Dpendance fonctionnelle.............................................................................................15 Les diffrentes cls........................................................................................................15 Normalisation.................................................................................................................16 Exercice sur les concepts du relationnel.......................................................................20
3 LE LANGAGE SQL.................................................................................................................21
3.1 Les oprateurs................................................................................................................21 3.2 Le langage de dfinition..................................................................................................24 3.3 Le langage de requte....................................................................................................30 3.4 Le langage de manipulation............................................................................................35 3.5 Le langage de contrle (Commandes DCL) => Cf Annexe...........................................37 3.6 Optimisation des requtes..............................................................................................38 3.7 Initiation aux procdures stockes.................................................................................40
2 LE PROCESSUS DCISIONNEL.........................................................................................79
2.1 La ralit des systmes dinformations..........................................................................79 2.2 Vue globale.....................................................................................................................80
3 LE DATAWAREHOUSE........................................................................................................81
3.1 Objectifs...........................................................................................................................81 3.2 Dfinition..........................................................................................................................81
01/07/2012
124/151
4 LES DATAMARTS..................................................................................................................83
4.1 Objectif............................................................................................................................83 4.2 Dfinition..........................................................................................................................83 4.3 Mise en place..................................................................................................................84
5 ANALYSE MULTIDIMENTIONNELLE.............................................................................85
5.1 Les axes danalyses........................................................................................................85 5.2 Les indicateurs................................................................................................................86 5.3 Navigation dans les donnes..........................................................................................87
2 ARCHITECTURE DCISIONNELLE.................................................................................96
2.1 Description des bases intermdiaires au DWH .............................................................96 2.2 Architecture ODS -> DWH..............................................................................................97 2.3 Architecture ODS -> DWH -> DTM.................................................................................98 2.4 Architecture ODS -> DTM...............................................................................................99
3 LA MODLISATION............................................................................................................101
3.1 Dfinition des lments constituants............................................................................101 3.2 Les diffrents types de modlisation dcisionnelle......................................................103 3.3 Gestion de lintgrit des donnes...............................................................................107
4 OPTIMISATION....................................................................................................................110
4.1 Agrgation de tables de faits........................................................................................110 4.2 Partitionnement de tables de faits................................................................................110
3 REPORTING..........................................................................................................................144
3.1 Degrs danalyse..........................................................................................................144 3.2 Cibles.............................................................................................................................145 3.3 Mtiers...........................................................................................................................145
01/07/2012
125/151
ITS Formation Base B.I. 3.4 Type utilisateurs............................................................................................................145 3.5 Exemple : Cognos ReportNet.......................................................................................146
01/07/2012
126/151
Mtadonnes
Fdrer
Dcouvrir
Extraire
Transformer
Transporter
Charger
La problmatique de lalimentation1 dun Data Warehouse peut tre dcoupe en cinq phases : Dcouvrir : Identification et puration des donnes, Extraire : Extraction des donnes des diffrentes bases de production, Transformer : Prparation des donnes la structure du systme dcisionnel. Transporter : Transport des donnes des machines de production lenvironnement dcisionnel cible.
1
UNILOG propose des mthodes formalises pour rpondre ces problmatiques, notamment avec la dmarche CLT Les 5A ou la mise en place de capteurs pour les ERP .
01/07/2012
127/151
ITS Formation Base B.I. Charger : Chargement des donnes dans la base dcisionnelle cible. Actuellement il existe trois catgories doutils ETL : Engine-based : les transformations sont excutes sur un serveur ETL, disposant en gnral dun rfrentiel. Ce genre de doutil dispose dun moteur de transformation (Ex : Informatica, Datastage) Database-embedded (Procdures Stockes) : les transformations sont intgres dans la BD (Ex : PL/SQL sous oracle) Code-generators (ELT) : les transformations sont conues et un code est gnr. Ce code est dployabe indpendamment de la base de donnes (Ex : Sunopsis, Genio).
01/07/2012
128/151
1.2.2 Transformation
Cest une suite doprations qui a pour but de rendre les donnes cibles homognes pour ainsi tre traites de faon cohrente : donnes aberrantes, donnes sans valeurs ou avec des valeurs manquantes, donnes smantiquement faussesIl faut avoir une bonne connaissance des donnes entreposer et des rgles qui les rgissent. Il est souvent ncessaire galement de pouvoir synchroniser des donnes provenant de fichiers diffrents (plusieurs fichiers clients par exemple) et dont les cls ne sont pas forcment identiques. Il faut alors, soit recrer les cls partir dun des formats existants, soit calculer une nouvelle cl pour chaque occurrence du fichier cible Voici les grandes fonctionnalits de transformation : Nettoyage des donnes Standardisation des donnes Conformance des donnes Gestion des tables de fait Gestion des dimensions Gestion de lintgrit Affectations des cls de substitution (surrogate key) Gestion de l'volution lente (Slowly changing dimension) Gestion des lookups Il faut grer les anomalies en les traitant et en gardant une trace.
1.2.3 Chargement
Le chargement est la dernire phase de lalimentation du DataWarehouse. Cest une phase dlicate notamment lorsque les volumes sont importants. Pour obtenir de bonnes performances en chargement, il est impratif de matriser les structures du SGBD (tables et index) associes aux donnes charges afin doptimiser au mieux ces processus. Les techniques de paralllisation optimisent les chargements lourds. Pour les mettre en uvre, des utilitaires particuliers existent chez la majorit des diteurs de bases de donnes. Il faut dfinir en particulier le type daction de chargement : purge et insert, insert et mise jour, mise jour uniquement. Il faut grer les anomalies de chargement en les traitant et en gardant une trace
1.2.4 Monitoring
En complment, on trouve des outils d'audit et d'analyse pour assurer le suivi du processus afin notamment de contrler les rejets. Il faut prvoir dans la modlisation une table de monitoring de suivi des processus et une ou plusieurs tables de gestion des rejets. A la demande du client, il est assez frquent de mettre en place un utilitaire (en WEB ou autres) pour suivre le monitoring et visualiser les rejets.
01/07/2012
129/151
01/07/2012
130/151
Lexcution des jobs se fait au niveau du moteur : il tablit les connexions aux diffrentes bases de donnes adresses avant dexcuter le code stock dans le rfrentiel. Les machines sur lesquelles les modules client et le moteur Datastage sont installes doivent tre visibles entre elles : elles sont identifies par leur nom ou leur adresse IP et doivent tre lies via le rseau (TCP/IP) Seul le serveur communique avec les bases de donnes. Cette liaison seffectue soit par des canaux natifs (Oracle,Sysbase,DB2) soit au travers dun pilote ODBC
01/07/2012
131/151
Les 4 composants clients sont accessibles avec des accs restreints suivant le profil de lutilisateur : Dveloppeur, oprateur. Administrator : Interface graphique dadministration des projets installs sur un serveur Datastage donn. Manager : Interface graphique de cration, de visualisation et de mise jour du contenu du Rfrentiel au travers dune structure arborescente. Designer : Interface de modlisation qui permet de crer les jobs Datastage. Director : Interface graphique dexcution, de contrle et de tests des traitements ETL.
01/07/2012
132/151
ITS Formation Base B.I. Zoom sur la palette des stages disponibles : Annotation : permet dinsrer des bulles explicatives au design. Container : reprsente un groupe de stages et de liens. Link : stage de lien. DB2 : stage entre/sortie DB2/UDB. Oracle : stage entre/sortie Oracle (avec toutes les versions). ODBC : stage entre/sortie pour pilote ODBC Folder : permet daccder en lecture/criture une liste de fichiers. Hashed File : extrait ou charge des donnes dans des fichiers cods. Sequential File : extrait ou crit des donnes dans des fichiers textes. Aggregator : stage dagrgation de donnes. Sort : stage de tri de donnes. Transformer : applique des transformations sur un flux de donnes. Real Time : utiliser dans le cadre dun besoin de temps rel . Favorites : cet onglet permet de regrouper les stages que le dveloppeur utilise le plus frquemment. Job ETL Simple : Source : Oracle Cible : fichier texte Rfrences : Oracle (bases de donnes diffrentes) Les sources tant sur des bases de donnes diffrentes, une jointure SQL en source est impossible. Il faut donc utiliser une jointure ETL avec des rfrences. Gestion des rejets
REFERENCES
SOURCES
TRANSFORMATIONS
CIBLES
REJETS
01/07/2012
133/151
ITS Formation Base B.I. Jobs ETL Complexes : 1 job ET & 1 job TL
JOB 1
JOB 2
01/07/2012
134/151
01/07/2012
135/151
01/07/2012
136/151
ITS Formation Base B.I. Ajustement physique automatique : Les systmes OLAP doivent ajuster leur modle physique en fonction du modle, de la taille des donnes,
01/07/2012
137/151
ITS Formation Base B.I. tablie, l'outil OLAP propose des mthodes de navigation dans les donnes, comme le "drill-down" pour aller vers les informations dtailles dans une hirarchie, le "slice and dice" pour changer d'axe d'analyse. Comme son nom lindique, lanalyse multidimensionnelle est base sur le concept de dimensions. Chaque dimension peut possder une hirarchie associe des niveaux de consolidation. Chaque position dans un tableau multidimensionnel, correspondant une intersection de toutes les dimensions est appele une cellule. Ces dimensions peuvent tre affines, dcomposes en hirarchies, afin de permettre lutilisateur dexaminer ses indicateurs diffrents niveaux de dtail, de " descendre " dans les donnes, allant du niveau global au niveau le plus fin.
Data Warehouse
Moteur MOLAP
Aide la dcision
Traitements
Les donnes sont stockes dans une base de donnes multidimensionnelles le plus souvent propritaires. Cependant il ya des limitations quand la quantit de donnes. Du point de vue de laccs aux donnes, MOLAP se rapproche du squentiel index. Pour accder aux donnes de ce cube, on ne peut pas utiliser le langage de requte standard SQL, il faut utiliser une API spcifique. Cette technique est notamment utilise par : Hyperion Essbase dOracle Powerplay de Cognos Analysis Services de Microsoft Avantages Plus rapide tant que le volume du cube manipuler reste raisonnable. Plus puissant que ROLAP pour les fonctionnalits avances comme la prvision ou la mise jour des donnes pour la simulation.
01/07/2012
138/151
ITS Formation Base B.I. Inconvnients Plus le volume de donnes grer est important, plus les principes dagrgations implicites proposs par MOLAP sont pnalisants dans la phase de chargement de la base, tant en performances quen volume. Selon les offres et lapplication concerne, la limite pourra se situer entre quelques centaines de Mo et quelques Go de donnes brutes. Incompatible avec dautres modes daccs aux donnes, cependant des outils spcifiques (requteurs, Data Mining, ) savent accder ces donnes soit en natif, soit frquemment via une API spcifique de type OLE DB. Sans quoi, il peut tre ncessaire de faire cohabiter deux bases de donnes ! A choisir si Base de donnes de taille raisonnable, Temps de rponse trs rapide demands en restitution.
Data Warehouse
Moteur ROLAP
Aide la dcision
Traitements Gnration de plans d'excution SQL afin d'obtenir des fonctionnalits OLAP.
ROLAP propose une surcouche dabstraction sur un modle relationnel, qui peut sapparenter une version multidimensionnelle des dictionnaires des requteurs. Les outils ROLAP proposent le plus souvent un composant serveur pour optimiser les performances lors de la navigation dans les donnes ou pour les calculs complexes. Du point de vue de laccs aux donnes, ROLAP sappuie sur les techniques usuelles des SGBDR (jointures, index, ). ROLAP n'agrge rien, mais tire parti des agrgats s'ils existent. De ce fait ROLAP est plus lourd administrer que MOLAP, puisqu'il demande de crer explicitement certains agrgats. En s'appuyant sur les bases relationnelles, rfrence du march, ROLAP tire partie des volutions de celles-ci (adaptation aux architectures hardware sophistiques, extensions objets, etc.). Cette technique est notamment utilise par :
01/07/2012
139/151
ITS Formation Base B.I. MicroStrategy Cartesis Avantages Peut supporter de trs gros volumes en exploitant des techniques de partitionnement de donnes ou daccs en parallle. Tire parti des volutions des bases relationnelles (adaptation aux architectures hardware complexes, extension objet, etc.). Mise en uvre des requtes complexes plus facile. Pas de SGBD multidimensionnel acqurir Inconvnients Plus lent que MOLAP sur de petits volumes. Plus lourd administrer que MOLAP puisquil demande de crer explicitement certains agrgats. Ncessite des efforts de conception, dadministration et de tuning. A choisir si Base de donnes de taille importante
2.2.2.4 Synthse
La classification en diffrentes catgories OLAP ne suffit pas dterminer les capacits dun produit, elle permet simplement davoir une ide sur les points forts et faibles de ces diffrentes technologies. De plus, ce march volue trs vite, et les grands diteurs de bases relationnelles ne cessent dajouter des fonctionnalits OLAP leurs produits, tandis que les diteurs de bases multidimensionnelles tendent sinterfacer avec les bases relationnelles pour le stockage des informations de dtail. En conclusion, on peut noter que de plus en plus de produits offrent la possibilit de travailler dans les deux mondes, relationnel et multidimensionnel afin de tirer le meilleur de chaque technologie.
01/07/2012
140/151
01/07/2012
141/151
Chaque cube auquel vous accdez dans PowerPlay est bas sur un modle Transformer. Pour crer un modle, vous devez : spcifier les sources de donnes pour le modle, dfinir les dimensions, les niveaux et les mesures dans le modle,
01/07/2012
142/151
01/07/2012
143/151
3 REPORTING
Lobjectif mme de linformatique dcisionnelle est partir de donnes brutes, en gnral sous forme de sens le plus large possible), et ainsi tre en mesure va mme jusqu proposer lui-mme un dbut de front users, utilisateurs finaux. de pouvoir produire de linformation rapports (nous prendrons ici ce mot au de prendre une dcision (le datamining solution). Cest donc un outil orient
Le Datawarehouse nest quun outil pour rassembler les donnes des bases de productions et fournir ainsi une information plus complte, de meilleure qualit, etc Le reporting peut aussi bien se servir des bases de production que du Datawarehouse ou des Datamarts. Le reporting nest pas une simple visualisation des donnes ; il offre un dbut danalyse. Par exemple, plus que de pouvoir visualiser les chiffres dun clusters, il doit permettre de les croiser avec dautres donnes pour obtenir une information plus pertinente (dans le sens : utile pour la prise de dcision). A linstar des autres secteurs du dcisionnel, chaque outil de reporting a ses spcificits quil faut tudier en fonction des besoins. Ltude qui suit est divise en quatre parties : la premire tudie le reporting en fonction du degr danalyse souhaite, la suivante en fonction du corps de mtier de lutilisateur, ensuite en fonction de la diffusion vise (Internet, document Excel ou Word, etc) et enfin en fonction du niveau de comptence des cibles.
01/07/2012
144/151
ITS Formation Base B.I. Consiste passer une ou plusieurs dimensions des colonnes vers les lignes ou vice-versa. Slice and Dice Slice ou tranche indique une portion dun cube. Slice & Dice est le fait de slectionner une portion en particulier pour la visualiser via des oprations de drill et de rotation.
3.2 Cibles
La publication des rapports peut se faire sur de multiples supports. Selon le nombre de destinataires, il est mme fort possible dutiliser plusieurs supports dans un mme projet. Les canaux de distribution peuvent aussi varier : envoie par e-mail, diffusion intranet ou Internet, stockage en local Tous les outils de reporting ne grent pas les mmes formats, et peu proposent un systme de diffusion via de multiples canaux. Cette partie dpend des utilisateurs finaux, il faut donc bien savoir qui sadressent les rapports et o sont accessibles ces personnes pour dterminer dans un premier temps le(s) format(s) ncessaire(s), les moyens de diffusion employer, et ainsi complter la liste des critres pour le choix dun outil de reporting.
3.3 Mtiers
Aprs tre restes quelques temps gnralistes, les applications dcisionnelles, pour tre plus proche des besoins des utilisateurs, se sont spcialises. On trouve maintenant un certain nombre de modules et dapplications ddis un corps de mtier en particulier. Bien que le dcisionnel trouve cho dans de nombreux domaines, certains secteurs sont beaucoup plus demandeurs que dautre : les assurances, les banques, la grande distribution, chacun ayant des besoins propres. Certains logiciels proposent un ensemble de modules spcialiss dans le domaine de la Finance (Ex : Hyperion Planning). Chacun apporte des outils danalyse utiliss spcifiquement dans le secteur auquel il est destin.
01/07/2012
145/151
ITS Formation Base B.I. Ils sont capables de rdiger des requtes complexes (rfrences croises, jointures) en fonction des besoins. Les requtes ainsi cres peuvent tre migres vers une application utilisateur pour servir dans un rapport. Les applications permettant des requtes Ad-Hoc, via un wizard ou directement en SQL, proposent de rapatrier des donnes sans passer par un masque. Cela implique que de tels utilisateurs connaissent la structure de la base de donnes source, ce qui en gnral inclut une connaissance du SQL.
DWH
Serveur ReportNet
Web
Sources Dauthentification
01/07/2012
146/151
ITS Formation Base B.I. TROIS TIERS : ce fonctionnement utilise le module Intelligence Server comme moteur SQL et Moteur Analytique. Contrairement au prcdent, ce fonctionnement centralise les connexions aux bases de donnes. Il peut donc possible damliorer les performances de loutil en mettent en place des stratgies de cache
01/07/2012
148/151
GLOSSAIRE
01/07/2012
149/151
GLOSSAIRE
Analyse multidimensionnelle : concept qui dfinit les analyses effectues par croisement de plus de trois dimensions (ou ensemble de donnes du mme type ou encore axes). Applications analytiques : applications dcisionnelles prtes lemploi (livres avec un modle de donnes, des requtes pr paramtrs, etc. pour lanalyse dun domaine spcifique : CRM, budget, etc. Axe danalyse : ou dimension. Les ventes dun produit peuvent par exemple tre analyses par rgion (axe 1), poque (axe 2), magasin (axe 3), etc. Cube : Structure multidimensionnelle permettant lanalyse dinformations factuelles en les segmentant sur un ensemble daxes danalyses. Datamart : base de donnes, spcifique au monde dcisionnel, oriente sujet ou mtier. Un Datamart peut contenir des donnes dupliques dun Datawarehouse et/ou des donnes locales. Datamining : Traitement et analyse statistiques de bases de donnes permettant dtablir des relations et des comportements types. Avec lanalyse multidimensionnelle classique, on sait ce que l on cherche tandis quavec le datamining, on ne sait pas forcment ce que lon cherche. On essaye plutt dtablir des corrlations entre des donnes afin den tirer des renseignements, des indicateurs, des anomalies, des correspondances, etc. qui peuvent mettre en vidence des tendances. Datawarehouse : ou entrept de donnes. Base dans laquelle les donnes sont centralises et organises pour le support dun processus d aide la dcision. Dcisionnel : Processus dutilisation de connaissances extraites par analyse des informations et des donnes gnres par les processus mtiers de lentreprise pour dterminer la meilleure action entreprendre, la meilleure dcision prendre. Dimension : ou axe. Les ventes dun produit peuvent par exemple tre analyses par rgion (axe 1), poque (axe 2), magasin (axe 3), etc. Il existe plusieurs type de dimension ( Dgnre, Junk...) Drill down (ou drill through) : mcanisme de navigation dans une structure multidimensionnelle permettant daller du plus global au plus dtaill laide de requtes de type hirarchique. ETL : Extract Transform Loading. Serveur charg dextraire, nettoyer et transformer les donnes manant de sources diverses pour ensuite les insrer dans une base de donnes (datawarehouse, datamart, etc.). Fait : Mesure, que l'on veut analyser, exemple le total des ventes. Il existe plusieurs type de faits, additive, semi-additive, de couverture... Indicateur : statistique, suivie au fil du temps, qui prsente les tendances dune condition ou dun phnomne, au-del des proprits de la statistique elle-mme. Les indicateurs permettent dobtenir de linformation supplmentaire. Ils offrent un moyen dvaluer les progrs en vue dun objectif. On peut concevoir toutes sortes dindicateurs : mesure de la rentabilit, des ventes, de lvolution des clients, etc. Intgrit : Ensemble de contraintes appliques aux mises jour dune base de donne permettant de garantir la cohrence des donnes. Ces contraintes peuvent tre des listes de valeurs respecter (non nullit et intgrit de domaine) ou bien des liens entre des tables (intgrit rfrentielle). Par exemple, une commande doit forcment rfrencer un client : le numro de client insr dans une ligne de la table commande doit exister dans la table client.
01/07/2012
150/151
01/07/2012
151/151