ITS Formation Base BI v1 ALPHA

183
Alpha BI FORMATION DE BASE À LA BUSINESS INTELLIGENCE 12/06/2022 1/183

Transcript of ITS Formation Base BI v1 ALPHA

Page 1: ITS Formation Base BI v1 ALPHA

Alpha BI

F O R M A T I O N D E B A S E À L A

B U S I N E S S I N T E L L I G E N C E

12/04/2023 1/142

Page 2: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

H I S T O R I Q U E D E S É V O L U T I O N S

Version Descriptif de l'évolution AuteurIndice Date

1.0 01/08/07 Version initial ALPHA

S O M M A I R E

CHAPITRE 1............................................................................................................................3

BASE DE DONNÉES ET LANGAGE SQL...........................................................................3

CHAPITRE 2..........................................................................................................................71

FONDAMENTAUX DE LA BUSINESS INTELLIGENCE..............................................71

CHAPITRE 3..........................................................................................................................85

CONCEPTION DÉCISIONNELLE ET PROCESSUS DE CONSTRUCTION D’UNE BDD..........................................................................................................................................85

CHAPITRE 4........................................................................................................................117

LES OUTILS DÉCISIONNELS..........................................................................................117

GLOSSAIRE...........................................................................................................................140

12/04/2023 2/142

Page 3: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Chapitre 1

Base de données et langage SQL

12/04/2023 3/142

Page 4: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

S O M M A I R E

SOMMAIRE...............................................................................................................................4

1 LA BASE DE DONNÉE....................................................................................................5

1.1 Introduction : langage SQL.......................................................................................51.2 Généralités sur les bases de données (BDD)...........................................................51.3 Les schémas.............................................................................................................61.4 Les types de données...............................................................................................71.5 Les contraintes champs..........................................................................................101.6 Présentation de la base de données.......................................................................11

2 CONCEPTS DU RELATIONNEL................................................................................12

2.1 Domaine et relation.................................................................................................122.2 Dépendance fonctionnelle.......................................................................................132.3 Les différentes clés.................................................................................................132.4 Normalisation..........................................................................................................142.5 Exercice sur les concepts du relationnel.................................................................18

3 LE LANGAGE SQL........................................................................................................19

3.1 Les opérateurs........................................................................................................193.2 Le langage de définition..........................................................................................223.3 Le langage de requête............................................................................................283.4 Le langage de manipulation....................................................................................333.5 Le langage de contrôle (Commandes DCL) => Cf Annexe....................................353.6 Optimisation des requêtes......................................................................................363.7 Initiation aux procédures stockées..........................................................................38

4 EXERCICE SUR LE LANGAGE SQL.........................................................................40

5 ANNEXES SQL...............................................................................................................42

5.1 Les commandes DCL..............................................................................................425.2 Les commandes transactionnelles..........................................................................535.3 Les fonctions SQL...................................................................................................545.4 Les déclencheurs (Triggers)...................................................................................64

12/04/2023 4/142

Page 5: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

11 LA BASE DE DONNÉELA BASE DE DONNÉE

1.1 Introduction : langage SQL

Le SQL est un langage de requête structuré (Structured Query Language) destiné à communiquer avec des bases de données relationnelles implémentées dans des SGBDR (Système de Gestion de Bases de Données Relationnelles) tels que Oracle, Access, SQL Server ou encore Sybase.

Le langage SQL permet d'effectuer diverses opérations comme la création, l'extraction, la modification, la suppression, la fusion, etc., sur des collections de données, par l'intermédiaire d'instructions particulières appelées des commandes, souvent assistées d'ailleurs par des clauses ou des options.

Malgré l'existence d'un standard destiné à assurer un degré de compatibilité optimal entre les différents SGBDR, les éditeurs ont pour la plupart intégré des adjuvants, soit des extensions propriétaires améliorant leur propre implémentation. L'ensemble de ce cours est évidemment tributaire des différences entre les différentes implémentations.

1.2 Généralités sur les bases de données (BDD)

Les bases de données sont utilisées pour le stockage de diverses informations, ordonnées en de multiples unités hiérarchisées.

La structure atomique d'une base de données permet au développeur de la décomposer en plusieurs objets représentant chacun une de ses dimensions.

Ainsi, un objet principal base de données se divise en d'autres objets appelés tables, elles-mêmes scindées en objets colonne et ligne dont découlent par référence croisée, les valeurs.

Une base de données se compose, donc, d'une à plusieurs tables, dont chacune est identifiée par un nom.

Les tables contiennent un à plusieurs enregistrements, c'est-à-dire des lignes de données.Chacune des tables d'une base de données se décompose en un à plusieurs champs appelés également colonnes.

Table

Champ_1(col_1)

Champ_2(col_2)

Champ_3(col_3)

Champ_4(col_4)

Valeur Valeur Valeur Valeur

Valeur Valeur Valeur Valeur

<----------------------- Enregistrement ---------------------->( Ligne )

Ces colonnes sont représentées d'une part par un nom individuel servant à leur identification dans une table et d'autre part par un type de données pour le genre

12/04/2023 5/142

Page 6: ITS Formation Base BI v1 ALPHA

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

ID Nom Prenom CP

NUMBER(10) VARCHAR(20) VARCHAR(20)NUMBER(5)

Chaque enregistrement d'une table doit posséder une clé unique, utilisée pour les distinguer individuellement, à l'image d'un numéro de sécurité sociale pour chaque individu. Une colonne spécialement conçue à cet effet doit contenir ce genre d'informations où aucun doublon n'est permis. Cette colonne est appelée la clé primaire d'une table. L'indexation ainsi effectuée permet un accès rapide et sans équivoque à un enregistrement particulier d'une table.

La manipulation des données s'effectue par l'intermédiaire de requêtes regroupant plusieurs instructions SQL. Une requête précise est capable entre autres, d'accomplir des extractions, des ajouts, des mises à jour, des suppressions de données.

L'exécution de certaines requêtes sur des bases de données peut retourner des objets spécifiques, comme des vues.

Une vue est une table virtuelle dont le contenu est déterminé par une requête. Une vue possède donc une structure identique à celle d'une table de base de données hormis que ses lignes et ses colonnes proviennent d'une à plusieurs tables indiquées dans la requête.

1.3 Les schémas

Un schéma est une collection d'objets comme des tables ou des vues, associée à un nom d'utilisateur de la base de données.

Dans la pratique, tout utilisateur créant un objet dans une base de données, engendre systématiquement un schéma, et partant, le nom de l'utilisateur devient le propriétaire de sa propre réalisation.

L'accès aux objets d'un schéma par un utilisateur quelconque, s'effectue par l'intermédiaire du nom du propriétaire associé à celui de l'objet.

Syntaxe  : nom_utilisateur.nom_objet

Chaque objet dans une base de données créé par leur utilisateur est ainsi clairement identifié par le couple propriétaire.objet, évitant d'une part d'éventuelles noms doubles et d'autre part des problèmes de sécurité.

En outre, il est possible de créer explicitement un schéma à l'aide de la commande CREATE SCHEMA.

Instruction CREATE SCHEMA

CREATE SCHEMA AUTHORIZATION nom_schéma{ instruction_CREATE_TABLE

12/04/2023 6/142

Page 7: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. instrustion_CREATE_VIEW instruction_GRANT};

La commande CREATE SCHEMA propose un moyen de créer des tables, des vues et d'accorder des privilèges pour les objets à partir d'une unique instruction.

1.4 Les types de données

Il existe quatre types de données principaux dans le langage SQL. Les nombres entiers ou réels Les chaînes de caractères Les dates et heures Les données binaires

Les nombres décimaux sont composés de deux parties distinctes; une avant le séparateur décimal et l'autre après. La longueur de cette dernière partie est fixée par un argument spécial, l'échelle, au sein des types de données numériques et la longueur totale par un autre argument, la précision.

Syntaxe  : NUMERIC(Précision, Echelle)

La précision détermine la nombre maximum de chiffres d'une valeur numérique.

☺ Exemple :NUMERIC(8, 0) -> 10 000 000

L'échelle d'une valeur numérique représente le nombre de chiffres de la partie décimale, soit celle à droite du séparateur décimal, le point ou la virgule selon les spécifications du système local.

☺ Exemple :NUMERIC(3, 5) -> 742.23876

Les données alphanumériques peuvent être de longueur fixe ou variable. Dans le premier cas, il sera toujours demandé un argument indiquant la taille en

octets de la chaîne de caractères.

☺ Exemple :CHARACTER(10)La taille du texte est fixée à 10 caractères.

Dans le second cas, le type devra être suivi d'une instruction spécifique, en l'occurrence VARYING permettant à un champ d'accepter des chaînes de caractères de taille variable. En outre, une taille maximum peut également être indiquée en argument.

☺ Exemple :CHARACTER VARYING(16384)La taille du texte est limitée à 16 384 caractères.

12/04/2023 7/142

Page 8: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.1.4.1 Les types de données de SQL Server

SQL_VARIANTreprésente un variant SQL pouvant être de n'importe quel type, hormis les données ntext et text.DATETIMEreprésente une valeur de date et d'heure comprises entre le 1er janvier 1753 et le 31 décembre 9999.SMALLDATETIMEreprésente une valeur de date et d’heure courte comprise entre le 1er janvier 1900 et le 6 juin 2079.TIMESTAMPindique la séquence de l'activité SQL Server sur une ligne, représentée sous la forme d'un nombre croissant au format binaire.NUMBER(Précision, Echelle)représente un nombre avec une précision et une échelle à préciser.FLOATreprésente une valeur numérique flottante comprise entre -1.79E+308 et 1.79E+308.REALreprésente une valeur numérique réelle comprise entre-3.40E+38 et 3.40E+38.DECIMALreprésente une valeur numérique décimale comprise entre -1038+1 et 1038–1.MONEYreprésente une valeur numérique monétaire comprise entre -922 337 203 685 477,5808 et +922 337 203 685 477,5807.SMALLMONEYreprésente une valeur numérique monétaire courte comprise entre -214 748,3648 et +214 748,3647.BIGINTreprésente une valeur numérique entière comprise entre -9 223 372 036 854 775 808 et 9 223 372 036 854 775 807.INTreprésente une valeur numérique entière comprise entre -2 147 483 648 et 2 147 483 647.SMALLINTreprésente une valeur numérique entière comprise entre -32 768 et 32 767.TINYINTreprésente une valeur numérique entièr comprise entre 0 et 255.BITreprésente une valeur binaire 1 ou 0.NTEXTreprésente une chaîne de caractères UNICODE-UCS-2 d'une longueur variable d'un maximum de 2 147 483 647 caractères.NVARCHARreprésente une chaîne de caractères UNICODE-UCS-2 d'une longueur variable d'un maximum de 4 000 caractères.NCHARreprésente une chaîne de caractères UNICODE-UCS-2 d'une longueur fixe d'un maximum de 4 000 caractères.TEXTreprésente une chaîne de caractères non-Unicode d'une longueur variable d'un maximum de 1 073 741 823 caractères.VARCHAR(n)représente une chaîne de caractères non-Unicode d'une longueur variable d'un maximum de 8

12/04/2023 8/142

Page 9: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.000 caractères.CHAR(n)représente une chaîne de caractères non-Unicode d'une longueur fixe d'un maximum de 8 000 caractères.VARBINARYreprésente une valeur binaire de taille variable d'un maximum de 8 000 octets.BINARYreprésente une valeur binaire de taille fixe d'un maximum de 8 000 octets.IMAGEreprésente une valeur binaire de taille variable d'un maximum de 2 147 483 647 octets.UNIQUEIDENTIFIERreprésente un identificateur unique global (GUID : Global Unique IDentifier).CURSORreprésente la valeur contenu dans un curseur.

1.4.2 Les types de données d’Oracle

DATEreprésente une valeur de date et d'heure comprises entre le 1er janvier 4712 BC et le 31 décembre 4712 AD.TIME(Nb)représente une valeur horaire avec des heures comprises entre 00 et 23, des minutes comprises entre 00 et 59 et des secondes entre 00 et 61.999. Le nombre Nb indique le nombre de chiffres dans les secondes, compris entre 0 et 6.TIMESTAMPutilisé pour le stockage, représente des valeurs de date : année, mois et jour, et des valeurs horaires : heure, minute et seconde.NUMBER(p, e)représente un nombre avec une précision p de 1 à 38 chiffres et une échelle e comprise dans l'intervalle de -84 à 127.NUMERIC(p, e)représente un nombre avec une précision et une échelle comprises entre 0 et 38.DECIMAL(p, e)représente un nombre décimal avec une certaine précision p et une certaine échelle e comprise entre 0 et 38.REALreprésente un nombre à virgule flottante de simple précision, compris entre 10-38 et 1038.FLOAT(p)représente un nombre à virgule flottante avec une certaine précision, compris entre 10-308 et 10308.DOUBLE PRECISIONReprésente un nombre à virgule flottante de double précision, compris entre 10-308 et 10308.TINYINTReprésente un nombre entier compris entre -128 et +127.SMALLINTReprésente une valeur numérique entière comprise entre -32 768 et 32 767.INTEGERReprésente un nombre entier compris entre -231 et 231.BIGINTReprésente un nombre entier avec une précision de 19 chiffres compris entre -1019 et 1019.CHAR(Longueur)représente une chaîne de caractères non-Unicode d'une longueur fixe d'un maximum de 4 000 caractères. L'instruction VARYING permet d'adopter une longueur variable à l'image de

12/04/2023 9/142

Page 10: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.VARCHAR.VARCHAR(Nb_Octet)VARCHAR2(Nb_Octet)Représente une chaîne de caractères d'une longueur variable maximum de 4 096 octets.LONG VARCHAR(Nb_Octet)Représente une chaîne de caractères d'une longueur variable maximum de 2 gigaoctets.CLOBreprésente une grande chaîne de caractères UNICODE-UCS-2 d'une longueur variable d'un maximum de 2 gigaoctets.BIT(Nb_Bit)représente la valeur d'un bit, soit 0 ou 1. RAW(Nb_Octet)représente des données binaires brutes d'une taille maximum de 2 000 octets.BINARY(Nb_Octet)représente une valeur binaire de taille fixe d'un maximum de 4 096 octetsVARBINARY(Nb_Octet)utilisé pour le stockage, représente une valeur binaire d'une longueur variable.LONG VARBINARY(Nb_Octet)utilisé pour le stockage, représente des données binaires brutes d'une taille variable maximum de 2 gigaoctets.LONGreprésente une chaîne de caractères d'une longueur variable d'une taille maximum de 2 gigaoctets.LONG RAW(Nb_Octet)représente des données binaires brutes d'une taille maximum de 2 gigaoctets.BLOBreprésente une grande valeur binaire d'une taille d'un maximum de 2 147 483 647 octets.ROWIDreprésente une valeur hexadécimale de 16 octets représentant l'adresse unique d'une ligne de tableau.

1.5 Les contraintes champs

Les contraintes permettent d'indiquer les valeurs permises au sein des colonnes d'une table afin d'obtenir des caractéristiques spécifiques comme l'acceptation de valeurs nulles ou non nulles, l'interdiction des doublons ainsi que l'affectation de clés primaire et étrangère.

Syntaxe  : Nom_Champ Type_Donnée Contrainte

Définition_Champ NULLindique que le champ peut accepter des valeurs nulles.Définition_Champ NOT NULLindique que le champ n'accepte pas de valeurs nulles.Définition_Champ UNIQUEindique que les valeurs du champ ne peuvent comporter de doublons.Définition_Champ PRIMARY KEYindique que le champ constitue la clé primaire de la table et que les doublons sont interdits.CONSTRAINT Nom_Contrainte FOREIGN KEY ChampREFERENCE Table_Pointée(Champ_Clé_Primaire)ON UPDATE { CASCADE | NO ACTION }ON DELETE { CASCADE | NO ACTION }indique que le champ constitue la clé étrangère référencée dans une autre table. Les clauses ON UPDATE et ON DELETE permettent (CASCADE) ou ne permettent pas (NO ACTION)

12/04/2023 10/142

Page 11: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.respectivement la mise à jour ou la suppression de lignes de données mise en relation référentielles par la clé concordante.

La commande CONSTRAINT permet de définir une contrainte sur une colonne lors de la création d'une table.

Syntaxe  : CONSTRAINT Définition_Contrainte

Les contraintes peuvent être modifiées ou supprimées par l'intermédiaire de la commande ALTER TABLE.

Syntaxe  : ALTER TABLE nom_table MODIFY CONSTRAINT nom_contrainteALTER 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 )

1.6 Présentation de la base de données

Lors de cette formation, nous allons utiliser une base de données nommé formation qui va nous servir d’exemple et d’exercice.

Schéma physique de la baseJOUER

Jouer CodeFilm CodeTitreGenreDateActeur CodeActeur NomActeur PrénomRôle

intintvarchar(128)varchar(64)datetimeintvarchar(64)varchar(64)varchar(128)

<pk>

CINEMA

Cinema CodeCinema NomVilleCinema TypeCinema Groupe

intvarchar(64)varchar(128)varchar(2)varchar(64)

<pk> PROJECTION

JourFilm CodeCinema Code

varchar(10)intint

<pk><pk><pk>

GEOGRAPHIE

VillePostal CodeTransport CodeTransport TypeFrequence Transport ParisRegion CodeRegion Descritpion

varchar(128)integerchar(1)varchar(64)integervarchar(5)varchar(164)

12/04/2023 11/142

Page 12: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

22 CONCEPTS DU RELATIONNELCONCEPTS DU RELATIONNEL

2.1 Domaine et relation

2.1.1 Définition

Un domaine est un ensemble de valeurs sémantiquement homogènes

☺ Exemple :Prenons la table CINEMA :DOM_NOM = {UGC Le Renoir, Espace Ciné, Le Fontenelle}DOM_CODE = {01, 04, 02}

Toute donnée ne doit pouvoir être insérée dans la base que si elle satisfait à la définition de son domaine. Cette vérification doit être assurée par le SGBD.

Il faudrait pour cela pouvoir définir les domaines grâce à un Langage de Définition des Données (DDL en anglais) qui reste à créer.Certes il existe un DDL SQL normalisé ISO, mais il n’est pour l’instant mis en œuvre par aucun SGBD du marché.

En revanche, beaucoup de SGBD du marché ont défini un typage de données, c'est-à-dire des règles que doivent respecter les données. C’est pour l’instant ce qui se rapproche le plus de la notion de domaine

Une relation est un sous ensemble (doté d’un prédicat et d’opérateurs) du produit cartésien d’une liste de domaines, tel que chaque ligne satisfasse un critère de vérité du « micro-monde » modélisé.

☺ Exemple : Produit cartésien des deux domaines définis les plus hauts :

DOM_CODE x DOM_NOM Cinéma Code Cinéma Nom

Le Fontenelle 01Le Renoir 03Espace Ciné 04

2.1.2 Terminologie

Relation n’est pas synonyme de table.

Une table n’est qu’une relation d’un type particulier. Il existe d’autres relations qui ne sont pas des tables : les vues

Degré d’une relation : nombre d’attributs

12/04/2023 12/142

Page 13: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Cardinalité d’une relation : nombre de lignesSchéma d’une relation : nom de la relation, suivi de la liste de ses attributs (Ex : CINEMA {CODE, NOM})

2.1.3 Notion d’ordre

En théorie, pour les lignes et les attributs la notion d’ordre est indifférente.

La recherche de performances oblige cependant la plupart des SGBD dits relationnels à enfreindre ce principe. Les lignes sont alors stockées dans un ordre qui privilégie les traitements les plus fréquents (ordre alphabétique des réalisateurs par exemple).

2.2 Dépendance fonctionnelle

Soit la relation R, soient x et y deux sous-ensembles d’attributs de R, Y dépend fonctionnellement de x, Si à chaque valeur de x correspond au plus une valeur de y.

Notation : On note x -> y

☺ Exemple : Dans la table CINEMA, CODE -> NOM

Dans la table JOUER, ACTEUR NOM -> ACTEUR PRENOM (seulement si pas d’homonyme)

Remarque

Dans la réalité, rares sont les attributs » naturels qui sont déterminants d’autre attributs.

On a donc fréquemment recours à des attributs artificiels qui déterminent tous les autres.

La création de tels identifiants artificiels ne doit être réalisée qu’en cas de besoin réel, et respecter des règles qui requièrent des compétences en modélisation des données et ne font pas l’objet de ce cours.

Il est en particulier indispensable d’inventorier la totalité des dépendances fonctionnelles de la relation pour s’assurer qu’une combinaison de ses attributs naturels ne détermine pas les autres

2.3 Les différentes clés

Il existe deux types de clés, la clé candidate et la clé primaire.

12/04/2023 13/142

Page 14: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.2.3.1 Clé candidate

Ensemble minimum d’attributs qui déterminent tous les autres

Elle peut être simple (mono-attribut) ou multi-attributs

2.3.2 Clé primaire

Clé choisie parmi les clés candidates Par définition, la clé primaire nous permet d’identifier de façon unique chacune des lignes de la table.

Comme, par définition, cette clé primaire est composée d’un ensemble minimum d’attribut, il faut respecter la règle d’intégrité d’entité :

Aucun des attributs de la clé primaire ne peut prendre la valeur nulle

2.4 Normalisation

2.4.1 Première forme normale

Une table est en première forme normale si :

Pour une ligne et un attribut de données, on ne peut trouver au plus qu’une valeur

☺ Exemple :Table « Non first Normal Form »

JOUER Acteur Nom Acteur Prénoms

Kidman NicoleWayne JohnCruise Tom, Pénélope

Table 1NF

JOUER Acteur Nom Acteur Prénom

Kidman NicoleWayne JohnCruise TomCruise Pénélope

Remarque sur les «   Valeurs Nulles   »

La première forme normale interdit d’avoir plus d’une valeur pour une ligne et un attribut de données.

12/04/2023 14/142

Page 15: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Il est en revanche possible de ne pas avoir de valeur pour une ligne et une colonne données.

Attention, « Nulle » ne veut pas dire égale à zéro mais non connue

La normalisation consiste à éliminer les redondances induites par le respect de la première forme normale

Pour cela on définit six étapes de normalisation : 1NF, 2NF, 3NF, BCNF, 4NF et 5NF

2.4.2 Utilité de la normalisation

La normalisation consiste à éliminer les redondances induites par le respect de la première forme normale.

Normaliser un schéma relationnel c'est le remplacer par un schéma équivalent où toutes les relations vérifient certaines propriétés.

La normalisation est utile : pour limiter les redondances de données, minimiser l’espace de stockage, pour limiter les pertes de données, pour limiter les incohérences au sein des données, pour améliorer les performances des traitements. éviter les problèmes de mises à

jour.

☺ Exemple :

Soit la relation (en première forme normale), qui permet de stocker des informations sur les films et les acteurs associés :

JOUER Jouer Code

Titre Acteur Nom Acteur Prénom Rôle

01 Dogville Kidman Nicole Grace02 Dogville Bettany Paul Tom Edison03 Dogville Skarsgard Stellan Chuck05 Breaking the waves Skarsgard Stellan Jan06 Pulp Fiction Travolta John Vincent Vega

Cette relation contient un certain nombre de redondances d’informations et sera, de ce fait, difficile à manipuler sans perdre d’informations ou introduire des incohérences.

Difficultés pour les mises à jour liées aux redondances : Si « Skarsgard » change de nom (dans cet exemple, peu probable…), il faut mettre à

jour toutes les lignes qui le référencent.

Difficultés lors des suppressions : Supprimer la ligne (05) fait perdre les informations relatives au film et à l’acteur dont

les existences ne sont pas forcément liées.

12/04/2023 15/142

Page 16: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.2.4.3 Deuxième forme normale

Une entité ou une relation en première forme normale est en deuxième forme normale si tout attribut non clé dépend de la clé primaire par une dépendance fonctionnelle élémentaire pleine cad tout attribut non clé ne dépend pas d’une partie de la clé.

Une relation avec une clé candidate choisie réduite à un seul attribut est, par définition, forcément en 2NF.

☺ Exemple :En partant des informations stockées dans la table Jouer, on définit les règles de gestion suivantes :

Un film peut avoir plusieurs acteurs Un acteur peut travailler sur plusieurs films

Seul le couple (Film Code, Acteur Code) détermine l’ensemble des autres attributs.Il doit donc être choisi comme clé primaireLa relation initiale doit donc être fragmentée en 3 relations respectant la 2ème forme normale.

FILM Film Code Titre Genre Date

JOUER Film Code Acteur Code Rôle

ACTEUR Acteur Code Nom Prénom

2.4.4 Troisième forme normale

Une entité ou une relation en deuxième forme normale est en troisième forme normale si aucun attribut non clé ne dépend d’un autre attribut non clé.

☺ Exemple :Dans la table Cinéma, une règle de gestion s’impose : à un type de cinéma ne correspond qu’un groupe de cinéma.

CINEMA Cinema Code

Cinema Nom Ville Cinema Type

Cinema Groupe

01 UGC Le RenoirAix-en-Provence C1 UGC

02 Le Fontenelle Marly-le-Roi C0 Indépendant

03Gaumont Wilson Toulouse C2 Gaumont

04 Espace CinéEpinay-sur-Seine C0 Indépendant

05 Le toulouse Toulouse C0 Indépendant

La dépendance fonctionnelle Cinema Code -> Cinema Groupe est transitive et cela induit de la redondance : Cinema Code -> Cinema Type -> Cinema GroupeCINEMA doit donc être décomposée pour respecter la troisième forme normale :

CINEMA Cinema Code Cinema Nom Ville Cinema Type

12/04/2023 16/142

Page 17: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.CINEMA TYPE Cinema Type Cinema Groupe

2.4.5 Récapitulatif

Schématiquement, on peut dire qu’une relation est normalisée 3FN lorsque : Elle a une clé primaire qui identifie chaque ligne de manière unique Tout attribut non clé dépend :

o De la cléo De toute la clé (2NF)o Rien que de la clé (3NF)

Avantage : la redondance est limitée aux clésRisque : il faut s’assurer que les valeurs de la clé d’une relation dupliquée dans une autre existent bien dans la relation dont elles sont sensées être issues. On parle d’intégrité référentielle qui peut être assurée par les programmes applicatifs et/ou le SGBD.

2.4.6 Intégrité référentielle

Dans le cas des trois tables 2NF obtenues dans l’exemple du paragraphe 2.4.3 : Les valeurs prises par le Film Code dans la table JOUER doivent exister dans la table

FILM Les valeurs prises par le Acteur Code dans la table JOUER doivent exister dans la

table ACTEUR

FILM Film Code Titre Genre Date

JOUER Film Code Acteur Code Rôle

ACTEUR Acteur Code Nom Prénom

On dit alors que les tables FILM et JOUER d’une part, ACTEUR et JOUER d’autre part, doivent respecter le principe d’intégrité référentielle.

Définitions

La table qui contient les valeurs de référence de l’attribut est dite table parente (ou de référence).Une table qui fait référence à cet attribut est dite table fille (ou dépendante)La colonne Film Code de la table JOUER est une clé étrangère faisant référence à la table FILM. La colonne Acteur Code de la table JOUER est une clé étrangère faisant référence à la table ACTEUR.

La clé étrangère, ciment des relations, ne peut avoir une autre valeur que : Nulle Egale à une valeur de la clé primaire de la relation parent

Si l’intégrité référentielle n’existe pas ou n’est pas mise en œuvre, elle doit être alors prise eb charge par les programmes applicatifs, qui assurent de ce fait une partie des tâches du SGBD.

