Vous êtes sur la page 1sur 79

Les SGBDs Supports de

Dcisions
Witold Litwin

1
Besoin
Utilisation massive de fonctions agrgats
celles de SQL
autres
dans le langage hte
Exemples
La moyenne de ventes
Le commercial du jour
La corrlation entre certaines attributs
2
Problmes nouveaux
Parcours frquent de tous les tuples
d'une grande table
d'une collection de tables joindre
L'opration peut prendre beaucoup de temps
quel que soit l'optimisation de chemins d'accs
Des requtes peuvent tre impossible formuler
en SQL seul
Classement par rang selon les valeurs de T.a
Corrlation entre T.a et T.b ?
Les attributs les plus corrls ?

3
Solutions
Nouvelles fonctions de SQL
Fonctions agrgats
Rank, Rollup, Cube, Covariance, Correlation
Fonctions scalaires
Nouveaux concepts
Donne multidimensionnelle
Espaces des agrgations
Espace des influences
Espace des variations

4
Solutions
Nouvelles techniques d'implmentation
Calcul parallle et scalable
Pr-calcul partiel ou total de requtes
chantillonnage
Sparation de calculs en plusieurs bases et
systmes

5
Solutions
Nouveau types de SGBD
Entrepts de Donnes
Data Warehousing
Fouille de Donnes
Data Mining (DM)
Analyse en ligne
Online Analytical Processing (OLAP)
Les SGBD "traditionnels" sont ds lors souvent appels
Online Transaction Processing (OTPS) Systems
Les nouveaux constituent les
Systmes de Support de Dcisions
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 renomms pour SQL Server 2000
Oracle Express
7
OLAP traditionnel

Prix de produit 123

Espace
des Donnes

Support
de Decisions

8
OLAP traditionnel

Prix de produit 123


Vente par
Espace (OLAP) produit et
des Agrgations par mois
Espace
des Donnes

Support
de Decisions

9
OLAP traditionnel

Prix de produit 123


Vente par
Espace (OLAP) produit et
Des Agrgations par mois
Espace
des Donnes
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 Agrgations par mois
Espace
des Donnes
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 Donnes Concepts

Relations Ensembles
Agrgations Arithmtique
Influences Logique et Stats.
Variations Calcul diffrentiel

12
Technologie
BDs parallles, distribues, scalables
Jointures pr-calcules
intgrit rfrentielle
Vues matrialises
Algorithmes statistiques
Algorithmes dcisionnels
revus pour l'application aux BDs
Systmes multibases
Entrepts de donnes
Data warehousing
13
Vue matrialise 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 requtes sont reformules contre la vue


d'une manire transparente pour l'usager
select * from T where prod = 'p1' ;

14
Vue matrialise T
sum prod
30 p1
50 p2
27 p3
Problme gnral
Cohrence entre la vue et ses tables de
base
Algorithme de MAJ
pour toute nouvelle vente de Produit p
add le montant T.sum
where prod = p ;

15
Vue matrialise
La cohrence peut tre implante par
des dclencheurs
des procdures stockes (stored procedures)
Exercise
Que faire pour la requte
select avg (montant) prod from Ventes
groupby produit

Note : plusieurs solutions existent


16
Problme de scalabilit
On peut difficilement maintenir un grand
nombre de vues matrialises
il faudrait executer des dizaines de
dclencheurs
et ne pas handicaper les perf. OLTP
et comment faire pour les avortements et la
concurrence ?

17
Axes de solutions
Systmes multiordinateurs
Cohrence souple (ang. loose) entre les
tables de bases et les vues matrialises
la somme de ventes peut tre 0.05 % inexacte
pendant 10 sec., de temps en temps, sans que le
DBA se fasse gronder
ncessit dans les systmes mobiles
Les MAJ sont propages en asynchrone
18 aprs le Commit
Les statistiques
Correlations
DFs notamment (correlation = 1)
Regressions
Nues Dynamiques
Diday
Analyse factorielle & multi-dimensionnelle en
gnral
Benzecri
Aide au diagnostic
19 Bayes
OLAP / Data Mining
OLAP
Les agrgations demandes sont connues
On peut formuler les requtes SQL
ou SQL imbriqu
Data Mining
on ne sais pas a priori quoi demander
quelles sont les corrlations parmi les attributs de
Ventes ?
Cette dichotomie est floue
20
Data Mining dans un espace des
influences
Le rsultat peut tre attendu sous forme
d'un graphique (business graphics)

