0% ont trouvé ce document utile (0 vote)
6 vues79 pages

OLAP et SGBD pour Support Décisionnel

Le document aborde les systèmes de gestion de bases de données (SGBD) pour le support de décisions, mettant en lumière les besoins croissants en matière de fonctions d'agrégation et les défis liés aux requêtes complexes. Il présente des solutions telles que de nouvelles fonctions SQL, des concepts de données multidimensionnelles, et des techniques d'implémentation comme le calcul parallèle. Enfin, il décrit les différents types de SGBD, notamment les entrepôts de données et les systèmes de fouille de données, ainsi que des exemples de produits comme Informix et DB2.

Transféré par

Erij Ben Cheikh
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues79 pages

OLAP et SGBD pour Support Décisionnel

Le document aborde les systèmes de gestion de bases de données (SGBD) pour le support de décisions, mettant en lumière les besoins croissants en matière de fonctions d'agrégation et les défis liés aux requêtes complexes. Il présente des solutions telles que de nouvelles fonctions SQL, des concepts de données multidimensionnelles, et des techniques d'implémentation comme le calcul parallèle. Enfin, il décrit les différents types de SGBD, notamment les entrepôts de données et les systèmes de fouille de données, ainsi que des exemples de produits comme Informix et DB2.

Transféré par

Erij Ben Cheikh
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

Les SGBDs Supports de

Décisions
Witold Litwin

1
Besoin
• Utilisation massive de fonctions agrégats
– celles de SQL
– autres
• dans le langage hôte
• Exemples
– La moyenne de ventes
– Le commercial du jour
– La corrélation entre certaines attributs
2
Problèmes nouveaux
 Parcours fréquent de tous les tuples
– d'une grande table
– d'une collection de tables à joindre
 L'opération peut prendre beaucoup de temps
– quel que soit l'optimisation de chemins d'accès
 Des requêtes peuvent être impossible à formuler
en SQL seul
– Classement par rang selon les valeurs de T.a
– Corrélation entre T.a et T.b ?
– Les attributs les plus corrélés ?

3
Solutions
• Nouvelles fonctions de SQL
– Fonctions agrégats
• Rank, Rollup, Cube, Covariance, Correlation…
– Fonctions scalaires
• Nouveaux concepts
– Donnée multidimensionnelle
– Espaces des agrégations
– Espace des influences
– Espace des variations

4
Solutions
• Nouvelles techniques d'implémentation
– Calcul parallèle et scalable
– Prè-calcul partiel ou total de requêtes
– Échantillonnage
– Séparation de calculs en plusieurs bases et
systèmes

5
Solutions
• Nouveau types de SGBD
– Entrepôts de Données
• Data Warehousing
– Fouille de Données
• Data Mining (DM)
– Analyse en ligne
• Online Analytical Processing (OLAP)
• Les SGBD "traditionnels" sont dès lors souvent appelés
– Online Transaction Processing (OTPS) Systems
• Les nouveaux constituent les
– Systèmes de Support de Décisions
6 • Decision Support Systems
Principaux produits
• Informix
– Basé sur l'achat de Red Brick
• DB2
– SGBD
– Data Warehouse Center
SQL Server
– SGBD
– Data Analysis Services
• OLAP Services renommés pour SQL Server 2000
• Oracle Express

7
OLAP traditionnel

Prix de produit 123

Espace
des Données

Support
de Decisions

8
OLAP traditionnel

Prix de produit 123


Vente par
Espace (OLAP) produit et
des Agrégations par mois
Espace
des Données

Support
de Decisions

9
OLAP traditionnel

Prix de produit 123


Vente par
Espace (OLAP) produit et
Des Agrégations par mois
Espace
des Données
Espace Facteurs
Des Influences d'influence
(Data Mining) des ventes
Support
à Paris
de Decisions

10
OLAP traditionnel

Prix de produit 123


Vente par
Espace (OLAP) produit et
des Agrégations par mois
Espace
des Données
Espace Facteurs
des Influences d'influence
(Data Mining) des ventes
Support
à Paris
de Decisions

Espace Changement
des Variations de ventes
depuis 3 mois
11
Espaces de Données Concepts