12/04/2023 17/142

Page 18: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

2.5 Exercice sur les concepts du relationnel

La table Géographie servira de base pour cet exercice.

1/ Chercher toutes les dépendances fonctionnelles de cette table2/ Déterminer les clés candidate puis choisir la clé primaire3/ Dans quelle forme normale se trouve cette table4/ Passer cette table en 3NF en passant par chaque NF intermédiaire si nécessaire5/ Déterminer les tables parentes/filles et les clés étrangères

Réponses1/Postal Code <-> Ville ; Transport Code <-> Transport Type ; Transport Code -> Fréquence Transport Paris ; Postal Code -> Fréquence Transport Paris ; Ville -> Fréquence Transport Paris ; Transport Type -> Fréquence Transport Paris ; Postal Code -> Région Code ; Ville -> Région Code ; Postal Code -> Région Description ; Ville -> Région Description ; Région Code <-> Région Description ;

2/(Ville, Transport Code)(Ville, Transport Type)(Postal Code, Transport Code)(Postal Code, Transport Type) Clé primaire : (Postal Code, Transport Code) => il est préférable d’utiliser des codes integer (surtout en cas d’homonyme de villes par exemple).

3/1NF

4/2NFVILLE Postal Code Ville Région Code Région Description

FREQUENCE Postal Code Transport Code Fréquence Transport Paris

TRANSPORT Transport Code Transport Type

3NFVILLE Postal Code Ville Région Code

REGION Région Code Région Description

FREQUENCE Postal Code Transport Code Fréquence Transport Paris

TRANSPORT Transport Code Transport Type

5/ Clés étrangères : Postal Code dans table Fréquence, Transport Code dans table Fréquence, Région Code dans table RégionParent/Fille : Ville/Fréquence, Transport/Fréquence, Région/Ville

12/04/2023 18/142

Page 19: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

33 LE LANGAGE SQLLE LANGAGE SQL

3.1 Les opérateurs

3.1.1 Opérateurs arithmétiques et de concaténations Ces opérateurs permettent d'effectuer des calculs arithmétiques ou des opérations de concaténation à l'intérieur de requêtes SQL.

InstructionSELECT Col1 - ((Col1 * Col2)/100), Col2

FROM Table1

Les opérateurs arithmétiques et de concaténations

Expression1 + Expression2accomplit l'addition des deux expressions.Expression1 - Expression2accomplit la soustraction des deux expressions.Expression1 * Expression2accomplit la multiplication des deux expressions.Expression1 / Expression2accomplit la division de la première expression par la seconde.Expression1 % Expression2accomplit le modulo des deux expressions.Expression1 + Expression2 (|| sous Oracle)accomplit la concaténation 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

3.1.2 Opérateurs de comparaisonLes opérateurs de comparaison permettent une mise en correspondance de deux expressions retournant une valeur booléenne True ou False.

InstructionSELECT *

FROM Table1 WHERE expression Opérateur expression2

Si la première expression correspond en fonction de l'opérateur à la seconde expression, la comparaison retourne la valeur True et sinon, la valeur est False.

Les opérateurs de comparaison

Expression1 = Expression2vérifie l'égalité entre les deux expressions.

12/04/2023 19/142

Page 20: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Expression1 { != | <> | ^= } Expression2vérifie la différence entre les deux expressions.Expression1 > Expression2vérifie si la première expression est supérieure à la seconde.Expression1 >= Expression2vérifie si la première expression est supérieure ou égale à la seconde.Expression1 !> Expression2vérifie si la première expression n'est pas supérieure à la seconde.Expression1 < Expression2vérifie si la première expression est inférieure à la seconde.Expression1 <= Expression2vérifie si la première expression est inférieure ou égale à la seconde.Expression1 !< Expression2vérifie si la première expression n'est pas inférieure à la seconde.

☺ Exemple :

SELECT * FROM PROJECTION WHERE Jour >= '20020502'

2002-05-03 05 022002-05-02 05 02

3.1.3 Les opérateurs conjonctifsLes opérateurs conjonctifs soit AND et OR, permettent de combiner plusieurs conditions.condition AND | OR condition2 AND | OR conditionN

Les opérateurs conjonctifs

Expression1 AND Expression2Retourne True si les deux expressions sont True.Expression1 OR Expression2Retourne True si l'une ou/et l'autre des expressions est True.

☺ Exemple :

SELECT titre FROM JOUER WHERE Genre='Drame' and date >= '20000101'

Dogville

3.1.4 Les opérateurs logiques

Les opérateurs logiques permettent d'effectuer des comparaisons sur des expressions SQL.

Instruction

expression Opérateur [ expression2 ]

12/04/2023 20/142

Page 21: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.A l'instar des opérateurs de comparaison symboliques, les opérateurs logiques provoquent le retour d'une valeur booléenne True ou False.

Souvent, les opérateurs logiques ne comparent pas deux expressions, mais une seule par rapport à une valeur déterminée soit par le type de l'opérateur comme IS NULL, soit par un modèle passé en paramètre comme pour LIKE.

Les opérateurs 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_Début AND Expression_Fin = True | Falsedéfinit un intervalle sur lequel la recherche doit être appliquée.EXISTS (Sous-Requête)retourne True si l'enregistrement pointé par la sous-requête existe.Expression_Test [ NOT ] IN ( Sous-Requête | Expression )retourne True si l'expression correspond ou ne correspond pas (NOT) à une des valeurs pointées par la sous-requête ou l'expression.Expression IS [NOT] NULLindique si la valeur est nulle ou non-nulle (NOT).Expression IS [ NOT ] OF Type_Donnéesretourne True si l'expression possède ou ne possède pas (NOT) le type de donnée indiqué.Expression [ NOT ] LIKE Modèle [ ESCAPE Caractère_Echappement ]retourne True si le modèle correspond à l'expression. Le modèle peut comporter des caractères génériques %, _, [Caractères] ou [^Caractères] représentant respectivement une chaîne de zéro à plusieurs caractères, n'importe quels caractères, l'inclusion ou l'exclusion d'un à plusieurs caractères. Le caractère d'échappement permet d'inclure un caractère générique précité dans la mise en correspondance.NOT (Expression)retourne la valeur booléenne inverse de l'expression.UNIQUE (Expression)retourne la valeur booléenne True si l'expression ne possède pas de doublons.

☺ Exemple :

SELECT * from projectionWHERE jour is NOT NULL

Toutes les lignes retournées

3.1.5 Les opérateurs d'ensemble

Les opérateurs d'ensemble combinent le résultat de deux requêtes à l'intérieur d'un seul résultat. Les requêtes contenant de tels opérateurs sont appelées des requêtes composées.

Les opérateurs d'ensemble

12/04/2023 21/142

Page 22: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Requête1 UNION Requête2retourne toutes les lignes sélectionnées par l'une et l'autre des requêtes.Requête1 UNION ALL Requête2retourne toutes les lignes sélectionnées par l'une et l'autre des requêtes en incluant tous les doubles.Requête1 INTERSECT Requête2retourne les lignes distinctes sélectionnées par les deux requêtes.Requête1 MINUS Requête2retourne les lignes distinctes sélectionnées par la première requête mais pas par la seconde.

☺ Exemple :

SELECT Jour FROM PROJECTION WHERE Jour >= '20020502'

UNIONSELECT date FROM JOUER

WHERE Genre='Drame' and date >= '20000101'

2002-01-012002-05-022002-05-03

SELECT Jour FROM PROJECTION WHERE Jour >= '20020502'

UNION ALLSELECT date FROM JOUER

WHERE Genre='Drame' and date >= '20000101'

2002-01-012002-01-012002-01-012002-05-022002-05-03

3.2 Le langage de définition

Les commandes DDL (Data Defintion Language) définissant la structure d'une base de données, permet la création, la modification ou la suppression de divers objets tels qu'une table, une vue ou encore un index.

3.2.1 Création de table

La commande CREATE TABLE permet de créer une table avec des colonnes d'un type de données spécifié.

Instruction

CREATE TABLE nom_table

12/04/2023 22/142

Page 23: ITS Formation Base BI v1 ALPHA

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'exécuter une telle commande, il est nécessaire de rassembler certains éléments indispensables.

Un nom de table unique doit être précisé afin de l'identifier dans la base de données.

Pour chaque colonne à créer à l'intérieur de la table, il faut spécifier des noms de colonnes distincts.

Chaque colonne nécessitant un type de donnée, il faut indiquer le type de données à assigner à chacune des colonnes à créer.

Toute table nécessitant une colonne faisant office de clé primaire, il faut impérativement en déterminer une avec une contrainte d'unicité UNIQUE.

Des contraintes peuvent être également spécifiées pour les valeurs d'une colonne lors de la création de la table.

NULL : indique que la colonne peut contenir des valeurs nulles.NOT NULL : indique que la colonne ne peut contenir de valeurs nulles.PRIMARY KEY

: indique que la colonne constitue la clé primaire de la table.

UNIQUE : impose que chaque valeur de la colonne doit être unique.

Plus précisément, les contraintes peuvent être appliquées 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_CODE

FILM_CODE

TITRE GENRE DATEACTEUR_CODE

ACTEUR_NOM

ACTEUR_ PRENOM

ROLE

... ... ... ... ... ... ... ... ...

12/04/2023 23/142

Page 24: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.3.2.2 Modification de table

La commande ALTER TABLE est une requête permettant la modification d'une table en ajoutant, en supprimant ou en changeant les colonnes, leur définition ou les contraintes.

Instruction Oracle

ALTER TABLE Nom_Table | { MODIFY CONSTRAINT nom_contrainte définition_contrainte | DROP { PRIMARY KEY | UNIQUE ( nom_colonne [, nom_colonneN] ) } | CONSTRAINT nom_contrainte } | { ADD nom_colonne type_donnée [, nom_colonneN type_donnée ] | MODIFY ( nom_colonne [type_donnée] [ définition_contrainte ] [, nom_colonneN [type_donnée] [ définition_contrainte ] ] | DROP [ COLUMN ] nom_colonne | ( nom_colonne [, nom_colonneN ] ) [ CASCADE CONSTRAINT ] | INVALIDATE }

Instruction SQL Server

ALTER TABLE table{ [ ALTER COLUMN nom_colonne nouveau_type ] | ADD { [ nom_colonne nouveau_type ] | nom_colonne AS expression_colonne_calculée } [ ,...n ] | [ WITH CHECK | WITH NOCHECK ] ADD { définition_contrainte } [ ,...n ] | DROP { [ CONSTRAINT ] nom_contrainte | COLUMN nom_colonne } [ ,...n ] | { CHECK | NOCHECK } CONSTRAINT { ALL | nom_contrainte [ ,...n ] }

La commande ALTER TABLE est très complète puisqu'elle permet : de modifier le type d'une colonne (ALTER | MODIFY COLUMN), d'ajouter de nouvelles colonnes (ADD nom_colonne), d'ajouter de nouvelles contraintes (ADD définition_contrainte) avec la clause

CONSTRAINT précitée et indique si les données de la table doivent être ou ne pas être vérifiées (WITH CHECK | WITH NOCHECK) par rapport à une contrainte FOREIGN KEY ou CHECK nouvellement ajoutée,

de supprimer des colonnes (DROP COLUMN), de supprimer des contraintes (DROP CONSTRAINT), d'activer (CHECK) ou de désactiver (NOCHECK) toutes les contraintes (ALL) ou

certaines.

12/04/2023 24/142

Page 25: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

☺ Exemple :

ALTER TABLE projection ADD prix DECIMAL(7, 2)GO

Ajout d’une colonne « prix »

ALTER TABLE projection ALTER COLUMN prix DECIMAL(5, 0)GO

Modificaction du format de la colonne « prix »

ALTER TABLE projection DROP COLUMN prixGO

Suppression de la colonne « prix »

3.2.3 Suppression de table

3.2.3.1 La commande DROP TABLE

La commande DROP TABLE est une requête permettant la suppression compléte d'une table.

Instruction

DROP TABLE Nom_Table [RESTRICT | CASCADE]

Les deux clauses ne sont utilisables que sous Oracle. La clause RESTRICT restreint la suppression aux enregistrements de la seule table

et retourne une erreur si la table est référencée par une vue ou une contrainte. La clause CASCADE provoque la suppression de la table et de toutes ses

références.

☺ Exemple :

DROP TABLE jouer

3.2.3.2 Les commandes TRUNCATE TABLE

La commande TRUNCATE TABLE est une requête permettant la destruction complète des données contenues dans une table.

Contrairement à la commande DROP TABLE, TRUNCATE TABLE conserve le schéma de relation de la table concernée, ainsi, celle-ci reste disponible dans la base de donnée pour de futures opérations.

Instruction

TRUNCATE TABLE Nom_Table

12/04/2023 25/142

Page 26: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

☺ Exemple :

TRUNCATE TABLE jouer

3.2.4 Création d’index

La commande CREATE INDEX permet de créer un index référençant les emplacements de chaque valeur d'une colonne.

Instruction

CREATE INDEX nom_index ON nom_table ASC | DES

L'indexation terminée, les données seront rangées selon un ordre ascendant ASC ou descendant DES permettant un accès plus rapide aux emplacements des données dans la table concernée.

Un index n'est vraiment utile que pour des tables de grande dimension, afin d'éviter un balayage complet des lignes pour trouver une information.

En outre, l'index consomme un espace mémoire considérable puisqu'il est aussi important que celui de la table elle-même.

Une indexation peut s'appliquer sur une ou plusieurs colonnes.

Toutefois, un index sur une seule colonne reste le plus simple, et partant le plus efficace si la colonne concernée est sollicitée très régulièrement.

Instruction

CREATE INDEX nom_index ON nom_table(nom_colonne)

Un index sur plusieurs colonnes est utilisable sur un ensemble de colonnes souvent employées dans des clauses conditionnelles WHERE. Dans ce cas, la

Instruction

CREATE INDEX nom_index ON nom_table(nom_colonne, ..., nom_colonneN)

Les index peuvent être supprimés par l'intermédiaire de l'instruction DROP INDEX.

Instruction

DROP INDEX nom_index

☺ Exemple :

CREATE INDEX idx_jouer1 ON jouer (jouer_code)

CREATE INDEX idx_jouer2 ON jouer (jouer_code,acteur_code)

12/04/2023 26/142

Page 27: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

3.2.5 Création de vue

La commande CREATE VIEW permet de créer une vue, soit une table virtuelle produite par une requête de sélection.

Une vue contient donc un jeu d'enregistrements constitué par une requête SELECT prédéfinie appliquée à une ou plusieurs tables d'une base de données.

A la différence d'une table, une vue ne consomme pas d'espace de stockage physique mais conserve des propriétés semblables dans la mesure ou toutes les opérations de sélection, d'insertion, de mise à jour ou encore de suppression de lignes de données avec néanmoins quelques restrictions comme l'interdiction de modification d'une vue multitables.

Utilisation Les vues peuvent servir à recueillir des données régulièrement consultées et

mises à jour. Les vues sont souvent employées pour des raisons de sécurité. A l'aide de cet

outil, il devient possible de ne montrer qu'une partie des données d'une table et ainsi, cacher des informations confidentielles.

.

Instruction sous SQL Server

CREATE VIEW [ nom_base . ] [ propriétaire . ] nom_vue[ ( nom_colonne [ ,...n ] ) ] [ WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } [ ,...n ] ]AS instruction_selection... [ WITH CHECK OPTION ]

La clause WITH ENCRYPTION indique que SQL Server crypte les colonnes des tables systèmes contenant le texte de l'instruction CREATE VIEW.

La clause WITH SCHEMABINDING implique que la requête de sélection doit contenir des noms sous la forme propriétaire.objet pour des tables, des vues ou des fonctions référencées.

La clause WITH VIEW_METADATA indique que SQL Server renvoie aux interfaces de programmation d'applications DBLIB, ODBC et OLE DB les informations de métadonnées sur la vue, au lieu des tables de la base de données, lorsque des métadonnées en mode lecture sont sollicitées pour une requête qui fait référence à la vue.

La clause WITH CHECK OPTION garantit que l'ensemble des instructions de modification exécutées sur la vue respectent le critère défini dans la requête de sélection.

Instruction sous Oracle

CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW [ propriétaire . ] nom_vue(nom_colonne,...,nom_colonneN)AS instruction_sélection...;[WITH CHECK OPTION[CONSTRAINT constraint]]

L'instruction OR REPLACE crée à nouveau la vue si elle existe déjà.

12/04/2023 27/142

Page 28: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Les clauses FORCE et NOFORCE indiquent respectivement que :

o la vue est créée sans se soucier de l'existence des tables qu'elle référence ou des privilèges adéquats sur les tables,

o la vue est créée seulement si les tables existent et si les permissions requises sont données.

La clause WITH CHECK OPTION limite les insertions et les mises à jour exécutées par l'intermédiaire 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 précédemment spécifique à Oracle peut être également utilisée pour modifier la vue.

Instruction

ALTER VIEW [ nom_base . ] [ propriétaire . ] nom_vue[ ( nom_colonne [ ,...n ] ) ] [ WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } [ ,...n ] ]AS instruction_selection... [ WITH CHECK OPTION ]

Les vues peuvent être supprimées par l'intermédiaire de la commande DROP.

Instruction

DROP VIEW nom_vue;

☺ Exemple :

CREATE VIEW vue_personnel ASSELECT jouer_code, film_code, titre, genre, date FROM jouer WHERE genre='drame'

Table crée avec 5 colonnes et alimentée à partir de la table Jouer filtrée sur le genre « Drame »

3.3 Le langage de requête

Les requêtes de sélection correspondent à des interrogations sur une base de données afin d'en extraire des informations. Le langage DQL (Data Query Language) propose à cet effet une commande essentielle dans SQL, l'instruction SELECT.

Les clauses principales de l'instruction SELECT permettent de désigner une table (FROM), d'appliquer des critères de sélection (WHERE), de regrouper des informations (GROUP BY) selon d'éventuelles conditions (HAVING), d'ordonner ces mêmes informations (ORDER BY) dans un ordre descendant (DSC) ou ascendant (ASC) ou encore de joindre plusieurs tables (JOIN).

12/04/2023 28/142

Page 29: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.3.3.1 Sélection de table

Les commandes SELECT et FROM sont utilisées pour sélectionner des tables dans une base de données.

Instruction

SELECT * | { [ALL | DISTINCT] nom_colonne,...,nom_colonneN }FROM nom_tableWHERE Condition

Pour sélectionner tous les champs d'une table, il suffit d'utiliser une étoile (*) à la place des noms de champs.

Il est possible de sélectionner de un à plusieurs champs en séparant les noms de champs ou de colonnes par une virgule.

Les clauses ALL par défaut et DISTINCT permettent respectivement de sélectionner tous les enregistrements d'une colonne et de ne prendre en compte chaque enregistrement distinct, soit sans doublons.

La clause FROM cible une ou plusieurs tables à partir desquelles l'extraction des données doit être opérée.

La clause WHERE pose une condition dans la sélection des informations. L'expression conditionnelle peut être construite à l'aide de plusieurs prédicats constitués d'opérateurs de comparaisons (= | <> | != | > | > = | !> | < | <= | !<) et séparées par des opérateurs booléens AND, OR ou NOT.La condition consiste à qualifier des enregistrements en fonction de son résultat booléen.

o Si la valeur est True, l'information est sélectionnée. o Si la valeur est False, l'information n'est pas prise en compte.

Les requêtes de sélection peuvent également être utilisées comme sous-requêtes dans une clause conditionnelle WHERE.

Instruction

SELECT tab1.nom_champ,..., tab1.nom_champNFROM nom_table AS tab1WHERE tab1.nom_champ = (SELECT tab2.nom_champ FROM nom_table AS tab2 WHERE tab2.nom_champ = valeur)

Les sous requêtes permettent de sélectionner un premier jeu d'enregistrements dans une table tierce qui servira de condition de sélection dans la requête principale.

☺ Exemple :

Select Titre from jouerWhere Genre = 'Drame'

DogvilleDogvilleDogvilleBreaking the wavesBreaking the waves

12/04/2023 29/142

Page 30: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.CrashCrashCrashChasseur blanc, coeur noir

Select Distinct Titre from jouerWhere Genre = 'Drame'

Breaking the wavesChasseur blanc, coeur noirCrashDogville

3.3.1.1 Les commandes d'alias

Les alias concourent à améliorer la lisibilité d'une requête.

Il existe deux types d'alias : les alias de tables et les alias de champs. Les alias peuvent également s'appliquer à une fonction d'agrégation retournant des données sous forme de colonnes.

Instruction

SELECT Alias_table.nom_champ AS Alias_champFROM 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 T2where T1.cinema_code=T2.cinema_code

and T1.cinema_type='C0'

Ville Cinema JourMarly-le-Roi Le Fontenelle 1985-05-09 00:00:00.000Marly-le-Roi Le Fontenelle 1990-12-08 00:00:00.000Epinay-sur-Seine Espace Ciné 1994-04-08 00:00:00.000Epinay-sur-Seine Espace Ciné 1994-11-06 00:00:00.000Marly-le-Roi Le Fontenelle 1996-12-02 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-01 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-02 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-03 00:00:00.000

3.3.2 Les commandes additionnelles

3.3.2.1 La commande GROUP BY

12/04/2023 30/142

Page 31: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.La commande GROUP BY spécifie des groupes dans lesquels les lignes de sortie doivent être placées et calcule une valeur de résumé pour chacun des groupes si des fonctions d'agrégation sont employées avec la commande SELECT.

Instruction

SELECT nom_champ, Fonction_AgregationFROM nom_tableGROUP BY nom_champ2

Le critère de la clause GROUP BY peut être soit le nom, soit le numéro d'une des colonnes sélectionnées par la requête.

☺ Exemple :

ALTER TABLE projection ADD prix DECIMAL(7, 2)GO

Select cinema_code , sum(prix) prix from projectionWHERE Jour <= '20000101'GROUP BY cinema_code

Cinema_code Prix1 NULL2 NULL3 NULL4 NULL

3.3.2.2 La commande ORDER BY

La commande ORDER BY permet de classer alphabétiquement les données retournées par la requête de sélection.

Instruction

SELECT nom_champ, nom_champ2,..., nom_champNFROM nom_tableORDER BY nom_champ [ ASC | DSC { nom_champ2 ASC | DSC } ]

Le critère de la clause ORDER BY peut être soit le nom, soit le numéro d'une des colonnes sélectionnées par la requête.La clause ASC par défaut ou DSC provoque respectivement un tri dans un ordre ascendant (0 ... 9 et A ... Z) ou descendant (Z ... A et 9 ... 0).

☺ Exemple :

Select distinct acteur_nom, acteur_prenom from jouerWHERE Genre ='Drame'

12/04/2023 31/142

Page 32: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.ORDER BY acteur_nom

Arquette RosannaBettany PaulEastwood ClintHunter HollyKidman NicoleSkarsgard StellanSpader JamesWatson Emily

3.3.2.3 Les commandes de jointures de table

Les requêtes de sélection demeurent les plus intéressantes, lorsqu'elles s'appliquent à plusieurs tables. Mais pour cela, il est nécessaire d'exécuter des commandes de jointure afin de pouvoir extraire des données de ces tables.

Il existe de nombreuses manières de joindre des tables dépendant souvent de l'implémentation utilisée. Néanmoins, la plupart des commandes de jointures accomplissent leurs opérations sur des colonnes communes aux différentes tables. Ainsi, les jointures sont possibles uniquement sur des tables possédant des colonnes correspondantes comme une clé étrangère se relierait à une clé primaire.

Une jointure d'égalité symbolisée par EQUIJOIN ou INNER JOIN crée une relation de correspondance entre des tables.

Instruction

SELECT T1.Nom_champ1, T2.Nom_champ2, T3.Nom_champ3FROM Nom_table1 T1, Nom_table2 T2, Nom_table3 T3WHERE T1.Nom_Champ_joinA = T2.Nom_Champ_joinA, AND T1.Nom_Champ_joinB = T3.Nom_Champ_joinB

☺ Exemple :

Select T1.Ville, T1.Cinema_nom Cinema, T2.Jour from cinema T1, projection T2where T1.cinema_code=T2.cinema_code

and T1.cinema_type='C0'

Ville Cinema JourMarly-le-Roi Le Fontenelle 1985-05-09 00:00:00.000Marly-le-Roi Le Fontenelle 1990-12-08 00:00:00.000Epinay-sur-Seine Espace Ciné 1994-04-08 00:00:00.000Epinay-sur-Seine Espace Ciné 1994-11-06 00:00:00.000Marly-le-Roi Le Fontenelle 1996-12-02 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-01 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-02 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-03 00:00:00.000

12/04/2023 32/142

Page 33: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Les jointures externes OUTER JOIN sont employées pour retourner tous les enregistrements, y compris ceux ne possédant aucune correspondance. Ces jointures peuvent s'appliquer à gauche (LEFT), à droite (RIGHT) ou sur les deux (FULL).

Instruction (à gauche)

SELECT T1.Nom_champ1, T2.Nom_champ2FROM Nom_table1 T1, Nom_table2 T2WHERE T1.Nom_Champ_joinA(+) = T2.Nom_Champ_joinA

SELECT T1.Nom_champ1, T2.Nom_champ2FROM Nom_table1 T1LEFT OUTER JOIN Nom_table2 T2ON T1.Nom_Champ_joinA = T2.Nom_Champ_joinA

☺ Exemple :

Select T1.Ville, T1.Cinema_nom Cinema, T2.Jour from cinema T1LEFT OUTER JOIN projection T2ON T1.cinema_code=T2.cinema_code

Where T1.cinema_type='C0'

Ville Cinema JourMarly-le-Roi Le Fontenelle 1985-05-09 00:00:00.000Marly-le-Roi Le Fontenelle 1990-12-08 00:00:00.000Epinay-sur-Seine Espace Ciné 1994-04-08 00:00:00.000Epinay-sur-Seine Espace Ciné 1994-11-06 00:00:00.000Marly-le-Roi Le Fontenelle 1996-12-02 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-01 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-02 00:00:00.000Marly-le-Roi Le Fontenelle 2002-05-03 00:00:00.000Toulouse Le toulouse NULL

3.4 Le langage de manipulation

Les commandes DML (Data Manipulate Language) permettent de manipuler les informations d'une base de données. Il existe trois commandes destinées à mettre à jour (UPDATE), insérer (INSERT) ou supprimer (DELETE) des données.

3.4.1 Insertion

La commande INSERT INTO permet d'ajouter des données dans une table.

Instruction

INSERT INTO Nom_Table (Champ_1, Champ_2, ..., Champ_N) VALUES (Valeur_1, Valeur_2, ..., Valeur_N)

12/04/2023 33/142

Page 34: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.L'ajout de données dans une table demande évidemment, la parfaite connaissance de la structure de la table, puisqu'il est nécessaire de fournir le nom des champs dans le bon ordre et des informations correspondant à leur type de données respectifs.