21
Data Mining dans un espace des
influences
Le rsultat 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
22 Qtr Qtr Qtr Qtr
Data Mining dans un espace des
influences
Le rsultat 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 rsultat peut tre attendu sous forme
d'une rgle logique
if
customer.age < 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 problmes d'infrence de


rgles
la logique
BDs actives
BD de connaissances
BDs dductives

25
Mesures dans un espace des
variations
On observe les variations selon des dimensions
variation de cours de bourse
depuis une semaine, une anne, 1 Janv. 1996...
variation de ventes (ang. lift)
selon la campagne de promotion
selon la saison
etc
Prcalcul 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 rsultats distincts
l'tat de l'existant
dcouverte, explication, confirmation
l'analyse de la tendance
prdictions
Lex deux aspects sont encore en tat de
recherche ou, au mieux, en dveloppent
avanc
28
Schma en
toile
Table de faits
En gnral trs
grande

Tables de
dimensions
En gnral trs
petites
Liens cl primaire /
cl trangre

29
Architecture d'entrept de donnes IBM

30
Fonctions Agrgat 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 paramtres de la droite de rgression entre des attributs ou des
expressions de valeur
Rank, Dense_Rank
Rank en prsence de duplicata : 1,2,2,4,4,6
Dense_Rank en prsence de duplicata : 1,2,2,3,3,4
31
Covariance
Soit avgexp1 le rsultat de AVG(expression1) et soit
avgexp2 le rsultat de AVG(expression2),
Alors COVARIANCE(expression1, expression2) est:
AVG( (expression1 - avgexp1) * (expression2 - avgexp2 )

SELECT COVARIANCE(SALARY, BONUS)


FROM EMPLOYEE
WHERE WORKDEPT = 'A00'

32
Correlation
Dfinition :

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

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

33
Fonctions Agrgat pour OLAP
DB2
Fonctions spcifiques DB2 Data Warehouse
Center:
Analyse de la variance (ANOVA)
Distributions de Fisher-F
Valeur P
Sous-totaux par priode de temps
Test de Chi-carr
Statistique T pour n paires de valeurs et partir du
coeff. de corrlation r
T = r * ((n 2 ) / (1 - r 2 ))0.5
T 0 indique une corrlation entre les attributs
34
Fonctions Agrgat 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 OMalley 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 DailySales.Item =
Items.Item
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)* Items.ItemCost)
as Profit FROM DailySales, Items
WHERE DailySales.Item = Items.Item
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 requtes 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#, S.CITY, COLOR)
HAVING tot-qty > 100 ;
Problmes avec des nulls que lon 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 requtes 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#, S.CITY, COLOR)
HAVING tot-qty > 100 ;
Problmes avec des nuls que lon verra plus tard
Opration bien plus chre que Rollup
2N requtes gnres au lieu de N, pour N attributs
45
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#, S.CITY, COLOR), (P#, COLOR),
())
HAVING tot-qty > 100 ;

Problmes avec des nuls que lon 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

Remarquez le null as city

54
ROLLUP

55
ROLLUP

Une solution pour


l ambigut
de certains nuls ?

56
Et le CUBE ?
Fonctions scalaires
S appliquent aux valeurs individuelles
d attributs
d agrgations SQL
Il y a plusieurs catgories
mathmatiques
financires
chanes de caractres
.
Varient entre les dialectes
MsAccess possde UCASE, pas DB2
DB2 possde LOG10, pas MsAccess
57
Fonctions scalaires
Peuvent simbriquer
contrairement aux agrgats SQL

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


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

exemple
5.70875764008279
5.99146454710798