Relations Ensembles
Agrégations Arithmétique
Influences Logique et Stats.
Variations Calcul différentiel

12
Technologie
• BDs parallèles, distribuées, scalables
• Jointures pré-calculées
– intégrité référentielle
• Vues matérialisées
• Algorithmes statistiques
• Algorithmes décisionnels
– revus pour l'application aux BDs
• Systèmes multibases
– Entrepôts de données
• Data warehousing
13
Vue matérialisée T
sum prod
30 p1
50 p2
• create materialized view T 27 p3
(sum, prod) as
select sum(montant) prod from Ventes
groupby produit ;

• Les requêtes sont reformulées contre la vue


– d'une manière transparente pour l'usager
select * from T where prod = 'p1' ;

14
Vue matérialisée T
sum prod
30 p1
50 p2
27 p3
• Problème général
– Cohérence entre la vue et ses tables de
base
• Algorithme de MAJ
– pour toute nouvelle vente de Produit p
• add le montant à [Link]
where prod = p ;

15
Vue matérialisée
• La cohérence peut être implantée par
– des déclencheurs
– des procédures stockées (stored procedures)
• Exercise
– Que faire pour la requête
select avg (montant) prod from Ventes
groupby produit

Note : plusieurs solutions existent


16
Problème de scalabilité
• On peut difficilement maintenir un grand
nombre de vues matérialisées
– il faudrait executer des dizaines de
déclencheurs
– et ne pas handicaper les perf. OLTP
– et comment faire pour les avortements et la
concurrence ?

17
Axes de solutions
• Systèmes multiordinateurs
• Cohérence souple (ang. loose) entre les tables
de bases et les vues matérialisées
– la somme de ventes peut être 0.05 % inexacte
pendant 10 sec., de temps en temps, sans que le
DBA se fasse gronder
• nécessité dans les systèmes mobiles
• Les MAJ sont propagées en asynchrone après
le Commit
18
Les statistiques
• Correlations
– DFs notamment (correlation = 1)
• Regressions
• Nuées Dynamiques
– Diday
• Analyse factorielle & multi-dimensionnelle en général
– Benzecri
• Aide au diagnostic
– Bayes

19
OLAP / Data Mining
• OLAP
– Les agrégations demandées sont connues
– On peut formuler les requêtes SQL
• ou SQL imbriqué
• Data Mining
– on ne sais pas a priori quoi demander
• quelles sont les corrélations parmi les attributs de
Ventes ?
• Cette dichotomie est floue
20
Data Mining dans un espace des
influences
• Le résultat peut être attendu sous forme
– d'un graphique (business graphics)

21
Data Mining dans un espace des
influences
• Le résultat peut être attendu sous forme
– d'un graphique (business graphics) 2-D
90
80
70
60
East
50
West
40
North
30
20
10
0
1st 2nd 3rd 4th
Qtr Qtr Qtr Qtr
22
Data Mining dans un espace des
influences
• Le résultat peut être attendu sous forme
– d'un graphique (business graphics) 3-D