Les valeurs de colonnes doivent être encadrées par des guillemets simples (') s'il s'agît de chaîne de caractères, les nombres ne nécessitant pas de guillemets.VALUES ('Chaîne de caractères', 100)

Il est également possible d'insérer des données provenant d'une autre table par l'intermédiaire d'une commande SELECT. Une clause WHERE peut être ajoutée avec des conditions pouvant comporter des sous-requêtes.

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'intermédiaire du mot-clé NULL ou d'une chaîne 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 complète, on peut omettre les noms de colonnes

3.4.2 Mise à jour

La commande UPDATE permet de mettre à jour des données existantes au sein d'une table.

Instruction

UPDATE Nom_TableSET (Col_1, Col_2, ..., Col_N) = (Nouv_Val_1, Nouv_Val_2, ..., Nouv_Val_N)[WHERE Condition]

La commande UPDATE peut mettre à jour les données de manières différentes : La valeur d'une seule colonne en ne citant qu'une colonne associée à sa nouvelle

valeur. Plusieurs colonnes simultanément en citant plusieurs colonnes avec leur valeur

respective. Par l'intermédiaire d'une clause conditionnelle affectant quelques lignes de données,

les valeurs de plusieurs enregistrements en même temps.

Une opération de mise à jour peut être effectuée sur un jeu d'enregistrements en utilisant une sous requête de sélection.

12/04/2023 34/142

Page 35: ITS Formation Base BI v1 ALPHA

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 détermine les enregistrements à sélectionner pour effectuer leur suppression complète de la table.

Une sous requête peut être utilisée pour sélectionner 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

3.5 Le langage de contrôle (Commandes DCL) => Cf Annexe

12/04/2023 35/142

Page 36: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

3.6 Optimisation des requêtes

3.6.1 Examen des indexL’analyse des index n’affecte pas le code ou les données, c’est donc une bonne piste de départ. Il faut mettre en place des index avec des bons taux de sélectivité et minimiser le nombre d’index sur les tables fréquemment mises à jour.

Toutefois, toute fonction de manipulation ou de calcul désactive systématiquement l’index.

☺ Exemple :substr(name, 1,2)=’DU’amount * 12>20000amount + 0 = 1200trunc(date) = ‘01-JAN-2000’name||’’=’DUPONT’name not = ‘DUPONT’

De plus un index ne peut être utilisé avec les opérateurs suivants : != IS NULL IS NOT NULL NOT IN avec une liste LIKE avec une colonne de type date ou numérique LIKE avec une chaîne de comparaison débutant par un méta caractère (% par

exemple). NOT IN avec une sous interrogation peut utiliser un index, mais on utilisera de

préférence NOT EXISTS surtout si la colonne sélectionnée peut contenir des valeurs nulles.

En conséquence, il faut essayer d’appliquer les fonctions aux constantes ou aux colonnes non indexées.

Un index composé de plusieurs colonnes sera utilisé si les premières colonnes le composant sont renseignées dans la clause WHERE.

3.6.2 Ecriture des requêtes

La performance des requêtes repose principalement sur les chemins d’accès des tables. La liste suivante donne les poids relatifs des chemins d’accès du plus faible au plus élevé :

Accès par rowid. Accès par clé unique ou primaire (mono-colonne) Accès par clé unique ou primaire (multi-colonne) Accès par index Accès par index entre borne de valeurs MAX ou MIN sur colonnes indexées ORDER BY sur colonnes indexées Full table scan

12/04/2023 36/142

Page 37: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Une table sera accédée beaucoup plus rapidement par rowid que par un full scan. Ces notions sont importantes puisqu’on les retrouve dans les plans d’exécution des requêtes que l’on est amené à optimiser.

Avant de commencer à analyser veiller à ce que l’écriture des ordres SQL se rapproche le plus possible des principes suivants

3.6.2.1 Ordre SELECT

Préfixer toutes les colonnes avec l’alias de la table.Pour les tests d’existence ne sélectionner que la clé primaire afin de n’accéder qu’à la table d’index.

3.6.2.2 Clause FROM

Utiliser des alias pour les tables (toujours les mêmes).Toujours placer en dernier les tables ramenant le moins de ligne dans le contexte de la requête.

3.6.2.3 Clause WHERE

Ecrire toutes les jointures en premier.Spécifier toutes les colonnes de la clé, dans le cas où la clé est multi-colonne.Placer sur les dernières lignes les conditions les plus restrictives (car le parse des requêtes commence par la fin de celles ci).Utiliser ROWNUM ou COUNT(*) pour optimiser les tests d’existence.Utiliser les constantes en priorité sur les conditions ayant un poids de chemin d’accès faible.

Remarques concernant les opérateurs

name=’DUPONT’ est préférable à name like ‘DUPONT’

name =’DUPONT’ or name=’DURAND’ est préférable à name in (‘DUPONT’, ‘DURAND’)

amount >=100 and amount <=1000 est préférable à amount between 100 and 1000

amount >= 1000 est préférable à NOT amount <1000

select name from empwhere job=’CLERK’or dept = ‘10’

sera toujours traduit par

select name from emp where job=’CLERK’union allselect name from emp where dept=’10’

3.6.2.4 Clause FOR UPDATENe verrouiller qu’un faible nombre de lignes.

12/04/2023 37/142

Page 38: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.3.6.2.5 Clause GROUP BYPréciser au maximum les conditions dans la clause WHERE.

3.6.2.6 Clause ORDER BYN’utiliser cette clause que si le tri est nécessaire.Utiliser le nom des colonnes plutôt que le nombre indiquant leur position dans la clause SELECT.

3.6.2.7 Sous-selectEviter au maximum leur utilisation. Préférer les jointures et éventuellement la clause EXISTS.

3.6.2.8 Ordre INSERTToujours spécifier la liste des colonnes à insérer.Préciser explicitement NULL lors de l’insertion pour les colonnes non renseignées.

3.6.2.9 Ordre UPDATEUtiliser quand c’est possible le rowid ou la référence du curseur pour les mises à jour.

3.6.2.10 Ordre DELETEUtiliser quand c’est possible le rowid ou la référence du curseur pour les mises à jour.Utiliser l’ordre TRUNCATE pour supprimer tout le contenu d’une table (cet ordre provoque un commit implicite).

3.7 Initiation aux procédures stockées

Les procédures stockées contiennent du code SQL compilé, permettant d'exécuter des requêtes lourdes ou des instructions régulièrement utilisées sur des bases de données.

Les procédures stockées sont conservées dans la base de données dans une forme exécutable et sont capables d'appeler d'autres procédures ou fonctions comme d'être appelées par d'autres programmes.

La structure modulaire de telles procédures permet de concevoir des petites unités programmatiques indépendantes, donc plus rapides à charger en mémoire et à exécuter dans une base de données.

A l'instar des procédures des langages de programmation, outre qu'elles soient composées de diverses instructions, les procédures stockées sont capables de recevoir des paramètres d'entrée et de retourner des valeurs en sortie.

La création des procédures stockées s'effectue par l'intermédiaire de l'instruction CREATE PROCEDURE.

Instruction SQL Server

CREATE PROC [ EDURE ] nom_procedure [ ; nombre ] [ { @parametre type_donnee } [ VARYING ] [ = valeur_defaut ] [ OUTPUT ]

12/04/2023 38/142

Page 39: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS instructions_SQL...GO

La clause VARYING, applicable aux paramètres de type CURSOR, indique le jeu de résultats pris en charge comme

La clause OUTPUT permet de retourner la valeur aux instructions appelantes. L'instruction WITH RECOMPILE spécifie que la procédure est recompilée à

l'exécution sans utiliser le cache pour le plan de la procédure. L'option RECOMPILE est généralement utilisée pour des valeurs temporaires ou

atypiques sans remplacer le plan d'exécution placé en mémoire cache. La clause WITH ENCRYPTION indique un cryptage de l'entrée de la table

syscomments contenant le texte de l'instruction CREATE PROCEDURE. L'argument ENCRYPTION permet d'éviter la publication de la procédure dans le cadre de la réplication SQL Server.

La clause FOR REPLICATION indique que la procédure stockée doit être exécutée lors de la modification de la table concernée par un processus de réplication.

La clause AS indique les actions entreprises par la procédure. 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 recrée la procédure stockée si elle existe déjà. La clause OUT permet de retourner la valeur aux instructions appelantes. La clause IN est utilisée pour spécifier une valeur pour l'argument en appelant la

procédure. La clause AS (déprécié) ou IS indique les actions entreprises par la procédure.

Les procédures stockées peuvent être appelées au moyen de l'instruction EXECUTE à partir d'une autre procédure ou d'un lot d'instructions. SQL Server utilise une abréviation EXEC.

Instruction

EXECUTE Procedure @Parametre = Valeur, ..., @ParametreN = ValeurN

12/04/2023 39/142

Page 40: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

44 EXERCICE SUR LE LANGAGE SQLEXERCICE SUR LE LANGAGE SQL

1/ Création d’une table Réalisateur ayant 3 colonnes Réalisateur Code, Entier, Clé primaire Réalisateur Nom, Varchar 64, Non Null Date Naissance, Date, Null

2/ Modification de cette table Ajout d’une colonne Nationalite, Varchar 64, Null Modification colonne Réalisateur Nom Varchar 64 -> Varchar 32

3/ Insertion de 2 enregistrements dans cette table 01, TARANTINO, NULL, Americain 02, BESSON, 10/03/1959, Français

4/ Mettre à jour l’enregistrement ‘BESSON’ en modifiant sa date de naissance => 18/03/19595/ Créer une vue Cinema_Toulouse à partir de la table Cinema en filtrant sur les cinémas de Toulouse avec uniquement les 2 colonnes Cinema nom et Cinema Groupe6/ Nom des acteurs ayant ‘Paul’ comme prénom ?7/ Nom et prénom de tous les acteurs sur un seul champ avec un espace entre le Nom et le Prénom (Nom Prénom) et nommer ce champs Identifiant ?8/ Quels sont les films dramatiques dont la sortie a eu lieu après le 1er Janvier 19989/ Quels sont les acteurs qui ont joué dans un film projeté au cinéma ‘Le Fontenelle’ ? Les trier par ordre descendant10/ Quel est le nombre projection au cinema ‘Le Fontenelle’ de films dans lesquels à jouer Bruce Willis ?

Réponses

1/ create table REALISATEUR ( REALISATEUR_CODE integer not null, REALISATEUR_NOM varchar(64) not null, DATE datetime null, constraint PK_REALISATEUR primary key (REALISATEUR_CODE))Go

2/ALTER TABLE realisateur ADD NATIONALITE VARCHAR(64) NULLGO

ALTER TABLE realisateur ALTER COLUMN REALISATEUR_NOM VARCHAR(32) NULLGO

3/insert into REALISATEUR values(01,'TARANTINO',NULL, 'Americain');insert into REALISATEUR values(02,'BESSON','10/03/1959', 'Francais');

4/UPDATE REALISATEUR SET DATE = '18/03/1959' WHERE REALISATEUR_NOM='BESSON'

12/04/2023 40/142

Page 41: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

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 jouer8/ 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 T3Where T1.Film_code = T2.Film_codeand T2.cinema_code = T3.cinema_codeand T3.cinema_nom = 'Le fontenelle'

order by T1.Acteur_nom desc10/Select count(T1.Acteur_nom)

From Jouer T1, Projection T2, Cinema T3Where T1.Film_code = T2.Film_codeand T2.cinema_code = T3.cinema_codeand T3.cinema_nom = 'Le fontenelle'and T1.acteur_nom = 'Skarsgard'

group by T1.Acteur_nom

12/04/2023 41/142

Page 42: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

55 ANNEXES SQLANNEXES SQL

5.1 Les commandes DCL

Les commandes DCL (Data Control Language) permettent la gestion des droits d'accès aux objets d'une base de données.Un utilisateur de base de données doit posséder un compte de sécurité afin d'accéder aux tables ou à tout autre élément.

Pour cela, il faut non seulement que l'utilisateur soit créé mais également que des privilèges lui soient accordés.Des permissions peuvent être attribuées explicitement à un utilisateur ou implicitement si ce dernier appartient à un rôle.

Un rôle est un objet SQL spécifique auquel est attribué un ou plusieurs privilèges. Ce rôle peut être affecté à des utilisateurs qui possédent alors ses autorisations.

En outre, les commandes DCL servent à modifier ou à supprimer des privilèges, voire même des utilisateurs ou des rôles.

5.1.1 La commande CREATE USER

La commande CREATE USER permet la création d'un utilisateur dans la base de données.

Syntaxe sous Oracle

CREATE USER nom_utilisateur IDENTIFIED { BY mot_passe | EXTERNALLY | GLOBALLY AS 'nom_externe' } [ { DEFAULT TABLESPACE espace_table | TEMPORARY TABLESPACE espace_table | QUOTA { entier [ K | M ] | UNLIMITED } ON espace_table [QUOTA { entier [ K | M ] | UNLIMITED } ON espace_tableN] | PROFILE profile | PASSWORD EXPIRE | ACCOUNT { LOCK | UNLOCK } } ] [ N_fois... ];

La clause IDENTIFIED indique de quelle manière Oracle authentifie un utilisateur.

La clause BY mot_passe indique par quel mot de passe un utilisateur est autorisé à se connecter à la base de données.

12/04/2023 42/142

Page 43: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.La clause USING package permet de créer un rôle d'application, lequel est un rôle qui peut être activé seulemet par les applications en utilisant un package autorisé.

La clause EXTERNALLY indique la création d'un utilisateur externe qui doit être authentifié par un service externe avant l'activation du rôle.

La clause GLOBALLY indique la création d'un utilisateur global qui doit être autorisé à utiliser le rôle par le service de répertoire d'entreprise avant que le rôle ne soit activé.

Un rôle sous Oracle s'active en utilisant l'instruction SET ROLE.

La clause DEFAULT TABLESPACE spécifie l'espace de table par défaut pour les objets créés par l'utilisateur. Si la clause est omise, les objets vont dans un espace de table SYSTEM.

La clause TEMPORARY TABLESPACE spécifie l'espace de table pour les ségments temporaires d'utilisateur. Si la clause est omise, l'espace de table SYSTEM accueille les ségments.

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, méga-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 vérouille ou dévérouille le compte d'utilisateur.

Le processus de création d'un utilisateur dans une base de données SQL Server différe fortement puisqu'il est nécessaire de faire appel à une procédure stockée.EXEC sp_adduser [ @loginame = ] 'login' [, [ @name_in_db = ] 'nom_utilisateur' ] [, [ @grpname = ] 'groupe' ]

La suppression d'un utilisateur s'effectue par l'intermédiaire d'une autre procédure stockée.sp_dropuser [ @name_in_db = ] 'nom_utilisateur'

Exemple

CREATE USER "[email protected]" 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'

12/04/2023 43/142

Page 44: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.5.1.2 La commande ALTER USER

La commande ALTER USER permet de modifier les paramètres de connexion à une base de données pour un utilisateur.

La modification d'un utilisateur porte sur plusieurs aspects de son compte, tels que : l'espace de table alloué pour les objets utilisateurs, l'affectation de rôles reflétant les privilèges d'accès, le mode d'authentification permettant la connexion à la base de données, l'assignation d'un profile, etc..

Syntaxe sous Oracle

ALTER USER{ nom_utilisateur { IDENTIFIED { BY mot_passe | EXTERNALLY | GLOBALLY AS 'nom_externe' } | DEFAULT TABLESPACE espace_table | TEMPORARY TABLESPACE espace_table | QUOTA { entier [ K | M ] | UNLIMITED } ON espace_table [QUOTA { entierN [ K | M ] | UNLIMITED } ON espace_tableN] | PROFILE profile | DEFAULT ROLE { nom_rôle [, nom_rôleN] | ALL [EXCEPT nom_rôle [, nom_rôleN]] | NONE } | PASSWORD EXPIRE | ACCOUNT { LOCK | UNLOCK } } [ N_fois... ] | utilisateur [, utilisateurN] { { GRANT | REVOKE } CONNECT THROUGH proxy [ WITH { ROLE { nom_rôle [, nom_rôleN] | ALL EXCEPT nom_rôle [, nom_rôleN] } | NO ROLES ] [ AUTHENTICATED USING { PASSWORD | DISTINGUISHED NAME | CERTIFICATE [TYPE 'type'] [VERSION 'version'] } ] }};

12/04/2023 44/142

Page 45: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

La clause IDENTIFIED indique de quelle manière Oracle authentifie un utilisateur.

La clause BY mot_passe indique par quel mot de passe un utilisateur est autorisé à se connecter à la base de données.

La clause USING package permet de créer un rôle d'application, lequel est un rôle qui peut être activé seulemet par les applications en utilisant un package autorisé.

La clause EXTERNALLY indique la création d'un utilisateur externe qui doit être authentifié par un service externe avant l'activation du rôle.

La clause GLOBALLY indique la création d'un utilisateur global qui doit être autorisé à utiliser le rôle par le service de répertoire d'entreprise avant que le rôle ne soit activé.

Un rôle sous Oracle s'active en utilisant l'instruction SET ROLE.

La clause DEFAULT TABLESPACE spécifie l'espace de table par défaut pour les objets créés par l'utilisateur. Si la clause est omise, les objets vont dans un espace de table SYSTEM.

La clause TEMPORARY TABLESPACE spécifie l'espace de table pour les ségments temporaires d'utilisateur. Si la clause est omise, l'espace de table SYSTEM accueille les ségments.

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, méga-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 vérouille ou dévérouille le compte d'utilisateur.

La clause DEFAULT ROLE spécifie des rôles par défaut à 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 spécifié et à activer seulement les rôles spécifiés.

La clause WITH ROLE ALL EXCEPT autorise la proxy à se connecter comme l'utilisateur spécifié et à activer tous les rôles à l'exception de ceux spécifiés.

La clause WITH NO ROLES autorise le proxy à se connecter comme l'utilisateur spécifié, mais interdit le proxy d'activer n'importe lequel des rôles de cet utilisateur après la connexion.

12/04/2023 45/142

Page 46: ITS Formation Base BI v1 ALPHA

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 adéquat seulement pour la clause GRANT CONNECT THROUGH.

La clause PASSWORD entraîne la présentation par le proxy du mot de passe de base de données 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 possédant un type et une version précisés.

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;

5.1.3 La commande CREATE ROLE

La commande CREATE ROLE permet de créer un rôle auquel sera affecté par la commande GRANT des privilèges.

Syntaxe sous Oracle

CREATE ROLE nom_rôle [ NOT IDENTIFIED | IDENTIFIED { BY mot_passe | USING [schéma .] package | EXTERNALLY | GLOBALLY } ];

La clause NOT IDENTIFIED spécifie que le rôle est autorisé dans la base de données et qu'aucun mot de passe n'est nécessaire.

12/04/2023 46/142

Page 47: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

La clause IDENTIFIED indique qu'un utilisateur doit être autorisé par la méthode spécifiée avant que le rôle ne soit activé par l'instruction SET ROLE.

La clause BY mot_passe indique qu'un utilisateur est autorisé dans la base de données à condition qu'un mot de passe correct soit fourni afin d'activer le rôle.

La clause USING package permet de créer un rôle d'application, lequel est un rôle qui peut être activé seulemet par les applications en utilisant un package autorisé.

La clause EXTERNALLY indique la création d'un utilisateur externe qui doit être autorisé par un service externe avant l'activation du rôle.

La clause GLOBALLY indique la création d'un utilisateur global qui doit être autorisé à utiliser le rôle par le service de répertoire d'entreprise avant que le rôle ne soit activé.

Un rôle sous Oracle s'active en utilisant l'instruction SET ROLE.SET ROLE { nom_rôle [IDENTIFIED BY mot_passe] [, nom_rôleN [IDENTIFIED BY mot_passe]] | ALL [EXCEPT nom_rôle [, nom_rôle]] | NONE };La modification d'un rôle est accomplie par ALTER ROLE et la suppression par DROP ROLE.ALTER ROLE nom_rôle { NOT IDENTIFIED | { BY mot_passe | USING [schéma .] package | EXTERNALLY | GLOBALLY } };

DROP ROLE nom_rôle;

L'attribution (GRANT) ou la révocation (REVOKE) d'un, plusieurs (ROLE) ou tous les rôles à 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_rôle [, nom_rôleN] | ALL EXCEPT nom_rôle [, nom_rôleN]

12/04/2023 47/142

Page 48: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. } | NO ROLES };

La commande ALTER USER permet de même, d'attribuer un à plusieurs rôles par défaut à un seul utilisateur.ALTER USER nom_utilisateur DEFAULT ROLE { { nom_rôle [, nom_rôleN] } | { ALL [EXCEPT nom_rôle [, nom_rôleN]] } | NONE };

Syntaxe sous SQL Server

Le processus de création d'un rôle sous SQL Server différe puisqu'il est nécessaire de passer par une procédure stockée du système.EXEC sp_addrole [ @rolename = ] 'nom_rôle' [ , [ @ownername = ] 'propriétaire' ]

L'ajout d'un membre à un rôle, s'effectue par l'intermédiaire d'une autre procédure stockée.EXEC sp_addrolemember [ @rolename = ] 'nom_rôle' , [ @membername = ] 'compte_sécurité'

La suppression d'un membre d'un rôle s'accomplit par sp_droprolemember.sp_droprolemember [ @rolename = ] 'nom_rôle' , [ @membername = ] 'compte_sécurité'

La suppression du rôle s'effectue par sp_droprole.sp_droprole [ @rolename = ] 'nom_rôle'

Exemple

CREATE ROLE role_utilisateur;

CREATE ROLE role_developpeur IDENTIFIED GLOBALLY;

EXEC sp_addrole 'role_developpeur', 'dbo'

5.1.4 La commande GRANT

La commande GRANT permet d'attribuer un ou plusieurs privilèges à un utilisateur ou un rôle sur des instructions ou divers objets tels que des tables, des vues, des colonnes ou encore des procédures stockées.

Syntaxe sous SQL Server

12/04/2023 48/142

Page 49: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.GRANT { { { ALL | instruction [ ,...n ] } TO compte_sécurité [ ,...n ] } | { { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( nom_colonne [ ,...n ] ) ] ON { nom_table | nom_vue } | ON { nom_table | nom_vue } [ ( nom_colonne [ ,...n ] ) ] | ON { procédure_stockée | procédure_étendue } | ON { fonction_utilisateur } } TO compte_sécurité [ ,...n ] [ WITH GRANT OPTION ] [ AS { groupe | rôle } ] }}

Les clauses TO et FROM indiquent la liste des comptes de sécurité.

La cause ALL indique l'attribution de toutes les autorisations possibles pour le compte de sécurité indiqué.

La clause PRIVILEGES est facultative. En fait elle n'est inclus que pour se conformer aux spécifications 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 sécurité de pouvoir lui-même accorder des autorisations à d'autres utilisateurs.

La clause AS {groupe | rôle} indique le nom facultatif d'un groupe ou d'un rôle pour lequel les autorisations seront accordées.

Syntaxe sous Oracle

GRANT{ { { système_privilège | rôle | ALL PRIVILEGES } [, { système_privilègeN | rôle | ALL PRIVILEGES }] TO { { utilisateur | rôle | PUBLIC } [, { utilisateurN | rôle | PUBLIC }] } [IDENTIFIED BY mot_passe] [WITH ADMIN OPTION] } | { { objet_privilège | ALL [PRIVILEGES] }

12/04/2023 49/142

Page 50: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. [( nom_colonne [, nom_colonne]... )] [, { objet_privilègeN | ALL [PRIVILEGES] } [( nom_colonne [, nom_colonneN]... )]] ON { { schema . objet } | { { DIRECTORY nom_répertoire } | { JAVA { SOURCE | RESOURCE } [schéma .] objet } } } TO { { utilisateur | rôle | PUBLIC } [, { utilisateurN | rôle | PUBLIC }] } [WITH GRANT OPTION] [WITH HIERARCHY OPTION] }};

La clause IDENTIFIED BY permet d'identifier un utilisateur existant par un mot de passe ou pour créer un utilisateur inexistant.

La clause WITH ADMIN OPTION fournit à un utilisateur la possibilité d'administrer un rôle.

La cause ALL PRIVILEGES indique l'attribution de toutes les autorisations appliquées au compte de sécurité indiqué.

L'option PUBLIC indique l'attribution de privilèges ou de rôles à 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 privilèges doivent être accordés.

La clause JAVA { SOURCE | RESOURCE } permet de spécifier une source Java ou l'objet de schéma de ressource sur lequel les privilèges doivent être accordés.

La clause FROM indique la liste des comptes de sécurité.

La clause TO indique la liste des comptes de sécurité.

La commande WITH GRANT OPTION indique la possibilité pour le compte de sécurité de pouvoir lui-même accorder des privilèges à d'autres utilisateurs.

La clause WITH HIERARCHY OPTION indique la permission d'étendre les privilèges d'objets spécifiés à tous les sous-objets.

Exemple

GRANT CREATE PROCEDURE, CREATE ANY PROCEDURE,

12/04/2023 50/142

Page 51: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. ALTER ANY PROCEDURE, DROP ANY PROCEDURE, EXECUTE ANY PROCEDURE TO developpeur WITH ADMIN OPTION;

GRANT INSERT, UPDATE, DELETEON tbl_produitTO 'jk_fort', 'f_troyes'GO

5.1.5 La commande REVOKE

La commande REVOKE permet de révoquer des privilèges qui ont été attribués à un utilisateur ou à un rôle sur des instructions ou divers objets tels que des tables, des vues, des colonnes ou encore des procédures stockées.

Syntaxe sous SQL Server

REVOKE{ { { ALL | instruction [ ,...n ] } FROM compte_sécurité [ ,...n ] } | { [ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( nom_colonne [ ,...n ] ) ] ON { nom_table | nom_vue } | ON { nom_table | nom_vue } [ ( nom_colonne [ ,...n ] ) ] | ON { procédure_stockée | procédure_étendue } | ON { fonction_utilisateur } } { TO | FROM } compte_sécurité [ ,...n ] [ CASCADE ] [ AS { groupe | rôle } ] }}

La commande GRANT OPTION FOR indique la suppression des autorisations WITH GRANT OPTION provoquant la conservation des autorisations à un utilisateur tout en ne pouvant plus en accorder à d'autres.

La cause ALL indique la suppression de toutes les autorisations appliquées au compte de sécurité indiqué.

La clause PRIVILEGES est facultative. En fait elle n'est inclus que pour se conformer aux spécifications SQL-92.

12/04/2023 51/142

Page 52: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Les clauses TO et FROM indiquent la liste des comptes de sécurité.

La clause CASCADE indique la suppression des autorisations pour le compte de sécurité et de toutes les autres qui auraient été accordées par le propriétaire de ce compte.

La clause AS {groupe | rôle} indique le nom facultatif d'un groupe ou d'un rôle pour lequel les autorisations seront supprimées.

Syntaxe sous Oracle

REVOKE{ { { système_privilège | rôle | ALL PRIVILEGES } [, { système_privilège | rôle | ALL PRIVILEGES }] FROM { { utilisateur | rôle | PUBLIC } [, { utilisateurN | rôle | PUBLIC }] } } | { { objet_privilège | ALL [PRIVILEGES] } [( nom_colonne [, nom_colonne]... )] [, { objet_privilègeN | ALL [PRIVILEGES] } [( nom_colonne [, nom_colonneN]... )]] ON { { schéma . objet } | { { DIRECTORY nom_répertoire } | { JAVA { SOURCE | RESOURCE } [schéma .] objet } } } FROM { { utilisateur | rôle | PUBLIC } [, { utilisateurN | rôle | PUBLIC }] } [ CASCADE CONSTRAINTS ] [ FORCE ] }}[, ... ];

La clause ALL PRIVILEGES indique la suppression de toutes les autorisations appliquées au compte de sécurité indiqué.

L'option PUBLIC indique la révocation des privilèges ou des rôles pour tous les utilisateurs.