58
Tabulations Croises
(Crosstab queries)
Prsentent les rsultat sous forme habituelle de
feuilles de calculs
Les agrgats SUM, AVG.. de GROUP BY et les
valeurs individuelles en mme temps
Impossible avec SQL standard
Transforment les valeurs d'attributs en attributs
Par exemple
les valeurs de P# trouvs pour un mme S#
deviennent les attributs P1, P2,...
les valeurs de P1, P2.. sont les QTY (par ex.)
correspondants
59
Tabulations Croises

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

60
Tabulations Croises

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 dfaut par MsAccess

61
Tabulations Croises

La fonction agrgat dans la clause


TRANSFORM est obligatoire
bien que SUM(QTY) = AVG(QTY) = QTY
mais, COUNT(QTY) = 1
On peut gnrer 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 Croises
On peut utiliser la clause WHERE
WHERE P# IN ('P1', 'P2')
Alors les fonctions ne calculent les agrgats 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
agrgats
Peut-on appliquer la clause ORDER BY ?
Si oui, quel serait leffet sur les valeurs pivotes ?
Peut-on ordonner par rapport une fonction agrgat ?
Comme on a fait pour les requtes GROUP BY ?
Peut-on appliquer la clause HAVING ?
63
Clauses COMPUTE & FOR BROWSE
(SQL Server 6.5 et 7)
expression gnrale de slection:
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 donnes
dynamiquement visualises

64
Compute
select title, type, price, advance
from titles where ytd_sales is not null
order by type desc
compute AVG(price), SUM(advance) by type
compute SUM(price), SUM(advance)
go
title type price advance
fifty years... trad_cook 11.95 4000
Onions.. trad_cook 20.95 7000
Sushi... trad_cook 14.99 8000
avg
15.96 sum
19000
title type price advance
Computer... psychology 21.95 7000
... psychology .... ....
avg
15.96 sum
19000
sum sum
65 236.00 88400
Fermeture transitive (DB2)
Considre 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 trangre 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 Requte
WHERE CNOM = BDs ) initiale
UNION ALL
(SELECT C.CNOM, C.PNOM Requte
FROM PRQ AS P, COURS AS C rcursive
WHERE C.CNOM = P.PNOM))
SELECT DISTINCT PNOM FROM PRQ Requte finale

La requte rcursive s excute tant que la slection


dans PRQ avec PRQ courant nest pas vide.
67
Fermeture transitive (DB2)

Requte initiale COURS


(prreq. de BDs
1ere excution de la
Requte rcursive
(prreq. de BDs)
2eme excution de la
Requte rcursive
(prreq. de prreq. de
BDs)
3eme exc. de la RR
(prreq. de prreq. de
prreq. 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
StPh InfG InfG Math 11
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
StPh InfG InfG Math 11
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
StPh InfG InfG Math 11
Lprg InfG 12
Lprg InfG

InfG Math
InfG Math

PNOM
StPh
InfG
Math
72
Fermeture Transitive Oracle
Clause
Connect By

Calcul d'un arbre


gnalogique
"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 ncessaires
Autres applications
Tous les subordonnes d un chef
EMPL (E#, ENOM, CHEF)
Toutes les composantes PMIN de pices composes
COMP (PMAJ#, PMIN#)
Tous les descendants / ascendants d une personne
Toutes les participations d une entreprise
Limite dapplication
Pas de cycles entre les attributs slectionnes
pour que l on a la fermeture transitive (point fixe)
ex. pas de participations rciproques
76
Fermeture transitive
MsAccess
Il faut simuler
par CREATE TABLE PRQ
avec la cration de cl primaire
Insert into PRQ .. select from COURS...
Insert into PRQ .. select from PRQ, COURS
excut interactivement ou par programme jusqu' ce
que le point fixe est atteint
Select FROM PRQ
A complter 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 donns et on
s'intresse
aux performances pour une grande quantit de donnes
Aux extensions correspondantes de SQL

78
FIN
79

Vous aimerez peut-être aussi