100
80 East
60 West
40 North
West North
20
East
0
1st 2nd 3rd 4th
Qtr Qtr Qtr Qtr
23
Data Mining dans un espace des
influences
• Le résultat peut être attendu sous forme
– d'une règle logique
if
[Link] < 25 and power > '9 CH'
and status = 'bachelor'
then
prob (accid.# / year > 1) = 0.99 ;

24
Data Mining dans un espace des
influences

• Ceci conduit au problèmes d'inférence de


règles
– la logique
– BDs actives
– BD de connaissances
– BDs déductives

25
Mesures dans un espace des
variations
• On observe les variations selon des dimensions
– variation de cours de bourse
• depuis une semaine, une année, 1 Janv. 1996...
– variation de ventes (ang. lift)
• selon la campagne de promotion
• selon la saison
– etc
• Précalcul de variations est encore plus couteux que
celui de facteurs statiques
– surtout de variations temporelles
26
Mesures dans un espace des
variations

100 East
North
West
50 West
North
East
0
1st 2nd 3rd 4th
Qtr Qtr Qtr Qtr
27
Data Mining dans un espace des
influences
• On attend deux types de résultats distincts
 l'état de l'existant
• découverte, explication, confirmation
 l'analyse de la tendance
• prédictions
• Lex deux aspects sont encore en état de
recherche ou, au mieux, en développent
avancé
28
Schéma en
Étoile
• Table de faits
– En général très
grande

• Tables de
dimensions
– En général très
petites
• Liens clé primaire /
clé étrangère

29
Architecture d'entrepôt de données IBM

30
Fonctions Agrégat pour OLAP
DB2
• CountBig
– Pour le nombre de tuples > 2**31
• Covariance
– entre des attributs ou des expressions de valeur
• Correlation
– entre des attributs ou des expressions de valeur
• Regression functions
– 10 fonctions
– Les paramètres de la droite de régression entre des attributs ou des
expressions de valeur
• Rank, Dense_Rank
– Rank en présence de duplicata : 1,2,2,4,4,6…
– Dense_Rank en présence de duplicata : 1,2,2,3,3,4…
31
Covariance
• Soit avgexp1 le résultat de AVG(expression1) et soit
avgexp2 le résultat de AVG(expression2),
• Alors COVARIANCE(expression1, expression2) est:
AVG( (expression1 - avgexp1) * (expression2 - avgexp2 )

SELECT COVARIANCE(SALARY, BONUS)


FROM EMPLOYEE
WHERE WORKDEPT = 'A00'

32
Correlation
Définition :

COVARIANCE(expression1,expression2)/
(STDDEV(expression1)*STDDEV(expression2))

SELECT CORRELATION(SALARY,
BONUS)
FROM EMPLOYEE
WHERE WORKDEPT = 'A00'

33
Fonctions Agrégat pour OLAP
DB2
• Fonctions spécifiques à DB2 Data Warehouse
Center:
– Analyse de la variance (ANOVA)
• Distributions de Fisher-F
• Valeur P
– Sous-totaux par période de temps
– Test de Chi-carré
– Statistique T pour n paires de valeurs et à partir du
coeff. de corrélation r
T = r * ((n – 2 ) / (1 - r 2 ))0.5
– T  0 indique une corrélation entre les attributs
34
Fonctions Agrégat pour OLAP
Teradata
• RANK
• CSUM (Cumulative (Running) Sums)
• MAVG and MSUM
• MDIFF (Moving Difference)
• QUANTILE
• QUALIFY
• SAMPLE
35
SELECT EmployeeName, (HireDate - DATE) AS ServiceDays,
RANK ( ServiceDays ) as Seniority FROM Employee
ORDER BY EmployeeName;

EmployeeName Service Days Seniority


Robyn Baker 9931 2
Nick Garrison 9931 2
Kyle McVicker 9408 5
Eva O’Malley 10248 1
Norma Powers 9409 4

36
SELECT Item, SalesDate, CSUM(Revenue,Item,SalesDate) as
CumulativeSales FROM
(SELECT Item, SalesDate, Sum( Sales ) as Revenue FROM DailySales
WHERE StoreId=5 AND SalesDate Between ‘1/1/1999’ and ‘1/31/1999’
GROUP BY Item, SalesDate) AS ItemSales

ORDER BY SalesDate ;

Item SalesDate CumulativeSales


InstantCOW 01/01/1999 972.99
InstantCOW 01/02/1999 2361.99
InstantCOW 01/03/1999 5110.97
InstantCOW 01/04/1999 7793.91

37
SELECT MarketDay,ClosingPrice,
MAVG(ClosingPrice,50,MarketDay) as XYZAverage
FROM MarketDailyClosing
WHERE Ticker = ‘XYZ’
ORDERBY MarketDay;

MarketDay ClosingPrice XYZAverage


12/27/1999 89 1/16 85 1/2
12/28/1999 91 1/8 86 1/16
12/29/1999 92 3/4 86 1/2
12/30/1999 94 1/2 87
38
SELECT MarketWeek, WeekVolume,
MDIFF (WeekVolume,1,MarketWeek)asXYZVolumeDiff
FROM (SELECT MarketWeek, SUM(Volume) as WeekVolume
FROM MarketDailyClosing WHERE Ticker = ‘XYZ’
GROUP BY MarketWeek)
ORDERBY MarketWeek;

MarketWeek WeekVolume XYZVolumeDiff


11/29/1999 9817671 ?
12/06/1999 9945671 128000
12/13/1999 10099459 153788
12/20/1999 10490732 391273
12/27/1999 11045331 554599
39
SELECT Item, Profit, QUANTILE( 10, Profit ) as Decile
FROM (SELECTItem,Sum(Sales)—(Count(Sales)*ItemCost) asProfit
FROM DailySales, Items WHERE [Link] =
[Link]
GROUP BY Item) AS ItemProfit;

Item Profit Decile


High Tops 97112 9
Low Tops 74699 7
Running 69712 6
Casual 28912 3
Xtrain 100129 9
40
SELECT Item, Profit, QUANTILE( 100, Profit ) AS Percentile
FROM (SELECT Item,Sum(Sales) — (Count(Sales)* [Link])
as Profit FROM DailySales, Items
WHERE [Link] = [Link]
GROUP BY Item) AS ItemProfit
QUALIFY Percentile = 99;

Item Profit Percentile


Fat Free Ice Cream 10.79 99
Sugar Free Ice Cream -100.55 99
Fake Chocolate Ice Cream -1110.67 99
Fat/Sugar Free Ice Cream -2913.88 99
Fake Ice Cream -4492.12 99

41
SELECT customer_id, age, income, marital_status, …, SAMPLEID
FROM customer_table
SAMPLE 0.6, 0.25, 0.15

customer_id age income marital_status ... SAMPLEID


1362549 17 0 1 1
1362650 21 17804 2 1
1362605 34 16957 2 1
1362672 50 16319 2 3
1362486 76 10701 3 1
1362500 40 56708 1 3
1362489 35 55888 3 2
1362498 60 9849 2 1
1362551 27 23085 1 1
42 1362503 18 5787 1 .. 2
ROLLUP
(DB2 & SQL-Server)
• Groupements multiples (super-groupes) selon une
dimension
– l ’ordre des attributs dans la clause a l ’importance
– les attributs sont progressivement « oublies » de droite
à gauche
• Remplace plusieurs requêtes GROUP BY
SELECT p#, sum (qty) as tot-qty from S,SP, P
WHERE SP. P# = P.P# AND SP. S# = S.S#
GROUP BY ROLLUP (P#, [Link], COLOR)
HAVING tot-qty > 100 ;
• Problèmes avec des nulls que l’on verra plus tard
43
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SALES_PERSON, SUM(SALES) AS UNITS_SOLD
FROM SALES
WHERE WEEK(SALES_DATE) = 13
GROUP BY ROLLUP ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE),
SALES_PERSON )
ORDER BY WEEK, DAY_WEEK, SALES_PERSON

WEEK DAY_WEEK SALES_PERSON UNITS_SOLD


----------- ----------- --------------- -----------
13 6 GOUNOT 11
13 6 LEE 12
13 6 LUCCHESSI 4
13 6 - 27
13 7 GOUNOT 21
13 7 LEE 21
13 7 LUCCHESSI 4
13 7 - 46
13 - - 73
44 - - - 73
CUBE
(DB2 & SQL-Server)
• Groupements multiples selon toutes les dimensions
– l ’ordre des attributs dans la clause n ’a pas d ’importance
– les attributs sont progressivement « oublies » de droite à
gauche
• Remplace plusieurs requêtes GROUP BY
SELECT p#, sum (qty) as tot-qty from S,SP, P
WHERE SP. P# = P.P# AND SP. S# = S.S#
GROUP BY CUBE (P#, [Link], COLOR)
HAVING tot-qty > 100 ;
• Problèmes avec des nuls que l’on verra plus tard
• Opération bien plus chère que Rollup
45 – 2N requêtes générées au lieu de N, pour N attributs
CUBE
(DB2 & SQL-Server)

SELECT WEEK(SALES_DATE) AS WEEK,


DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SALES_PERSON, SUM(SALES) AS UNITS_SOLD
FROM SALES
WHERE WEEK(SALES_DATE) = 13
GROUP BY CUBE ( WEEK(SALES_DATE),
DAYOFWEEK(SALES_DATE), SALES_PERSON )
ORDER BY WEEK, DAY_WEEK, SALES_PERSON

46
WEEK DAY_WEEK SALES_PERSON UNITS_SOLD
----------- ----------- --------------- -----------
13 6 GOUNOT 11
13 6 LEE 12
13 6 LUCCHESSI 4
13 6 - 27
13 7 GOUNOT 21
13 7 LEE 21
13 7 LUCCHESSI 4
13 7 - 46
13 - GOUNOT 32
13 - LEE 33
13 - LUCCHESSI 8
13 - - 73
- 6 GOUNOT 11
- 6 LEE 12
- 6 LUCCHESSI 4
- 6 - 27
- 7 GOUNOT 21
- 7 LEE 21
- 7 LUCCHESSI 4
- 7 - 46
- - GOUNOT 32
- - LEE 33
- - LUCCHESSI 8
47 - - - 73
GROUPING SETS
• On indique explicitement les groupes
– entre (..)
• le groupe () est constitué de toute la table
SELECT p#, sum (qty) as tot-qty from S,SP, P
WHERE SP. P# = P.P# AND SP. S# = S.S#
GROUP BY GROUPING SETS ((P#, [Link], COLOR), (P#, COLOR),
())
HAVING tot-qty > 100 ;

• Problèmes avec des nuls que l’on verra plus tard

48
GROUPING SETS
SELECT SALES_PERSON,
MONTH(SALES_DATE) AS MONTH,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY GROUPING SETS ( (SALES_PERSON,
MONTH(SALES_DATE)),
()
)
ORDER BY SALES_PERSON, MONTH

49
GROUPING SETS

SALES_PERSON MONTH UNITS_SOLD


--------------- ----------- -----------
GOUNOT 3 35
GOUNOT 4 14
GOUNOT 12 1
LEE 3 60
LEE 4 25
LEE 12 6
LUCCHESSI 3 9
LUCCHESSI 4 4
LUCCHESSI 12 1
- - 155
50
GROUPING SETS & ROLLUP
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
MONTH(SALES_DATE) AS MONTH,
REGION,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY GROUPING SETS
( ROLLUP( WEEK(SALES_DATE),
DAYOFWEEK(SALES_DATE) ),
ROLLUP( MONTH(SALES_DATE), REGION ) )
ORDER BY WEEK, DAY_WEEK, MONTH, REGION
51
WEEK DAY_WEEK MONTH REGION UNITS_SOLD
----------- ----------- ----------- --------------- -----------
13 6 - - 27
13 7 - - 46
13 - - - 73
14 1 - - 31
14 2 - - 43
14 - - - 74
53 1 - - 8
53 - - - 8
- - 3 Manitoba 22
- - 3 Ontario-North 8
- - 3 Ontario-South 34
- - 3 Quebec 40
- - 3 - 104
- - 4 Manitoba 17
- - 4 Ontario-North 1
- - 4 Ontario-South 14
- - 4 Quebec 11
- - 4 - 43
- - 12 Manitoba 2
- - 12 Ontario-South 4
- - 12 Quebec 2
- - 12 - 8
- - - - 155
- - - - 155
52
Rollup, Cube, Grouping Sets
sous MsAccess
• Il y en a pas
• On peut simuler ces manipulations en
utilisant
– GROUP BY
– UNION ALL
– ORDER BY
• Peut être laborieux pour le CUBE
53
ROLLUP
ROLLUP

Remarquez le « null as city»

54
ROLLUP
ROLLUP

55
ROLLUP
ROLLUP

Une solution pour


l ambiguïté
de certains nuls ?

56
Et le CUBE ?
Fonctions scalaires
• S ’appliquent aux valeurs individuelles
– d ’attributs
– d agrégations SQL
• Il y a plusieurs catégories
– mathématiques
– financières
– chaînes de caractères
– ….
• Varient entre les dialectes
– MsAccess possède UCASE, pas DB2
– DB2 possède LOG10, pas MsAccess
57
Fonctions scalaires
• Peuvent s’imbriquer
– contrairement aux agrégats SQL

SELECT log((sum([qty]^2)^(1/2))) as exemple


FROM SP group by [p#]
having int(log(sum([qty]))) = 5

exemple
5.708757640082
79
5.991464547107
58 98
Tabulations
Tabulations Croisées
Croisées
(Crosstab
(Crosstab queries)
queries)
• Présentent les résultat sous forme habituelle de
feuilles de calculs
– Les agrégats SUM, AVG.. de GROUP BY et les valeurs
individuelles en même temps
– Impossible avec SQL standard
• Transforment les valeurs d'attributs en attributs
– Par exemple
• les valeurs de P# trouvés pour un même S#
deviennent les attributs P1, P2,...
• les valeurs de P1, P2.. sont les QTY (par ex.)
correspondants

59
Tabulations
Tabulations Croisées
Croisées

TRANSFORM Sum([Link])
SELECT SP.[S#], Sum([Link]) AS [Row
Summary]
FROM SP
GROUP BY SP.[S#]
PIVOT SP.[p#];

Nouvelles
colonnes
60
Tabulations
Tabulations Croisées
Croisées

S# Total Qty p1 p2 p3 p4 p5 p6

s1 1300 300 200 400 200 100 100


s2 700 300 400
s3 200 200
s4 900 200 300 400

L'intitulé Total Qty est mis par défaut par MsAccess

61
Tabulations
Tabulations Croisées
Croisées
• La fonction agrégat dans la clause
TRANSFORM est obligatoire
– bien que SUM(QTY) = AVG(QTY) = QTY
– mais, COUNT(QTY) = 1
• On peut générer une expression de valeur
TRANSFORM SUM(0.5*QTY) AS [Q2]
SELECT Sum(SP.[Q2]) AS [Qte tot. dans 1 mois], Avg(P.
[Q2]) AS [Qte moy. dans 1 mois]
FROM SP
GROUP BY SP.[S#]
PIVOT SP.[p#];
62
Tabulations
Tabulations Croisées
Croisées
On peut utiliser la clause WHERE
WHERE P# IN ('P1', 'P2')
• Alors les fonctions ne calculent les agrégats que sur P1 et
P2.
• On peut aussi restreindre la tabulation seulement
PIVOT SP.[p#] IN ('P1', P2')
• Mais, cette clause n'affecte pas les calculs des agrégats
 Peut-on appliquer la clause ORDER BY ?
 Si oui, quel serait l’effet sur les valeurs pivotées ?
 Peut-on ordonner par rapport à une fonction agrégat ?
 Comme on a fait pour les requêtes à GROUP BY ?
 Peut-on appliquer la clause HAVING ?

63
Clauses COMPUTE & FOR BROWSE
(SQL Server 6.5 et 7)
• expression générale de sélection:
SELECT [DISTINCT] attribut(s)
FROM table(s)
[WHERE condition]
[GROUP BY [ROLLUP | CUBE] field(s) ]
[HAVING condition ]
[ORDER BY attribute(s)]
[COMPUTE row-agg (colonne), [row-agg (colonne)]...
BY (colonne), [(colonne)]...]
[FOR BROWSE]
Clause FOR BROWSE permet une MAJ de données
dynamiquement visualisées

64
Compute
Compute
•• select
selecttitle,
title,type,
type,price,
price,advance
advance
from
fromtitles
titleswhere
whereytd_sales
ytd_salesisisnot
notnull
null
order
orderbybytype
typedesc
desc
compute
computeAVG(price),
AVG(price),SUM(advance)
SUM(advance)by
bytype
type
compute
computeSUM(price),
SUM(price),SUM(advance)
SUM(advance)
go
go
•• title
title type
type price
price advance
advance
fifty
fiftyyears...
years... trad_cook
trad_cook 11.95
11.95 4000
4000
Onions..
Onions.. trad_cook
trad_cook 20.95
20.95 7000
7000
Sushi...
Sushi... trad_cook
trad_cook 14.99
14.99 8000
8000
avg
avg
15.96
15.96 sum
sum
19000
19000
title
title type
type price
price advance
advance
Computer...
Computer... psychology
psychology 21.95
21.95 7000
7000
...... psychology
psychology ....
.... ....
....
avg
avg
15.96
15.96 sum
sum
19000
19000
sum
sum sum
sum
65 236.00 88400
236.00 88400
Fermeture transitive (DB2)
• Considère la table COURS (CNOM, PNOM, NMIN)
contenant les cours et leur pré-requis avec les notes minimales pour
l ’admission en cours
– ex. (BDs, Str-Ph, 15)
• Tout PNOM est une clé étrangère avec CNOM comme clé primaire
ailleurs dans COURS
• Un cours peut avoir plusieurs pré-requis
• Trouver les noms de tous les pré-requis de cours CNAME = ‘ BDs ’
– y compris les pré-requis de pré-requis etc.
• C ’est le calcul de la fermeture transitive
• Impossible encore sous MsAccess, SQL Server =< 6.5, Oracle,
Informix…
• Possible sous DB2, à partir de V 5.0

66
Fermeture transitive (DB2)
WITH PRQ (CNOM, PNOM) AS
((SELECT CNOM, PNOM
FROM COURS Requête
WHERE CNOM = ‘ BDs ’) initiale
UNION ALL
(SELECT [Link], [Link]
FROM PRQ AS P, COURS AS C Requête
WHERE [Link] = [Link]))
récursive
SELECT DISTINCT PNOM FROM PRQ
Requête finale
• La requête récursive s exécute tant que la sélection dans
PRQ avec PRQ courant n’est pas vide.

67
Fermeture transitive (DB2)

Requête initiale
COURS
(préreq. de BDs
1ere exécution de la
Requête récursive
(préreq. de BDs)
2eme exécution de la
Requête récursive
(préreq. de préreq. de
BDs)
3eme exéc. de la RR
(préreq. de préreq. de
préreq. de BDs) etc.
68
Fermeture transitive (DB2)

CNOM PNOM NMIN


CNOM PNOM
BDs StPh 15
BDs StPh
BDs LPrg 12
Bds Lprg StPh InfG 13
InfG Math 11
Lprg InfG 12

69
Fermeture transitive (DB2)

CNOM PNOM NMIN


CNOM PNOM
BDs StPh 15
BDs StPh
BDs LPrg 12
Bds Lprg StPh InfG 13
InfG Math 11
StPh InfG
Lprg InfG 12
Lprg InfG

70
Fermeture transitive (DB2)

CNOM PNOM NMIN


CNOM PNOM
BDs StPh 15
BDs StPh
BDs LPrg 12
Bds Lprg StPh InfG 13
InfG Math 11
StPh InfG
Lprg InfG 12
Lprg InfG

InfG Math
InfG Math

71
Fermeture transitive (DB2)
CNOM PNOM NMIN
CNOM PNOM
BDs StPh 15
BDs StPh
BDs LPrg 12
Bds Lprg StPh InfG 13
InfG Math 11
StPh InfG
Lprg InfG 12
Lprg InfG

InfG Math
InfG Math

PNOM
StPh
InfG
Math
72
Fermeture Transitive Oracle
Clause
Connect By

Calcul d'un arbre


généalogique
"Oracle 8i The Complete
Reference" Loney, K.,
Koch, G., Osborne, 2000

73
Fermeture Transitive Oracle

Clause
Connect By

74
75
Fermeture transitive
? Trouver aussi les notes minimales nécessaires
 Autres applications
 Tous les subordonnées d ’un chef
EMPL (E#, ENOM, CHEF)
 Toutes les composantes PMIN de pièces composées
COMP (PMAJ#, PMIN#)
 Tous les descendants / ascendants d ’une personne
 Toutes les participations d ’une entreprise
 Limite d’application
 Pas de cycles entre les attributs sélectionnes
 pour que l ’on a la fermeture transitive (point fixe)
 ex. pas de participations réciproques
76
Fermeture transitive
MsAccess
• Il faut simuler
– par CREATE TABLE PRQ
• avec la création de clé primaire
– Insert into PRQ .. select … from COURS...
– Insert into PRQ .. select … from PRQ, COURS…
• exécuté interactivement ou par programme jusqu'à ce
que le point fixe est atteint
– Select … FROM PRQ…
• A compléter par vos soins
77
Conclusion
• Un champs nouveau
– encore grandement ouvert à la recherche
• La connexion logique avec le domaine des SGBD
n'est pas toujours claire
• Un point de vue sur cette connexion
– On prend un champs classique d'analyse de donnés et on
s'intéresse
• aux performances pour une grande quantité de données
• Aux extensions correspondantes de SQL

78
FIN
79

Vous aimerez peut-être aussi