La clause DIRECTORY indique l'objet DIRECTORY sur lequel les privilèges doivent être révoqués.

12/04/2023 52/142

Page 53: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

La clause JAVA { SOURCE | RESOURCE } permet de spécifier une source Java ou l'objet de schéma de ressource sur lequel les privilèges doivent être révoqués.

La clause FROM indique la liste des comptes de sécurité.

La clause CASCADE CONSTRAINTS annule les contraintes d'intégrité référentielle et est applicable uniquement à une révocation du privilège REFERENCES ou ALL PRIVILEGES.

La clause FORCE permet de révoquer les privilèges EXECUTE sur les objets définis par l'utilisateur avec des tables ou de types de dépendances.

Exemple

REVOKE SELECT ON tbl_employee TO role_employee

REVOKE UPDATE ON vue_personnel FROM PUBLIC;

5.2 Les commandes transactionnelles

Les commandes transactionnelles permettent de contrôler des transactions se déroulant dans un système de gestion de base de données relationnelle (SGBDR).

Les transactions sont des séquences de tâches s'effectuant dans un ordre logique par l'intermédiaire de l'utilisateur ou d'une automatisation.

Les tâches peuvent être essentiellement des commandes DML; d'insertion (INSERT), de suppression (DELETE) ou de modification (UPDATE) d'objets dans une base de données.

Ces diverses tâches peuvent être annulées en cours d'exécution puisqu'elles possèdent un commencement et une fin.Au terme de la tâche, il est nécessaire de sauvegarder les changements. Toutefois, aucun enregistrement n'est effectué si la tâche a échoué pour une raison quelconque.

Il existe, donc, quatres commandes transactionnelles principales pour contrôler ces séquences.

Les commandes transactionnelles

{ SET | BEGIN } TRANSACTION;détermine le début d'une transaction. BEGIN est utilisée sous SQL Server.COMMIT [ WORK ];enregistre les modifications produites par des transactions.ROLLBACK{ [WORK | TO nom_point] };annule les modifications qui n'ont pas été enregistrées précédemment.SAVEPOINT nom_point;insère un point de sauvegarde dans la liste de transactions, servant en conjonction avec ROLLBACK pour une annulation jusqu'à un point précis.

12/04/2023 53/142

Page 54: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.La commande SAVEPOINT évite une annulation complète des transactions par la commande ROLLBACK.Transactions...SAVEPOINT nom_pointTransactions...

ROLLBACK TO nom_point;

D'ailleurs, une commande spécifique permet de supprimer des points de sauvegardes créés 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_donneeGO UPDATE tbl_produit SET prix = (( prix * 12 ) / 100 ) + prix WHERE fabricant = 'CACO LOCA'GO COMMITGO

5.3 Les fonctions SQL

5.3.1 Les fonctions d'agrégation

Les fonctions d'agrégation accomplissent un calcul sur plusieurs valeurs et retournent un résultat et sont souvent utilisées avec les commandes GROUP BY et SELECT.

Les calculs effectués par ces fonctions consiste à faire sur une colonne, la somme, la moyenne des valeurs, le décompte des enregistrements ou encore l'extraction de la valeur minimum ou maximum.

12/04/2023 54/142

Page 55: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Hormis la fonction COUNT, les fonctions d'agrégation ne tiennent pas compte des valeurs NULL.

Fonction DescriptionAVG retourne la moyenne des valeurs d'un groupe.BINARY_CHECKSUM

retourne la valeur totale de contrôle binaire calculée à partir d'une ligne d'une table ou d'une liste d'expressions.

CHECKSUMretourne la valeur de checksum calculée dans une ligne d'une table ou dans une liste d'expressions.

CHECKSUM_AGG retourne le checksum des valeurs d'un groupe.COUNT retourne le nombre d'éléments figurant dans un groupe.COUNT_BIG retourne le nombre d'éléments figurant dans un groupe. MAX retourne la valeur maximale de l'expression.MIN retourne la valeur minimale de l'expression.SUM retourne la somme de toutes les valeursSTDEV retourne l'écart type de toutes les valeurs de l'expression spécifiée.

STDEVPretourne l'écart type de remplissage pour toutes les valeurs de l'expression spécifiée.

VAR retourne la variance de toutes les valeurs de l'expression spécifiée.

VARPretourne la variance de remplissage pour toutes les valeurs de l'expression spécifiée.

Exemple

SELECT COUNT(Livre)FROM Librairie

' retourne7

SELECT SUM(Prix)FROM Librairie

' retourne1 571

5.3.2 Les fonctions mathématiques

Les fonctions mathématiques permettent d'effectuer des calculs sur des expressions SQL.

ABS(Expression)retourne la valeur absolue de l'expression.CEIL(Expression)retourne la valeur maximale de l'expression. SQL Server utilise CEILING().COS(Expression)retourne le cosinus de l'expression.EXP(Expression)retourne la valeur exponentielle de l'expression.

12/04/2023 55/142

Page 56: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.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 indiquée 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 carrée de l'expression.TAN(Expression)retourne la tangente de l'expression.TO_NUMBER(expression)convertit des chaînes de caractères en valeur numérique.

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

5.3.3 Les fonctions sur les chaînes de caractères

Les fonctions sur les chaînes de caractères permettent de manipuler les chaînes de caractères.

Diverses données textuelles provenant d'une ou plusieurs colonnes peuvent être combinées en une unique chaîne de caractères. Par exemple, le nom et le prénom d'une personne pourraient être concaténés afin de donner une seule valeur.

Les fonctions

CONCAT (chaine1, chaine2)concatène la première chaîne à la seconde. CONCAT correspond à chaine || chaine2 sous Oracle.TRANSLATE (nom_colonne, valeur1, valeur2)recherche la première valeur dans la colonne spécifiée et substitue toutes les occurrences de valeur1 par celles de valeur2.REPLACE (nom_colonne, valeur1, valeur2)remplace toutes les occurrences de la première valeur dans la colonne spécifiée par celles de la seconde valeur.UPPER (chaine)convertit la chaîne de caractères en lettres majuscules.LOWER (chaine)

12/04/2023 56/142

Page 57: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.convertit la chaîne de caractères en lettres minuscules.SUBSTR(nom_colonne, position_départ, longueur)retourne une sous-chaîne de caractères extraite de la colonne spécifiée à partir d'une position de départ et jusqu'à une certaine longueur. Pour SQL Server, la fonction se dénomme SUBSTRING.INSTR(nom_colonne, jeu_caractères, position_départ, nb_occurrence)recherche le jeu de caractères dans une colonne et retourne la position de la première lettre du jeu.LTRIM(nom_colonne, jeu_caractères)supprime les caractères situés à la gauche de la chaîne de caractères.RTRIM(chaine, jeu_caractères)supprime les caractères situés à la droite de la chaîne de caractères.DECODE(nom_colonne, valeur1, valeur2, [valeur1, valeur2, valeur_défaut])recherche les valeurs valeur1 dans la colonne et les remplace par les valeurs valeur2 et toutes les autres valeurs sont remplacées par la valeur par défaut.LENGTH(chaine)retourne la longueur de la chaîne de caractères.NVL(nom_colonne, valeur)remplace les valeurs nulles de la colonne par une valeur de substitution.LPAD(nom_colonne, longueur, caractère)remplit à gauche des valeurs de la colonne un certain nombre du caractère indiqué pour arriver à la longueur voulue.RPAD(nom_colonne, longueur, caractère)remplit à droite des valeurs de la colonne un certain nombre du caractère indiqué pour arriver à la longueur voulue.ASCII(jeu_caractères)retourne la valeur ASCII d'un jeu de caractères indiqué.TO_CHAR(expression)convertit des valeurs numériques en chaînes de caractères.

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, '[email protected]') FROM tbl_client WHERE email = NULL;

5.3.4 Les dates et les heures

Les dates et les heures possèdent une place importante dans des applications SQL, dans la mesure ou elles permettent d'ajouter une dimension temporelle aux enregistrements d'une base de données.

12/04/2023 57/142

Page 58: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Dans de nombreuses applications SQL, des données temporelles sont associées à diverses informations lors de leur saisie manuelle ou automatique.

Par exemple, un nouvel abonné représenté par des champs tels que le nom, le prénom et l'adresse postale entre autres, pourrait également saisir une date de naissance par l'intermédiaire d'un formulaire, puis au moment de l'ajout de l'enregistrement dans la base de données, une date et éventuellement une heure seraient insérées automatiquement dans la ligne de données afin de conserver un historique des demandes d'abonnement.

Table d'abonnésNum_AbonneDate_AbonnementNomPrenomDate_NaissanceAdresse...

En outre, les dates et les heures peuvent permettre de sélectionner des jeux d'enregistrements avec des requêtes 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 précis.

Le format des dates et des heures dépend souvent des différentes implémentations SQL. Néanmoins, des formats standardisés ont été spécifiés afin d'éviter une trop grande hétérogénéité.

AAAA-MM-JJreprésente un format de date respectivement, année-mois-jour, avec un intervalle allant de 0001-01-01 jusqu'à 9999-12-31.HH:MN:SS.nnnreprésente un format horaire respectivement, heures:minutes:secondes, allant de 00:00:00 jusqu'à 23:59:61.999

Le standard ANSI prévoit trois types de données principaux de date et d'heure. D'autres types peuvent exister selon les implémentations.

DATE = AAAA-MM-JJstocke une date (ex: 10/01/2002).TIME = HH:MN:SS.nnnstocke une heure (ex: 10:12:42)TIMESTAMP = AAAA-MM-JJ HH:MN:SS.nnnstocke une valeur de date et d'heure combinées.

Les serveurs SQL tels que SYBASE et SQL Server utilisent les types de données DATETIME combinant les formats de date et d'heure, ainsi que SMALLDATETIME identique au précédent hormis que l'intervalle de date autorisé est plus restreint.

Les types de données de date et d'heure sont divisibles en plusieurs éléments distincts.

YEAR = AAAAstocke une année, allant de 0001 jusqu'à 9999.MONTH = MMstocke le mois, allant de 01 jusqu'à 12DAY = JJstocke le jour d'une date, allant de 01 jusqu'à 31.HOUR = HHstocke les heures, allant de 00 jusqu'à 23

12/04/2023 58/142

Page 59: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.MINUTE = MNstocke les minutes, allant de 00 jusqu'à 59.SECONDE = SS.nnnstocke les secondes, allant de 00 jusqu'à 61.999

Diverses commandes et fonctions permettent une manipulation aisée 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 récupération de la date en cours est possible par l'intermédiaire 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 décomposables en plusieurs valeurs telles que les secondes, les minutes, les heures, le jour, le mois et l'année 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'année 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 représentant des jours, à une date.SELECT SYSDATE + 7 FROM nom_table

D'autres éléments de date et d'heure peuvent être ajoutés ou extraits par le même biais sous Oracle.//soustrait une heure de la date couranteSELECT SYSDATE - 1/24 FROM nom_table

//soustrait 10 minutes de la date couranteSELECT SYSDATE - 1/144 FROM nom_table

12/04/2023 59/142

Page 60: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Les fonctions

Fonctions SQL ServerDATEADD ( partie_date, nombre, date )ajoute un nombre représentant une partie de date à la date spécifiée.DATEDIFF ( partie_date , date_départ , date_fin )soustrait la date de fin de celle de départ en fonction de la partie spécifiée.DATENAME ( partie_date , date )retourne une chaîne de caractères déterminée à partir de la date et de la partie indiquées.DATEPART ( partie_date , date )retourne la partie indiquée par le premier argument à partir d'une date.DAY ( date )retourne un entier représentant le jour à partir de la date spécifiée.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 spécifiée.YEAR ( date )retourne l'année sous forme d'une entier à partir de la date spécifiée.

Fonctions OracleADD_MONTHS(date, nb_mois)ajoute un nombre de mois spécifié à une date.{ fn CURDATE ( [ expression_date ] ) }retourne la date courante.CURRENT_DATEretourne la date courante.CURRENT_TIMEretourne l'heure courante.CURRENT_TIMESTAMPretourne 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 année sous forme d'un entier.HOUR ( expression_temps )retourne l'heure à partir d'une expression horaire.INTERVAL ( valeur partie_date )spécifie un intervalle de temps pour effectuer des opérations.LAST_DAY ( date )retourne une date qui représente 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 ) }retourne le mois à partir d'une expression horaire.{ fn MONTHNAME ( expression_temps ) }

12/04/2023 60/142

Page 61: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.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, chaîne )retourne la date du premier jour de la semaine correspondant à la chaîne de caractères spécifiée.NOWretourne la date et l'heure courante comme une valeur de TIMESTAMP.ROUND ( date, format )retourne la date spécifiée selon le format fourni.{ fn SECOND ( expression_temps ) }retourne le nombre de secondes à partir d'une expression horaire.SYSDATEretourne la date et l'heure courantes.TIMESTAMPADD ( intervalle, nombre, date )retourne le résultat de l'addition d'une date à un nombre entier selon un intervalle spécifié (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 résultat de la soustraction d'une date et d'un nombre entier selon un intervall spécifié (voir ci-dessus).TO_DATE ( chaîne )convertit une chaîne de caractères en une valeur de date et d'heure valide.TRUNC ( date, format )retourne le résultat d'une troncature d'une date selon un format spécifié.{ fn WEEK ( expression_date ) }retourne la semaine d'une année sous la forme d'un entier.{ fn YEAR ( expression_date ) }retourne une année 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 baseGOCREATE 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)GO

12/04/2023 61/142

Page 62: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

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 précis.Day, Month DD,YYYY HH24:MI:SSFriday, December 28, 2001 23:16:41

DD/MM/YYYY HH:MI:SS AM28/12/2001 11:16:41 AM

Les formats de date et d'heure peuvent être utilisés 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 éléments afin d'indiquer le type de la valeur fournie.INTERVAL '3' DAY

Format DescriptionSCC | CC représente le siècle. Le "S" indique les dates BC (Before Christ) avec "-".YEAR | SYEAR

représente une année.

YYYY | SYYYY

représente une année sur quatre chiffres.

IYYY représente une année sur quatre chiffres, basée sur le standard ISO.YYY | YY | Y représente respectivement les trois, deux ou un chiffre(s) d'une année.

IYY | IY | Ireprésente respectivement les trois, deux ou un chiffre(s) d'une année basée sur le standard ISO.

Y,YYY représente une année avec une virgule.Q représente le trimestre d'une année (1-4).MM représente le mois sur deux chiffres (1-12).MONTHMonthmonth

représente le nom littéral du mois (JANUARY-DECEMBER).

MONMonmon

représente une abréviation littérale du nom de mois (JAN-DEC).

WW représente le numéro de la semaine sur une année (1-53).IW représente le numéro de la semaine basé sur le standard ISO (1-52/53).W représente le numéro de la semaine d'un mois (1-5).DDD représente le numéro du jour sur une année (1-365).DD représente le numéro du jour sur un mois (1-31).D représente le numéro du jour sur une semaine (1-7).DAYDayday

représente le nom littéral du jour (SUNDAY-SATURDAY).

DYDydy

représente le nom littéral abrégé du jour (SUN-SAT)).

AM | PM représente l'indicateur méridien.A.M. | P.M. représente l'indicateur méridien avec des périodes.

12/04/2023 62/142

Page 63: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.HH | HH12 représente l'heure d'une journée sur douze heures (1-12).HH24 représente l'heure d'une journée sur vingt-quatre heures (0-23).MI représente les minutes (0-59).RM représente le numéro du mois sous forme de chiffres romains.RR représente les deux chiffres d'une année pour les années dans d'autres pays.SS représente les secondes (0-59).SSSSS représente les secondes sur vingt-quatre heures (0-86399).- / . ; : "texte" représente 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 éléments cités dans le tableau ci-dessous.dddd, MMMM dd,yyyy hh:mm:ss.ffff ttFriday, December 28, 2001 11:16:41.0021 AM

dd/MM/yyyy HH:mm:ss28/12/2001 23:16:41

Format Descriptionyyyy représente une année sur quatre chiffres.yy représente une année sur deux chiffres.qq | q représente le trimestre d'une année.MM | M représente le mois sur deux chiffres.MMMM représente le nom littéral du mois.MMM représente le nom littéral abrégé du mois.dd | d représente le jour sur deux chiffres.dddd représente le nom littéral du jour de la semaine.ddd représente le nom littéral abrégé du jour de la semainehh | h représente l'heure d'une journée sur douze heures.HH | H représente l'heure d'une journée sur vingt-quatre heures.mm | m représente les minutes.ss | s représente les secondes.f représente les fractions de secondes.tt représente l'indicateur méridien AM/PM.

Les parties de date pour les fonctions DATEADD, DATEDIFF, DATENAME et DATEPART peuvent être utilisées dans leur forme littérale comme dans leurs abréviations.

Partie de date Abréviations Descriptionyear yy, yyyy Annéequart qq, q Trimestremonth mm, m Moisdayofyear dy, y Jour de l'année (1 - 365)day dd, d Jourweeek wk, ww Semaineweekday dw Jour de la semainehour hh Heuresminute min Minutessecond ss, s Secondesmillisecond ms Millisecondes

12/04/2023 63/142

Page 64: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

5.4 Les déclencheurs (Triggers)

Les déclencheurs (Triggers) sont des procédures stockées appartenant à une table précise et s'exécutant lorsqu'une action spécifique se produit sur la table concernée.

Le déclenchement d'une telle procédure s'effectue subséquemment à une instruction de manipulation de données (DML) comme INSERT, DELETE ou UPDATE.

Il existe donc trois types de déclencheurs, sur insertion, sur mise à jour et sur suppression.

Une table peut comporter plusieurs déclencheurs d'un type donné, à condition que chacun possède un nom différent. Cependant, un déclencheur donné ne peut être assigné qu'à une seule et unique table tout en s'appliquant à la fois, à l'insertion, la mise à jour et la suppression d'enregistrements sur la table en question.

Une table ne peut posséder qu'un seul déclencheur INSTEAD OF d'un type donné.

Les déclencheurs se produisent soit après (AFTER), soit avant (BEFORE) soit à la place (INSTEAD OF) d'une action DML.

Un déclencheur sur INSERT s'exécute à chaque opération d'insertion lancée par l'utilisateur ou par un programme. Lors d'une insertion, l'enregistrement est inséré à la fois dans la table cible est dans une table temporaire dénommée inserted. Une telle table peut permettre de vérifier la cohérence des enregistrements.

Un déclencheur sur DELETE s'exécute à chaque opération de suppression lancée par l'utilisateur ou un programme. Lors d'une suppression, l'enregistrement est supprimé physiquement de la table cible et l'insère dans une table temporaire dénommée deleted. Cela peut permettre de récupérer l'enregistrement supprimé.

Un déclencheur sur UPDATE s'exécute à chaque opération de mise à jour lancée par l'utilisateur ou par un programme. Lors d'une mise à jour, l'ancien enregistrement est supprimé et inséré dans la table temporaire deleted, tandis que le nouveau est inséré à la fois dans la table cible et dans la table inserted.

La suppression des déclencheurs s'effectue par l'intermédiaire de l'instruction DROP.DROP TRIGGER nom_déclencheur [ , nom_déclencheurN ]

La modification des déclencheurs s'effectue par l'intermédiaire de l'instruction ALTER. La syntaxe complète de la commande ALTER TRIGGER est en fait identique dans le cas d'Oracle ou de SQL Server à celle de CREATE TRIGGER.ALTER TRIGGER nom_déclencheur_existantON nom_tableFOR INSERT, UPDATE, DELETEAS instruction_SQL...

Tous les déclencheurs (ALL) ou certains peuvent être activés (ENABLE) ou désactivés (DISABLE) au moyen de l'instruction ALTER TABLE.ALTER TABLE table { ENABLE | DISABLE } TRIGGER { ALL | nom_déclencheur [ , nom_déclencheurN ] }

12/04/2023 64/142

Page 65: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

5.4.1 Les Triggers sous Oracle

La syntaxe des déclencheurs sous Oracle peut être plus ou moins complexe.

CREATE [ OR REPLACE ] TRIGGER propriétaire.nom_déclencheurAFTER | BEFORE { [ INSERT [ OR DELETE [ OR UPDATE OF nom_colonne,...,nom_colonneN ] ] ] }ON propriétaire.nom_tableFOR EACH ROW nom_procédure (argument...argumentN);

La seconde syntaxe se révèle bien plus abconse, puisqu'elle intègre non seulement les déclencheurs DML mais également d'autres types de déclencheurs basés sur des commandes DDL ou DATABASE.

En outre, pour les déclencheurs DML, des clauses spécifiques aux vues apparaissent, ainsi que la clause REFERENCING.

CREATE [ OR REPLACE ] TRIGGER [ schéma. ] nom_déclencheur{ AFTER | BEFORE | INSTEAD OF}{ { [ INSERT [ OR DELETE [ OR UPDATE [ OF nom_colonne [, nom_colonneN ] ] ] ] ] } ON { { [ schéma. ] nom_table } | { [ NESTED TABLE colonne_emboîtée OF ] [ schéma . ] nom_vue } } { [ REFERENCING ] { [ OLD [ AS ] ancienne_colonne | NEW [ AS ] nouvelle_colonne | PARENT [ AS ] colonne_parente ] } } [ FOR EACH ROW ] instruction_SQL;} |{ { { Evénement_DDL [ OR EvénementN_DDL ] } | { Evénement_Base_Données [ OR EvénementN_Base_Données ] } ON {

12/04/2023 65/142

Page 66: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. { [ schéma. ] SCHEMA } | DATABASE } WHEN ( Condition ) { instruction_PL/SQL | instruction_procédure };}

La commande OR REPLACE recrée le déclencheur s'il existe déjà.

La clause BEFORE indique que le déclencheur doit être lancé avant l'exécution de l'événement.

La clause AFTER indique que le déclencheur doit être lancé après l'exécution de l'événement.

Les instructions INSERT et DELETE indique au déclencheur de s'exécuter lors respectivement d'une insertion ou d'une suppression dans la table.

La clause UPDATE OF indique que le déclencheur doit être lancé lors de chaque mise à jour d'une des colonnes spécifiées. Si elle est omise, n'importe quelle colonne de la table modifiée provoque le décle,chement du Trigger.

La clause ON désigne le nom de la table associé à son schéma pour lequel le déclencheur a été spécifiquement créé.

La clause FOR EACH ROW désigne le déclencheur pour être un déclencheur de ligne. Oracle lance un déclencheur de ligne une fois pour chaque ligne qui est affectée par l'instruction de déclenchment. Si la clause est omise, le déclencheur est un déclencheur d'instruction. Oracle lance un déclencheur de d'instructionune fois seulement lorsque l'instruction déclenchante est émise si la contrainte du déclencheur optionnelle est rencontrée.

La clause REFERENCING permet de spécifier des noms de corrélation. Il est possible d'utiliser les noms de corrélation dans des blocs d'instructions PL/SQL et dans la condition WHEN d'une déclencheur de ligne pour se référer spécifiquement à des valeurs anciennes et nouvelles de la ligne courante. Les noms de corrélation par défaut sont OLD et NEW. Si le déclencheur de ligne est associé à une table nommée OLD ou NEW, l'utilisation de cette clause permet de spécifier des noms de corrélations différents afin d'éviter une confusion entre les noms de table et les noms de corrélation.Si le déclencheur est défini sur une table imbriquée, OLD et NEW se référent à la ligne de la table imbriquée, et PARENT se référe à la ligne courante de la table parente.Si le déclencheur est défini sur une table ou une vue, OLD et NEW se référe aux instances d'objet.La clause REFERENCING n'est pas valide avec les déclencheurs INSTEAD OF sur les événements DDL de création.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 WHEN (1 = 1) DECLARE action_utilisateur VARCHAR2(50); BEGIN

12/04/2023 66/142

Page 67: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. 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 crée un déclencheur qui insère un champ log à l'intérieur d'une table, pour chaque ligne supprimée dans la table spécifiée.

Le second exemple crée un déclencheur qui insére un enregistrement à l'intérieur de la seconde table lorqu'une opération d'insertion s'est accomplie dans la première table. Le déclencheur vérifie si le nouvel enregistrement possède un premier composant inférieur ou égal à 10 et si c'est le cas, inverse les enregistrements à l'intérieur de la seconde table.

Les variables spéciales NEW et OLD sont disponibles pour se référer respectivement à des nouveaux ou d'anciens enregistrements. Les deux points (:) précédent NEW et OLD dans VALUES sont dans ce cas obligatoires, par contre dans la clause conditionnelle WHEN, ils doivent être omis.

5.4.2 Les Triggers sous SQL Server

Les déclencheurs sous SQL Server peuvent prendre deux formes distinctes selon l'inclusion de l'instruction DELETE.La première forme permet de construire des déclencheurs des trois types possibles.

CREATE TRIGGER nom_déclencheurON { nom_table | nom_vue }[ WITH ENCRYPTION ]{ { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [,] [ UPDATE ] [,] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS } instruction_SQL... }}

12/04/2023 67/142

Page 68: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.La syntaxe ci-dessous ne permet la création que de deux types de déclencheur. Néanmoins, des structures conditionnelles donnent la possibilité de tester les modifications apportées aux colonnes spécifiées.

