Manipulations Multibases et Distribuées ( Partie 2)
description
Transcript of Manipulations Multibases et Distribuées ( Partie 2)
![Page 2: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/2.jpg)
2
Manipulations Multibases et Distribuées (Kandinsky: Ligne avec Accompagnement, 1937 )
![Page 3: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/3.jpg)
3
Manipulations Multibases et Distribuées
![Page 4: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/4.jpg)
4
MSQL(Litwin, Abdellatif, Nicolas, Zeroual, 1989)
Une extension multibase de SQL Permet des manipulations multibases non-
procédurales requêtes MSQL impossibles à formuler en SQL Une requête MSQL peut remplacer plusieurs requêtes SQL
Offre des fonctions spécifiques pour l'env. MBD– adresser des relations dans les bases différentes– manipuler les données hétérogènes– créer vues multibases– transférer les données (et les schémas) entre les bases – définir les dépendances multibases (triggers)
![Page 5: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/5.jpg)
5
MSQL : exemple
SIL SIL SIL
SGCIC BNP
Vue
SIL = SchémaInterne Logique
![Page 6: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/6.jpg)
6
Schémas conceptuels(le multischéma)
DB bnp : br (br#, brname, street, street#, city, zipcode, tel)
account (acc#, cl#, balance, br#)client (cl#, clname, cltel, cltype, street, street#, city, zipcode)spe-acc (acc#, br#, cl#, balance, curr)
DB sg : branch (bra#, braname, street, s#, town, zip, t#, class)
acc (acc#, bra#, c#, balance)client (c#, cname, ct#, ctype, street, s#, town, zip)
DB cic : br (br#, brname, street, street#, city, zipcode, tel)
account (ac#, br#, cl#, balance, open_date)client(cl#, clname, cltel, cltype, street, street#, city, zipcode)
![Page 7: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/7.jpg)
7
Hétérogénéité sémantiquedans les banques
Les mêmes noms peuvent désigner des données différentes– les banques sont autonomes et ne partagent pas les
succursales (branches) Différents noms peuvent désigner les mêmes
données– un même client, une même ville ou rue..
La valeur d'une clé n'est valable que dans une base– comment identifier un même client de deux banques ?
![Page 8: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/8.jpg)
8
Commandes MSQL
CREATE TABLE CREATE DATABASE CREATE MULTIDATABASE CREATE VIEW ALTER TABLE ALTER VIEW ALTER MULTIDATABASE DROP TABLE DROP DATABASE DROP MULTIDATABASE DROP VIEW
![Page 9: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/9.jpg)
9
MSQL CREATE DATABASE
> MSQLCREATE DATABASE boulogne ;
CREATE DATABASE |.com.org.user.boulogne ;
CREATE MULTIDATABASE Banks (bnp cic sg );
USE Banks;CREATE DATABASE boulogne FROM bnp ;
Champs dela requête
![Page 10: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/10.jpg)
10
MSQLCREATE TABLE
use banks ;CREATE TABLE boulogne.pret FROM bnp.pret ;
CREATE TABLE ch_en_bois (Chq# INT, Montant_Euro CURRENCY [€] .... );
On a crée quatre tables :bnp. ch_en_bois, cic. ch_en_bois... boulogne. ch_en_bois
ALTER BanksINCLUDE Vernes REMOVE cic ;
Unité demesure
![Page 11: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/11.jpg)
11
MSQL Requêtes élémentaires
USE bnp cicSELECT bnp.br.brname, cic.br.braname, bnp.br.street
FROM bnp.br, cic.brWHERE bnp.br.street = cic.br.street ;
bnp.br.brname cic.br.braname bnp.br.street
vaugirard 3 bd. montparnasse vaugirard
![Page 12: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/12.jpg)
12
Requêtes élémentairesNote historique
• Préfixage par les noms de bases était inconnu de SQL jusqu’à 1989.
• La 1ère implémentation à été faite à l’INRIA vers 1985• Prototype MRDSM
• Sybase a été le 1èr SGBD commercial à l’offrir• Vers 1988
• DB2 ne l’a toujours pas• Le standard SQL l’a pris en compte vers 1993
• SQL Access Group présidé par Jim Gray• La syntaxe de requêtes élémentaires continue de varier
néanmoins avec les dialectes• Oracle par exemple utilise le postfixage (voir plus loin)
![Page 13: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/13.jpg)
13
MSQL Base par défaut
USE bnpSELECT br.brname, cic.br.brname, br.street
FROM br, cic.brWHERE br.street = cic.br.street ;
br.name cic.br.brname br.street
vaugirard 3 bd. montparnasse vaugirard
Les tables de la base par défaut sont sans préfixe
![Page 14: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/14.jpg)
14
MSQL Requêtes élémentaires sans noms de BDs
USE bnp sgSELECT br.brname, branch.braname, br.street
FROM br, branchWHERE br.street = branch.street ;
br.name branch.braname br.street
vaugirard 3 bd. montparnasse vaugirard
Les noms (propres) de tables sont uniques dans le champ de la requête
![Page 15: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/15.jpg)
15
Mises à jourUSE (bnp b) sg ; UPDATE accountSET account.balance = account.balance + 500
WHERE account.balance > acc.balanceAND b.client.clname = sg.client.cname AND
b.client.street = sg.client.street ;
Que veut dire cette requête ?
![Page 16: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/16.jpg)
16
Requêtes multiplesUSE BanksSELECT *
FROM br%WHERE street = 'champs elysées' ;
![Page 17: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/17.jpg)
17
Requêtes multiplesUSE BanksSELECT *
FROM br%WHERE street = 'champs elysées' ;
USE bnpSELECT *FROM brWHERE street = 'champs elysées' ;
USE sgSELECT *FROM branchWHERE street = 'champs elysées' ;
USE cicSELECT *FROM brWHERE street = 'champs elysées' ;
![Page 18: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/18.jpg)
18
Résultat (une multitable)bnp.br
br# brname street street# city zipcode tel123 sembat champs elysées 130 Boulogne 92100 12 34456 sevres champs elysées 120 Sevres 92105 12 56
cic.brbra# braname street st# town zip t# class123 jaures champs elysées 153 Boulogne 92100 3214 A765 sevres champs elysées 20 Sevres 92105 1243 B
sg.branchbr# brname street s# city zipcode tel
abc sembat champs elysées 110 Boulogne 92100 12.45a1f gare champs elysées 30 Chaville 92110 34.56
![Page 19: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/19.jpg)
19
Mises à Jour MultiplesUse Banks
Update cl*set street = 'Charles de Gaulle"where street = 'Etoile'
Use Banks vital cicUpdate cl*set street = 'Charles de Gaulle"where street = 'Etoile'
MSQL transaction semantics is > ACID– peut inclure COMP (compensation)
![Page 20: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/20.jpg)
20
Variables sémantiques dans MSQLuse bnp sg
let x be town cityselect * from b%where x = 'Paris' and street = 'r. de Rivoli'
![Page 21: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/21.jpg)
21
Variables sémantiques dans MSQLuse bnp sg
let x be town cityselect * from b%where x = 'Paris' and street = 'r. de Rivoli'
use bnpselect * from brwhere town = 'Paris' and street = 'r. de Rivoli' ;use sgselect * from branchwhere city = 'Paris' and street = 'r. de Rivoli' ;
![Page 22: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/22.jpg)
22
Variables sémantiques dans MSQLuse bnp sg
let x be town cityselect * from b%where x = 'Paris' and street = 'r. de Rivoli'
Alternativement:
use bnp sglet x be to% cityselect * from b%where x = 'Paris' and street = 'r. de Rivoli'
![Page 23: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/23.jpg)
23
Variables sémantiques dans MSQL
use bankslet x be town citylet y be sg bnpselect X.* from y.b% X, cic.b% Ywhere Y.x = 'Paris' and
Y.street = X.street and X.x = 'Paris';
Quelle est la sémantique de cette requête ? Est-ce que sa décomposition "naturelle" en requêtes
élémentaires, selon l'évaluation de variables sémantiques, est optimale ?
Sinon, quelle est celle potentiellement meilleure ?
![Page 24: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/24.jpg)
24
Algèbre multirelationnelle Non, la décomposition naturelle n'est pas
optimale– la sélection dans cic est répétée inutilement
il faut la faire d'abord, puis la jointure il faut un outil algébrique formel pour les
requêtes multiples pour résoudre de tels cas d'une manière générale– l'algèbre multirelationnelle
Grant, Litwin, Selis, Roussopoulos. An Algebra and Calculus for Relational Multidatabases. The VLDB Journal, Vol. 2, No. 2, April 1993, 153-171.
![Page 25: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/25.jpg)
25
Homogénéisation de nomsLes labels
USE Banks ;LET t BE tel t#SELECT %name branch_name, t tel#, s%# street#FROM br% brWHERE street = ‘Champs Elysées’ ;
Le résultat :la multitable:
{( bnp.br.branch_name, bnp.br.tel#, bnp.br.street# ), ( sg.br.branch_name, sg.br.tel#, sg.br.street# )( cic.br. branch_name, cic.br.tel#, cic.br.street# )}
![Page 26: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/26.jpg)
26
Vues multibases
USE my_bank bnp sg ;CREATE VIEW my_bank.same_street_branches
(bnp_name, bnp_s#, sg_name, sg_s#, street, city)AS SELECT brname, street#, braname, s#, street, city FROM bnp.br b, sg.branch s
WHERE b.street = s.street AND b.city = s.town ;
Une vue partielle de bases bnp et sg dans la base my_bank
my_bankbnp
sg
Les vues dans my_bankpeuvent-être considérées un Schéma d'Importation
![Page 27: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/27.jpg)
27
Mots-clés et Fonctions Agrégats Mots-clés et Fonctions Agrégats de SQL
– par définition» DISTINCT, GROUP BY, ORDER BY» COUNT, AVG, SUM..
– opèrent sur chaque table d'une multitable Leur extensions aux multitables
» MDISTINCT, MCOUNT, MGROUP BY, MORDER BYMAVG, MSUM...
– opérent sur la totalité de la multitable
![Page 28: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/28.jpg)
28
ExempleUSE Banks
SELECT COUNT (*)FROM br% brWHERE street = 'champs elysées' ;
![Page 29: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/29.jpg)
29
ExempleUSE Banks
SELECT COUNT (*)FROM br% brWHERE street = 'champs elysées' ;
bnp.br2
cic.br2
sg.br2
![Page 30: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/30.jpg)
30
ExempleUSE Banks
SELECT MCOUNT (*)FROM br% brWHERE street = 'champs elysées' ;
![Page 31: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/31.jpg)
31
ExempleUSE Banks
SELECT MCOUNT (*)FROM br% brWHERE street = 'champs elysées' ;
br6
![Page 32: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/32.jpg)
32
Fonctions Agrégats MERGE ON
forme un tuple de tous les tuples d'un même objet dans la multitable sélectionnée– Utilise les jointures externes
Trouve les millionnaires dans Banks et forme un tuple pour chaque millionnaire trouvéUSE Banks ;
LET x.y BE clname.cltel cname.ct#LET z BE Banks.*SELECT *FROM z.a% WHERE z.a%.c%# = z.client.c%#AND z.a%.balance > 1 000 000MERGE ON x y ;
![Page 33: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/33.jpg)
33
Fonctions Agrégats MERGE ON
USE Banks ;LET x.y BE clname.cltel cname.ct#LET z BE Banks.*SELECT *FROM z.a% WHERE z.a%.c%# = z.client.c%#AND z.a%.balance > 1 000 000MERGE ON x y ;
nuls
nulsnuls
![Page 34: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/34.jpg)
34
Fonctions Agrégats NAME
Transforme un nom (de table, d'attribut..) en valeur d'attribut
USE Banks ;LET x.y BE br.city branch.townSELECT %name branch_name, NAME (.x) bankFROM xWHERE y = 'Nice' UNION * ;
Note: L'union * réunit les tables de la multitable sélectionnée Le résultat c'est la table avec le schéma :
branch_name bank
![Page 35: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/35.jpg)
35
Fonctions Agrégats CHOOSE
Choisit au plus n tuples parmi ceux trouvés par la requête– les 1èrs trouvés, comme fait la fonction TOP (défaut)– au hasard pur (RND)– ceux qui n'ont pas été choisi à la précédente exécution de la requête dans la
même transaction (NEW)– de préférence dans les bases listées et en ordre– en choisissant au plus m tuples partageant les valeurs des attr. dans la liste B,
supposée clé globale d'un objet.– dans la limite de t unités de temps
» t est prioritaire sur n
CHOOSE (n, (m, <A>) [<B>] ) [RND | NEW]
<A> ::= <liste d'attr.<B> ::= <liste de BDs>
![Page 36: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/36.jpg)
36
Fonctions Agrégats CHOOSE
Choisis UN millionnaire d'une manière aléatoireUSE Banks ;
SELECT c.*FROM c% c, a% aWHERE c.c%# = a.c%# AND a.a%# > 1.000.000CHOOSE () RND ;
Fonction très importante dans l'environnement MBD– surcharge d'information
![Page 37: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/37.jpg)
37
Fonctions Agrégats TIMEOUT
Fixe la durée maximale de la requête– la requête arrivant au time-out est considérée
exécutée avec succèsTIMEOUT (t [unité]) ;<unité> := ms | s | m | h | ds - secondes (défaut)
USE BanksSELECT *FROM br%WHERE street = 'champs elysées' TIMEOUT (10) ;
![Page 38: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/38.jpg)
38
Fonctions Agrégats POST
Rend continuelle une requête – On manipule tout tuple trouvé durant le temps de vie– Même ceux crées après le lancement de la requête– On peut limiter son temps de vie par TIMEOUT
USE Immo LaCentrale Orpi ;SELECT *FROM logem%WHERE prix < 1,000,000 AND Ville = 'Paris' POST ;
![Page 39: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/39.jpg)
39
Fonctions Agrégats ESTIMATE
Calcule les coûts de la requête avant son exécution et peut lancer l'exécution après l'autorisationESTIMATE (type, price, time, count, size, report)
[WITH EXEC_PROMPT]
type d'estimation: – exact (peut être long à calculer)– approximatif
prix de la requête (en $, FF...). temps de complétion nombre de tuples taille du résultat, en octets. rapport sur l'estimation elle-même
– la précision...
![Page 40: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/40.jpg)
40
Privilèges dans MSQLUSE bnp sg cic ;GRANT SELECT ON client TO Nicolas Abdellatif ;
client est une multitable :client = (bnp.client, sg.client, cic.client)
GRANT ALL ON etoile.account TO Nicolas Abdellatif FROM bnp.account ;
GRANT ALL ON etoile.account TO Nicolas FROM Zeroual ON bnp.account ;
![Page 41: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/41.jpg)
41
Requêtes interbases Transfèrent les données entre des BDs La source et la cible de la requête sont des multitables Conflits possibles entre les données transférées et celles existantes dans la cible
INSERT...
![Page 42: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/42.jpg)
42
Requêtes interbases INSERT
– insère les tuples sélectionnés» sauf ceux dont la clé est déjà dans la cible
STORE– insère les tuples sélectionnés
» en remplaçant ceux dont la clé est déjà dans la cible REPLACE
– insère les tuples sélectionnés et delete le reste de la cible UPDATE
– met à jour les tuples sélectionnés dans la cible par les valeurs de tables sources
COPY– copie les tuples et le schéma de la source
![Page 43: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/43.jpg)
43
MSQL Il y d'autres fonctions intéressantes
– On verra certaines plus tard– voir aussi l'article
MSQL : A multidatabase Language. Information Science Journal : Special Issue on Database Systems, 48, 2, (July 1989).
![Page 44: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/44.jpg)
44
Eléments de MSQL dans SGBDs commerciaux
La majorité de SGBDs sont des SGMB– Au mieux : les requêtes élémentaires
» Sybase, Oracle, Informix, MsAccess, SQL Server,....– Exception majeure : DB2
Il y a aussi des SGMB qui ne sont que des systèmes d'accès aux SGBDs SQL-Query, EDA-SQL, Oracle DB Integrator,
DBJoiner (IBM), Ingres*, UniSQL/M, Uniface, Q+E, OAdaptor (HP), Telebase...
Les systèmes dits "Data Warehouse« sont des SGMB
![Page 45: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/45.jpg)
45
Manipulations MBD en MsAccess On peut faire des opérations MBD limitées
entre– Bases MsAccess– Une BD de MsAccess et
» toute autre BD sous un SGBD compatible ODBC» Paradox, Btrieve, Dbase» Tout programme OLE compatible
Excel notamment
![Page 46: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/46.jpg)
46
Manipulations MBD en MsAccessMsAccess
Attach
Paradox Excel Oracle Sybase
B1
PasserelleParadox
ODBC
Sybase ODBCdriver
ODBC
ImportExport
Connect.réparties
B3
B2
Insert INTO
![Page 47: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/47.jpg)
47
MsAccess & MSQL
Open B <=> USE B ATTACH table
Open B1 attach B2.T' as T create view B1.T as select * from B2.T'
» DROP VIEW correspond à Delete dans un menu de MsAccess
Clause IN <externalDB>Open B1
Select a, b, c From D IN B2 select a, b c from B2.D
![Page 48: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/48.jpg)
48
Exemples MsAccess Source DB: MsAccess
SELECT [Customer ID]FROM Customers IN MYDATA.MDBWHERE [Customer ID] Like "A*";
Source DB: Paradox SELECT [CustomerID]FROM CustomersIN "C:\PARADOX\DATA\SALES" "Paradox 4.x;"WHERE CustomerID Like "A*";
Tout transfert de données d'une/vers BD non-MsAccess ou logiciel compatible OLE comporte les conversions de représentation de données– Hétérogénéité sémantique oblige
![Page 49: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/49.jpg)
49
Requêtes élementaires MsAccess On peut ouvrir une BD et faire les requêtes à d'autres BDs
– il faut définir des aliases dans FROM Base ouverte s'appelle s-p1.mdb
– mais ce nom n'a pas d'importance ici
Jointure de tables dans d'autres basesSELECT TOP 10 C.[Contact Name], C.CityFROM [c:\access\nwind2.mdb].Customers AS C, [c:\access\
ordentr2.mdb].customers AS OWHERE (o.Id= C.[customer Id]);
![Page 50: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/50.jpg)
50
Résultat
Contact Name CityPat Parkes LondonGladys Lindsay SeattleElizabeth Lincoln TsawassenOlivia LaMont San FranciscoTerry Hargreaves LondonElizabeth Brown LondonSylvia Dunn LondonAnn Devon LondonRonald Merrick LondonBill Lee Pocatello
![Page 51: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/51.jpg)
51
Jointure d'une table locale à la base ouverte (S-P.mdb) et d'une table externe de la base mwind2.mdb
SELECT TOP 10 S.SName, C.[Contact Name], C.CityFROM S, [nwind2.mdb].Customers AS CWHERE ((S.City= C.City))Order by [contact name];
Requêtes élémentaires MsAccess
Obligatoire, contrairement
à MSQL
![Page 52: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/52.jpg)
52
SName Contact Name CityClark Ann Devon LondonClark Archibald Langford LondonClark Cornelia Giles LondonClark David Bird LondonClark Elizabeth Brown LondonClark G.K.Chattergee LondonClark Gerald Pipps LondonClark Hari Kumar LondonClark Jane Austen LondonClark Jeffrey Jefferies London
Résultat
![Page 53: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/53.jpg)
53
Requêtes multibases en QBE Il est aussi possible de formuler les requêtes
multibases élémentaires en QBE de MsAccess– ADD Table montre par défaut dans la fenêtre (optionnelle)
"Propriétés" les tables de la base ouverte (S-P)» Source Database : (current)
– Il y faut mettre le nom absolue de la base de la table à manipuler » après avoir fermé la liste visible venant de "current" DB» alors on voit la liste des table et/ou des vues de cette base» on sélectionne la ou les tables comme d'habitude (par des cliques)» on formule la requête comme celle monobase
y compris les jointures interbases
![Page 54: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/54.jpg)
54New Query
![Page 55: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/55.jpg)
55
![Page 56: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/56.jpg)
56
![Page 57: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/57.jpg)
57
![Page 58: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/58.jpg)
58
Résultat
![Page 59: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/59.jpg)
59
Puis, alternativement...
Et en SQL MsAccess
![Page 60: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/60.jpg)
60
![Page 61: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/61.jpg)
61
Requêtes multibases en QBE On peut aussi utiliser les tables préalablement
attachées– alors elles apparaissent dans la liste des tables de
"current" BD Puis on peut utiliser les vues multibases
– elles apparaissent dans la liste des vues de "current" BD Enfin, on peut tout mélanger dans une même
requête QBE– et SQL
![Page 62: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/62.jpg)
62
MsAccess & MSQL Clause INTO <externalDB> dans Select INTO ou
INSERT INTOOpen B1
Select a, b, c INTO T IN B2 From D Use B1 ;copy into B2.T select a, b c from D ;
» D peut être une vue ou une sous-requête» On ne peut pas combiner les clauses IN et INTO
– INSERT de MsAccess a la (sous)sémantique de INSERT de MSQL
![Page 63: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/63.jpg)
63
MsAccess & MSQL
IMPORT & EXPORT– commandes au menu– équivalent à la requête MSQL
Use B1 ;copy into T1 * from B2.T2 ;
![Page 64: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/64.jpg)
64
MsAccess & MSQLComparaison
Formulation de requêtes MBD élémentaires et des vues MBD avec des ATTACH– d'abord il faut faire des ATTACH – puis on formule une requête SQL monobase– puis, peut-être il faut deleter les ATTACH
» dans Banks, il faudrait en pratique que toute BD s'attache toutes les tables de toute autre BD
» Bonne chance DBA ! Requêtes MBD élémentaires
– pratiquement MSQL– aux restrictions discutées près
Requêtes multiples et autres possibilités de MSQL» (Encore) inconnues de MsAccess
![Page 65: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/65.jpg)
65
SQL Server Architecture MBD générale similaire à celle de MsAccess, en
plus puissante– passerelles vers Oracle, IMS, DB2– ODBC et donc MsAccess
Le langage Transac-SQL supporte les fonctions suivantes de MSQL et est le dialecte MBD le moins procédural de l'industrie– requêtes élémentaires
» aux BDs Sybase d'un même siteUSE B ;select * from T where B1.T1.a = T.a ;
» Une seule base par USE » quelques restrictions au niveau de requêtes interbases
– CREATE VIEW multibase, et déclencheurs (triggers) multibases– les déclencheurs réalisent les dépendances MDB
![Page 66: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/66.jpg)
66
Oracle, RDB, Informix Ont une operation similaire à ATTACH dite
Create link:Create public database link bnp connect to bnp_unixCreate public database link cic connect to cic_vms
SELECT br.brname, b.braname, br.streetFROM br@bnp, br@ cic bWHERE br.street = b.street ;
![Page 67: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/67.jpg)
67
Oracle, RDB, Informix Les requêtes MBD ne sont possibles qu'après
que les liens ont été défini– Donc ces SGBD sont + proceduraux que Sybase
pour les manips MBD Il est possible néanmoins que Oracle 7
supporte les requêtes MBDs sans liens» en postfixage par le nom de base
comme sur le diapo précédent
![Page 68: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/68.jpg)
68
EDA-SQL, DB Integrator, DBJoiner, Ingres* & al
Les SGMB SQL d'accès aux SGBD
– en théorie, sans leur BDs propres» il y a toujours une, surtout pour les
catalogues MBD dite base auxiliaire
Il faut créer des liens (links) et une ou plusieurs bases logiques– bases virtuelles
» en fait presque seul DB Integrator supporte les requêtes
MBD élémentaires– dites requêtes multischéma
Pas d'autres fonctions de MSQL
BD logique
BD logique
BD lMS
BD RDB
BD Ingres
Passerelle
OD
BC
![Page 69: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/69.jpg)
69
SQL-Query Pas de schéma logique Accès aux sources hétérogènes
– Access, Foxpro, Paradox, Btrieve... Supporte les requêtes MBD élementaires
– en SQL – en QBE
Les tables manipulées dans une base peuvent être– tables de base, vues, tables attachées, vues
multibases
![Page 70: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/70.jpg)
70
UniSQL/M & O-Adaptor
Similaires aux précedents, sauf que pour la BD logique– UniSQL/M utilise le modèle
RO– O-Adaptor utilise un modèle
OO Pas de requêtes MBD
(autres que de la création de liens)
BD logique
BD logique
BD lMS
BD RDB
BD Ingres
Passerelle
OD
BC
![Page 71: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/71.jpg)
71
Telebase (USA) SGMB d'accès aux BDs documentaires
– + Que mille et sur plusieurs sites» Avec différents langages locaux
STAIRS, INSPEC, DIALOG... Langage commun: Common Command Set
(CCS) étendu– Défini comme standard par la CEE et adopté dans le
monde entier Pas de jointures seulement les clauses booléennes Supporte les fonctions de MSQL
– Noms de multibases– Requêtes multiples (dites SCANS)– Standardisées dans ISO 39-50
BDs INSPEC
BDs STAIRS
BDsDIALOG
Drivers
CCS
![Page 72: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/72.jpg)
72
Meta-moteurs de recherche www.BigHub.com, www.AskJeewes… Interrogent simultanément plusieurs moteurs de
recherche au choix– Altavista, Yahoo, Excite, Goto…
Langage de manipulation booleen Requêtes multiples
– Avec les fonctions mdb Name, Mdistinct, Choose, Timeout…
A voir prochainement sur vos écrans.
![Page 73: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/73.jpg)
73
Entrepôt de Données (Data Warehouse)
Nouveau concept pour les SGMBs – essentiellement gimmick de
marketing made in USA– Data warehouse <=> multibase ou
fédération d'une entreprise– mais il y a une idée (un peu)
nouvelle» fonctions orientées prise de
décision de gestion élaborée» au moins une BD redondante
par rapport à celles existantes est créée dans ce but
L'avenir : à voir
Data warehouse
BD lMS
BD RDB
BD Ingres
Passerelle
OD
BC
Data mart
![Page 74: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/74.jpg)
74
International Journal of Cooperative Information Systems
Special Issue on Design and Management of Data Warehouses
Guest editors: Manfred A. Jeusfeld and Martin Staudt
Data Warehousing embraces technology and industrial practice to systematically collect data from the enterprise and to use that data in ahighly aggregated form for managing the enterprise thru decisions. Littleattention is currently paid to design and manage a data warehouse (DW) insuch a way that it accomplishes its purpose, i.e. to support the managementof the enterprise. Existing solutions are focusing on technical aspectslike efficient source data extraction. Their parameters are howeverincomprehensible to the stakeholders who decide on the introduction of adata warehouse.
Data warehouses are important in managing large enterprises and incommunicating highly aggregated information between the variousdepartments. Interoperable tools and integrated methods to manage datawarehouses in order to fulfill the enterprise goals are desperately needed.Such tools should cover all aspects of data warehousing:
- selection of data sources- data cleaning- conceptual/logical/physical data warehouse design- enterprise modeling- data warehouse quality monitoring- data warehouse refreshment methods- architecture design- data mart customization, etc.
Un appel aux communications récent et intéressant (Oct 1999)
![Page 75: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/75.jpg)
75
Conclusion Manipulations multibases - parmi les plus importantes
directions de R & D dans les SGBDs Autres mots-clés:
– Interopérabilité– Intégration– Bases Fédérées– Bases Réparties Hétérogènes– Data Warehouses
MSQL est un véhicule de recherche le + avancé de l'étude de fonctions d'un langage MBD relationnel– Diverses fonctions multibases
![Page 76: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/76.jpg)
76
Conclusion Les fonctions basiques de MSQL sont dans des SGMB
commerciaux– Requêtes élémentaires dans la plupart de SGBDs relationnels– Requêtes multiples dans des SGMBs– Dépendances multibases dans les Entrepôts de Données– La suite viendra naturellement
La conception multibase (fédérée) devient préferentielle pour une VLDB– La plus grande « VLBD « connue (UPS) est une multibase– Il y en a d’autres – DB2 UDB 6.2 offre de fonction spécifiques de création
multibase
![Page 77: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/77.jpg)
77
Conclusion Enfin, il y a encore beaucoup à apprendre et à faire
– aussi bien dans dans l'industrie que dans la recherche» Optimisation de requêtes MSQL» Implémentation de nouvelles fonctions agrégats
(CHOOSE…)» Unités de mesure et de monnaies» Manipulations de données de précision différente» Multibases relationnelles-objet» …
![Page 78: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/78.jpg)
Fin
Voir aussi les exercices qui suivent
![Page 79: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/79.jpg)
79
Exercices La multibase Banques a grossi à 100 banques. Chaque banque a ajouté une table avec
« ses » cheques en bois. Ces tables sont homogènes d’un commun accord pour les attributs ci-dessous et peuvent avoir d’autres attributs, l’autonomie locale obligeant:
Chq-en-bois (ch#, c#, date, montant, ordre, banque-bénefFormulez les requêtes:– Nombre total et moyenne totale de cheques en bois– Nombre total et montant total par banque émettrice – Nombre total et montant total par banque bénéficiaire– La personne bénéficiaire du cheque en bois le plus gros– La banque émettrice du cheque le plus gros– 10 cheques les plus gros– Nom du client cic dont le cheque en bois est au même ordre qu’un le cheque en
bois d’un client de bnp– Nom du client cic dont le cheque en bois à la date 01/01/00 est au même ordre
qu’un le cheque en bois d’un autre client– Quelle serait la décomposition optimisée de cette requête en celles de SQL ?– Mettre à jour tout code postal (zip…) 60250 à 60520 dans la base cic et toute autre
si possible– Rechercher pendant 20 jours les cheques en bois a l’ordre du « Trésor Public »
![Page 80: Manipulations Multibases et Distribuées ( Partie 2)](https://reader036.fdocuments.net/reader036/viewer/2022062816/568149f4550346895db725df/html5/thumbnails/80.jpg)
80
Exercices Créer une table attachée (liée) dans MsAccess Faire en pratique les requêtes mdb MsAccess discutées en cours, en SQL et QBE Tester DB2, Oracle, SQL-Server… Comment faire sous ces SGBDs pour la multibase et les requêtes MSQL ci-dessus ? Concevoir un Entrepôt de Données sous MsAccess 2000 (un projet complexe !) Différence entre un SGBD multibase et un système d’accès multibase. Lesquels parmi les SGBDs énumérés sont des SGMBs ?
– MsAccess, DB2, Informix, Ingres, Oracle, SQL Server,,, Unisql Comment le concept d’une requête multiple de MSQL est appliquées par
l’industrie aujourd’hui– dans BigHub and AskJeewes en particulier.
Introduisez le conception d’Entrepôts de Données (quoi, pourquoi, comment) Quelle est la différence entre un « Data Warehouse » et un « DataMart »