CREATE TRIGGER nom_déclencheurON { 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 désigne la table ou la vue concernées par le déclencheur.

La clause WITH ENCRYPTION indique que SQL Server crypte les entrées syscomments qui contiennent le texte de l'instruction CREATE TRIGGER.

La clause FOR indique le déclenchement du Trigger pour un type d'événement.

La clause AFTER indique le déclenchement du Trigger suite à un type d'événement.

La clause INSTEAD OF indique un exécution des instructions du Trigger à la place de celles normalement produites par l'événement déclencheur.

Les instructions INSERT, UPDATE et DELETE représentent chacun un type de déclencheur respectivement sur une insertion, une mise à jour et une suppression.

La clause WITH APPEND indique la nécesité d'ajouter un déclencheur supplémentaire d'un type existant.

La clause NOT FOR REPLICATION indique que le déclencheur ne doit pas être exécuté lors de la modification de la table concernée par un processus de réplication.

La clause IF UPDATE exécute des tests pour une opération INSERT ou UPDATE sur une ou plusieurs colonnes spécifiées à la suite de l'instruction. Les colonnes à tester, peuvent être articulées autour d'un opérateur AND ou OR afin d'effectuer un test conditionnel sur l'une ou/et l'autre des colonnes. La clause retourne une valeur booléenne.

La clause COLUMNS_UPDATED retourne un modèle de bit de type varbinary indiquant les colonnes ayant subi des modifications suite à un test dans un déclencheur de type INSERT ou UPDATE uniquement.IF (COLUMNS_UPDATED() & 15) = 15

12/04/2023 68/142

Page 69: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.IF (COLUMNS_UPDATED() & 15) > 0La valeur 15 suivant l'opérateur de niveau de bit & représente les cinq premières colonnes d'un tableau. Le signe égal = permet de vérifier dans ce cas si les cinq colonnes ont été modifiées. Dans l'autre exemple, le signe supérieur à > est spécifié, il s'agit ici d'une vérification sur l'une ou l'autre des cinq colonnes indiquées.

Exemple

/* Premier exemple */CREATE TABLE tbl_produit ( nom VARCHAR(20), identificateur INTEGER )GOINSERT 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' 8GOCREATE TRIGGER declencheur_suppression ON tbl_produit FOR DELETEAS SELECT nom AS "Lignes à supprimer" FROM deletedGOCREATE TRIGGER declencheur_insteadof ON tbl_produit INSTEAD OF DELETEAS DELETE tbl_produit FROM tbl_produit INNER JOIN deleted ON tbl_produit.nom = deleted.nom WHERE tbl_produit.identificateur = 0GODELETE tbl_produit WHERE nom IN ('brosse à dent', 'serviette', 'savon')GOSELECT * FROM tbl_produitGODROP TABLE tbl_produit

/* Second exemple */CREATE TRIGGER envoi_emailON nom_tableFOR INSERT, UPDATE, DELETEAS EXEC master.dbo.xp_sendmail @recipients = 'Administrateur', @message = 'Attention une modification a été effectuée dans la table : nom_table.', @subject = 'Modification sur une table.'GO

12/04/2023 69/142

Page 70: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

/* Troisième exemple */CREATE TRIGGER avertissementON nom_tableFOR INSERT, UPDATE, DELETEAS RAISERROR ('Attention une modification a été effectuée dans la table', 16, 10)GO

Le premier exemple met en exergue le processus permettant de faire appel à différents types de déclencheurs au sein d'une table. Le premier déclencheur FOR DELETE s'exécute lors d'une suppression en sélectionnant les lignes supprimées à partir de la table temporaire deleted. Le second Trigger se déclenche et exécute ses propres instructions à la place de la commande de déclenchement DELETE afin d'effectuer une comparaison entre les noms de produit sur les deux tables tbl_produit et deleted pour ensuite supprimer les enregistrements possédant un identificateur égal à zéro.

Les deux derniers exemples démontrent qu'il est possible d'exécuter diverses instructions telles que respectivement, l'envoi d'un courrier électronique notifiant une modification à l'administrateur de la base de données et du retour d'un message d'erreur par l'instruction RAISERROR.

12/04/2023 70/142

Page 71: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Chapitre 2

Fondamentaux de la Business Intelligence

12/04/2023 71/142

Page 72: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

S O M M A I R E

SOMMAIRE.............................................................................................................................72

1 ENJEUX ET DÉFINITION............................................................................................73

1.1 Enjeux du décisionnel.............................................................................................731.2 Le décisionnel.........................................................................................................74

2 LE PROCESSUS DÉCISIONNEL................................................................................75

2.1 La réalité des systèmes d’informations...................................................................752.2 Vue globale.............................................................................................................76

3 LE DATAWAREHOUSE...............................................................................................77

3.1 Objectifs..................................................................................................................773.2 Définition.................................................................................................................77

4 LES DATAMARTS.........................................................................................................79

4.1 Objectif....................................................................................................................794.2 Définition.................................................................................................................794.3 Mise en place..........................................................................................................80

5 ANALYSE MULTIDIMENTIONNELLE....................................................................81

5.1 Les axes d’analyses................................................................................................815.2 Les indicateurs........................................................................................................825.3 Navigation dans les données..................................................................................83

6 L’analyse des informations................................................................................................84

12/04/2023 72/142

Page 73: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

11 ENJEUX ET DÉFINITIONENJEUX ET DÉFINITION

1.1 Enjeux du décisionnel

Avec l'apparition des ordinateurs personnels et des réseaux locaux, une autre activité a émergé, tout à fait distincte de l'informatique de production. Avec la montée en puissance des micros ordinateurs et l'avènement de l'architecture client - serveur, on observe aujourd'hui un décloisonnement remarquable. Le mot d'ordre principal est : « fournir à tout utilisateur reconnu et autorisé, les informations nécessaires à son travail ». Ce slogan fait naître une nouvelle informatique, intégrante, orientée vers les utilisateurs et les centres de décision des organisations. C'est l'ère du client-serveur qui prend vraiment tout son essor à la fin des années 90 avec le développement des technologies Intranet. Par ailleurs, un environnement de concurrence plus pressant contribue à révéler l'informatique décisionnelle. La qualité et l'exhaustivité des informations sont primordiales pour la direction générale. En effet, à ce niveau, les décideurs sont confrontés à des réalités très complexes ou de nombreux phénomènes se trouvent liés entre eux. Chaque couche du système (voir schéma ci dessous) produit ses propres indicateurs et prend des décisions. Cependant, plus on se trouve haut dans la pyramide plus les informations extérieures à l'entreprise vont rentrer en compte et prendre de l'importance.

L’entreprise construit un système décisionnel pour améliorer sa performance. Elle doit décider et anticiper en fonction de l’information disponible et capitaliser sur ses expériences.

Depuis plusieurs dizaines d’années, une importante masse d’informations est stockée sous forme informatique dans les entreprises. Les systèmes d’information sont destinés à garder la trace d’événements de manière fiable et intègre. Ils automatisent de plus en plus les processus opérationnels.

Parallèlement, les entreprises réalisent la valeur du capital d’information dont elles disposent. Au delà de ce que l’informatique leur apporte en terme fonctionnel, elles prennent conscience de ce qu’elle pourrait apporter en termes de contenu informationnel. Considérer le système d’information sous cet angle en tant que levier pour

12/04/2023 73/142

Page 74: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.accroître leur compétitivité et leur réactivité n’est pas nouveau. Par contre, étant donné l’environnement concurrentiel actuel, cela devient une question de survie.

L’informatique décisionnelle a un rôle à jouer, en permettant à l’entreprise de devenir plus entreprenante et d’avoir une meilleure connaissance de ses clients, de sa compétitivité ou de son environnement.

Il est intéressant de calculer les retours sur investissement rendus publics. Ils se calculent rarement en termes de baisse de coûts, mais en termes de gains. Par exemple, ils permettent un meilleur suivi des ventes, une meilleure compréhension des habitudes d’achats des clients, d’une adaptation des produits à une clientèle mieux ciblée.

1.2 Le décisionnel

On peut parler de décisionnel lorsque les données de production sont valorisées en information. Cette valorisation est effective dès que l'on sort du monde de la production.

Le système d'information décisionnel est un ensemble de données organisées de façon spécifique, facilement accessible et appropriées à la prise de décision ou encore à une représentation intelligente de ces données au travers d'outils spécialisés. La finalité d'un système décisionnel est le pilotage de l'entreprise.

Les systèmes décisionnels sont dédiés au management de l'entreprise pour l'aider au pilotage de l'activité, et indirectement opérationnels car n'offrant que rarement le moyen d'appliquer les décisions. Ils constituent une synthèse d'informations opérationnelles, internes ou externes, choisies pour leur pertinence et leur transversalité fonctionnelles, et sont basés sur des structures particulières de stockage volumineux (Datawarehouse, bases OLAP).

12/04/2023 74/142

Page 75: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

22 LE PROCESSUS DÉCISIONNELLE PROCESSUS DÉCISIONNEL

2.1 La réalité des systèmes d’informations

A première vue, les systèmes opérationnels seraient des mines d’or informationnelles. En fait, il n’en est rien. Les données contenues dans ces systèmes sont :

Eparpillées : il existe souvent de multiples systèmes, conçus pour être efficace pour les fonctions sur lesquelles ils sont spécialisés.

Peu structurées pour l’analyse : la plupart des systèmes informatiques actuels ont pour objet de conserver en mémoire l’information, et sont structurés dans ce but.

Focalisées pour améliorer le quotidien : toutes les améliorations technologiques se sont focalisées pour améliorer cette capacité en terme de volume, qualité, rapidité d’accès. Il manque très souvent la capacité à nous donner les moyens de tirer parti de cette mémoire pour prendre des décisions.

Utilisées pour des fonctions critiques : la majorité des systèmes existants est conçue dans le but unique de nous servir avec des temps de réponse corrects.

Le tableau ci-dessous présente les différences entre les bases opérationnelles et décisionnelles.

  Base opérationnelle Base décisionnelleType de données Orientées application, détaillées,

précises au moment de l’accèsOrientée activité (thème, sujet), condensées, représentes des données historiques

Nombre d’utilisateurs Très important Allant croissant et pouvant atteindre des chiffres très élevés

Type de travail Prédéfini (ex. écrans de saisie) Souvent indéfini

Complexité des requêtes Simple (accès par index) De simple à complexe (jointures, tris, …)Dépend beaucoup du travail de modélisation en amont

Volume de données balayé lors de l’exécution d’une requête

Peu de lignes Très nombreuses lignes (balayage complet de tables)

Mises à jour réalisées De façon continue avec gestion des concurrences d’accès entre utilisateurs

Généralement par batch, plus rarement au fil de l’eauQuasiment jamais de concurrence d’accès à gérer

Taille de la base de données

Variable Plus importante (notion d’historique et d’agrégats)

Exemple d’utilisation Achats effectués par un client Clients qui ont acheté un article donné durant une période donnée

S’il existe effectivement des informations importantes, il n’en est pas moins nécessaire de construire une structure pour les héberger, les organiser et les restituer à des fins d’analyse. Cette structure est le DataWarehouse ou “ entrepôt de données ”. Ce n’est pas une usine à produire l’information, mais plutôt un moyen de la mettre à disposition des utilisateurs de manière efficace et organisée.

12/04/2023 75/142

Page 76: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Le DataWarehouse permet la mise en place d’un outil décisionnel s’appuyant sur les informations pertinentes pour l’entreprise, centrées sur le métier utilisateur.

2.2 Vue globale

On peut distinguer quatre éléments essentiels servant de structure au processus : Les sources de données : internes (bases de production), externes (Internet, bases des partenaires). L’entrepôt de données : lieu de stockage centralisé des informations utiles pour les décideurs. Les magasins de données : extraits de l’entrepôt orientés sujet. Données organisées de manière adéquate pour permettre des analyses rapides pour la prise de décision. Les outils d’analyse : permettent de manipuler les données suivant des axes d’analyse.

Le processus peut se décomposer en trois phases : Construction de la base de données décisionnelle (Datawarehousing) : modélisation conceptuelle des données multiformes et multisources, alimentation de l’entrepôt (extraire, nettoyer, transformer, charger), stockage physique des données. Sélection des données à analyser selon les besoins de l’utilisateur : DataMart, cubes multidimensionnels, tableaux ou tables bidimensionnels. Analyse des données : statiques et reporting, base OLAP, Datamining.

Deux contraintes apparaissent : la simplicité du modèle de données et la performance malgré les grands volumes.

12/04/2023 76/142

Page 77: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

33 LE DATAWAREHOUSELE DATAWAREHOUSE

3.1 Objectifs

Le Datawarehousing est un processus visant à permettre le traitement à des fins décisionnelles de gros volumes de données caractérisant le fonctionnement de l’entreprise. Avant d’être chargée dans le DataWarehouse (DWH), l’information doit être extraite, nettoyée et préparée. Puis, elle est intégrée et mise en forme de manière compréhensible pour être comprise par l’utilisateur. Le Datawarehousing permet de transformer les données stockées en informations utiles.

Toutes les données qu’elles proviennent du système de production de l’entreprise ou qu’elles soient achetées vont devoir être organisées, coordonnées, intégrées et stockées, pour donner à l’utilisateur une vue intégrée et orientée métier.

Les objectifs de réalisation d’un DWH sont les suivants : Intégrer des données internes comme externes, et fournir les informations importantes en les rendant lisibles et facilement manipulables. Offrir un accès direct à l’utilisateur, et en règle générale augmenter le nombre d’accès aux données. Fournir un cadre assez flexible, pouvant supporter la croissance (nombre d’utilisateurs, nouveaux outils, volumes de données)

3.2 Définition

Le DataWarehouse est une collection de données orientées sujet, intégrées, non volatiles et historisées, organisées pour le support d’un processus d’aide à la décision.

3.2.1 Orientées sujetLe DataWarehouse est organisé autour des sujets majeurs de l’entreprise, contrairement aux données des systèmes de production. Ceux-ci sont généralement organisés par processus fonctionnels. Les données sont structurées par thème.

L’intérêt de cette organisation est de disposer de l’ensemble des informations utiles sur un sujet le plus souvent transversal aux structures fonctionnelles et organisationnelles de l’entreprise.

Cette orientation sujet va également permettre de développer son système décisionnel via une approche par itérations successives, sujet après sujet. L’intégration dans une structure unique est indispensable car les informations communes à plusieurs sujets ne doivent pas être dupliquées. Dans la pratique, une structure supplémentaire appelée DataMart (magasin de données) peut être créée pour supporter l’orientation sujet.

3.2.2 Données intégréesUn DataWarehouse est un projet d’entreprise. Par exemple dans la distribution, le même indicateur de chiffre d’affaires intéressera autant les forces de vente que le département financier ou les acheteurs. Pour y parvenir, les données doivent êtres intégrées.

12/04/2023 77/142

Page 78: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Avant d’être intégrées dans le DataWarehouse, les données doivent êtres mises en forme et unifiées afin d’avoir un état cohérent. Par exemple, la consolidation de l’ensemble des informations concernant un client donné est nécessaire pour donner une vue homogène de ce client.

Une donnée doit avoir une description et un codage unique. Cette phase d’intégration est très complexe et représente 60 à 90 % de la charge totale d’un projet.

3.2.3 Données historisées Dans un système de production ; la donnée est mise à jour à chaque nouvelle transaction.

Dans un DataWarehouse, la donnée ne doit jamais être mise à jour. Un référentiel temps doit être associé à la donnée afin d’être capable d’identifier une valeur particulière dans le temps.

3.2.4 Données non volatiles La non volatilité des données est en quelque sorte une conséquence de l’historisation. Une même requête effectuée à quelques mois d’intervalle en précisant la date de référence de l’information recherchée donnera le même résultat.

12/04/2023 78/142

Page 79: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

44 LES DATAMARTSLES DATAMARTS

4.1 Objectif

Avec un DataWarehouse, il y a des risques d’échec. Rien n’invite l’utilisateur à se servir d’un DataWarehouse. Le succès d’un DataWarehouse dépend donc uniquement de son effective utilisation. Un des gros risques de sa construction est de se cristalliser autour de la problématique informatique et de se détourner de l’utilisateur.

Le DataMart minimise la complexité informatique. Il est donc plus facile de se concentrer sur les besoins utilisateurs.

4.2 Définition

Le DataMart est une base de données moins coûteuse que le DataWarehouse, et plus légère puisque destinée à quelques utilisateurs d’un département. Il séduit plus que le DataWarehouse les candidats au décisionnel.

C’est une petite structure très ciblée et pilotée par les besoins utilisateurs. Il a la même vocation que le DataWarehouse (fournir une architecture décisionnelle), mais vise une problématique précise avec un nombre d’utilisateurs plus restreint. En général, c’est une petite base de données (SQL ou multidimensionnelle) avec quelques outils, et alimentée par un nombre assez restreint de sources de données.

Mais pour réussir, il y a quelques précautions à prendre, gage de son évolutivité vers le DataWarehouse.

DataWarehouse DataMartCible utilisateur Toute l’entreprise Département

Implication du service informatique

Elevée Faible ou moyen

Base de données d’entreprise

SQL type serveur SQL milieu de gamme, bases multidimensionnelles

Modèles de données A l’échelle de l’entreprise Département

Champ applicatif Multi sujets, neutre Quelques sujets, spécifique

Sources de données Multiples Quelques unes

Stockage Base de données Plusieurs bases distribuées

Taille Centaine de GO et plus Une à 2 dizaines de GO

Temps de mise en place 9 à 18 mois pour les 3 étapes 6 à 12 mois (installation en plusieurs étapes)

12/04/2023 79/142

Page 80: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

4.3 Mise en place

Construire un ou plusieurs DataMarts départementaux au lieu d’un DataWarehouse central permet de valider rapidement le concept d’informatique décisionnelle.

Mais construire des DataMarts n’est pas sans risques : En effet, dans les entreprises, des DataMarts isolés peuvent proliférer. Ces

entreprises risquent de retomber dans le piège d’une architecture composée de multiples systèmes décisionnels incohérents, contenant des informations redondantes. Cela coûte plus cher et c’est plus complexe à gérer qu’un DataWarehouse centralisé. Les entreprises américaines, plus en avance que les entreprises européennes, en ont fait les frais.

Les DataMarts résolvent les problèmes de performance des gros DataWarehouse. Mais ils font régresser vers le vieux problème des îlots isolés. Les entreprises vont devoir affronter des problèmes techniques complexes et coûteux pour remettre en cohérence les ensembles.

Fédérer des DataMarts ou les faire évoluer vers une structure centralisée n’est pas facile.

On peut se poser la question s’il est préférable de bâtir un gros et unique DataWarehouse ou bien de concevoir un réservoir plus modeste, nourri par les données d’un seul département.

Il est intéressant de commencer par un DataMart, à condition de respecter certaines règles : Impliquer les utilisateurs. Ne pas construire de multiples DataMarts isolés. Bannir les redondances.

Donc le DataMart peut préparer au DataWarehouse. Mais il faut penser grand, avenir, et adopter des technologies capables d’évoluer.

12/04/2023 80/142

Page 81: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

55 ANALYSE MULTIDIMENTIONNELLEANALYSE MULTIDIMENTIONNELLE

Ce type d’analyse permet d'analyser la répartition d'un indicateur comme le " chiffre d'affaires"  en fonction des axes ou dimensions " clients ", " produit ", " temps". En outre, des hiérarchies seront définies pour chaque axe d'analyse (par exemple, l'année, puis la saison, le mois et la semaine, pour l'axe temps).

Temps

Produit

Client

12000

80006000

80004000

7000

1000

2000

3000

8000

1000

5.1 Les axes d’analyses

Les axes d'analyse (dimension) selon lesquels on veut étudier des données observables (faits) donnent aux utilisateurs des renseignements nécessaires à la prise de décision.

Il peut s'agir des clients ou des produits d'une entreprise, d'une période de temps comme un exercice financier, des activités menées au sein d'une société, etc…

Le modèle de données multidimensionnel est un tableau à n dimensions (hypercube). Chaque axe d’analyse possède une hiérarchie associée de plusieurs niveaux de consolidation. Chaque position dans un tableau multidimensionnel, correspondant à une intersection de toutes les dimensions est appelée une cellule.

Ces axes d’analyses peuvent être affinés, décomposées en hiérarchies, afin de permettre à l’utilisateur d’examiner ses indicateurs à différents niveaux de détail, de " descendre " dans les données, allant du niveau global au niveau le plus fin. Par exemple, une date pourra être décomposée en <année, mois, semaine, jour>. On aura alors une vision pyramidale des données, la base de la pyramide représentant le niveau le plus détaillé et le haut le niveau le plus global.

12/04/2023 81/142

Page 82: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Indicateursnumériques

Dimensions d'analyse

Période

Produit

Hiérarchied'une

dimension

Année

Mois

Semaine

Jour

5.2 Les indicateurs

Les indicateurs, qui sont aussi appelées métriques, dans un tableau multidimensionnel correspondent aux colonnes d'une table relationnelle. Les valeurs à l'intérieur d'une colonne correspondent aux valeurs pour cet indicateur dans un tableau multidimensionnel.

Par rapport à l’axe temps, nous pouvons distinguer deux types de variables à analyser : Des indicateurs de flux, dont les variations sont enregistrées dans la base de

données. Pour déterminer leur montant pendant une certaine période, il suffit de cumuler les différentes variations ayant eu lieu dans cette période. Par exemple, pour obtenir le chiffre d'affaires du mois de Mai 1998, il suffit de faire la somme des chiffres d'affaires de chaque jour du mois.

Des indicateurs d’état, indiquant le contenu d’une variable à un instant t. Le cumul des valeurs prises dans une période donnée n’indique généralement plus la valeur de cet indicateur pour cette période. Par exemple pour une variable indiquant l’état du stock au début de chacun des trimestres, l’entreprise peut considérer que l’état du stock pour l’année est égal à son état au 1er trimestre. Les valeurs des 4 trimestres n’ont donc pas à être cumulées pour obtenir le stock annuel.

L’administrateur ou l’utilisateur doit pouvoir indiquer à l’outil si un indicateur est un indicateur d’état et quelle valeur elle devra prendre pour un attribut donné.

Les métriques de base sont l’association d’une colonne de fait et d’une fonction d’agrégation. Il est indispensable que l’utilisateur puisse aller au-delà et utiliser des métriques complexes, dérivées de ces éléments de base en définissant des métriques composées d’autres métriques, filtrées ou calculées par rapport à une dimension particulière. Une variable sera élue indicateur selon la stratégie choisie. Par exemple pour analyser les ventes on choisira comme indicateur la variable CA (chiffre d’affaires).

L’utilisateur formulera alors ses requêtes en précisant les indicateurs à analyser (le chiffre d’affaires), les dimensions sur lesquelles ces analyseurs doivent être projetés (le produit et le client) et la fonction d’agrégation associée sur chaque projection.

12/04/2023 82/142

Page 83: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

5.3 Navigation dans les données

5.3.1 Drill-down, Drill-up

Le drill-down / up désigne la faculté d’aller du niveau global vers le niveau détaillé, et inversement.

Ce mécanisme est totalement basé sur la notion de hiérarchie.

Chacun des axes d’analyse se décompose en attributs reliés entre eux par des relations père / fils. Un axe d’analyse peut comporter plusieurs hiérarchies. Par exemple, la dimension " produits " peut contenir une hiérarchie " Marque-Article " et une hiérarchie " Secteur-Segment-Article ". Le mécanisme de drill-down se fera ainsi de la marque vers l’article et du secteur vers le segment puis vers l’article.

Marque

Article

Segment

Secteur

5.3.2 Slice and dice

Le " Slice and dice " désigne la possibilité de faire pivoter dynamiquement les axes du tableau d’analyse croisée.

Il est possible ainsi de passer d’un tableau présentant les ventes par magasin en lignes et jour en colonnes par un tableau similaire présentant les ventes par magasin en colonnes et jour en ligne.

5.3.3 Data Surfing

Le data surfing est la possibilité laissée à l’utilisateur de circuler librement, de manière intuitive et ergonomique dans un modèle dimensionnel, au delà d’un " simple " drill-down ou slice and dice.

L’utilisateur peut alors modifier dynamiquement ses axes d’analyse ou appliquer un nouveau filtre à ses données.

Ces mécanismes s’appliquent sur le modèle défini soit par l’administrateur, soit par l’utilisateur.

Ce modèle doit être assez complexe pour adresser l’ensemble des demandes de l’utilisateur et assez souple pour que l’utilisateur puisse le personnaliser à son goût, en créant de nouveaux attributs ou de nouveaux axes d’analyse ou en définissant de nouvelles métriques calculées.

12/04/2023 83/142

Page 84: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

66 L’ANALYSE DES INFORMATIONSL’ANALYSE DES INFORMATIONS

L’analyse des données consiste à traiter les données métier afin de réaliser différentes analyses dont le détail n’est pas connu par avance : c’est l’utilisateur qui choisit les données auxquelles il aura accès, et le niveau de détail de son analyse. Il peut ensuite affiner sa recherche en « zoomant » sur les éléments nécessitant une vision plus détaillée. Ces outils lui permettent donc :

De constater : suivre les indicateurs, identifier les tendances. De localiser et de comprendre : analyser les tendances, isoler des fluctuations conjoncturelles. D’expliquer : analyser les données pour identifier les raisons de la variation d’un indicateur. De simuler des situations.

Les principaux outils d’analyse sont : Le reporting : édition d’états et de tableaux de synthèse en préparant un rapport personnalisé (se poser des questions non préparées). Il n’y a pas de limitation dans l’accès aux données mais le temps de réponse peut être conséquent et le résultat obtenu n’est pas garanti. L’analyse multidimensionnelle : elle permet d’interroger des structures de données multidimensionnelles avec possibilité dynamique et intuitive de zooms, de changement de mode d’intégration. Les temps de réponse sont excellents et le résultat obtenu est garanti mais les évolutions (ajout d’axe…) sont difficiles et la construction est délicate. Le Datamining : outils d’exploration et d’analyse des données basés sur des techniques d’intelligence artificielle pour tirer automatiquement des règles par exemple de corrélation entre données ou permettre des simulations d’évolution de celles ci. Le DataWeb : il peut être ajouté une possibilité d’accès par navigateur Web aux données. Ce type d’outil est en fait transversal aux solutions précédentes, la plupart fournissant des accès Web.

12/04/2023 84/142

Page 85: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Chapitre 3

Conception décisionnelle et processus de construction d’une

BDD

12/04/2023 85/142

Page 86: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

S O M M A I R E

SOMMAIRE.............................................................................................................................86

1 LA CONCEPTION..........................................................................................................87

1.1 Généralités..............................................................................................................871.2 Zoom sur la sécurité................................................................................................881.3 Gestion des performances......................................................................................88

2 ARCHITECTURE DÉCISIONNELLE........................................................................90

2.1 Description des bases intermédiaires au DWH.......................................................902.2 Architecture ODS -> DWH......................................................................................912.3 Architecture ODS -> DWH -> DTM.........................................................................922.4 Architecture ODS -> DTM.......................................................................................93

3 LA MODÉLISATION.....................................................................................................95

3.1 Définition des éléments constituants.......................................................................953.2 Les différents types de modélisation décisionnelle.................................................973.3 Gestion de l’intégrité des données........................................................................101

4 OPTIMISATION...........................................................................................................104

4.1 Agrégation de tables de faits.................................................................................1044.2 Partitionnement de tables de faits.........................................................................104

5 EXERCICE SUR LA MODÉLISATION....................................................................106

5.1 Réalisation du Staging..........................................................................................1065.2 Réalisation du DataWarehouse............................................................................108

12/04/2023 86/142

Page 87: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

11 LA CONCEPTIONLA CONCEPTION

1.1 Généralités

Quatre caractéristiques clients ont des effets déterminants sur la démarche de conception d’un DataWarehouse :

Les évolutions technologiques : un système d’information peut se construire par intégration d’un certain nombre de composants, chacun pouvant être choisi par rapport à son contexte d’utilisation. L’entreprise définit son architecture en fonction de ses besoins.

La stratégie de l’entreprise : le DataWarehouse est très proche de la stratégie de l’entreprise. L’objectif du DataWarehouse se définit en terme métier. Il faut donc impliquer les utilisateurs ayant le plus de connaissances dans leur entreprise ou dans leur métier.

L’amélioration continue : un DataWarehouse doit évoluer en fonction des demandes utilisateurs ou des nouveaux objectifs de l’entreprise.

La maturité de l’entreprise : certaines entreprises ont déjà un système décisionnel. D’autres n’ont aucun acquis.

Dans tous les cas, il n’existe pas de cadre figé pour la conception d’un 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 système d’information cohérent et intégré, le système devant être décomposé en applications, chacune s’intégrant dans le DataWarehouse.

Il ne faut pas oublier qu’il est possible de commencer petit et voir grand : limiter l’objectif à un domaine précis (DataMart) ou faire un prototype. Ceci permet d’avoir un retour sur investissement rapide et de prouver le bien fondé du concept.

Lors d’une phase de conception décisionnelle, la phase d’analyse technico-fonctionnelle des besoins clients doit aborder les thèmes suivants :

Définition des axes d’analyses avec leur hiérarchie respective. Souhait d’historisation des données ou des liens hiérarchiques.

Définition des indicateurs avec le type d’agrégation sur chaque axe Description des besoins en termes de reporting (Cube, reports…) Analyse de l’existant technique (architecture et outils) Description des sources de données Sécurité et administration des données Performance et volumétrie Reprise d’un historique de données

Attention : l’existant est une bonne base d’étude dans le choix des restitutions finales, il ne doit pas constituer l’objectif à atteindre. Par ailleurs, la connaissance fonctionnelle est évidemment un plus pour la compréhension du besoin. Néanmoins, il s’agit souvent de faire preuve de bon sens et d’apporter une vision plus analytique et décisionnelle.

Le schéma ci-dessous donne un aperçu du cheminement d’un processus de conception : à partir des éléments précédents, l’objectif sera de définir une architecture technique avec un choix d’outils associés.

12/04/2023 87/142

Page 88: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

1.2 Zoom sur la sécurité

Le DataWarehouse a pour vocation de laisser à l’utilisateur une totale autonomie en ce qui concerne la recherche et l’analyse des données. Cette liberté doit cependant être souvent restreinte, notamment pour des raisons de sécurité.

L’outil doit donc permettre d’adapter l’environnement de travail à l’utilisateur qui s’y connecte selon sa fonction et donc ses droits. Afin de mener à bien cette politique de sécurité, les notions d’utilisateur et de groupe d’utilisateur sont indispensables.

Plus les autorisations pourront être définies à un niveau fin, plus l’environnement de travail pourra être facilement adapté à chacun des profils d’utilisateur. Au delà du catalogue dans sa globalité, l’outil doit donc permettre de définir des droits sur chacun de ses éléments en restreignant le nombre de tables ou de colonnes disponibles ou, par un critère de recherche, le nombre de lignes accessibles.

Au delà des droits concernant l’accès aux données, la possibilité d’affecter des privilèges sur les requêtes et rapports prédéfinis est un facteur essentiel dans la définition d’une stratégie de diffusion.

1.3 Gestion des performances

La possibilité de limiter les accès aux ressources permet à l’administrateur de mieux contrôler les requêtes émises par l’utilisateur. Ce besoin est surtout essentiel pour les outils

12/04/2023 88/142

Page 89: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.qui peuvent offrir à l’utilisateur un espace de liberté et d’autonomie important. En effet contrairement aux outils basés sur un modèle multidimensionnel, les utilisateurs accèdent aux informations non selon un schéma prédéfini mais selon leurs besoins. Ils génèrent ainsi les requêtes qu’ils veulent et n’accèdent pas toujours à un serveur optimisé en conséquence.

Ce contrôle des ressources peut prendre plusieurs formes : limitation du temps d’exécution ; cette fonctionnalité ne sera néanmoins pas géré de

manière optimale par l’outil qui, à moins d’avoir déjà effectué une requête identique, n’a pas moyen de connaître à priori le temps qu’elle prendra. L’idéal est donc d’avoir un outil capable de demander au serveur le temps que va mettre une requête et d’agir ensuite en conséquence (par exemple, refuser la demande selon l’utilisateur). Sinon, l’outil peut permettre l’abandon de requêtes trop longues.

limitation du nombre de lignes récupérées ; l’outil peut soit permettre de ramener les lignes par paquets, soit ne rapatrier qu’un certain nombre d’enregistrements, soit abandonner une requête ramenant un volume trop important de données. L’outil, en cas de dépassement des limites, peut soit prévenir l’utilisateur et lui demander si il souhaite continuer, soit abandonner la demande.

Le contrôle du corps des requêtes permet de limiter considérablement le nombre de demandes coûteuses. Ce contrôle peut s’exercer sur différents paramètres :

le nombre de tables interrogées. les jointures, l’administrateur peut notamment interdire tout produit cartésien. Il

peut de plus être intéressant d’imposer d’utiliser que les colonnes indexées ou d’interdire un nombre trop important de théta-jointures,…

Le contrôle du modèle de données est un bon axe d’amélioration de la performance : index, format des colonnes (en particulier celle clés)…

Ce besoin de contrôler les performances est dû à l’autonomie laissée aux utilisateurs. En effet, l’administrateur n’a que très peu de maîtrise sur ce que vont faire les utilisateurs et le modèle de données ne peut être dès le départ optimisé pour un type d’utilisation particulier.Des fonctions d’audit permettent de remédier à cela en donnant à l’administrateur une vision des demandes les plus et les moins fréquemment utilisées. Il peut alors paramétrer et optimiser son environnement (serveur, client) en conséquence. L’outil doit donc offrir la possibilité de journaliser le texte des requêtes, leur durée d’exécution, le nom de l’utilisateur les ayant envoyées.

12/04/2023 89/142

Page 90: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

22 ARCHITECTURE DÉCISIONNELLEARCHITECTURE DÉCISIONNELLE

2.1 Description des bases intermédiaires au DWH

Comme le montre le schéma ci-dessous, il est fréquent d’avoir recours à la création d’un Staging et/ou d’un Opérational Data Storage (ODS) pour transférer les données sources vers le DWH.

2.1.1 Le stagingCe dépôt de données doit permettre d’accélérer et de synchroniser le processus d’extraction des données opérationnelles. C’est une structure intermédiaire qui stocke les données issues des systèmes hétérogènes de production opérationnelle dans un format proche de ces derniers sur un modèle homogène.

Ce sas assure l'isolation des mondes "opérationnel" et "décisionnel" afin de minimiser les perturbations du système de production opérationnel (performances et exploitation) et permet également de reconstituer toute ou une partie de l’ODS à partir de données élémentaires.

Le staging ne contient pas l’historique de chargement. Son alimentation doit se faire en purge puis insertion des données sources.

2.1.2 L’ODSL’ODS est un environnement qui sert à la prise de décisions tactiques, qui contient des données détaillées, extraites en presque temps réels des systèmes opérationnels pour répondre à des besoins de reporting immédiat et qui peut être mis à jour par les utilisateurs

12/04/2023 90/142

Page 91: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

La réalisation d’un ODS a pour objectif de nettoyer les données provenant du Staging et de les stocker historisées, figées et référencées afin de mettre à disposition de l'utilisateur ces informations pour la construction du DWH. Ce processus aboutit à intégrer ces données dans un modèle normalisé.

La normalisation est un processus qui mène à des structures, flexibles, efficaces et à maintenance aisée, de base de données. Une base de données relationnelle normalisée fournit plusieurs atouts : élimination des redondances sur les données provenant du STA, modélisation proche de la réalité des entités mondiales et de leurs relations, structuration des données pour que le modèle soit flexible.

Ce sas de transit a pour vocation d'historiser les données élémentaires dans un format assez proche du système source avec un minimum de transformations et d'agrégations afin de préserver des possibilités de « reengineering » ; l’ODS permet de reconstruire toute ou une partie du DataWarehouse final, par exemple en cas de modification du référentiel (restructuration du réseau commercial, des filières produits, ...). On rapatrie l’historique en « un coup » à partir de l’ancien système d’alimentation via le STA

Ainsi, il n’est pas rare de voir des reporting opérationnels ce plugger à cette base « propre » et vierge de tout filtrage.

2.2 Architecture ODS -> DWH

2.2.1 Schéma

2.2.2 Critères de choixAvantages

Limitation de la redondance d’information Stockage limité aux besoins.

12/04/2023 91/142

Page 92: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Centralisation totale de l’information.

Inconvénients L’orientation Métier devient particulièrement complexe à définir. La phase d’analyse

dévient prédominante. L’évolutivité complexe car dépend dans des besoins fonctionnels aval et des sources

de données en Amont.

Orientation Solution de restitution multidimensionnelle, où le cube joue le rôle de DM.

2.3 Architecture ODS -> DWH -> DTM

2.3.1 Schéma

2.3.2 Critères de choixAvantages

Indépendance des DM => facilité de mise en œuvre. Evolutivité plus souple, pour répondre aux besoins fonctionnels et de modifications

des sources de données. Stockage limité aux besoins. Facilité dans la modélisation de DWH qui devient une zone tampon de stockage et

d’historisation => possibilité d’anticiper sur les besoins futurs Allie un fin niveau de détails dans DWH aux performances d’une base répondant aux

besoins dans le DM.

Inconvénients Mise en oeuvre plus longue Volume de stockage et flux d’alimentation importants

Orientation

12/04/2023 92/142

Page 93: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Base à forte volumétrie.

2.4 Architecture ODS -> DTM

2.4.1 Schéma

2.4.2 Critères de choixAvantages

Indépendance des DM => facilité de mise en œuvre DM indépendants orienté vers un métier spécifique Mise en œuvre rapide et progressive. Evolutivité plus rapide et plus facile. Stockage limité aux besoins. Coûts Faibles (projets de plus petites tailles successifs).

Inconvénients Adaptabilité moins importantes vis-à-vis des sources de données. La modification

d’une seule source de données peut engendrer la modification de l’ensemble des DataMart.

Liaisons entre les DM moins évidentes.

Orientation

12/04/2023 93/142

Page 94: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Première mise en place de solutions décisionnelles.

12/04/2023 94/142

Page 95: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

33 LA MODÉLISATIONLA MODÉLISATION

3.1 Définition des éléments constituants

La modélisation multidimensionnelle été introduite par Ralph Kimball.  Elle consiste en deux nouveaux concepts tels que les faits et les dimensions. Chaque modèle multidimensionnel est composé d’une table contenant une clé, la table des faits qui permettent de mesurer l’activité et d’un ensemble de tables dimensionnelles qui contiennent les informations contextuelles faisant varier les mesures de l’activité en question. Chaque table de faits possède une clé qui la relie avec la clé primaire de chaque table de dimension.   Cinq axes permettent de qualifier un modèle décisionnel :

Lisibilité du point de vue de l'utilisateur final Performances de chargement Performances d'exécution Administration, c'est à dire faire vivre le DataWarehouse Evolutivité, que tous les autres projets décisionnels s'intègrent facilement

Parmi ces objectifs, beaucoup sont antagonistes : Optimiser les performances à l’exécution implique souvent d’ajouter des redondances,

des agrégations physiques dont le calcul alourdira les phases de chargement, De même, plus il existe de redondances, plus le modèle risque d’être complexe à

administrer.

Selon, le contexte du projet, il s’agira d’associer un poids à chacun de ces objectifs et de définir son architecture de manière à avoir le meilleur équilibre possible.

3.1.1 Les dimensions

Une dimension est une table qui contient les axes d'analyse (les dimensions) selon lesquels on veut étudier des données observables (les faits) qui, soumises à une analyse multidimensionnelle, donnent aux utilisateurs des renseignements nécessaires à la prise de décision.

On appelle donc « dimension » un axe d'analyse. Il peut s'agir des clients ou des produits d'une entreprise, d'une période de temps comme un exercice financier, des activités menées au sein d'une société, etc

Caractéristiques : Une table de dimension contient le détail sur les faits; Une table de dimension contient les informations descriptives des valeurs

numériques de la table de faits; Une table de dimension contient en général beaucoup moins d’enregistrement qu’une

table de faits; Les attributs d’une table de dimension sont souvent utilisés comme « Lignes » et

« Colonne » dans un rapport ou résultat de requête.

Structure de base d’une dimension

12/04/2023 95/142

Page 96: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Clé Primaire (PK) Clé de subtitution

Clé Naturelle (NK) Clé fonctionnelle (peut être composée de plusieurs colonnes)Attribut 1… Attributs de la dimensionAttribut NDate de créationDate de maj Clés spéciales pour la gestion de l'hitorisqueIndicateur activité

3.1.1.1 Les composantsUne clé de substitution (Surrogate key) est une clé non intelligente utilisée afin de substituer la clé fonctionnelle (Business Key) qui provient des systèmes opérationnels. Elle est de type numérique

Avantages : Performance : accélère l’accès aux données du moment où l’on va utiliser un index

numérique. Indépendance du système source : on ne peut garantir que la clé fonctionnelle ne

change pas dans les systèmes sources.

En plus de la clé de substitution et de la clé naturelle, d’autres attributs sont ajoutés à la dimension. Ces attributs sont descriptifs et représentent l’information utile sur la dimension (Le salaire d’un employé, l’adresse d’un client...)

Chaque table de dimension devrait contenir les colonnes suivantes : Date de création : c’est la date à la quelle l’enregistrement à été crée, de préférence

dans le système d’enregistrements (System of records). Date de maj : c’est la date à laquelle l’enregistrement a été mis à jour. Indicateur activité : En général est ‘O’ si l’enregistrement est toujours actif ‘N’ sinon.

3.1.1.2 Les différents types de dimensionLa dimension dégénérée est une clé de dimension dans la table de fait qui est en général sans attribut. Par exemple No de bon de commande, No d’interruption de service, etc. Vu qu’il s’agit d’une seule clé de dimension, nous évitons alors de créer une table de dimension, ce qui fait que cette table de dimension a dégénéré dans la table de fait, c’est pour cette raison que cette clé est appelée « dimension dégénérée »

La dimension de genre « Junk dimension » est une dimension qui contient toutes sorte de flags, statuts, codes qui ne font partie d’aucune dimension régulière. Dans le domaine de la distribution de l’énergie, une interruption de service peut être de type « Basse tension » ou « Moyenne tension ». Ce genre de code est donc stocké dans une table spéciale appelée « Junk dimension ».

Les autres dimensions sont plus classiques et sont différenciées uniquement par la fréquence de changement de leurs attributs.Nous gérons la situation en choisissant entre 3 solutions :

Écrasement de l’ancienne valeur (pas d’historique) Versionnement (historique complet) Valeur d’origine / valeur courante (valeur initiale historisée)

12/04/2023 96/142

Page 97: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.3.1.2 Les faits

Une table de fait est une table qui contient les données observables (les faits) que l'on possède sur un sujet et que l'on veut étudier, selon divers axes d'analyse (les dimensions).Les « faits », dans un entrepôt de données, sont normalement numériques, puisque d'ordre quantitatif. Il peut s'agir du montant en argent des ventes, du nombre d'unités vendues d'un produit, etc.

  

Caractéristiques : Une table de faits contient les valeurs numériques de ce qu’on désire mesurer; Une table de fait contient les clés associées aux dimensions. Il s’agit des clés

étrangères dans la table de faits; Une table de fait contient plus d’enregistrements qu’une table de dimension; Les informations dans une table de fait sont caractérisées par :

o Elles sont numériques et sont utilisées pour faire des SUM, AVG...o Les données doivent être additives ou semi-additiveso Toutes les colonnes représentant les faits (mesure1, mesure2.. dans la figure

1)  dans la table de fait doivent référer et avoir un lien direct aux clés de dimensions (Date Cal, ID Dim1... dans la figure 1) dans la même table;

Structure de base d’une table de faits

Date Cal (FK)Id Dim1 (FK)…Id DimN (FK)Code Dim Deg 1… Dimensions dégénéréesCode Dim Deg NMesure1… Faits ou mesuresMesureN

Clés étrangères vers les dimensions

3.2 Les différents types de modélisation décisionnelle

3.2.1 Modélisation en étoileLa modélisation dimensionnelle structure les données d'une façon très différente de la structure en 3FN (3ème forme normale) fréquemment utilisée par les modélisateurs des systèmes OLTP. La modélisation dimensionnelle produit ce qu'on appelle le modèle dimensionnel ou communément le schéma en étoile. C'est la structure de données la plus utilisée et la plus appropriée aux requêtes et analyses des utilisateurs d'entrepôts de données. Elle est simple à créer, stable et intuitivement compréhensible par les utilisateurs finaux. 

12/04/2023 97/142

Page 98: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Elle consiste en une grande table de faits (fact table) et un cercle d’autres tables qui contient les éléments descriptifs du fait, appelées « dimensions ». Quand illustré, le modèle ressemble à une étoile, c’est d’ailleurs l’origine du terme « En étoile ».

La figure suivante illustre le schéma en étoile (star schema) 

Avantages : Lisibilité : Ce modèle est très parlant pour l’utilisateur car il présente de manière claire

sa finalité. Il est orienté sujet et définit clairement les indicateurs d’analyse. Performances : Les chemins d’accès à la base sont prévisibles. Même si la table de

faits comporte des millions de lignes, les tables de dimensions seront plus réduites. Par une indexation, il est possible d’avoir des temps de réponse proportionnels au résultat attendu.

De plus, les tables de faits ne possèdent que des informations numériques et des identifiants et si elles sont importantes en nombre de lignes, la taille de chacune des lignes est réduite.

Inconvénients : Manque de complétude Évolution du modèle très problématique due à une orientation du modèle rapidement

très métier. Il est donc plus adapté aux datamarts.

3.2.2 Modélisation en floconLe schéma en flocons de neige est une variante du schéma en étoile. Dans la théorie la différence réside dans la simple normalisation des tables de dimensions. Il est donc tout simplement question de mettre les attributs de chaque niveau hiérarchique dans une table de dimension à part.

12/04/2023 98/142

Page 99: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.La figure suivante illustre le schéma en flocons de neige (snowflake schema) 

Explication du schéma :

Table de la dimension produit. Cette table du schéma en étoile est composée de plusieurs niveaux

Tous les attributs des niveaux hiérarchiques se retrouvent dans une table isolée

Avantages : Normalisation des dimensions, réduisant la taille de chacune des tables. Formalisation de la notion de hiérarchie au sein d’une dimension. Gestion des différents niveaux d’agrégation

Inconvénients :

12/04/2023 99/142

Page 100: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Plus complexe à gérer que les modèles en étoile Jointures à reconstruire

3.2.3 Schéma en étoile versus schéma en flocons

3.2.3.1 La technologieCertaines technologies telle que MicroStrategy requièrent un schéma en flocons de neige alors que d’autres comme Cognos requièrent le schéma en étoile.

3.2.3.2 La nature des requêtesCertaines requêtes se prêtent mieux à la structure dimension-fait. Pas forcément toutes les requêtes mais quand c’est le cas un schéma en étoile est le meilleur choix. 

3.2.3.3 Besoins d’affaires spécifiquesIls existent des besoins d’affaires qui ne peuvent tout simplement pas être structurés en schéma en étoile. La relation entre l’entité « client » et  l’entité « compte » dans le domaine bancaire, celle entre l’entité « client » et l’entité « police d’assurance » dans le domaine des assurances ne peuvent être représentées par un schéma en étoile à cause de la relation n à m qui lie ces entités. 

3.2.3.4 Besoin de flexibilitéLe schéma en flocons de neige devrait être utilisé lorsque l’on a besoin d’une plus grande flexibilité dans la corrélation à travers les niveaux et les composantes d’une dimension. L'avantage principal d'un flocon de neige est la plus grande flexibilité dans les données. 

3.2.3.5 Ratio Attributs Maître : Nombre de rangées Détail Lorsque le ratio entre deux niveaux de hiérarchie d’une dimension est élevé, il est préférable d’utiliser un modèle en flocon ce qui permettra de diminuer la volumétrie stocker (au delà d’un rapport 1:5 par exemple) 

3.2.3.6 Gestion complexe de dimension Quand il s’agit de cas complexe de gestion de l’évolution de dimension,  un schéma en flocons de neige est préférable. Les cas complexes peuvent être la gestion de l’historisation des liens, la gestion de l’historisation des attributs… 

3.2.3.7 Difficulté de navigation dans les hiérarchies Le constat que le schéma en étoile est plus compréhensible que le schéma en flocons de neige est complètement subjectif. En particulier quand la dimension est composée de plusieurs colonnes. 

3.2.4 3ème forme de modélisation « décisionnelle »La modélisation est similaire à une modélisation en flocon. Les tables de dimension présentent une redondance des clés des niveaux supérieurs de la hiérarchie. Les tables de faits ne sont pas modifiées.

12/04/2023 100/142

Page 101: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Avantages :

Relation Directe entre les éléments d’une dimension et ses éléments parents dans une même hiérarchie

Filtre et recherche plus rapide et plus efficace.

Inconvénients : Augmentation de la taille des tables de dimension.

Cette modélisation est conseillée pour les outils de type ROLAP.

3.3 Gestion de l’intégrité des données

Les informations des tables de dimensions sont principalement alimentées à partir des tables de référentiels (issues des différents systèmes applicatifs). Malheureusement, il est très courant que ces systèmes applicatifs présentent des incohérences (non intégrité des données).

Ces problèmes se répercutent sur le système décisionnel engendrant des erreurs dans les restitutions. Un contrôle d’intégrité de données est nécessaire au niveau des dimensions pour corriger ou au moins présenter ces incohérences.

L’intégrité des données est obtenue habituellement en appliquant les méthodes suivantes : Option 1 : Les lignes non cohérentes sont exclues de l’alimentation. Option 2 : Mise en place d’une « Gestion des Orphelins » automatisée

Le choix est dépendant du type d’analyse et doit être validé avec le métier.

3.3.1 Gestion des références manquantesLes références manquantes sont les enregistrements qui n’ont pas de parents connus dans les tables de dimensions.

☺ Exemple : Une ligne de faits qui a comme référence Produit un produit qui n’est pas présent

dans la table de dimension Produit. Une ligne de dimension Produit qui a comme référence Marque une marque qui n’est

pas présent dans la table de dimension Marque.

Il existe 2 méthodes de gestion Les références manquantes sont remplacées de manière unique par un code

arbitrairement créé. Les références manquantes sont insérées dans les tables des dimensions.

3.3.1.1 Méthode 1On remplace les références manquantes par un code uniqueCette gestion implique que l’on crée dans les tables parentes ce code unique avec le libellé correspondant (sur tous les niveaux de la hiérarchie)

12/04/2023 101/142

Page 102: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

N° Commande Ligne Date Commande N° ProduitCmd 000123 1 01/02/2005 Produit AAAAACmd 000123 2 01/02/2205 Produit AABAA

… … … …

N° Produit Libellé ProduitAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAAC

…. …

N° Produit Libellé Produit?????? Produit Non RéférencéAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAAC

…. …

N° Commande Ligne Date Commande N° ProduitCmd 000123 1 01/02/2005 AAAAACmd 000123 2 01/02/2205 ??????

… … … …

N° Commande Ligne Date Commande N° ProduitCmd 000123 1 01/02/2005 Produit AAAAACmd 000123 2 01/02/2205 Produit AABAA

… … … …

N° Produit Libellé ProduitAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAAC

…. …

N° Produit Libellé Produit?????? Produit Non RéférencéAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAAC

…. …

N° Commande Ligne Date Commande N° ProduitCmd 000123 1 01/02/2005 AAAAACmd 000123 2 01/02/2205 ??????

… … … …

Avantages : Facilité de définition des orphelins des Hiérarchies

Inconvénients : Pertes d’informations si cette dernière est incohérente

3.3.1.2 Méthode 2Les références manquantes sont insérées dans les tables des dimensions. Les autres informations de la table sont alimentées par des valeurs fictives.

En cas de hiérarchie à plusieurs niveaux, cette gestion implique que l’on crée dans les tables de niveaux supérieures un code unique permettant un rattachement du code créé aux niveaux supérieurs.

Avantages : Conservation de la totalité de l’information. Le choix n’est qu’arbitraire au niveau de la

présentation

Inconvénients : Peut-être complexe à gérer au niveau dans une Hiérarchie présentant plusieurs

niveaux. Facteur de complexité également dans le cas d’une conservation de l’historique des

dimensions.

12/04/2023 102/142

N° Commande Ligne Date Commande N° ProduitCmd 000123 1 01/02/2005 Produit AAAAACmd 000123 2 01/02/2205 Produit AABAA

… … … …

N° Produit Libellé ProduitAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAAC

…. …

N° Produit Libellé ProduitAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAACAABAA Libellé réf AABAA

…. …

N° Commande Ligne Date Commande N° ProduitCmd 000123 1 01/02/2005 Produit AAAAACmd 000123 2 01/02/2205 Produit AABAA

… … … …

N° Produit Libellé ProduitAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAAC

…. …

N° Produit Libellé ProduitAAAAA produit AAAAAAAAAB produit AAAABAAAAC Produit AAAACAABAA Libellé réf AABAA

…. …

Page 103: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.3.3.2 Gestion des valeurs nulles2 types de valeurs nulles sont à gérer :

Des valeurs nulles dans des colonnes « clé étrangère » Des valeurs nulles dans des colonnes « Not Null »

Pour le premier cas, il faut utiliser la méthode 1 vue ci-dessus.

Pour les colonnes « Not null », il faut prévoir une valeur par défaut à utiliser partout suivant le type de donnée.

☺ Exemple : Numérique : -1 Code : NA Libellé : Not Affected Date : 99/99/9999

Le but est de : Faciliter une analyse et simplifier la compréhension des données en assurant la

complétude de l’information. Permettre des jointures directes entre les différentes tables et améliorer les

performances.

Dans le cas de la mise en place d’un système multi-dimensionnelle, la gestion des valeurs nulles n’est pas nécessaire. En effet, la plupart de ces outils intègre cette fonctionnalité.

12/04/2023 103/142

Page 104: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

44 OPTIMISATIONOPTIMISATION

4.1 Agrégation de tables de faits

Les tables d’agrégation sont des tables supplémentaires ajoutées au modèle de données pour répondre à des problématiques de performance. Elles sont généralement utilisées pour les bases présentant une forte volumétrie.

Elles sont définies suivant des niveaux d’agrégation supérieurs de dimensions et en fonction des besoins finaux d’utilisateurs.

Pour être efficaces, elles doivent apporter une diminution notable des lignes traitées par une requête SQL. Il est donc important de calculer le Facteur d’agrégation.

Le facteur d’agrégation représente le ratio entre le nombre de lignes de la table initiale et le nombre de ligne de la table agrégée.< 5 è l’agrégation n’a pas d’intérêt.10 è l’agrégation apporte un réel plus.

☺ Exemple :On crée une table des ventes mensuelles représentant la somme des ventes journalières par magasin et cela sur chacun des mois.

Cette technique d'optimisation trouve ses limites lorsque les bases des données atteignent un volume important.

4.2 Partitionnement de tables de faits

Un partitionnement physique des tables en plus petites unités selon le critère temps apporte des performances stables dans le temps, des facilités pour les reprises, les indexations, les restructurations et l’archivage. Notre table des ventes sera éclatée en 12 tables, soit une par mois.

12/04/2023 104/142

Page 105: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

On peut aussi imaginer un éclatement des tables de fait suivant toute autre dimension.

☺ Exemple :

Cette technique n'est pas simple à administrer.

12/04/2023 105/142

Page 106: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

55 EXERCICE SUR LA MODÉLISATIONEXERCICE SUR LA MODÉLISATION

Dans cette partie, nous allons pas à pas réaliser un DataWareHouse à partir du modèle de données initial présenté ci-dessous :

JOUER

Jouer CodeFilm CodeTitreGenreDateActeur CodeActeur NomActeur PrénomRôle

intintvarchar(128)varchar(64)datetimeintvarchar(64)varchar(64)varchar(128)

<pk>

CINEMA

Cinema CodeCinema NomVilleCinema TypeCinema Groupe

intvarchar(64)varchar(128)varchar(2)varchar(64)

<pk> PROJECTION

JourFilm CodeCinema Code

datetimeintint

<pk><pk><pk>

GEOGRAPHIE

VillePostal CodeTransport CodeTransport TypeFrequence Transport ParisRegion CodeRegion Description

varchar(128)integerchar(1)varchar(64)integervarchar(5)varchar(164)

Ce schéma représente la base opérationnelle.

Maintenant que nous avons identifié la base opérationnelle, nous allons lister les axes d’analyses et les différents indicateurs de manière à réaliser un staging.

Axes d’analyses Temps (année, mois, jour) Cinéma (Cinema, Groupe) Géographie (Cinema, Ville, Région) Film/Acteur

Indicateurs Nombre de spectateurs Recette Durée du Film

5.1 Réalisation du Staging

Réaliser le staging à partir du modèle opérationnel en faisant attention aux points suivants Clés primaires de préférence avec un type de données numérique Clés spéciales pour gestion historique

12/04/2023 106/142

Page 107: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Rappel : le staging a une structure identique aux bases opérationnelles (ajout/suppression d’informations) et ne contient pas de clés étrangères.

Base STG

JOUER

Jouer CodeFilm CodeTitreGenreDateActeur CodeActeur NomActeur PrénomRôleDate CreationDate MAJIndicateur Activite

intintvarchar(128)varchar(64)datetimeintvarchar(64)varchar(64)varchar(128)datetimedatetimeint

<pk>

CINEMA

Cinema CodeCinema NomVilleCinema TypeCinema GroupeDate CreationDate MAJIndicateur Activite

intvarchar(64)varchar(128)varchar(2)varchar(64)datetimedatetimeint

<pk>

PROJECTION

JourFilm CodeCinema CodeNombre SpectateursRecetteDuree FilmDate CreationDate MAJ

datetimeintintintintintdatetimedatetime

<pk><pk><pk>

GEOGRAPHIE

Postal CodeVilleRegion CodeRegion DescriptionDate CreationDate MAJIndicateur Activite

integervarchar(128)varchar(5)varchar(164)datetimedatetimeint

<pk>

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,

12/04/2023 107/142

Page 108: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. constraint PK_GEOGRAPHIE primary key (POSTAL_CODE))go

/*==============================================================*//* Table : JOUER *//*==============================================================*/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, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_JOUER primary key (JOUER_CODE))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

5.2 Réalisation du DataWarehouse

Remarque : dans ce DWH, nous ne prenons pas en compte les tables de sécurité ni les tables de rejets

5.2.1 Schéma en étoileRemarque : la table temps est rarement modélisée… nous l’ajoutons pour la compréhension globale.

Base DWH Etoile

12/04/2023 108/142

Page 109: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

FK_FILM_ACTEUR_FI_ACTEUR

FK_JOUER_FILM_JOUE_FILM

FK_JOUER_ACTEUR_JO_ACTEUR

FK_PROJECTI_FILM_PROJ_FILM

FK_PROJECTI_CINEMA_PR_CINEMA

FK_PROJECTI_TEMPS_PRO_TEMPS

CINEMA

Cinema CodeCinema NomCinema GroupeVilleRegion DescriptionDate CreationDate MAJIndicateur Activite

intvarchar(64)varchar(64)varchar(128)varchar(128)datetimedatetimeint

<pk>

PROJECTION

JourFilm CodeCinema CodeNombre SpectateursRecetteDuree FilmDate CreationDate MAJ

datetimeintintintintintdatetimedatetime

<pk,fk3><pk,fk1><pk,fk2>

TEMPS

JourMoisAnnee

datetimeintegerinteger

<pk>

ACTEUR

Acteur CodeActeur NomActeur PrénomDate CreationDate MAJIndicateur Activite

intvarchar(64)varchar(64)datetimedatetimeint

<pk>

FILM

Film CodeActeur CodeTitreGenreDateIndicateur ActiviteDate CreationDate MAJ

intintvarchar(128)varchar(64)datetimeintdatetimedatetime

<pk><fk>

JOUER

Acteur CodeFilm CodeRoleDate CreationDate Modification

intintvarchar(128)datetimedatetime

<pk,fk2><pk,fk1>

Script DWH Etoile

/*==============================================================*//* Table : ACTEUR *//*==============================================================*/create table ACTEUR ( ACTEUR_CODE int not null, ACTEUR_NOM varchar(64) null, ACTEUR_PRENOM varchar(64) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_ACTEUR primary key (ACTEUR_CODE))go

/*==============================================================*//* Table : CINEMA *//*==============================================================*/create table CINEMA ( CINEMA_CODE int not null, CINEMA_NOM varchar(64) null, CINEMA_GROUPE varchar(64) null, VILLE varchar(128) null, REGION_DESCRIPTION varchar(128) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_CINEMA primary key (CINEMA_CODE))go

12/04/2023 109/142

Page 110: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I./*==============================================================*//* Table : FILM *//*==============================================================*/create table FILM ( FILM_CODE int not null, ACTEUR_CODE int not null, TITRE varchar(128) null, GENRE varchar(64) null, DATE datetime null, INDICATEUR_ACTIVITE int not null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, constraint PK_FILM primary key (FILM_CODE))go

/*==============================================================*//* Table : JOUER *//*==============================================================*/create table JOUER ( ACTEUR_CODE int not null, FILM_CODE int not null, ROLE varchar(128) null, DATE_CREATION datetime null, DATE_MODIFICATION datetime null, constraint PK_JOUER primary key (ACTEUR_CODE, FILM_CODE))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 : TEMPS *//*==============================================================*/create table TEMPS ( JOUR datetime not null, MOIS integer not null, ANNEE integer not null, constraint PK_TEMPS primary key (JOUR))go

alter table FILM

12/04/2023 110/142

Page 111: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. add constraint FK_FILM_ACTEUR_FI_ACTEUR foreign key (ACTEUR_CODE) references ACTEUR (ACTEUR_CODE)go

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

5.2.2 Schéma en floconBase DWH Flocon

12/04/2023 111/142

Page 112: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

FK_FILM_ACTEUR_FI_ACTEUR

FK_JOUER_FILM_JOUE_FILM

FK_JOUER_ACTEUR_JO_ACTEUR

FK_PROJECTI_FILM_PROJ_FILMFK_PROJECTI_CINEMA_PR_CINEMA

FK_PROJECTI_TEMPS_PRO_TEMPS

FK_VILLE_REGION_VI_REGION

FK_CINEMA_GROUPE_CI_CINEMA_G

FK_CINEMA_VILLE_CIN_VILLE

CINEMA

Cinema CodePostal CodeCinema TypeCinema NomDate CreationDate MAJIndicateur Activite

intintintvarchar(64)datetimedatetimeint

<pk><fk2><fk1>

PROJECTION

JourFilm CodeCinema CodeNombre SpectateursRecetteDuree FilmDate CreationDate MAJ

datetimeintintintintintdatetimedatetime

<pk,fk3><pk,fk1><pk,fk2>

TEMPS

JourMoisAnnee

datetimeintegerinteger

<pk>

ACTEUR

Acteur CodeActeur NomActeur PrénomDate CreationDate MAJIndicateur Activite

intvarchar(64)varchar(64)datetimedatetimeint

<pk>

FILM

Film CodeActeur CodeTitreGenreDateIndicateur ActiviteDate CreationDate MAJ

intintvarchar(128)varchar(64)datetimeintdatetimedatetime

<pk><fk>

JOUER

Acteur CodeFilm CodeRoleDate CreationDate Modification

intintvarchar(128)datetimedatetime

<pk,fk2><pk,fk1>

VILLE

Postal CodeRegion CodeVilleDate CreationDate MAJIndicateur Activite

intintvarchar(64)datetimedatetimeint

<pk><fk>

REGION

Region CodeRegion DescriptionDate CreationDate MAJIndicateur Activite

intvarchar(64)datetimedatetimeint

<pk>

CINEMA GROUPE

Cinema TypeCinema GroupeDate CreationDate MAJIndicateur Activite

intvarchar(64)datetimedatetimeint

<pk>

Script DWH Flocon

/*==============================================================*//* Table : ACTEUR *//*==============================================================*/create table ACTEUR ( ACTEUR_CODE int not null, ACTEUR_NOM varchar(64) null, ACTEUR_PRENOM varchar(64) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_ACTEUR primary key (ACTEUR_CODE))go

/*==============================================================*//* Table : CINEMA *//*==============================================================*/create table CINEMA ( CINEMA_CODE int not null,

12/04/2023 112/142

Page 113: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. POSTAL_CODE int not null, CINEMA_TYPE int not null, CINEMA_NOM 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 : CINEMA_GROUPE *//*==============================================================*/create table CINEMA_GROUPE ( CINEMA_TYPE int not null, CINEMA_GROUPE varchar(64) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_CINEMA_GROUPE primary key (CINEMA_TYPE))go

/*==============================================================*//* Table : FILM *//*==============================================================*/create table FILM ( FILM_CODE int not null, ACTEUR_CODE int not null, TITRE varchar(128) null, GENRE varchar(64) null, DATE datetime null, INDICATEUR_ACTIVITE int not null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, constraint PK_FILM primary key (FILM_CODE))go

/*==============================================================*//* Table : JOUER *//*==============================================================*/create table JOUER ( ACTEUR_CODE int not null, FILM_CODE int not null, ROLE varchar(128) null, DATE_CREATION datetime null, DATE_MODIFICATION datetime null, constraint PK_JOUER primary key (ACTEUR_CODE, FILM_CODE))go

/*==============================================================*//* Table : JOUER_BIS *//*==============================================================*/create table JOUER_BIS ( JOUER_CODE int not null,

12/04/2023 113/142

Page 114: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. 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, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_JOUER_BIS primary key (JOUER_CODE))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 */

12/04/2023 114/142

Page 115: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I./*==============================================================*/create table VILLE ( POSTAL_CODE int not null, REGION_CODE int not null, VILLE varchar(64) null, DATE_CREATION datetime not null, DATE_MAJ datetime not null, INDICATEUR_ACTIVITE int not null, constraint PK_VILLE primary key (POSTAL_CODE))go

alter table CINEMA add constraint FK_CINEMA_GROUPE_CI_CINEMA_G foreign key (CINEMA_TYPE) references CINEMA_GROUPE (CINEMA_TYPE)go

alter table CINEMA add constraint FK_CINEMA_VILLE_CIN_VILLE foreign key (POSTAL_CODE) references VILLE (POSTAL_CODE)go

alter table FILM add constraint FK_FILM_ACTEUR_FI_ACTEUR foreign key (ACTEUR_CODE) references ACTEUR (ACTEUR_CODE)go

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

12/04/2023 115/142

Page 116: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.alter table VILLE add constraint FK_VILLE_REGION_VI_REGION foreign key (REGION_CODE) references REGION (REGION_CODE)go

5.2.3 Schéma en « 3ème forme de modélisation décisionnelle »

FK_FILM_ACTEUR_FI_ACTEUR

FK_JOUER_FILM_JOUE_FILM

FK_JOUER_ACTEUR_JO_ACTEUR

FK_PROJECTI_FILM_PROJ_FILM

FK_PROJECTI_CINEMA_PR_CINEMA

FK_PROJECTI_TEMPS_PRO_TEMPS

FK_VILLE_REGION_VI_REGION

FK_CINEMA_GROUPE_CI_CINEMA_G

FK_CINEMA_VILLE_CIN_VILLE

CINEMA

Cinema CodePostal CodeRegion CodeCinema TypeCinema NomDate CreationDate MAJIndicateur Activite

intintintintvarchar(64)datetimedatetimeint

<pk><fk2>

<fk1>

PROJECTION

JourFilm CodeCinema CodeNombre SpectateursRecetteDuree FilmDate CreationDate MAJ

datetimeintintintintintdatetimedatetime

<pk,fk3><pk,fk1><pk,fk2>

TEMPS

JourMoisAnnee

datetimeintegerinteger

<pk>

ACTEUR

Acteur CodeActeur NomActeur PrénomDate CreationDate MAJIndicateur Activite

intvarchar(64)varchar(64)datetimedatetimeint

<pk>

FILM

Film CodeActeur CodeTitreGenreDateIndicateur ActiviteDate CreationDate MAJ

intintvarchar(128)varchar(64)datetimeintdatetimedatetime

<pk><fk>

JOUER

Acteur CodeFilm CodeRoleDate CreationDate Modification

intintvarchar(128)datetimedatetime

<pk,fk2><pk,fk1>

VILLE

Postal CodeRegion CodeVilleDate CreationDate MAJIndicateur Activite

intintvarchar(64)datetimedatetimeint

<pk><fk>

REGION

Region CodeRegion DescriptionDate CreationDate MAJIndicateur Activite

intvarchar(64)datetimedatetimeint

<pk>

CINEMA GROUPE

Cinema TypeCinema GroupeDate CreationDate MAJIndicateur Activite

intvarchar(64)datetimedatetimeint

<pk>

Seule la table Cinema a été modifiée avec l’ajout d’une référence directe au niveau Région.

12/04/2023 116/142

Page 117: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Chapitre 4

Les outils décisionnels

12/04/2023 117/142

Page 118: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

S O M M A I R E

SOMMAIRE...........................................................................................................................118

1 ALIMENTATION D’UN DATAWAREHOUSE : LES ETL...................................119

1.1 Définition...............................................................................................................1191.2 Description des composantes d'un système ETL.................................................1201.3 Suites ETL versus ETL « maison ».......................................................................1221.4 Exemple : IBM Datastage.....................................................................................123

2 STOCKAGE DES DONNÉES.....................................................................................127

2.1 SGBD Relationnel.................................................................................................1272.2 Les bases OLAP...................................................................................................1272.3 Exemple : Powerplay Transformer........................................................................133

3 REPORTING.................................................................................................................135

3.1 Degrés d’analyse..................................................................................................1353.2 Cibles....................................................................................................................1363.3 Métiers..................................................................................................................1363.4 Type utilisateurs....................................................................................................1363.5 Exemple : Cognos ReportNet...............................................................................137

12/04/2023 118/142

Page 119: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

11 ALIMENTATION D’UN DATAWAREHOUSE : LES ALIMENTATION D’UN DATAWAREHOUSE : LES ETLETL

1.1 Définition

« Extract-Transform-Load » est connu sous le terme ETL. Il s'agit d'une technologie informatique intergicielle permettant d'effectuer des synchronisations massives d'information d'une banque de données vers une autre.

L’alimentation des bases décisionnelles nécessite d’extraire la matière vive des bases opérationnelles. Cette opération consiste à migrer et à préparer les données issues des systèmes opérationnels. Pour cela, il faut préalablement identifier les données intéressantes de celles qui ne le sont pas.

Le passage des données sources vers les systèmes cibles, situés très probablement sur des machines différentes, nécessite le transport des données mais aussi la phase de conversion de celles-ci.

Enfin, il ne faut pas oublier que cette migration des données est un processus à part entière et donc périodique. Dans certains cas, il peut même être effectué au fil de l’eau. Cette phase doit donc être optimisée et automatique.

La problématique de l’alimentation1 d’un Data Warehouse peut être découpée en cinq phases :

Découvrir : Identification et épuration des données, Extraire : Extraction des données des différentes bases de production, Transformer : Préparation des données à la structure du système décisionnel.

1 UNILOG propose des méthodes formalisées pour répondre à ces problématiques, notamment avec la démarche CLT « Les 5A » ou « la mise en place de capteurs pour les ERP ».

12/04/2023 119/142

Découvrir Extraire Transformer Transporter Charger

Métadonnées

Fédérer

Page 120: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Transporter : Transport des données des machines de production à l’environnement

décisionnel cible. Charger : Chargement des données dans la base décisionnelle cible.

Actuellement il existe trois catégories d’outils ETL : Engine-based : les transformations sont exécutées sur un serveur ETL, disposant en

général d’un référentiel. Ce genre de d’outil dispose d’un moteur de transformation (Ex : Informatica, Datastage)

Database-embedded (Procédures Stockées) : les transformations sont intégrées dans la BD (Ex : PL/SQL sous oracle)

Code-generators (ELT) : les transformations sont conçues et un code est généré. Ce code est déployabe indépendamment de la base de données (Ex : Sunopsis, Genio).

1.2 Description des composantes d'un système ETL

En général les entrepôts de données sont alimentés à partir des systèmes opérationnels dans le but de transformer les données transactionnelles (Ou opérationnelles) d'un processus d'affaire en information qui sera utile à la prise de décision.

1.2.1 Extraction des données sourcesIl faut commencer par identifier les données, c’est à dire choisir les données intéressantes, les localiser dans le SI, puis les épurer. Epurer consiste à résoudre les problèmes de conflit et de redondance et à élire les sources de données de meilleure qualité.

Selon la nature de ces systèmes sources, l'extraction peut s'avérer critique et très exigeante dans le sens ou il faut la réaliser le plus rapidement et ce en exploitant au minimum les ressources du système source. Les données sont : hétérogènes (différents SGBD et différentes méthodes d’accès), diffuses (différents environnements matériels et différents réseaux interconnectés ou non), complexes (différents modèles logiques et physiques principalement orientés vers les traitements transactionnels). La synthèse de ces données sources a pour but de les enrichir.

De plus, une fois le système décisionnel alimenté pour la première fois, les flux de données vont venir rafraîchir la base décisionnelle périodiquement. L’idéal dans ce cas est de ne recharger le DataWarehouse qu’avec les données modifiées ou ajoutées depuis la dernière extraction. L’idée consiste à réaliser une extraction différentielle en utilisant un mécanisme de marquage des données, souvent en utilisant la date de dernière modification associée à la donnée. Plus les volumes de données manipulés sont imposants, plus cette fonctionnalité devient incontournable

En général les extractions sont lancées la nuit durant ce l'on appelle un Extract Window sur lequel on s'est mis d'accord. La complexité de l'extraction n'est pas dans le processus de lecture, mais surtout dans le respect de l'extract window. C'est pour cette raison que l'on effectue rarement des transformations lors de l'extraction d'une part. D'autre part, on essaye au maximum d'extraire seulement les données utiles (Mise à jour ou ajoutée après la dernière extraction). Pour ce faire, il faut prévoir soit un flag ou encore des dates dans chacune des tables extraites : date de création de l'enregistrement et la date de mise à jour (En général la plupart des systèmes sources disposent de ces deux dates). Par ailleurs pour ne pas perdre des données suites à des problèmes d'extraction, il est important de s'assurer que le système source ne purge pas les données avant que l'entrepôt ne les aies extraits.

12/04/2023 120/142

Page 121: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.1.2.2 TransformationC’est une suite d’opérations qui a pour but de rendre les données cibles homogènes pour ainsi être traitées de façon cohérente : données aberrantes, données sans valeurs ou avec des valeurs manquantes, données sémantiquement fausses…Il faut avoir une bonne connaissance des données à entreposer et des règles qui les régissent.

Il est souvent nécessaire également de pouvoir synchroniser des données provenant de fichiers différents (plusieurs fichiers clients par exemple) et dont les clés ne sont pas forcément identiques. Il faut alors, soit recréer les clés à partir d’un des formats existants, soit calculer une nouvelle clé pour chaque occurrence du fichier cible

Voici les grandes fonctionnalités de transformation : Nettoyage des données Standardisation des données Conformance des données Gestion des tables de fait Gestion des dimensions Gestion de l’intégrité Affectations des clés de substitution (surrogate key) Gestion de l'évolution lente (Slowly changing dimension) Gestion des lookups

Il faut gérer les anomalies en les traitant et en gardant une trace.

1.2.3 ChargementLe chargement est la dernière phase de l’alimentation du DataWarehouse. C’est une phase délicate notamment lorsque les volumes sont importants. Pour obtenir de bonnes performances en chargement, il est impératif de maîtriser les structures du SGBD (tables et index) associées aux données chargées afin d’optimiser au mieux ces processus. Les techniques de parallélisation optimisent les chargements lourds. Pour les mettre en œuvre, des utilitaires particuliers existent chez la majorité des éditeurs de bases de données.

Il faut définir en particulier le type d’action de chargement : purge et insert, insert et mise à jour, mise à jour uniquement….

Il faut gérer les anomalies de chargement en les traitant et en gardant une trace

1.2.4 MonitoringEn complément, on trouve des outils d'audit et d'analyse pour assurer le suivi du processus afin notamment de contrôler les rejets.

Il faut prévoir dans la modélisation 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 fréquent de mettre en place un utilitaire (en WEB ou autres) pour suivre le monitoring et visualiser les rejets.

12/04/2023 121/142

Page 122: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

1.3 Suites ETL versus ETL « maison »

1.3.1 L’alimentation par des développements spécifiquesLes développements spécifiques s’appuient sur des produits livrés en standard avec la base de données utilisée et sur l’écriture de programmes permettant l’extraction des données des bases de production.

Avantages Le coût très faible de cette solution, il n’y a pas de logiciels d’extraction souvent très

coûteux à acquérir, La souplesse de cette solution, aucunes contraintes liées à l’utilisation d’un logiciel

spécifique.

Inconvénients Il y a souvent beaucoup plus à redévelopper en spécifique que ce qui avait été prévu

initialement :o Extraction et transformations complexes,o Cycle de mises à jour et développement des outils nécessaires à leur

automatisation (y compris les enchaînements entre les différents processus d’extraction, de transfert et de mise à jour pouvant se situer sur des machines distinctes),

o Visualisation des journaux d’exécution des différents processus permettant la mise à jour du Data Warehouse.

En spécifique, il sera plus difficile de définir un dictionnaire de meta-données permettant entre autre de bien connaître le cycle de vie de chaque données. Les règles de traductions seront alors implémentées « en dur » dans le code.

De nouveaux développements sont nécessaires pour chaque nouvelle application à intégrer ou chaque modification d’une application source existante.

1.3.2 L’alimentation par des outils spécifiquesDe nombreux outils permettant la maîtrise des phases d’extraction, de transformation, et de chargement des données ont vu le jour sur le marché.

Avantages Le stockage des métadonnées au sein d’un référentiel unique, facilitant grandement

l’évolution du système, L’extraction des données de la majorité des bases du marché sans programmation

via un accès souvent natif, Le traitement et la transformation des données (fusion, nettoyage, rejets, …) par des

fonctions et des transformations standards intégrées aux outils, L’ordonnancement des traitements (extraction, transfert, transformation, chargement,

…).

Inconvénients Le coût de ces solutions est assez élevé (>15k€, voire 50k€ et plus). Cependant, ce

coût est à relativiser par rapport au coût global du projet. Ainsi, si un projet commence par un simple DataMart, il a souvent tendance à évoluer vers un Data Warehouse structurant et alimentant plusieurs DataMarts.

Notre expérience dans le domaine nous a démontré que même pour les projets de petite envergure, il est conseillé de développer un système ETL en utilisant une suite ETL.

12/04/2023 122/142

Page 123: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

1.4 Exemple : IBM Datastage

1.4.1 PrésentationType de projet informatique utilisant Datastage.

Interfaçage de progiciels : les bases de données sources et cibles sont préexistantes.

Décisionnel : automatisation du processus d’alimentation d’un datawarehouse (schéma relationnel). L’étape suivante est la restitution des données décisionnelles sous forme de tableaux, cubes, pages Web…

Architecture Datastage : Datastage s’intègre dans un environnement Client/Serveur. Le développement des traitements ETL se fait au niveau du poste client connecté au serveur Datastage.

L’exécution des jobs se fait au niveau du moteur : il établit les connexions aux différentes bases de données adressées avant d’exécuter le code stocké dans le référentiel.

Les machines sur lesquelles les modules client et le moteur Datastage sont installées doivent être visibles entre elles : elles sont identifiées par leur nom ou leur adresse IP et doivent être liées via le réseau (TCP/IP)

Seul le serveur communique avec les bases de données. Cette liaison s’effectue soit par des canaux natifs (Oracle,Sysbase,DB2…) soit au travers d’un pilote ODBC

1.4.2 Les composants

12/04/2023 123/142

Page 124: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Les 4 composants clients sont accessibles avec des accès restreints suivant le profil de l’utilisateur : Développeur, opérateur….

Administrator : Interface graphique d’administration des projets installés sur un serveur Datastage donné.

Manager : Interface graphique de création, de visualisation et de mise à jour du contenu du Référentiel au travers d’une structure arborescente.

Designer : Interface de modélisation qui permet de créer les jobs Datastage. Director : Interface graphique d’exécution, de contrôle et de tests des traitements

ETL.

1.4.3 Vue de jobs ETL

La fenêtre ci dessous donne une vue de l’interface de développement

Zoom sur la palette des stages disponibles : Annotation : permet d’insérer des bulles explicatives au design.

12/04/2023 124/142

Page 125: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Container : représente un groupe de stages et de liens. Link : stage de lien. DB2 : stage entrée/sortie DB2/UDB. Oracle : stage entrée/sortie Oracle (avec toutes les versions). ODBC : stage entrée/sortie pour pilote ODBC Folder : permet d’accéder en lecture/écriture à une liste de

fichiers. Hashed File : extrait ou charge des données dans des fichiers

codés. Sequential File : extrait ou écrit des données dans des fichiers

textes. Aggregator : stage d’agrégation de données. Sort : stage de tri de données. Transformer : applique des transformations sur un flux de

données. Real Time : utiliser dans le cadre d’un besoin de « temps réel ». Favorites : cet onglet permet de regrouper les stages que le

développeur utilise le plus fréquemment.

Job ETL Simple : Source : Oracle Cible : fichier texte Références : Oracle (bases de données différentes) Les sources étant sur des bases de données différentes, une jointure SQL en

source est impossible. Il faut donc utiliser une jointure ETL avec des références. Gestion des rejets

SOURCESSOURCES CIBLESCIBLES

REFERENCESREFERENCES

REJETSREJETS

TRANSFORMATIONSTRANSFORMATIONSSOURCESSOURCES CIBLESCIBLES

REFERENCESREFERENCES

REJETSREJETS

TRANSFORMATIONSTRANSFORMATIONS

Jobs ETL Complexes : 1 job ET & 1 job TL

12/04/2023 125/142

Page 126: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

JOB 1 JOB 2JOB 1 JOB 2

12/04/2023 126/142

Page 127: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

22 STOCKAGE DES DONNÉESSTOCKAGE DES DONNÉES

Il existe, comme déjà expliqué pour la modélisation, deux grands types de bases : les bases relationnelles et les bases multidimensionnelles (dont la réalité physique est OLAP). Le stockage est INDEPENDANT du modèle : on peut très bien modéliser la base en étoile et la stocker en relationnel. Nous verrons qu’il existe d’ailleurs un type de OLAP particulier qui utilise ce principe.

2.1 SGBD Relationnel

Les bases de données relationnelles sont des implémentations des concepts relationnels définis par E. Codd en 1970 et comprennent un certain nombre de points communs. Elles sont portables d’une machine à une autre, voire d’un SGBD/R à un autre, même si certaines interprétations sont différentes selon les éditeurs. SQL permet aussi bien de manipuler les objets de la base de données elle-même (méta données) que les données qu’elle contient.

Les SGBD/R les plus connus sont : Oracle avec Oracle Server, IBM avec DB2 Microsoft avec Sql-Server

Avantages

Les bases de données relationnelles :

Savent gérer de très gros volumes de données (plusieurs tera-octets), notamment avec de puissants mécanismes de partitionnement.

Sont adaptées aux machines possédant des architectures parallèles, Evoluent de plus en plus pour répondre aux besoins du décisionnel (index Bitmaps,

nouveaux opérateurs décisionnels, …), Permettent d’accéder aux données via le langage normalisé SQL, Evoluent et peuvent s’adapter assez rapidement grâce à leurs éditeurs qui possèdent

un pouvoir d’investissement très important.

InconvénientsLes bases de données relationnelles :

Sont moins rapides que les bases multidimensionnelles puisque les calculs d’agrégats doivent être effectués en dynamique, à moins qu’ils n’aient été définis lors de la phase d’analyse, auquel cas, ils sont stockés en table.

Nécessitent plus de travail et de compétences de type DBA que les bases multidimensionnelles.

2.2 Les bases OLAP

La lenteur des SGBD/R classiques sur des requêtes un peu lourdes (agrégats,…) a précipité la création de bases adaptées au décisionnel, des bases avec des agrégats déjà effectués, c’est à dire des bases multidimensionnelles. Le système technique qui sert de support à ce type de système s’appelle OLAP (Online Analytical Process), et a été défini par E.F.Codd suivant 12 règles en 1993. Ces règles ont été complétées par 6 autres en 1995 et réorganisées pour mieux refléter l’utilisation d’OLAP.

12/04/2023 127/142

Page 128: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.2.2.1 Règles OLAP

2.2.1.1 Principes de basesMultidimensionnalité : le système doit permettre une vue multidimensionnelle des données. C’est le centre du système OLAP, et vous remarquerez que c’est la « vue » qui doit être multidimensionnelle, pas forcément le stockage en lui même.

Intuitivité : la manipulation des données doit être simple et intuitive.

Accessibilité : OLAP est un middleware, se situant entre des bases hétérogènes et un utilisateur OLAP (reporting, requeteur,…). Un maximum de types de source doit être supporté.

Accès calculés ou interprétés : cette règle impose que le système permette d’accéder aux données de la base OLAP aussi bien que d’accéder directement aux données sources.

Modèles d’analyse OLAP : les produits OLAP doivent supporter les quatre modèles de visualisation et d’analyse décris par Codd.

Architecture Client-Server : non seulement OLAP doit adopter une architecture client-server, mais il doit aussi permettre à un maximum de clients de se connecter de la manière la plus simple possible (sans programmation,…).

Transparence : le moteur OLAP doit être transparent, c’est à dire qu’un client peut récupérer des données sur un serveur via une feuille de calcul par exemple, sans se rendre compte de leur provenance.

Support multi-utilisateurs : il doit pouvoir gérer le multi-utilisateurs, c’est à dire les problèmes d’intégrité des données, de sécurité,…

2.2.1.2 Principes spéciauxTraitement des données non normalisées : Les sources de données non normalisées doivent pouvoir être traitées. Toutefois, les bases dénormalisées ne doivent pas pouvoir être modifiées.

Stocker séparément les données produites par OLAP et les données sources : autrement dit, ne pas implémenter d’application OLAP directement sur les bases de productions.

Extraction des données manquantes : l’objectif est de distinguer une donnée manquante d’une valeur zéro.

Traitement des données manquantes : les données manquantes doivent être ignorées du serveur quelle que soit leur source.

2.2.1.3 Principes liés au reportingReporting flexible : les utilisateurs doivent pouvoir naviguer entre les dimensions selon leur besoin.

Performance de reporting stable : la performance ne doit pas être altérée par le nombre de dimensions ou la taille de la base.

12/04/2023 128/142

Page 129: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Ajustement physique automatique : Les systèmes OLAP doivent ajuster leur modèle physique en fonction du modèle, de la taille des données,…

2.2.1.4 Principes liés aux dimensionsDimensionnalité générique : toutes les dimensions doivent être accessibles pour chacune des données.

Nombre illimité de dimensions et d’aggregation : on notera que techniquement, le respect de cette règle est impossible ; on demandera donc plutôt un nombre ‘suffisant’.

Pas de restriction sur le croisement des dimensions : les opérations doivent être autorisées sur toutes les dimensions, qui doivent être toutes accessibles.

2.2.1.5 Synthèse et méthode FASMIIl est évident que toutes les règles ne peuvent pas être respectées à la lettre, ne serait-ce que parce que tous les éditeurs ne sont pas d’accord sur ces dernières.

Certaines règles peuvent être ignorées (17 et 18) si les limites sont suffisamment élevées ; d’autres apparaissent comme antagonistes dans un contexte où l’informatique n’est pas toute puissante (proposer à la fois un accès stable et multi-utilisateurs).

Enfin, et surtout, certaines règles portant sur l’architecture du système ne conviennent pas forcément aux besoins de l’utilisateur.

Il n’est donc pas utile de vérifier toutes ces règles lors du choix d’une plate-forme OLAP. Le site OLAP Report a publié en 1995 un test qui a largement fait ses preuves pour ce choix : le test FASMI, ou Fast Analysis of Shared Multidimensional Information.

Fast : le système doit délivrer une réponse à la plupart des opérations dans les cinq secondes. Au delà de 20 secondes, la plupart des utilisateurs finaux considèrent le programme planté.

Analysis : le programme doit proposer les outils d’analyses nécessaire pour l’utilisateur sans qu’ils nécessitent une configuration complexe (programmation par exemple).

Shared : la plate-forme doit pouvoir gérer les options de partage : sécurité, intégrité si il y a plusieurs autorisations d’écriture, confidentialité,…

Multidimensional : il doit bien sûr proposer une vue multidimensionnelle des données. C’est le point central d’OLAP.

Information : il doit avoir des capacités de traitement de l’information (en terme de quantité) suffisantes. « Suffisant » est évidemment spécifique à chaque problème donné.

2.2.2 Le cube OLAPUne base de données traditionnelle ne permet aux utilisateurs que des visions en deux dimensions comme par exemple l’étude des produits par client. Une base de données multidimensionnelle, souvent représentée sous forme de cube ou d’hypercube, permet aux utilisateurs une analyse intégrant plusieurs dimensions comme par exemple le « chiffre d’affaires » en fonction des axes ou dimensions « clients », « produits », « temps ». En outre, des hiérarchies seront définies pour chaque axe d'analyse (par exemple, l'année, puis la saison, le mois et la semaine, pour l'axe temps). Une fois cette structure multidimensionnelle établie, l'outil OLAP propose des méthodes de navigation dans les données, comme le

12/04/2023 129/142

Page 130: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I."drill-down" pour aller vers les informations détaillées dans une hiérarchie, le "slice and dice" pour changer d'axe d'analyse.

Comme son nom l’indique, l’analyse multidimensionnelle est basée sur le concept de dimensions. Chaque dimension peut posséder une hiérarchie associée à des niveaux de consolidation. Chaque position dans un tableau multidimensionnel, correspondant à une intersection de toutes les dimensions est appelée une cellule. Ces dimensions peuvent être affinées, décomposées en hiérarchies, afin de permettre à l’utilisateur d’examiner ses indicateurs à différents niveaux de détail, de " descendre " dans les données, allant du niveau global au niveau le plus fin.

2.2.2.1 Les outils MOLAPMOLAP est conçue exclusivement pour l’analyse multidimensionnelle, avec un stockage optimisé par rapport aux chemins prédéfinis. Ainsi, toute valeur d’indicateur associée à l’axe temps sera précalculée au chargement pour toutes ses valeurs hebdomadaires, mensuelles, etc… MOLAP agrège tout par défaut.

Data Warehouse Moteur MOLAP Aide à la décision

Données Traitements Présentation

RapportsMulti-Dimensionnel

Stockage desdonnées détaillées (et

agrégées)

Les données sont stockées dans une base de données multidimensionnelles le plus souvent propriétaires. Cependant il y’a des limitations quand à la quantité de données.

Du point de vue de l’accès aux données, MOLAP se rapproche du séquentiel indexé. Pour accéder aux données de ce cube, on ne peut pas utiliser le langage de requête standard SQL, il faut utiliser une API spécifique.

Cette technique est notamment utilisée par : Hyperion Essbase d’Oracle 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 fonctionnalités avancées comme la prévision ou la

mise à jour des données pour la simulation.

Inconvénients

12/04/2023 130/142

Page 131: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I. Plus le volume de données à gérer est important, plus les principes d’agrégations

implicites proposés par MOLAP sont pénalisants dans la phase de chargement de la base, tant en performances qu’en volume. Selon les offres et l’application concernée, la limite pourra se situer entre quelques centaines de Mo et quelques Go de données brutes.

Incompatible avec d’autres modes d’accès aux données, cependant des outils spécifiques (requêteurs, Data Mining, …) savent accéder à ces données soit en natif, soit fréquemment via une API spécifique de type OLE DB. Sans quoi, il peut être nécessaire de faire cohabiter deux bases de données !

A choisir si… Base de données de taille raisonnable, Temps de réponse très rapide demandés en restitution.

2.2.2.2 Les outils ROLAP Les bases ROLAP (Relationnal OLAP) sont des bases de données OLAP dont l’information est stockée dans une base de données relationnelle. Un dictionnaire permet de faire apparaître cette information comme étant multidimensionnelle. Pour cela, ces outils s’appuient pour la plupart sur une modélisation particulière des données, distinguant les axes d’analyse et les faits à observer

Data Warehouse Moteur ROLAP Aide à la décision

Données Traitements Présentation

RapportsMulti-Dimensionnel

Génération de plansd'exécution SQLafin d'obtenir des

fonctionnalités OLAP.

Stockage desdonnées détaillées (et

agrégées) etdes méta-données

ROLAP propose une surcouche d’abstraction sur un modèle relationnel, qui peut s’apparenter à une version multidimensionnelle des dictionnaires des requêteurs. Les outils ROLAP proposent le plus souvent un composant serveur pour optimiser les performances lors de la navigation dans les données ou pour les calculs complexes.

Du point de vue de l’accès aux données, ROLAP s’appuie sur les techniques usuelles des SGBDR (jointures, index, …). ROLAP n'agrège rien, mais tire parti des agrégats s'ils existent. De ce fait ROLAP est plus lourd à administrer que MOLAP, puisqu'il demande de créer explicitement certains agrégats. En s'appuyant sur les bases relationnelles, référence du marché, ROLAP tire partie des évolutions de celles-ci (adaptation aux architectures hardware sophistiquées, extensions objets, etc.).

Cette technique est notamment utilisée par : MicroStrategy Cartesis

12/04/2023 131/142

Page 132: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Avantages Peut supporter de très gros volumes en exploitant des techniques de partitionnement

de données ou d’accès en parallèle. Tire parti des évolutions des bases relationnelles (adaptation aux architectures

hardware complexes, extension objet, etc.). Mise en œuvre des requêtes complexes plus facile. Pas de SGBD multidimensionnel à acquérir

Inconvénients Plus lent que MOLAP sur de petits volumes. Plus lourd à administrer que MOLAP puisqu’il demande de créer explicitement

certains agrégats. Nécessite des efforts de conception, d’administration et de tuning.

A choisir si… Base de données de taille importante

2.2.2.3 Les outils HOLAP Le modèle HOLAP (Hybrid OLAP) fait converger les modèles MOLAP et ROLAP.

Cette technique permet d’exploiter simultanément un SGBD/R et un SGBD/M (base de données multidimensionnelle) pour mettre en œuvre des requêtes de type OLAP. Les informations pourront être gérées physiquement tantôt par le SGBD/M tantôt par le SGBD/R.

Les informations manipulées sont vues par l’utilisateur comme des données OLAP classiques. Avec cette approche, on ne stocke dans la base multidimensionnelle que certaines données, les autres étant gérées par une base relationnelle.

Cette technique a été adoptée par : Oracle Express, SAS Institute,

2.2.2.4 SynthèseLa classification en différentes catégories OLAP ne suffit pas à déterminer les capacités d’un produit, elle permet simplement d’avoir une idée sur les points forts et faibles de ces différentes technologies.

De plus, ce marché évolue très vite, et les grands éditeurs de bases relationnelles ne cessent d’ajouter des fonctionnalités OLAP à leurs produits, tandis que les éditeurs de bases multidimensionnelles tendent à s’interfacer avec les bases relationnelles pour le stockage des informations de détail.

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.

12/04/2023 132/142

Page 133: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

2.3 Exemple : Powerplay Transformer

2.3.1 Principes de fonctionnementCognos Transformer est un outil de modélisation de modèles multidimensionnels à partir de données sources.

Il propose de se connecter à un ou plusieurs entrepôts de données (DWH) afin d'extraire des données pertinentes et de les diffusées sous forme de cubes dits OLAP (Online Analytical Processing )

On parle de tableau pour une analyse à 2 axes, de cube pour une analyse à 3 axes et d’Hypercube pour une analyse supérieure à 3 axes. Powerplay Transformer permet la modélisation de ces hypercubes.

L'utilisateur final aura accès selon ses droits accès à tout ou partie du cube, pourra développer des états sur l'interface web ou sur le client Powerplay.

2.3.2 Architecture décisionnelle

Chaque cube auquel vous accédez dans PowerPlay est basé sur un modèle Transformer. Pour créer un modèle, vous devez :

spécifier les sources de données pour le modèle, définir les dimensions, les niveaux et les mesures dans le modèle,

12/04/2023 133/142

Page 134: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.2.3.3 Interface Transformer

2.3.4 Interface PowerPlay (user)

12/04/2023 134/142

Page 135: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

33 REPORTINGREPORTING

L’objectif même de l’informatique décisionnelle est de pouvoir produire de l’information à partir de données brutes, en général sous forme de rapports (nous prendrons ici ce mot au sens le plus large possible), et ainsi être en mesure de prendre une décision (le datamining va même jusqu’à proposer lui-même un début de solution). C’est donc un outil orienté ‘front users’, utilisateurs finaux.

Le Datawarehouse n’est qu’un outil pour rassembler les données des bases de productions et fournir ainsi une information plus complète, de meilleure qualité, etc… Le ‘reporting’ peut aussi bien se servir des bases de production que du Datawarehouse ou des Datamarts.

Le reporting n’est pas une simple visualisation des données ; il offre un début d’analyse. Par exemple, plus que de pouvoir visualiser les chiffres d’un clusters, il doit permettre de les croiser avec d’autres données pour obtenir une information plus pertinente (dans le sens : utile pour la prise de décision).

A l’instar des autres secteurs du décisionnel, chaque outil de reporting a ses spécificités qu’il faut étudier en fonction des besoins. L’étude qui suit est divisée en quatre parties : la première étudie le reporting en fonction du degré d’analyse souhaitée, la suivante en fonction du corps de métier de l’utilisateur, ensuite en fonction de la diffusion visée (Internet, document Excel ou Word, etc…) et enfin en fonction du niveau de compétence des cibles.

3.1 Degrés d’analyse

Les outils de reporting vont de la simple visualisation de données au recoupement, création de tableau croisé, etc… Le problème n’est évidemment pas de choisir le logiciel le plus performant mais le plus adapté, parfois un outil plus simple mais moins cher est suffisant.

Certains éditeurs proposent d’ailleurs plusieurs outils dans ce sens : Cognos propose ainsi ReportNet pour la création de rapports et Powerplay pour la visualisation de données multidimensionnelles. Les deux outils ne sont pas destinés aux mêmes utilisateurs (voir plus bas, différent types d’utilisateur).

La ‘navigation’ dans une base de données relationnelle consiste à lire un tableau. Mais pour la lecture de cube, il faut faire face aux multiples dimensions. Celles ci apportent de nombreuses fonctions… et le vocabulaire qui va avec. Les opérations qui suivent sont accessibles dans tous les outils de visualisation (comme Powerplay de Cognos), mais avec plus ou moins de facilité et de souplesse.

NestingType de présentation permettant de visualiser plusieurs dimensions en un tableau.Les dimensions peuvent être disposées sur les colonnes ou sur les lignes.

DrillLe ‘drill’ consiste a passer d’un niveau d’agrégation à un autre. Par exemple passer d’une somme par année à une somme par mois. On distingue les ‘drill up’ (monter d’un niveau, de mois à année par exemple), le ‘drill down’ (dans l’autre sens, de année à mois) et le ‘drillthrough’ (de semaine à année sans passer par jours).

Rotation

12/04/2023 135/142

Page 136: ITS Formation Base BI v1 ALPHA

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 d’un cube. ‘Slice & Dice’ est le fait de sélectionner une portion en particulier pour la visualiser via des opérations 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 même fort possible d’utiliser plusieurs supports dans un même 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 gèrent pas les mêmes formats, et peu proposent un système de diffusion via de multiples canaux. Cette partie dépend des utilisateurs finaux, il faut donc bien savoir à qui s’adressent les rapports et où sont accessibles ces personnes pour déterminer dans un premier temps le(s) format(s) nécessaire(s), les moyens de diffusion à employer, et ainsi compléter la liste des critères pour le choix d’un outil de reporting.

3.3 Métiers

Après être restées quelques temps généralistes, les applications décisionnelles, pour être plus proche des besoins des utilisateurs, se sont spécialisées. On trouve maintenant un certain nombre de modules et d’applications dédiés à un corps de métier en particulier.

Bien que le décisionnel trouve écho dans de nombreux domaines, certains secteurs sont beaucoup plus demandeurs que d’autre : les assurances, les banques, la grande distribution…, chacun ayant des besoins propres.

Certains logiciels proposent un ensemble de modules spécialisés dans le domaine de la Finance (Ex : Hyperion Planning). Chacun apporte des outils d’analyse utilisés spécifiquement dans le secteur auquel il est destiné.

3.4 Type utilisateurs

Les applications utilisateurs sont destinées, d’une manière générale, à permettre aux utilisateurs finaux d’accéder aux données autrement qu’en allant lire les tables. Ils ne doivent normalement pas avoir besoin d’être des techniciens ; il peut s’agir par exemple d’un DRH.

On distingue trois types d’utilisateurs : Les utilisateurs d’états standards :On a fait pour eux des rapports tous prêts qui se mettent à jour automatiquement. Les informations ainsi obtenues sont toujours les même. Il peut s’agir par exemple d’un état bon de commande utilisé par un acheteur. Outil typique : Business Objects. Les utilisateurs pousse-boutons :Ceux là sélectionnent les informations qu’ils désirent via des boites de dialogue. Ils peuvent ainsi aisément créer de nombreuses requêtes simples et les présenter comme ils le désirent (graph en tout genre, etc…). Outil typique : Impromptu de Cognos. Les utilisateurs Ad-Hoc :

12/04/2023 136/142

Page 137: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.Ils sont capables de rédiger des requêtes complexes (références croisées, jointures…) en fonction des besoins. Les requêtes ainsi créées peuvent être migrées vers une application utilisateur pour servir dans un rapport. Les applications permettant des requêtes Ad-Hoc, via un « wizard » ou directement en SQL, proposent de rapatrier des données sans passer par un masque. Cela implique que de tels utilisateurs connaissent la structure de la base de données source, ce qui en général inclut une connaissance du SQL.

3.5 Exemple : Cognos ReportNet

3.5.1 Principes de fonctionnementReportNet s’insère dans un modèle décisionnel classique. Il propose de se connecter à un ou plusieurs entrepôts de données (DWH) afin d’extraire des données pertinentes et de les mettre sous forme de rapports ou de graphique.

L’utilisateur final, en fonction de son profil, sera capable de créer ces propres analyses et rapports.

Afin de pouvoir restituer l’information, ReportNet se base sur une base de métadonnées (Content Store) qui va contenir les informations techniques comme le dictionnaire des données, les relations entre les tables de DWH, les descriptions des rapports,…

Remarque : Le fonctionnement optimum de ReportNet impose d’adapter le DWH au besoin de l’outil. Ce point sera d’autant plus important que la volumétrie de la base sera importante. Il sera par exemple nécessaire de créer des agrégats.

3.5.2 Architecture décisionnelle

12/04/2023 137/142

DWHMétaDataContent

Store

Web

Serveur ReportNet

Sources D’authentification

Page 138: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.TROIS TIERS : ce fonctionnement utilise le module Intelligence Server comme moteur SQL et Moteur Analytique. Contrairement au précédent, ce fonctionnement centralise les connexions aux bases de données. Il peut donc possible d’améliorer les performances de l’outil en mettent en place des stratégies de cache…

3.5.3 Presentation de Report Studio

3.5.3.1 Interface utilisateurL'interface de Cognos Report Studio se compose de deux volets, d'une barre d'exploration et d'une zone de travail.

3.5.3.2 Volet Objets insérablesLe volet Objets insérables contient des objets que vous pouvez ajouter à un rapport. Il contient les onglets suivants :

L'onglet Source contient des éléments du pack sélectionnés pour le rapport, tels que des éléments de requête et des calculs.

L'onglet Données Élémentaires décrit les requêtes créées dans le rapport. L'onglet Boîte à outils contient divers objets que vous pouvez ajouter au rapport, tels

que des textes et des images.

3.5.3.3 Volet PropriétésLe volet Propriétés présente les propriétés que vous pouvez définir pour un objet dans un rapport.Vous pouvez obtenir des informations complémentaires sur une propriété en la sélectionnant, puis en cliquant sur F1.Conseil : Affichez une description de la propriété sélectionnée au bas du volet. Dans le menu Affichage, cliquez sur l'option Descriptions des propriétés.

12/04/2023 138/142

Page 139: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.3.5.3.4 Barre d'explorationLa barre d'exploration contient les boutons suivants permettant de travailler sur les différentes parties d'un rapport :

Positionnez le pointeur sur le bouton Explorateur de pages pour accéder à une page de rapport ou à une page d'invite spécifique.

Conseil : Vous pouvez également ajouter une nouvelle page de rapport ou une page d'invite .

Positionnez le pointeur sur le bouton Explorateur de requêtes pour travailler sur les requêtes.

L'Explorateur de requêtes permet de créer ou de modifier des requêtes, ainsi que d'exécuter des tâches complexes, telles que la définition de jointures d'union et l'écriture d'instructions SQL.

Positionnez le pointeur sur le bouton Explorateur de conditions pour travailler sur les variables.

Les variables permettent d'ajouter une mise en forme conditionnelle à un rapport.

3.5.3.5 Zone de travailLa zone de travail est l'emplacement où vous concevez les rapports.

12/04/2023 139/142

Page 140: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

GLOSSAIRE

12/04/2023 140/142

Page 141: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

GLOSSAIRE

Analyse multidimensionnelle : concept qui définit les analyses effectuées par croisement de plus de trois dimensions (ou ensemble de données du même type ou encore axes).

Applications analytiques : applications décisionnelles prêtes à l´emploi (livrées avec un modèle de données, des requêtes pré paramétrés, etc. pour l´analyse d´un domaine spécifique : CRM, budget, etc.

Axe d´analyse : ou dimension. Les ventes d´un produit peuvent par exemple être analysées par région (axe 1), époque (axe 2), magasin (axe 3), etc.

Cube : Structure multidimensionnelle permettant l´analyse d´informations factuelles en les segmentant sur un ensemble d´axes d´analyses.

Datamart : base de données, spécifique au monde décisionnel, orientée sujet ou métier. Un Datamart peut contenir des données dupliquées d´un Datawarehouse et/ou des données locales.

Datamining : Traitement et analyse statistiques de bases de données permettant d´établir des relations et des comportements types. Avec l´analyse multidimensionnelle classique, on sait ce que l´on cherche tandis qu´avec le datamining, on ne sait pas forcément ce que l´on cherche. On essaye plutôt d´établir des corrélations entre des données afin d´en tirer des renseignements, des indicateurs, des anomalies, des correspondances, etc. qui peuvent mettre en évidence des tendances. Datawarehouse : ou entrepôt de données. Base dans laquelle les données sont centralisées et organisées pour le support d´un processus d ´aide à la décision.

Décisionnel : Processus d´utilisation de connaissances extraites par analyse des informations et des données générées par les processus métiers de l´entreprise pour déterminer la meilleure action à entreprendre, la meilleure décision à prendre.

Dimension : ou axe. Les ventes d´un produit peuvent par exemple être analysées par région (axe 1), époque (axe 2), magasin (axe 3), etc. Il existe plusieurs type de dimension ( Dégénérée, Junk...)

Drill down (ou drill through) : mécanisme de navigation dans une structure multidimensionnelle permettant d´aller du plus global au plus détaillé à l´aide de requêtes de type hiérarchique.

ETL : Extract Transform Loading. Serveur chargé d´extraire, nettoyer et transformer les données émanant de sources diverses pour ensuite les insérer dans une base de données (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 présente les tendances d´une condition ou d´un phénomène, au-delà des propriétés de la statistique elle-même. Les indicateurs permettent d´obtenir de l´information supplémentaire. Ils offrent un moyen d´évaluer les progrès en vue d´un objectif. On peut concevoir toutes sortes d´indicateurs : mesure de la rentabilité, des ventes, de l´évolution des clients, etc.

Intégrité : Ensemble de contraintes appliquées aux mises à jour d’une base de donnée permettant de garantir la cohérence des données. Ces contraintes peuvent être des listes de valeurs à respecter (non nullité et intégrité de domaine) ou bien des liens entre des tables (intégrité référentielle). Par exemple, une commande doit forcément référencer un client : le numéro de client inséré dans une ligne de la table commande doit exister dans la table client.

12/04/2023 141/142

Page 142: ITS Formation Base BI v1 ALPHA

ITS Formation Base B.I.

Jointure : Rapprochement entre deux tables par comparaison de valeurs communes, sur la base d’un attribut commun.

Jointure externe : Jointure préservant les lignes d’une première table, même si l’attribut de jointure n'apparaît pas dans la seconde.

Meta-données : Les méta-données sont des informations qui renseignent sur la nature de certaines données. Les méta-données que l´on peut par exemple associer à un document sont : son titre, son auteur, sa date de création, etc. Dans le cadre du décisionnel, elles constituent une sorte de dictionnaire sur lequel le système s´appuie pour comprendre des données utilisées par les différentes applications qui alimentent le datawarehouse. Les intitulés "Client" d´un PGI et "nom" d´une application comptable peuvent contenir les mêmes informations mais le système ne peut le savoir que si un dictionnaire a été conçu pour lui indiquer qu´il s´agit de la même nature d´informations. Les méta-données englobent également l´ensemble des informations relatives à la provenance, à l´historique et aux traitements associés aux données d´un datawarehouse.

Modèle de données : organisation des données dans une base dans une structure de tables, colonnes, champs etc. pour l´univers relationnel, autre pour les bases OLAP dont la structure est souvent propriétaire.

Nettoyage de données : Processus visant à homogénéiser les données pour les rendre exploitables. Le nettoyage des données assure leur intégrité en éliminant les doublons, en corrigeant l´orthographe et en supprimant ou complétant les champs non renseignés. Les opérations de nettoyage peuvent également couvrir le filtrage, l´agrégation, la vérification de relations, etc.

OLAP : On-Line Analytical Processing. Procédé permettant de pré-calculer certains croisements de données afin d´optimiser les performances de l´application décisionnelle. Des variantes de l´OLAP existent.

Outil de restitution : ensemble des outils (requêteurs, tableaux de bord, etc.) permettant de restituer le résultat d´une analyse.

Qualité des données : Conformité structurelle des données à l´utilisation qu´on souhaite en faire. Améliorer la qualité peut consister par exemple en la correction des occurrences multiples d´un même objet, ou le renseignement de champs vides.

Requêteur : Un requêteur permet à l´utilisateur final d´accéder aux données de l´entreprise de manière autonome, dans un langage proche de celui de son métier, pour effectuer des analyses, croiser des données, etc. Dans la plupart des cas aujourd´hui, ces requêteurs s´appuient sur les méta-données pour proposer à l´utilisateur final des intitulés qui correspondent aux mots qu´il utilise habituellement en lieu et place des intitulés des colonnes des bases de données, le système décisionnel se chargeant de convertir ensuite les requêtes dans un langage compris par la base de données ou le datawarehouse.

SGBDR (Système de Gestion de Base de Données Relationnelle) : On dialogue avec le SGBDR grâce à des requêtes écrites en SQL, langage assez bien standardisé.Les SGBDR (certains disent Serveur de bases de données) les plus avancés disposent de mécanismes de gestion des contraintes d'intégrité appelés les Triggers, et aussi de capacité de traitements liés aux données: les Procédures Stockées.

 

12/04/2023 142/142