• Nenhum resultado encontrado

SQL - Fácil: uma interface amigável para acesso a banco de dados relacional.

N/A
N/A
Protected

Academic year: 2021

Share "SQL - Fácil: uma interface amigável para acesso a banco de dados relacional."

Copied!
78
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DA PARAIBA CENTRO DE CIÊNCIAS E TECNOLOGIA CURSO DE MESTRADO EM INFORMÁTICA

SQL-FACIL :

UMA INTERFACE AMIGÁVEL PARA ACESSO BANCO DE DADOS RELACIONAL

ED PORTO BEZERRA

CAMPINA GRANDE NOVEMBRO - 1989

(2)

ED PORTO BEZERRA

SQL-FACIL :

UMA INTERFACE AMIGÁVEL PARA ACESSO A BANCO DE DADOS RELACIONAL

Dissertação MESTRADO EM F e d e r a l da e x i g i n c i a s Mest r e . a p r e s e n t a d a ao Curso de INFORMÁTICA da U n i v e r s i d a d e P a r a i b a , em c u m p r i m e n t o às para obtenção do Grau de

AREA DE CONCENTRAÇÃO ; BANCO DE DADOS

MARCUS COSTA SAMPAIO O r i e n t ador

MARIA DE FÁTIMA 0 V. TURNELL C o - o r i e n t a d o r a

CAMPINA GRANDE NOVEMBRO - 1989

#

(3)

SOL-FACIL :

UMA INTERFACE A M I G Á V E L PARA ACESSO A BANCO DE DADOS RELACIONAL

ED PORTO BEZERRA

D I S S E R T A Ç Ã O APROVADA EM 10/11/S9

PEDRO SERGIO N I C O L L E T T I - M. Sc. E x a m i n a d o r

RAIMUNDO HAROLDO DO CARMO CATUNDA - M. E x a m i n a d o r

CAMPINA GRANDE NOVEMBRO - 1989

(4)

AGRADECIMENTOS

Não -Tossem vocês - O r i e n t a d o r , C o - o r i ent a d o r a , c o l e g a s m e s t r a n d o s e graduandos, p r o f e s s o r e s e funcionários do DSC, c o m p a n h e i r a s e c o m p a n h e i r o s , f a m i l i a r e s , paixões e, e s p e c i a l m e n t e , amores passado e p r e s e n t e - t e r i a s i d o m u i t o mais difícil a realização d e s t e t r a b a l h o . Vocês são t a n t o s que a relação de nomes s e r i a imensa e ao mesmo tempo i n j u s t a , p o i s merecem mais do que serem c i t a d o s ; merecem, cada um, s i n c e r o s d i s c u r s o s s o b r e o quanto r e p r e s e n t a r a m e r e p r e s e n t a m p a r a mim. Com c e r t e z a estarão sempre bem v i v o s e bem v i n d o s na minha 1embrança

(5)

UMA

SQL-FACIL .

INTERFACE AMIGÁVEL PARA ACESSO BANCO DE DADOS RELACIONAL

A

DISSERTAÇÃO APROVADA EM 10/11/89

MARCUS COSTA SAMPAIO O r i e n t ador

MARIA DE FÁTIMA Q. V. TURNELL C o - o r i e n t a d o r a

PEDRO SERGIO NICOLLETTI Componente da Banca

RAIMUNDO HAROLDO DO CARMO CATUNDA Componente da Banca

CAMPINA GRANDE NOVEMBRO - 1989

(6)

RESUMO

SQL-FACIL é uma i n t e r f a c e amigável p a r a acesso a banco de dados r e l a c i o n a l baseada no c o n c e i t o de Relação U n i v e r s a l . E s t a i n t e r f a c e s u p o r t a inferência automática de navegação lógica,

l i v r a n d o os seus usuários da preocupação s o b r e a organização lógica dos dados do banco de dados. A independência de navegação lógica não é p r o v i d a p e l a i n t e r f a c e padrão SQL. Os usuários de SQL-FACIL expressam suas c o n s u l t a s p o r meio de a t r i b u t o s , condições de seleção s o b r e a t r i b u t o s e nomes de r e l a c i o n a m e n t o s da " j a n e l a " da Relação U n i v e r s a l ; não há explicitação da operação de junção de relações e nem utilização de variável-tup1 a nas cônsult as.

(7)

ABSTRACT SQL-FACIL i s a use»—friendly i n t e r f a c e t o a c c e s s r e l a t i o n a l d a t a b a s e based upon t h e c o n c e p t o f U n i v e r s a l R e l a t i o n . T h i s i n t e r f a c e s u p p o r t s a u t o m a t i c i n f e r e n c e f o r l o g i c a l n a v i g a t i o n , f r e e i n g t h e u s e r s f r o m t h e p r e o c c u p a t i o n about t h e l o g i c o r g a n i z a t i o n o f d a t a i n t h e d a t a b a s e . The i n d e p e n d e n c e f r o m l o g i c n a v i g a t i o n i s not p r o v i d e d by t h e s t a n d a r d SQL i n t e r f a c e . The u s e r s o f SQL-FACIL e x p r e s s t h e i r q u e r i e s u s i n g a t t r i b u t e s , s e l e c t i v e c o n d i t i o n s on a t t r i b u t e s and r e l a t i o n s ' names f r o m t h e U n i v e r s a l R e l a t i o n window; t h e r e i s no e x p l i c i t s t a t e m e n t on t h e j o i n o f r e l a t i o n s n o r t h e u t i l i z a t i o n o f t u p l e s i n t h e s t a t e m e n t o f t h e q u e r i e s .

(8)

SUMARIO Página

1. INTRODUÇSO 1

2. A RELACRO UNIVERSAL 4

2.1. CONCEITO DE RELAC&O UNIVERSAL 4

2.2. SISTEMAS QUE UTILIZAM O CONCEITO DE RELAÇÃO

UNIVERSAL 6

2 . 2 . 1 . SYSTEM/U 6 Linguagem de Definição de Dados 7

Linguagem de C o n s u l t a 10 A conexão s o b r e o c o n j u n t o de a t r i b u t o s de uma c o n s u l t a 11 2.2.2. DURST 15 2.2.3. PIQUE 17 2.2.4. FIDL 17 3. A INTERFACE SQL-FACIL 18

(9)

3.2. ASPECTOS IMPORTANTES NA INTERAÇSO COM O USUÁRIO 20 Método de acesso 20 L a y - o u t das t e l a s 22 S i n t a x e da c o n s u l t a em SQL-FACIL 23 Métodos de a j u d a 24 Método de detecção e recuperação de e r r o s .... 25

A m b i e n t e p a r a execução 26

Documentação 26

3.3. EXEMPLOS DE CONSULTAS EM SQL-FACIL 27

4. 0 PRÉ-PROCESSADOR DA INTERFACE SQL-FACIL 37

4 . 1 . OPERACIONALIZACSO DO PRE-PROCESSADOR 37

4.2. PRINCIPAIS ESTRUTURAS DE DADOS IMPLEMENTADAS .. 39

4 . 2 . 1 . TABELAS AUXILIARES 39 T a b e l a da Relação U n i v e r s a l 39 T a b e l a de R e l a c i o n a m e n t o s I 41 T a b e l a de R e l a c i o n a m e n t o s I I 42 T a b e l a de Relações 43 T a b e l a de C o n s t a n t e s 43

(10)

4 2.2. VETORES 44

V e t o r de Relações 44

V e t o r Geral 45

4.2.3. MATRIZ DE DISTANCIAS MÍNIMAS (com LISTAS

DE ATRIBUTOS DA JUNCSO) 49

4.2.4 MATRIZ DE CAMINHOS MÍNIMOS 52

4.3. PROCEDIMENTO DE PERMUTACSO 55

4.4 ANALISADORES LÉXICO E SINTATICO 58

5. CONCLUSÕES E TRABALHOS FUTUROS 59

6. REFERÊNCIAS BIBLIOGRÁFICAS 63

(11)

ÍNDICE DE FIGURAS F i g u r a i : H i p e r g r a f o r e p r e s e n t a n d o o BD B a n c o - C o m e r c i a l ... 9 F i g u r a 2 : T e l a de apresentação da i n t e r f a c e SQL-FACIL 21 F i g u r a 3 L a y - o u t das t e l a s da i n t e r f a c e SQL-FACIL 22 F i g u r a A F u n c i o n a m e n t o do pré-processador da i n t e r f a c e SQL-FACIL 38

(12)

i - INTRODUÇÃO

E s t e t r a b a l h o d e s c r e v e uma i n t e r f a c e amigável p a r a acesso a banco de dados r e l a c i o n a l , que chamamos de SQL-FACIL, a qual l i v r a os usuários da r e s p o n s a b i l i d a d e da "navegação" lógica e n t r e as relações do banco de dados. Por navegação, devemos e n t e n d e r a n e c e s s i d a d e de e s p e c i f i c a r de que m a n e i r a as informações p r e t e n d i d a s se i n t e r - r e l a c i o n a m ( g e r a l m e n t e através da operação de "junção" de relações C MAIER 833) - e l a é lógica p o r q u e i n d e p e n d e de como as relações estão armazenadas.

A i n t e r f a c e r e l a c i o n a l padrão SQL remove a n e c e s s i d a d e da navegação física, mas não provê independência de navegação lógica. Por exemplo, c o n s i d e r e m o s um banco de dados que tem as relações Empregados (Empregado, D e p a r t a m e n t o ) • D e p a r t a m e n t o s

( D e p a r t a m e n t o , G e r e n t e ) . Se o usuário está i n t e r e s s a d o no r e l a c i o n a m e n t o e n t r e Empregado e G e r e n t e através de D e p a r t a m e n t o , e l e deve e s p e c i f i c a r a junção n a t u r a l ( E m p r e g a d o s . D e p a r t a m e n t o = D e p a r t a m e n t o s . D e p a r t a m e n t o ) das relações Empregados e D e p a r t a m e n t o s . E s t a junção é uma especificação de navegação lógica, sem a qual a r e s p o s t a à c o n s u l t a não p o d e r i a s e r computada. Logo, o usuário deve c o n h e c e r q u a i s relações estão no banco de dados (BD) e como e l a s podem s e r u n i d a s , ou s e j a , o usuário deve c o n h e c e r a organização lógica dos dados do BD p a r a consultá-lo, o que, convenhamos, não é nada amigável.

(13)

E x i s t e m várias i n t e r f a c e s r e l a c i o n a i s d i t a s amigáveis, além de SQL, como p o r exemplo QUEL C MAIER 83 D, QBE C MAIER 833, e t c , nas q u a i s a navegação lógica deve s e r e s p e c i f i c a d a p e l o usuário. Propomos uma i n t e r f a c e baseada no c o n c e i t o de Relação U n i v e r s a l CULLMAN 833, que s u p o r t a inferência automática de navegação lógica E s t a i n t e r f a c e d i s p e n s a do usuário a preocupação s o b r e a organização lógica dos dados, p e r m i t i n d o que e s t e c o n s u l t e o BD sem q u a l q u e r c o n h e c i m e n t o das e s t r u t u r a s física e lógica d e s t e .

0 t r a t a m e n t o de a m b i g u i d a d e na interpretação de c o n s u l t a s é uma característica comum a t o d a s as i n t e r f a c e s baseadas no c o n c e i t o de Relação U n i v e r s a l . Entendamos p o r a m b i g u i d a d e a p o s s i b i l i d a d e de obtenção de mais de uma r e s p o s t a p a r a uma c o n s u l t a Destacaremos a s i m p l i c i d a d e de SQL-FACIL na resolução de a m b i g u i d a d e , c o m p a r a t i v a m e n t e com a solução a d o t a d a por d o i s o u t r o s s i s t e m a s chamados System/U e DURST.

No CAPITULO S, a p r e s e n t a m o s o c o n c e i t o de Relação U n i v e r s a l , descrevemos e a n a l i s a m o s a i n t e r f a c e chamada System/U, a qual u t i l i z a e s t e c o n c e i t o , e comentamos r e s u m i d a m e n t e três o u t r o s s i s t e m a s a f i n s chamados DURST, PIQUE e FIDL.

(14)

No CAPITULO 3, a p r e s e n t a m o s a i n t e r f a c e SQL-FACIL d e s t a c a n d o sua interação amigável com o usuário e a p r e s e n t a m o s um novo c o n c e i t o p o r nós c r i a d o que se chama J a n e l a da Relação U n i v e r s a l . Também mostramos exemplos comentados, a b o r d a n d o características d i v e r s a s , de c o n s u l t a s em SQL-FACIL e suas r e s p e c t i v a s c o n s u l t a s em SQL.

No CAPITULO 4, c o n c e i t u a m o s o pré-processador da i n t e r f a c e SQL-FACIL e d e t a l h a m o s suas p r i n c i p a i s e s t r u t u r a s de dados i m p l e m e n t a d a s (com explicações e exemplos de cada uma d e l a s ) Também comentamos os a n a l i s a d o r e s léxico e sintático e descrevemos um p r o c e d i m e n t o de permutação de e l e m e n t o s de um v e t o r , d e s t a c a n d o sua importância á implementação da i n t e r f a c e SQL-FACIL.

No CAPITULO 5, resumimos as p r i n c i p a i s conclusões t i r a d a s no d e s e n v o l v i m e n t o da i n t e r f a c e SQL-FACIL, d e s c r e v e n d o comentários c o m p a r a t i v o s com as o u t r a s i n t e r f a c e s que u t i l i z a m o c o n c e i t o de Relação U n i v e r s a l ; e s u g e r i m o s m e l h o r i a s na versão a t u a l da i n t e r f a c e SQL-FACIL a título de t r a b a l h o s f u t u r o s .

(15)

2 - A RELAÇÃO UNIVERSAL

N e s t e capítulo, a p r e s e n t a m o s o c o n c e i t o de Relação U n i v e r s a l , descrevemos e a n a l i s a m o s c r i t i c a m e n t e o s i s t e m a e x p e r i m e n t a l chamado System/U onde e s t e c o n c e i t o é a p l i c a d o . Também comentamos o u t r o s três s i s t e m a s em d e s e n v o l v i m e n t o , chamados DURST, PIQUE e FIDL.

2 . 1 . C o n c e i t o de Relação U n i v e r s a l .

Vamos i m a g i n a r que os dados de um BD sejam c o l o c a d o s numa só relação, chamada Relação U n i v e r s a l ( R U ) , c u j o esquema c o n s i s t a de t o d o s os a t r i b u t o s em q u a i s q u e r dos esquemas das relações o r i g i n a i s de um BD. Uma RU não e x i s t e de f a t o ( e l a é v i r t u a l ) . Assumamos que a t r i b u t o s r e p r e s e n t a n d o a mesma c o i s a em d i f e r e n t e s relações tenham o mesmo nome, e a t r i b u t o s r e p r e s e n t a n d o c o i s a s d i f e r e n t e s tenham nomes d i f e r e n t e s . E s t a suposição básica, chamada suposição do esquema da RU, i n c o r p o r a p a r t e da semântica de um BD nos a t r i b u t o s da RU. Os a t r i b u t o s na RU assumem t e r um p a p e l único. Por exemplo, um a t r i b u t o como nome não pode s i g n i f i c a r nome de empregado, nome de c l i e n t e e nome de f o r n e c e d o r , ao mesmo tempo - somente um dos três s i g n i f i c a d o s , ou um o u t r o , tem que s e r d e t e r m i n a d o . A g r a n d e vantagem da RU é que o usuário é poupado de m e m o r i z a r d e t a l h e s s o b r e q u a i s a t r i b u t o s estão a g r u p a d o s p a r a f o r m a r relações. Resumidamente, podemos c o n c e i t u a r uma RU como um c o n j u n t o de a t r i b u t o s s o b r e o qual o

(16)

usuário f o r m u l a suas c o n s u l t a s . E s t a s são e x p r e s s a s p o r meio de nomes de a t r i b u t o s e condições de seleção s o b r e a t r i b u t o s desse c o n j u n t o .

Suponhamos um BD com os a t r i b u t o s Empregado, D e p a r t a m e n t o e G e r e n t e c u j o esquema da RU é (Empregado, D e p a r t a m e n t o , G e r e n t e ) Um usuário p o d e r i a e x p r e s s a r - s e da s e g u i n t e m a n e i r a

SELECT D e p a r t a m e n t o

UIHERE Empregado = " J o s e "

sem p r e o c u p a r - s e se no BD há uma só relação com esquema (Empregado, D e p a r t a m e n t o , G e r e n t e ) , ou duas relações (Empregado, D e p a r t a m e n t o ) e ( D e p a r t a m e n t o , G e r e n t e ) , ou a i n d a (Empregado, G e r e n t e ) e ( D e p a r t a m e n t o , G e r e n t e ) . A r e s p o s t a , d e s c o n s i d e r a n d o -se a e s t r u t u r a do BD, deve s e r a mesma o d e p a r t a m e n t o de José.

Não vamos i n f e r i r d e s t e exemplo que nenhum c o n h e c i m e n t o semântico do BD é r e q u e r i d o do usuário. Achamos que é mais fácil p a r a o usuário e n t e n d e r c o n c e i t o s como Empregado e D e p a r t a m e n t o e seu r e l a c i o n a m e n t o do que e n t e n d e r o que s i g n i f i c a uma relação (Empregado, D e p a r t a m e n t o ) . Nossa p r o p o s t a , ao u s a r o c o n c e i t o de RU, é i r um passo além do Modelo R e l a c i o n a l CCODD 70D, p o r remover do usuário não apenas a preocupação s o b r e a organização física dos dados, mas também s o b r e a organização

(17)

fáceis de e x p r e s s a r em s i s t e m a s que s u p o r t a m a RU, c o m p a r a t i v a m e n t e com a q u e l e s que não u t i l i z a m t a l c o n c e i t o .

2.2. S i s t e m a s que u t i l i z a m o c o n c e i t o de Relação U n i v e r s a l .

2 . 2 . 1 . System/U.

0 System/U ( U n i v e r s a l System) f o i d e s e n v o l v i d o na U n i v e r s i d a d e de S t a n f o r d nos E s t a d o s U n i d o s . Seu modelo de dados é baseado nos c o n c e i t o s de a t r i b u t o s , o b j e t o s e o b j e t o s m a x i m a i s CKORTH 842. O b j e t o s são c o n j u n t o s mínimos de a t r i b u t o s que têm s i g n i f i c a d o c o l e t i v o Cada o b j e t o está c o n t i d o em um esquema de uma relação. F a l a r e m o s mais a d i a n t e s o b r e os o b j e t o s m a x i m a i s .

0 System/U está i n t e r a g i n d o com uma i n t e r f a c e p a r a o s i s t e m a chamado ERIS ( E x p e r i m e n t a l R e l a t i o n a l I n f o r m a t i o n System) CREIS 83D Uma c o n s u l t a f e i t a no System/U é p r o c e s s a d a e t r a d u z i d a p a r a a l i n g u a g e m ERIS a qual r e c u p e r a a informação, então o System/U a e x i b e e a armazena num a r q u i v o . Ambos os s i s t e m a s são e s c r i t o s em C e rodam sob o s i s t e m a o p e r a c i o n a l Un i x .

(18)

O System/U p e r m i t e mudança de nomes de a t r i b u t o s dos o b j e t o s de modo que a mesma relação possa s e r usada p o r m u i t o s o b j e t o s que são e f e t i v a m e n t e idênticos, como veremos no s e g u i n t e exemplo suponhamos uma g e n e a l o g i a baseada numa só relação

( F i l h o , P a i ) . 0 p r o j e t i s t a do BD d e c l a r a os a t r i b u t o s Pessoa, P a i , Avô e Bisavô e os o b j e t o s P e s s o a - P a i , Pai-Avô e Avô-Bisavô, cada um d e s t e s d e f i n i d o s o b r e a relação ( F i l h o , P a i ) , com a correspondência óbvia de a t r i b u t o s . A s e g u i n t e c o n s u l t a , na

l i n g u a g e m de c o n s u l t a do System/U ( d e t a l h a d a a d i a n t e ) , r e s u l t a r i a nos bisavôs de M a r i a .

r e t r i e v e (Bisavô)

where Pessoa = " M a r i a "

0 System/U é o p e r a c i o n a l i z a d o através de duas f e r r a m e n t a s a Linguagem de Definição de Dados e a Linguagem de Cônsult a

- Linguagem de Definição de Dados.

A Linguagem de Definição de Dados é usada p a r a d e f i n i r o esquema do BD. 0 p r o j e t i s t a ou a d m i n i s t r a d o r do BD d e c l a r a os a t r i b u t o s e seus t i p o s de dados, nomes das relações e seus esquemas ( c o n j u n t o s de a t r i b u t o s ) , o b j e t o s e, f i n a l m e n t e , as dependências f u n c i o n a i s . 0 p r o j e t i s t a deve e s p e c i f i c a r de qual relação o o b j e t o é formado. Vejamos o BD B a n c o - C o m e r c i a l , d e f i n i d o como segue

(19)

i n t e g e r empréstimo c o n t a ; f l o a t t o t a l s a l d o ; char C203 banco; c h a r C25D c l i e n t e ; char C50D e n d e r e c o ; r e l a t i o n r c l i e n t e = c l i e n t e , e n d e r e c o ; r e l a t i o n r e m p r e s t i m o = c l i e n t e , banco, empréstimo, t o t a l ; r e l a t i o n r c o n t a = c l i e n t e , banco, c o n t a , s a l d o ; o b j e c t o c l i e n t e i n r c l i e n t e = c l i e n t e , e n d e r e c o ; o b j e c t o e m p r e s t c 1 i e n t i n r e m p r e s t i m o = c l i e n t e , empréstimo; o b j e c t o e m p r e s t b a n c o i n r e m p r e s t i m o = banco, empréstimo; o b j e c t o e m p r e s t t o t a l i n r e m p r e s t i m o = empréstimo, t o t a l ; o b j e c t o c o n t a c l i e n t e i n r c o n t a = c l i e n t e , c o n t a ; o b j e c t o c o n t a b a n c o i n r c o n t a = c o n t a , banco, o b j e c t o c o n t a s a l d o i n r c o n t a = c o n t a , s a l d o ; c o n t a -> banco; c o n t a -> s a l d o ; empréstimo -> banco; empréstimo -> t o t a l ; c l i e n t e -> e n d e r e c o ;

Após a definição dos dados, é f e i t a a computação dos o b j e t o s m a x i m a i s

(20)

A f i g u r a 1 m o s t r a um h i p e r g r a f o d e f i n i n d o a e s t r u t u r a do BD B a n c o - C o m e r c i a l onde os nós são os a t r i b u t o s e os a r c o s são os o b j e t o s . Cada o b j e t o maximal é r e p r e s e n t a d o p o r um círculo e n v o l v e n d o seus o b j e t o s .

, _ M l

" 5 » . I d O " ~

-f ^ \~T V

K

7 \ ~ ' - - ^ / F i g u r a 1 - H i p e r g r a f o r e p r e s e n t a n d o o BD B a n c o - C o m e r c i a l O b j e t o s m a x i m a i s são c o n j u n t o s de o b j e t o s d e f i n i d o s p e l o System/U a p a r t i r dos o b j e t o s . Os o b j e t o s maximais são a b r a n g i d o s p e l a s variáveis-tupla CMAIER 83D de uma c o n s u l t a . A criação de o b j e t o s m a x i m a i s o b j e t i v a a resolução de a m b i g u i d a d e s , as q u a i s estão p r e s e n t e s em BD cíclico CULLLMAN 83D Entendamos por BD cíclico a q u e l e que p o s s u i a t r i b u t o s ambíguos ( a t r i b u t o s com mais de um s i g n i f i c a d o ) como p o r exemplo os a t r i b u t o s banco e c l i e n t e da f i g u r a 1

(21)

Vejamos, de uma m a n e i r a g e r a l , como -Foi construído o o b j e t o maximal MS da f i g u r a i . S e j a j a junção n a t u r a l dos o b j e t o s o c l i e n t e , o e m p r e s t c l i e n t e , o e m p r e s t t o t a l e o e m p r e s t b a n c o S e j a Y = Cbanco) e Z = C c l i e n t e ) , onde Z é d i s j u n t o de Y. Para

que o o b j e t o maximal MS s e j a computado, é necessário p r o v a r que a dependência m u i t i v a l o r a d a Y ->-> Z segue l o g i c a m e n t e de j . I s t o é v e r d a d e s e , e somente se, Z c o n t i n u a p e r t e n c e n d o a j quando Y f o r excluído de j Logo, podemos a f i r m a r que Z c o n t i n u a p e r t e n c e n d o aos o b j e t o s o c l i e n t e e o e m p r e s t c 1 i e n t quando Y f o r d e l e t a d o do o b j e t o o e m p r e s t b a n c o , ou s e j a , podemos a f i r m a r que e x i s t e a dependência m u i t i v a l o r a d a banco ->-> c l i e n t e e c o n s e q u e n t e m e n t e MS é um o b j e t o m a x i m a l . Para uma m e l h o r compreensão de como é f e i t a a computação de o b j e t o s m a x i m a i s , s u g e r i m o s a l e i t u r a de íULLMAN 83 D.

- Linguagem de C o n s u l t a .

0 a l g o r i t m o de interpretação da c o n s u l t a do System/U tem como e n t r a d a uma c o n s u l t a , j u n t a m e n t e com os esquemas das relações, o b j e t o s e o b j e t o s m a x i m a i s do BD. A saída é uma expressão algébrica, r e p r e s e n t a n d o a interpretação da c o n s u l t a . A expressão é a união de t e r m o s ( p r o d u t o s de o b j e t o s m a x i m a i s ) , sendo que cada um d e l e s será o t i m i z a d o por um a l g o r i t m o ot i m i z a d o r .

(22)

A Linguagem de C o n s u l t a do System/U é e s s e n c i a l m e n t e QUEL, com a s e g u i n t e diferença : não é p r e c i s o a declaração de variáveis-tup1 a, p o i s e l a s abrangem apenas a RU.

Uma c o n s u l t a no System/U é constituída das s e g u i n t e s cláusulas

r e t r i e v e < 1 i s t a - d e - a t r i b u t o s > Cada a t r i b u t o da l i s t a é da forma variáve1-tup1 a . a t r i b u t o .

where < p r e d i c a d o > 0 parâmetro < p r e d i c a d o > é uma combinação b o o l e a n a de condições de seleção s o b r e a t r i b u t o s .

0 System/U supõe que há uma variável-tup1 a "invisível", chamada b r a n c o . Logo, um a t r i b u t o A s o z i n h o s i g n i f i c a b r a n c o . A .

- A conexão s o b r e o c o n j u n t o de a t r i b u t o s de uma cônsult a.

S e j a t uma variável-tup1 a numa c o n s u l t a e s e j a X o c o n j u n t o de a t r i b u t o s A t a l que t . A a p a r e c e n e s t a c o n s u l t a . A conexão s o b r e X, d e n o t a d a CX3, é o r e l a c i o n a m e n t o e n t r e os a t r i b u t o s que é i n f e r i d o p e l a s relações do BD. E s t e não é n e c e s s a r i a m e n t e o único r e l a c i o n a m e n t o possível s o b r e X, mas é o único c a l c u l a d o p e l o System/U e c o n s i d e r a d o como sendo

(23)

i n t u i t i v a m e n t e o mais básico 0 a l g o r i t m o usado no System/U p a r a e n c o n t r a r CXD é o s e g u i n t e A - E n c o n t r e t o d o s os o b j e t o s m a x i m a i s c o n t e n d o t o d o s os a t r i b u t o s em X. B - Caso :

- não e x i s t a m o b j e t o s m a x i m a i s então não há conexão n a t u r a l e n t r e os a t r i b u t o s em X, e CXD é v a z i o .

- e x i s t a 1 (um) só o b j e t o maximal então CX3 é a projeção da junção n a t u r a l de t o d o s os o b j e t o s que compõem o o b j e t o m a x i m a l .

- e x i s t a m vários o b j e t o s m a x i m a i s então f a z - s e a junção n a t u r a l de t o d o s os o b j e t o s p a r a cada o b j e t o m a x i m a l , p r o j e t a - s e nos a t r i b u t o s em X e toma-se a união dos r e s u l t a d o s .

Comentemos o a l g o r i t m o , usando a s e g u i n t e c o n s u l t a •Feita s o b r e o BD r e p r e s e n t a d o na f i g u r a í

r e t r i e v e ( b a n c o )

(24)

E n t r e os possíveis s i g n i f i c a d o s p a r a e s t a c o n s u l t a estão os s e g u i n t e s :

a) Todos os bancos nos q u a i s José tem uma c o n t a e um empréstimo.

b ) Todos os bancos nos q u a i s José tem uma c o n t a ou um empréstimo.

A r e s p o s t a que o System/U dará é a b>, p o i s " j u l g a ' * que e s t a é a r e s p o s t a p r e t e n d i d a p e l o usuário. Se o usuário q u i s e r a r e s p o s t a a) ou t i v e r q u a l q u e r o u t r o s i g n i f i c a d o na mente, e l e pode a i n d a o b r i g a r o System/U a d a r a r e s p o s t a . Para o b r i g a r a r e s p o s t a a ) , o usuário f o r m u l a r i a a c o n s u l t a a b a i x o .

r e t r i e v e ( b a n c o )

where t . c l i e n t e = " J o s e " and v . c l i e n t e = " J o s e "

Notemos que duas variáveis-tup1 a ( t e v ) são necessárias â c o n s u l t a ; uma p a r a cada o b j e t o m a x i m a l .

P a r t i c u l a r m e n t e , achamos que o System/U não d e v i a d e t e r m i n a r um r e l a c i o n a m e n t o s o b r e CXD como sendo o mais básico ou o que r e p r e s e n t a a intuição do usuário. T a l mecanismo a t r i b u i um só s i g n i f i c a d o a uma c o n s u l t a , assumindo que e s t e é o s i g n i f i c a d o p r e t e n d i d o p e l o usuário. Julgamos que e s t a assunção é i n c o n v e n i e n t e , p o i s caso o usuário q u e i r a e x p r e s s a r um o u t r o s i g n i f i c a d o em sua c o n s u l t a e l e terá de f o r m u l a r uma nova

(25)

c o n s u l t a , p o s s i v e l m e n t e usando v a r 1 á v e 1 - t U P 1 a e, p a r a t a n t o , n e c e s s i t a n d o c o n h e c e r os o b j e t o s m a x i m a i s . Cremos que i s t o f o g e ao o b j e t i v o da RU.

0 System/U é i n c a p a z de a t r i b u i r um s i g n i f i c a d o a c e r t a s c o n s u l t a s , p e l o f a t o dos a t r i b u t o s das mesmas não e s t a r e m c o n t i d o s em nenhum dos o b j e t o s m a x i m a i s . N e s t e caso, a c o n s u l t a não é r e s p o n d i d a . Vejamos a s e g u i n t e c o n s u l t a s o b r e o BD da

f i g u r a i p a r a a qual não há r e s p o s t a

r e t r i e v e ( c l i e n t e , t o t a l )

where s a l d o ) 1 000,00

A variável-tup1 a b r a n c o é a única que a p a r e c e . Uma vez que nenhum o b j e t o maximal contêm t o d o s e s t e s a t r i b u t o s ( c l i e n t e , t o t a l e s a l d o ) , nenhum o b j e t o maximal é a b r a n g i d o p e l a v a r i á v e l -t u p l a b r a n c o e o Sys-tem/U não r e s p o n d e e s -t a c o n s u l -t a p o r considerá-la sem s i g n i f i c a d o .

(26)

2.2.2. DURST .

O DURST (Datenbank m i t Uni v e r s a i r e i a t i o n -S c h n i t t s t e l l e ) CBI-SKUP & BRUGGUEMANN B31, em d e s e n v o l v i m e n t o na U n i v e r s i d a d e de Dortmund na Alemanha O c i d e n t a l , é um s i s t e m a que s u p o r t a uma abordagem da RU d i f e r e n t e da abordagem s e g u i d a p e l o Syst em/U.

A l i n g u a g e m de c o n s u l t a do DURST é b a s i c a m e n t e QUEL, mas sem a declaração de variáveis-tup1 a, p o i s e l a s abrangem apenas a RU.

Um r e q u i s i t o f u n d a m e n t a l no DURST é que o esquema do BD não s e j a ambíguo. Entendamos p o r esquema sem a m b i g u i d a d e , a q u e l e onde devem e x i s t i r a t r i b u t o s característicos que são a t r i b u t o s que podem s e r v i r como s u b s t i t u t o do nome da relação e, p o r t a n t o , podem s e r usados p a r a r e m o v e r a m b i g u i d a d e s na interpretação de c o n s u l t a s . 0 c o n c e i t o de a t r i b u t o s característicos é básico p a r a p r o j e t a r esquema de BD sem

a m b i g u i d a d e . Se o esquema do BD é ambíguo (cíclico), e não h á a t r i b u t o s característicos nas relações (podendo c a u s a r a m b i g u i d a d e s ) , e s t e s podem s e r c r i a d o s o b j e t i v a n d o e x c l u s i v a m e n t e a remoção de a m b i g u i d a d e s . Julgamos que a criação de a t r i b u t o s característicos p a r a e s t e f i m d e s v i r t u a a função de um a t r i b u t o ,

que deve s e r a de t e r uma significação n a t u r a l na relação onde e s t e a t r i b u t o está i n s e r i d o . Também achamos que a especificação

(27)

de t a i s a t r i b u t o s na cláusula WHERE t o r n a a condição de uma c o n s u l t a sem significação lógica. Uejamos a c o n s u l t a "Quais os nomes de usuários que possuem l i v r o s r e s e r v a d o s ?", f e i t a na l i n g u a g e m de c o n s u l t a do DURST s o b r e o BD r e p r e s e n t a d o a b a i x o segundo o Modelo de E n t i d a d e s e R e l a c i o n a m e n t o s (MER) CCHEN 761 :

LIVROS

II SI! A R I O S

Aità-wtlMfl

r e t r i e v e n o m e - u s u a r i o

where d a t a - r e s e r v a = d a t a - r e s e r v a

Notemos que a condição, sem significação lógica, f o i f o r m u l a d a p a r a r e f e r i r - s e aos usuários que possuem l i v r o s r e s e r v a d o s .

S a l i e n t a m o s que os a t r i b u t o s característicos d a t a -r e s e -r v a e d a t a - -r e t o -r n o não f o -r a m c -r i a d o s o b j e t i v a n d o -r e m o v e -r a m b i g u i d a d e s , mas são usados p a r a removê-las.

(28)

2.2.3. PIQUE

PIQUE ( P I t s QUEry l a n g u a g e ) C MAIER 833 é uma i n t e r f a c e e x p e r i m e n t a l p a r a o s i s t e m a PITS ( P i e I n The S k y ) que está sendo d e s e n v o l v i d a na U n i v e r s i d a d e do E s t a d o de New York e no Oregon G r a d u a t e C e n t e r . PIQUE é baseado nos c o n c e i t o s de Associação e O b j e t o s , os q u a i s estão r e l a c i o n a d o s r e s p e c t i v a m e n t e aos c o n c e i t o s de o b j e t o s e o b j e t o s m a x i m a i s do System/U.

2.2.4. FIDL.

FIDL ( F l e x i b l e I n t e r r o g a t i o n and D e c l a r a t i o n Language) CVARDI 883 é um s i s t e m a que usa o c o n c e i t o da RU de uma m a n e i r a d i f e r e n t e de t o d o s os o u t r o s s i s t e m a s . E n q u a n t o a m a i o r i a d o s s i s t e m a s usa uma RU v i r t u a l , FIDL está baseado na implementação física da RU. A RU, chamada JNF ( J o i n t Normal F o r m ) , é armazenada num h a r d w a r e e s p e c i a l i z a d o chamado CAFS ( C o n t e n t - A d d r e s s a b 1 e F i l e S t o r e ) . A abordagem do FIDL é i g u a l a do DURST, e x c e t o na implementação física da RU.

(29)

3 - A INTERFACE SQL-FACIL

N e s t e capítulo a p r e s e n t a m o s a i n t e r f a c e SQL-FACIL, e n f a t i z a n d o os a s p e c t o s mais r e l e v a n t e s na interação com o usuário.

SQL-FACIL é uma i n t e r f a c e ao e s t i l o da i n t e r f a c e SQL, mas v e r d a d e i r a m e n t e não-algoritmica. Sendo mais específicos, SQL só o f e r e c e independência física de dados o usuário p r e c i s a e s p e c i f i c a r a navegação lógica no BD ( m a t e r i a l i z a d a p e l a s junções n a t u r a i s das relações do BD e p e l o s nomes de relações e x p r e s s o s na cláusula FROM) em adição às informações que e l e n e c e s s i t a . Em SQL-FACIL as c o n s u l t a s são e x p r e s s a s p o r meio de a t r i b u t o s e condições de seleção s o b r e a t r i b u t o s ; não há explicitação da operação de junção e nem utilização de variáveis-tup1 a.

A i n t e r f a c e SQL-FACIL f o i c r i a d a o b j e t i v a n d o t e r como usuário q u a l q u e r pessoa sem formação na área de informática ou c o n h e c i m e n t o prévio de SQL (ao contrário, SQL tem s i d o a d o t a d a quase que e x c l u s i v a m e n t e p o r p r o g r a m a d o r e s p r o f i s s i o n a i s ) . Para t a n t o c r i a m o s o c o n c e i t o de j a n e l a da RU e p r o j e t a m o s a i n t e r f a c e com uma s i n t a x e s i m p l e s e com métodos de a j u d a . Cremos que o usuário s e j a capaz de u t i l i z a r a i n t e r f a c e SQL-FACIL l o g o após uma b r e v e orientação, dada a p r i o r i p e l o p r o j e t i s t a do BD, s o b r e o que é a j a n e l a da RU e como f o r m u l a r c o n s u l t a s .

(30)

3.1. C o n c e i t o de J a n e l a da Relação U n i v e r s a l .

0 usuário da SQL-FACIL f a z c o n s u l t a s u t i 1 i z a n d o - s e de j a n e l a s da RU. Uma j a n e l a da RU é uma percepção dos r e l a c i o n a m e n t o s c o n c e i t u a i s e n t r e c o n j u n t o s de a t r i b u t o s u n i v e r s a i s ( o b j e t o s ) s o b r e os q u a i s as c o n s u l t a s são f e i t a s . Cada usuário p e r c e b e o BD através de uma ou mais j a n e l a s da RU que l h e são f o r n e c i d a s p e l o p r o j e t i s t a ou a d m i n i s t r a d o r do BD.

0 modelo u t i l i z a d o p a r a d e s c r e v e r uma j a n e l a da RU é o Modelo de E n t i d a d e s e R e l a c i o n a m e n t o s (MER). Escolhemos o MER p e l a sua ampla utilização na área de BD, p e l a sua s i m p l i c i d a d e na representação das e s t r u t u r a s de informações no nível c o n c e i t u a i e c o n s e q u e n t e f a c i l i d a d e de assimilação p e l o usuário. P a r a e x e m p l i f i c a r , examinemos a j a n e l a da RU a s e g u i r :

n^e saloio

descrição

(31)

A l e i t u r a d e s t a j a n e l a é f e i t a da s e g u i n t e m a n e i r a "empregados (ou um c o n j u n t o de a t r i b u t o s que descrevem um empregado) t r a b a l h a m em p r o j e t o s (cada p r o j e t o é d e s c r i t o p o r um c o n j u n t o de a t r i b u t o s ) ; i n v e r s a m e n t e , p r o j e t o s têm empregados t r a b a l h a n d o n e l e s " - f i c a c l a r o que tem s e n t i d o uma p e r g u n t a do t i p o "Quais as descrições dos p r o j e t o s que têm empregados t r a b a l h a n d o n e l e s e c u j o s salários são s u p e r i o r e s a NCzi 5.000,00?".

3.2. A s p e c t o s i m p o r t a n t e s na interação com o usuário.

A l g u n s a s p e c t o s i m p o r t a n t e s a b o r d a d o s no p r o j e t o da i n t e r f a c e são d e s c r i t o s a s e g u i r : - Método de acesso. A e n t r a d a na i n t e r f a c e é f e i t a p e l a digitação dos c a r a c t e r e s s q l f a c i l s e g u i d o s p e l a t e c l a < E n t e r > . Logo após, a i n t e r f a c e é c a r r e g a d a e e x e c u t a d a e x i b i n d o i n i c i a l m e n t e a t e l a de apresentação, m o s t r a d a na f i g u r a 2, a q u a l contém informações s o b r e o que é, e como u t i l i z a r a i n t e r f a c e .

(32)

SQL-FACIL E UMA INTERFACE AMIGÁVEL PARA ACESSO A BANCO DE DADOS RELACIONAL BASEADA NO CONCEITO DE RELAÇÃO UNIVERSAL.

OBSERVE ATENTAMENTE SUA JANELA DA RELAÇÃO UNIVERSAL AO FORMULAR UMA CONSULTA.

OS DADOS DE ENTRADA DEVEM SER SEPARADOS POR UM OU MAIS ESPAÇOS EM BRANCO E AO FINAL DIGITE A TECLA <ENTER>. ORIENTE-SE PELO MENU DE AJUDA E MENSAGENS APRESENTADAS.

< E n t e r > C o n s u l t a <Esc> F i n a l i z a i n t e r a c a o

F i g u r a 2 - T e l a de apresentação da i n t e r f a c e SQL-FACIL.

Não f o i necessário c r i a r m o s nenhum mecanismo de segurança no acesso à i n t e r f a c e , mas v a l e s a l i e n t a r que e x i s t e o mecanismo de segurança do BD ( p r o v i d o p e l o s G e r e n c i a d o r e s ) . Ao d e t e r m i n a r q u a i s os dados que cada usuário pode c o n s u l t a r , quando da criação da j a n e l a da RU p a r a cada usuário, o p r o j e t i s t a do BD também está sendo o responsável p e l a segurança do BD e cada usuário está sendo o responsável p e l a segurança de sua(s> j a n e l a ( s ) da RU. Podemos i m a g i n a r que as j a n e l a s da RU assemelham-se às senhas dos s i s t e m a s c o n v e n c i o n a i s .

(33)

- L a y - o u t das t e l a s .

A f i g u r a 3 d e s t a c a t o d a s as áreas da t e l a - p a d r l o p r o j e t a d a p a r a a i n t e r f a c e . E s t a s áreas ( d e t r a b a l h o , de mensagens e de menu) têm suas funções d e s c r i t a s ao l o n g o d e s t e capítulo.

AREA DE TRABALHO

AREA DE MENSAGENS

AREA DE MENU DE TECLAS DE FUNCfiO

(34)

- S i n t a x e da c o n s u l t a em SQL-FACIL

Uma c o n s u l t a em SQL-FACIL é constituída de três cláusulas, das q u a i s apenas a formulação da p r i m e i r a é obrigatória. As p a l a v r a s SELECT, WHERE e USING são e x i b i d a s p e l a

i n t e r f a c e na área de t r a b a l h o e os parâmetros de cada cláusula são e n t r a d o s , v i a t e c l a d o , p e l o usuário. A t e c l a < E n t e r > f i n a l i z a a e n t r a d a de dados de cada parâmetro, quando então é f e i t a a crítica aos dados. As cláusulas são, r e s p e c t i v a m e n t e , as s e g u i n t e s

a) SELECT < 1 i s t a d e a t r i b u t o s > 0 parâmetro < l i s t a -d e - a t r i b u t o s > é uma l i s t a -de a t r i b u t o s u n i v e r s a i s e e x p r e s s a o s i g n i f i c a d o dos dados o b t i d o s na c o n s u l t a . Os a t r i b u t o s da l i s t a devem s e r s e p a r a d o s p o r um ou mais espaços em b r a n c o .

b) UHERE < p r e d i c a d o > - 0 parâmetro < p r e d i c a d o > é uma combinação b o o l e a n a de condições de seleção f e i t a s s o b r e a t r i b u t o s u n i v e r s a i s .

c ) USING < 1 i s t a - d e - r e l a c i o n a m e n t o s > - 0 parâmetro < 1 i s t a - d e - r e l a c i o n a m e n t o s > é uma l i s t a de nomes de r e l a c i o n a m e n t o s da j a n e l a da RU do usuário. E s t a cláusula é usada p a r a r e m o v e r a m b i g u i d a d e s ou p a r a d e t e r m i n a r um r e l a c i o n a m e n t o q u a l q u e r , o b j e t i v a n d o e s p e c i f i c a r a semântica c o r r e t a da c o n s u l t a . Os nomes de r e l a c i o n a m e n t o s devem s e r s e p a r a d o s p o r um ou mais espaços em b r a n c o .

(35)

A e s c o l h a do espaço em b r a n c o como s e p a r a d o r de dados nas cláusulas deu-se apenas p o r e s t e s e p a r a d o r s e r mais n a t u r a l do que o u t r o q u a l q u e r .

A digitação da t e c l a < E n t e r > na cláusula USING i n d i c a o f i m da c o n s u l t a em SQL-FACIL.

- Métodos de a j u d a

Os métodos de a j u d a ao usuário p r o j e t a d o s na i n t e r f a c e são o menu de t e c l a s de função, as mensagens de e r r o e as mensagens de orientação, d e s c r i t o s a s e g u i r - Menu de t e c l a s de função Em cada t e l a e x i b i d a é m o s t r a d o um menu c o n t e x t u a l de t e c l a s de função (válidas n a q u e l e i n s t a n t e da i n t eração) . TECLA FUNCRO End Esc

->

- F i n a l i z a r a execução da i n t e r f a c e .

- C a n c e l a r uma c o n s u l t a em SQL-FACIL a n t e s de sua execução

- E x i b i r a t e l a da c o n s u l t a em SQL.

(36)

E n t e r - F o r m u l a r uma nova c o n s u l t a .

F i - E x i b i r a j a n e l a da RU do usuário.

F2 - I m p r i m i r a j a n e l a da RU do usuário.

- Mensagens de e r r o .

São mensagens que e s p e c i f i c a m o t i p o de e r r o c o m e t i d o e como se r e c u p e r a r d e l e . E s t a s mensagens são e x i b i d a s após a finalização de uma cláusula onde houve uma e n t r a d a inválida de dados

Exemplo : FALTA ASPA EM CONSTANTE LITERAL.

- Mensagens de orientação.

São mensagens o r i e n t a d o r a s das ações a serem e x e c u t a d a s p e l o usuário no momento em que se p r o c e s s a a e n t r a d a de dados.

Exemplo : DIGITE ATRIBUTO(S) UNIVERSAL(IS).

As mensagens de e r r o e de orientação são e x i b i d a s em l e t r a s maiúsculas p a r a m e l h o r d e s t a q u e , uma vez que os dados de e n t r a d a são em l e t r a s minúsculas.

- Método de detecção e recuperação de e r r o s .

Quando há e r r o s ( d e s i n t a x e ou de semântica) uma mensagem de e r r o é e x i b i d a .

(37)

- A m b i e n t e p a r a execução.

A configuração a t u a l necessária p a r a a execução da i n t e r f a c e SQL-FACIL é a s e g u i n t e :

- i m i c r o - c o m p u t a d o r compatível com IBM-PC, com 64Ô KBytes de memória RAM. E s t e v a l o r pode a u m e n t a r em função dos tamanhos das t a b e l a s a u x i l i a r e s ( d e t a l h a d a s no próximo c a p í t u l o ) . 0 s i s t e m a o p e r a c i o n a l é o D.O.S. - i m o n i t o r de vídeo. - i t e c l a d o s i m p l e s . - i d i s k - d r i v e . - i i m p r e s s o r a - Documentação.

Julgamos s e r dispensável a elaboração de uma documentação o f f - l i n e ( m a n u a i s ) , p o i s a i n t e r f a c e f o i p r o j e t a d a de modo que s e j a a u t o - e x p 1 i c a t i v a . E n t r e t a n t o , c r i a m o s o g u i a do usuário. E s t e g u i a , o qual o b j e t i v a c o m p l e m e n t a r a informação dada p e l o p r o j e t i s t a do BD a um usuário i n i c i a n t e , contém

informações básicas s o b r e o que é uma j a n e l a da RU e exemplos de como e s p e c i f i c a r c o n s u l t a s em SQL-FACIL.

(38)

3.3. Exemplos de c o n s u l t a s em SQL-FACIL.

Vejamos, a s e g u i r , a l g u n s e x e m p l o s comentados de c o n s u l t a s em SQL-FACIL com suas r e s p e c t i v a s transformações em c o n s u l t a s SQL.

Exemplo-1 "Quais os a r t i g o s da conferência A e da seção Banco de Dados que foram j u l g a d o s p o r João ?".

JANELA DA RU :

coiisD-aptigo

-(julgada?

puis

-reagrupados"

(39)

C o n s u l t a em SQL-FACIL

SELECT n o m e - a r t i g o

UHERE n o m e - c o n f e r e n c i a = "A"

AND nome-secao = "Banco de Dados" AND n o m e - j u l g a d o r = "João"

C o n s u l t a em SQL :

SELECT a r t i g o s . t i t u l o

FROM j u l g a d o r e s , a r t i g o s , s e l e c i o n a m , secoes, c o n f e r e n c i a s UHERE c o n f e r e n c i a s . n o m e = "A"

AND secoes.nome = "Banco de Dados" AND j u l g a d o r e s . n o m e = "João" AND j u l g a d o r e s . n o m e = s e i e c i o n a m . n o m e - j u l g a d o r AND se 1 e c i o n a m . c o d i g o = a r t i g o s . c o d i g o AND a r t i g o s . n o m e - s e c a o = secoes.nome-secao AND s e c o e s . c o n f e r e n c i a = c o n f e r e n c i a s . n o m e c o r r e s p o n d e n d o ao s e g u i n t e esquema r e l a c i o n a l J u l g a d o r e s (nome, p a i s ) ; S e l e c i o n a m (nome, código); A r t i g o s

(código, t i t u l o , nome-secao, n o m e - c o n f e r e n c i a ) ; C o n f e r e n c i a s (nome, p a i s ) e Secoes (nome-secao, n o m e - c o n f e r e n c i a , p r e s i d e n t e ) .

(40)

COMENTÁRIO

O pré-processador da i n t e r f a c e SQL-FACIL ( d e t a l h a d o no próximo capítulo) supõe a n e c e s s i d a d e do menor número de junções p a r a r e s p o n d e r uma c o n s u l t a . D e v i d o a essa suposição, c r i a m o s as m a t r i z e s de distâncias mínimas e c a m i n h o s mínimos ( d e t a l h a d a s nas seções 4.2.3 e 4.2.4 do próximo c a p í t u l o ) .

N e s t e exemplo r e s s a l t a m o s o p r o b l e m a da a m b i g u i d a d e e n t r e c a m i n h o s mínimos. Há três caminhos mínimos (cada um com q u a t r o junções n a t u r a i s ) que s a t i s f a z e m a c o n s u l t a . No p r i m e i r o , faríamos as junções das relações J u l g a d o r e s , S e l e c i o n a m , A r t i g o s , Secoes e C o n f e r e n c i a s , n e s t a ordem. Logo, r e s u l t a r i a nos nomes de a r t i g o s s e l e c i o n a d o s p o r João e a g r u p a d o s p e l a seção Banco de Dados da conferência A. I s t o é notório p e l a junção n a t u r a l das relações A r t i g o s e Secoes. No segundo caminho mínimo, faríamos as junções das relações J u l g a d o r e s , S e l e c i o n a m , A r t i g o s , C o n f e r e n c i a s e Secoes, n e s t a ordem. Logo, r e s u l t a r i a nos nomes de a r t i g o s s e l e c i o n a d o s p o r João e e n v i a d o s p a r a a conferência A c u j a seção é Banco de Dados. I s t o é notório p e l a junção das relações A r t i g o s e C o n f e r e n c i a s . No t e r c e i r o , e último, caminho mínimo, faríamos as junções das relações J u l g a d o r e s , S e l e c i o n a m , A r t i g o s e Secoes, n e s t a ordem, e a junção das relações A r t i g o s • C o n f e r e n c i a s . Logo, r e s u l t a r i a nos nomes de a r t i g o s s e l e c i o n a d o s por João e e n v i a d o s p a r a a conferência A e nos nomes de a r t i g o s s e l e c i o n a d o s p o r João e a g r u p a d o s na seção Banco de Dados. P o r t a n t o , temos três s i g n i f i c a d o s ( a m b i g u i d a d e ) p a r a e s t a

(41)

c o n s u l t a t a l q u a l f o i f o r m u l a d a . Como o usuário não e s p e c i f i c o u nenhum nome de r e l a c i o n a m e n t o na cláusula USING, o p r é -p r o c e s s a d o r e s c o l h e q u a l q u e r uma das três r e s -p o s t a s que s a t i s f a z e m a e s t a c o n s u l t a . Para o b t e r os nomes de a r t i g o s e n v i a d o s p a r a a conferência A, o usuário deve e s p e c i f i c a r o nome de r e l a c i o n a m e n t o e n v i a d o s na cláusula USING. Para o b t e r os nomes de a r t i g o s agrupados na seção Banco de Dados, o usuário deve e s p e c i f i c a r o nome de r e l a c i o n a m e n t o a g r u p a d o s na cláusula USING. Para o b t e r os nomes de a r t i g o s e n v i a d o s p a r a a conferência A e os nomes de a r t i g o s agrupados p e l a seção Banco de Dados, o usuário deve e s p e c i f i c a r os nomes dos r e l a c i o n a m e n t o s e n v i a d o s e a g r u p a d o s na cláusula USING.

Neste exemplo, também r e s s a l t a m o s a s i m p l i c i d a d e na formulação da c o n s u l t a . Se e s t a c o n s u l t a f o s s e em SQL, o usuário além de i n f o r m a r o que de f a t o l h e é necessário, t e r i a que f o r m u l a r as q u a t r o junções n a t u r a i s e e s p e c i f i c a r o nome de t o d a s as relações e n v o l v i d a s na c o n s u l t a o que, convenhamos, não é nada amigável. Também c o r r e r i a o r i s c o de e r r a r a tão e x t e n s a formulação da c o n s u l t a . Observemos o p r o c e s s o de navegação lógica que s e r i a f e i t o p e l o usuário da SQL e a f a c i l i d a d e de expressão dada ao usuário da SQL-FACIL.

(42)

Exemplo-2 "Quais os nomes de empregados que fazem p a r t e do p r o j e t o CNPq ?" JANELA DA RU

noa? sauric

EHFREGiHS

PROJETOS

C o n s u l t a em SQL-FACIL SELECT nome UHERE descrição = "CNPq" USING f a z e m - p a r t e - d e

(43)

C o n s u l t a em SQL

SELECT Empregados nome

FROM Empregados, f a z e m - p a r t e - d e , P r o j e t o s WHERE P r o j e t o s . n o m e = "CNPq"

AND Empregados.código = f a z e m - p a r t e - d e cod-e AND f a z e m - p a r t e - d e . c o d - p = P r o j e t o s . p r o j e t o

c o r r e s p o n d e n d o ao s e g u i n t e esquema r e l a c i o n a l Empregados (código, nome, e n d e r e c o , salário, p r o j e t o ) ; f a z e m -p a r t e - d e ( c o d - e , c o d - -p ) ; e P r o j e t o s ( -p r o j e t o , nome, l o c a l , g e r e n t e ) .

COMENTÁRIO

E s t e é mais um exemplo que t r a t a do p r o b l e m a da a m b i g u i d a d e . Há d o i s r e l a c i o n a m e n t o s e n t r e os o b j e t o s Empregados e P r o j e t o s 0 usuário e s c o l h e u , baseado numa prévia observação de sua j a n e l a da RU, o r e l a c i o n a m e n t o f a z e m - p a r t e - d e que de f a t o e x p r e s s a a semântica da c o n s u l t a . Caso nenhum dos r e l a c i o n a m e n t o s f o s s e e s c o l h i d o p e l o usuário, o pré-processador s e l e c i o n a r i a q u a l q u e r um d e l e s , podendo assim e x p r e s s a r um s i g n i f i c a d o não d e s e j a d o p e l o usuário ( s e o r e l a c i o n a m e n t o s e l e c i o n a d o f o s s e g e r e n c i a m ) .

(44)

Exemplo-3 : "Quais os nomes de f o r n e c e d o r e s que a t u a l m e n t e estão f o r n e c e n d o peças ?". JANELA DA RU : C o n s u l t a em SQL-FACIL SELECT nome-f USINS fornecem C o n s u l t a em SQL : SELECT F o r n e c e d o r e s . n o m e - f o r n e c e d o r FROM F o r n e c e d o r e s , Fornecem, Pecas

UHERE Fornecedores.código = Fornecem.cod-f AND Pecas.código = Fornecem.cod-p

(45)

C O M E N T Á R I O : E s t e e x e m p l o m o s t r a a n e c e s s i d a d e d a c l á u s u l a USING p a r a e x p r e s s a r m o s a s e m â n t i c a c o r r e t a d a c o n s u l t a p a r a a q u a l n ã o h á a m b i g u i d a d e . C a s o o u s u á r i o n ã o e s p e c i f i c a s s e o r e l a c i o n a m e n t o f o r n e c e m , a s e m â n t i c a s e r i a " Q u a i s o s n o m e s de f o r n e c e d o r e s ? " , a q u a l n ã o s e r i a a p r e t e n d i d a p e l o u s u á r i o , p o i s r e s u l t a r i a em t o d o s o s f o r n e c e d o r e s c a d a s t r a d o s n o BD, d e n t r e o s q u a i s a q u e l e s que n ã o f o r n e c e m p e ç a s a t u a l m e n t e . A c o n s u l t a em SQL o b t é m a r e s p o s t a c o r r e t a , p o r é m d e uma f o r m a m e n o s e f i c i e n t e uma v e z q u e o p r é - p r o c e s s a d o r g e r a uma j u n ç ã o d e s n e c e s s á r i a ( P e c a s . c ó d i g o = F o r n e c e m . c o d - p > a u m e n t a n d o a s s i m o t e m p o d e r e s p o s t a . I s t o a c o n t e c e p o r q u e q u a n d o um r e l a c i o n a m e n t o ( e x p r e s s o n a c l á u s u l a U S I N G ) e n v o l v e d u a s j u n ç õ e s , ambas s ã o u t i l i z a d a s p e l o p r é - p r o c e s s a d o r . E x e m p l o - 4 " Q u a i s o s nomes d a s p e ç a s de c o r a z u l f o r n e c i d a s p e l o f o r n e c e d o r de c ó d i g o 9 9 o u c ó d i g o 8 8 ? " . JANELA DA RU . É a mesma d o e x e m p l o a n t e r i o r .

(46)

C o n s u l t a em S Q L - F A C I L SELECT nome-p UHERE c o r = " a z u l " AND < c o d i g o - f = " 9 9 " OR c o d i g o - f = " 8 8 " ) C o n s u l t a em SQL SELECT P e c a s . n o m e - p e c a FROM F o r n e c e d o r e s , F o r n e c e m , P e c a s WHERE P e c a s . c o r = " a z u l " AND ( F o r n e c e d o r e s . c ó d i g o = " 9 9 " OR F o r n e c e d o r e s . c o d i g o = " 8 8 " ) AND F o r n e c e d o r e s . c ó d i g o = F o r n e c e m . c o d - f AND P e ç a s . c ó d i g o = F o r n e c e m . c o d - p C O M E N T Á R I O : E s t e e x e m p l o d e s t a c a o u s o d o s p a r ê n t e s e s n a p r e c e d ê n c i a d e o p e r a ç õ e s e o u s o d o o p e r a d o r b o o l e a n o OR.

(47)

E x e m p 1 o - 5 g e r e n t e s ? " . ' Q u a i s o s e m p r e g a d o s q u e g a n h a m m a i s d o q u e s e u s JANELA DA RU C o n s u l t a em S Q L - F A C I L SELECT m a t - e WHERE s a l a r - e > s a l a r - g C o n s u l t a em SQL SELECT Y . m a t r i c u l a FROM E m p r e g a d o s X, E m p r e g a d o s Y WHERE X . m a t r i c u l a = Y . g e r e n t e AND Y . s a l á r i o > X . s a l á r i o l e m b r a n d o q u e o BD r e l a c i o n a l p o s s u i a p e n a s a r e l a ç ã o E m p r e g a d o s ( m a t r i c u l a , n o m e , s a l á r i o , g e r e n t e ) e p o r i s s o é n e c e s s á r i o u s a r a s v a r i á v e i s - t u p 1 a X e Y.

(48)

4 . O P R É - P R O C E S S A D O R DA INTERFACE S Q L - F A C I L

4 . 1 . O p e r a c i o n a l i z a ç ã o d o p r é - p r o c e s s a d o r .

0 p r é - p r o c e s s a d o r d a i n t e r f a c e S Q L - F A C I L é um f r o n t e n d p a r a um G e r e n c i a d o r d e B a n c o d e D a d o s R e l a c i o n a l (GBDR) q u e p r o c e s s e c o n s u l t a s em SQL c o m o , p o r e x e m p l o , o ORACLE d a O r a c l e C o r p o r a t i o n C ORACLE 84D e o DB2 d a IBM íDATE 861. Seu o b j e t i v o é

t r a n s f o r m a r uma c o n s u l t a e x p r e s s a n a i n t e r f a c e S Q L - F A C I L numa c o n s u l t a c o r r e s p o n d e n t e em SQL. 0 p r é - p r o c e s s a d o r c a l c u l a a m e n o r d i s t â n c i a e n t r e t o d o s o s p a r e s d e r e l a ç õ e s d o BD e c a l c u l a t a m b é m a s r e l a ç õ e s i n t e r m e d i á r i a s d o c a m i n h o m í n i m o e n t r e t o d o s o s p a r e s d e r e l a ç õ e s do BD. A m e n o r d i s t â n c i a e n t r e a s r e l a ç õ e s r e f e r e n c i a d a s numa c o n s u l t a c o r r e s p o n d e a o m e n o r n ú m e r o d e j u n ç õ e s n e c e s s á r i a s p a r a r e s p o n d e r e s t a c o n s u l t a . A s s u m i m o s a n e c e s s i d a d e d o m e n o r n ú m e r o de j u n ç õ e s , o b j e t i v a n d o e f i c i ê n c i a n o p r o c e s s a m e n t o d a c o n s u l t a g e r a d a ( q u a n t o m e n o r o n ú m e r o d e j u n ç õ e s , m e n o r s e r á o t e m p o d e r e s p o s t a ) . A l i n g u a g e m u s a d a n a i m p l e m e n t a ç ã o d o p r é - p r o c e s s a d o r é o T u r b o P a s c a l 4 . 0 CPASCAL Q71. E n t r e a s l i n g u a g e n s a p r o p r i a d a s p a r a a i m p l e m e n t a ç ã o ( P a s c a l , C, P L / i , e t c . ) d o p r é - p r o c e s s a d o r da i n t e r f a c e SQL-FACIL e s c o l h e m o s a l i n g u a g e m d e p r o g r a m a ç ã o

(49)

P a s c a l p e l o f a t o de t e r m o s um m a i o r d o m í n i o d e s t a l i n g u a g e m e c o n s e q u e n t e m e n t e e c o n o m i a do t e m p o que s e r i a e m p r e g a d o n o a p r e n d i z a d o de o u t r a l i n g u a g e m . Uma v i s ã o g e r a l do f u n c i o n a m e n t o do p r é - p r o c e s s a d o r é d a d a p e l a f i g u r a 4 .

Jan?La da RU

Conarita

m

PSE-?ROCESSfòOR

Tabelas

Esquema,

èc BI

F i g u r a 4 - F u n c i o n a m e n t o do p r é - p r o c e s s a d o r da i n t e r f a c e S Q L - F A C I L .

(50)

4 . 2 . P r i n c i p a i s e s t r u t u r a s d e d a d o s i m p l e m e n t a d a s . 4 . 2 . 1 . T a b e l a s a u x i l i a r e s . E s t a s t a b e l a s d e f i n e m o e s q u e m a d o BD e a s j a n e l a s d a RU, a l é m d e c a r a c t e r í s t i c a s p a r t i c u l a r e s d e c a d a c o n s u l t a . As t a b e l a s a u x i l i a r e s f o r a m c o n c e b i d a s o b j e t i v a n d o e f i c i ê n c i a n o p r o c e s s a m e n t o de i n f o r m a ç õ e s p e l o p r é - p r o c e s s a d o r ( é m a i s e f i c i e n t e a m a n i p u l a ç ã o d e e n d e r e ç o s d e t a b e l a s d o q u e d e s e u s c o n t e ú d o s ) . A t a b e l a d a r e l a ç ã o u n i v e r s a l , a t a b e l a d e r e l a c i o n a m e n t o s I e a t a b e l a de r e l a ç õ e s s ã o c r i a d a s e m a n t i d a s p e l o p r o j e t i s t a o u a d m i n i s t r a d o r d o BD u t i 1 i s a n d o - s e q u a l q u e r e d i t o r d e t e x t o s . A t a b e l a d e r e l a c i o n a m e n t o s I I e a s t a b e l a s d e c o n s t a n t e s s ã o c r i a d a s p e l o p r é - p r o c e s s a d o r e a t u a l i z a d a s a c a d a n o v a c o n s u l t a . - T a b e l a d a R e l a ç ã o U n i v e r s a l . E s t a t a b e l a c o n t é m a s e m â n t i c a d a RU. E u s a d a n a c r í t i c a d o s a t r i b u t o s u n i v e r s a i s e s p e c i f i c a d o s n a c o n s u l t a . Na v e r d a d e , a t a b e l a d a r e l a ç ã o u n i v e r s a l p o d e r i a s e r v i s t a como a i n c o r p o r a ç ã o d e d u a s t a b e l a s a t a b e l a d e a t r i b u t o s d a r e l a ç ã o u n i v e r s a l ( v e t o r ) e a t a b e l a q u e d e f i n e o e s q u e m a d o BD, a q u a l c o n t e r i a o s n o m e s d a s r e l a ç õ e s e o s nomes d o s a t r i b u t o s d o BD. A s e g u i r , m o s t r a m o s a t a b e l a d a r e l a ç ã o u n i v e r s a l c o n s t r u í d a p a r a o e x e m p l o - 3 d o c a p í t u l o a n t e r i o r .

(51)

a t r i b u t o U r e i a c a o a t r i b u t oBD 1cod i f l o - f 1 f o r n e c e d o r e s I c o d i s o 1 1 n o m e - f 1 - F o r n e c e d o r e s I n o m e 1 1 -Fornecem I c o d - f 1 1 1 f o r n e c e m l c o d - p 1 1 q u a n t i d a d e 1 f o r n e c e m I q u a n t i d a d e 1 1 c o d i g o - p 1 p e c a s I c o d i g o 1 1 nome-p 1 p e c a s I n o m e 1 1 c o r 1 p e c a s 1 c o r 1 0 campo a t r i b u t o U c o n t é m um nome de a t r i b u t o u n i v e r s a l Q u a n d o o campo a t r i b u t o U e s t i v e r v a z i o , s i g n i f i c a q u e o a t r i b u t o B D f a z p a r t e d a c h a v e d e um r e l a c i o n a m e n t o ( o c a m p o a t r i b u t o U n ã o a p a r e c e n a j a n e l a da RU d o u s u á r i o ) .

0 campo r e l a ç ã o c o n t é m o nome d e uma r e l a ç ã o d o b a n c o de d a d o s q u e é r e f e r e n c i a d a p e l o a t r i b u t o U .

0 campo a t r i b u t o B D c o n t é m o nome de um a t r i b u t o d o b a n c o d e d a d o s p e r t e n c e n t e à r e l a ç ã o r e f e r e n c i a d a n o c a m p o r e i a ç ã o .

(52)

- T a b e l a de r e l a c i o n a m e n t o s I . E s t a t a b e l a c o n t é m o s n o m e s d o s r e l a c i o n a m e n t o s d o BD, o s a t r i b u t o s d a j u n ç ã o n a t u r a l e a s d u a s r e s p e c t i v a s r e l a ç õ e s e n v o l v i d a s em c a d a r e l a c i o n a m e n t o . Ê u s a d a n a c r í t i c a à ( l i s t a -d e - r e l a c i o n a m e n t o > -d a c l á u s u l a U S I N G , n a c r i a ç ã o -d a m a t r i z -d e d i s t â n c i a s m í n i m a s ( c o m l i s t a s d e a t r i b u t o s d a j u n ç ã o d e t a l h a d a s n a s e ç ã o 4 . 2 . 3 ) e n a c r i a ç ã o d a t a b e l a d e r e l a c i o n a m e n t o s I I ( d e f i n i d a n a p r ó x i m a s u b - s e ç ã o ) . A t a b e l a de r e l a c i o n a m e n t o s I é r e p r e s e n t a d a p e l a j a n e l a d a RU da f i g u r a 4 . A t a b e l a d a r e l a ç ã o u n i v e r s a l é r e p r e s e n t a d a p e l o e s q u e m a d o BD d a f i g u r a 4 A s e g u i r m o s t r a m o s a t a b e l a d e r e l a c i o n a m e n t o s c o n s t r u í d a p a r a o e x e m p l o - 3 d o c a p í t u l o a n t e r i o r . r e l i r e ! 2 a t r l a t r 2 r e l a I f o r n e c e d o r e s I f o r n e c e m I c o d i g o I c o d - f I f o r n e c e m I I 1 I f o r n e c e m I p e c a s I c o d - p I c o d i g o I f o r n e c e m I Os c a m p o s r e l i e r e l 2 conerô o s nomes d a s d u a s r e l a ç õ e s e n v o l v i d a s no r e l a c i o n a m e n t o .

(53)

Os c a m p o s a t r l e a t r S c o n t ê m o s n o m e s d o s a t r i b u t o s d a j u n ç ã o n a t u r a l d a s r e l a ç õ e s r e f e r e n c i a d a s n o s c a m p o s r e l i e r e l 2 . 0 c a m p o r e l a c o n t é m o nome d o r e l a c i o n a m e n t o e n t r e a s r e l a ç õ e s r e f e r e n c i a d a s n o s c a m p o s r e l i e r e l 2 . T o d o s e s t e s c a m p o s o c u p a m 2 0 p o s i ç õ e s n a t a b e l a . - T a b e l a d e r e l a c i o n a m e n t o s I I . E s t a t a b e l a c o n t é m o s n o m e s d o s r e l a c i o n a m e n t o s d o BD e o s c ó d i g o s d a s d u a s r e l a ç õ e s e n v o l v i d a s n e s t e r e l a c i o n a m e n t o . E s t e s c ó d i g o s c o r r e s p o n d e m a o s e n d e r e ç o s n a t a b e l a de r e l a ç õ e s . A s e g u i r m o s t r a m o s a t a b e l a d e r e l a c i o n a m e n t o s I I c o n s t r u í d a p a r a o e x e m p l o - 3 d o c a p í t u l o a n t e r i o r . I f o r n e c e m 1 1 1 2 1 , 1 I f o r n e c e m I 2 I 3 I

(54)

- T a b e l a de r e l a ç õ e s E s t a t a b e l a c o n t é m o s nomes d a s r e l a ç õ e s d o BD. A s e g u i r m o s t r a m o s a t a b e l a de r e l a ç õ e s c o n s t r u í d a p a r a o e x e m p l o - 3 d o c a p í t u l o a n t e r i o r . I f o r n e c e d o r e s I I f o r n e c e m I p e c a s - T a b e l a s de c o n s t a n t e s ( i n t e i r a s , r e a i s e l i t e r a i s ) . E s t a s t a b e l a s s ã o c r i a d a s a c a d a n o v a c o n s u l t a e c o n t ê m a s c o n s t a n t e s e s p e c i f i c a d a s na c o n s u l t a . E s t a s t a b e l a s s ã o a s t a b e l a s t e m p o r á r i a s da f i g u r a 4 . A t a b e l a de c o n s t a n t e s i n t e i r a s é um v e t o r de e n d e r e ç o s - 2 0 0 a - 1 0 1 . A t a b e l a de c o n s t a n t e s r e a i s é um v e t o r de e n d e r e ç o s - 3 0 0 a - 2 0 1 . A t a b e l a de c o n s t a n t e s l i t e r a i s é um v e t o r de e n d e r e ç o s - 4 0 0 a - 3 0 1 .

(55)

A s e g u i r m o s t r a m o s a t a b e l a d e c o n s t a n t e s l i t e r a i s e a t a b e l a d e c o n s t a n t e s i n t e i r a s c o n s t r u í d a p a r a o e x e m p l o - 4 d o c a p í t u l o a n t e r i o r . t a b e l a d e c o n s t a n t e s l i t e r a i s - 4 0 0 I a z u l t a b e l a d e c o n s t a n t e s i n t e i r a s - 2 0 0 I 9 9 I I 1 - 1 9 9 I 8 8 I 4 . 2 . 2 . V e t o r e s . N e s t e s v e t o r e s s ã o a r m a z e n a d a s t o d a s a s i n f o r m a ç õ e s e s t r u t u r a i s d a c o n s u l t a em SQL q u e e s t á s e n d o g e r a d a . - V e t o r de r e l a ç õ e s . E o v e t o r o n d e s ã o a r m a z e n a d o s , sem r e p e t i ç ã o , o s c ó d i g o s d a s r e l a ç õ e s r e f e r e n c i a d a s p e l o s n o m e s d e a t r i b u t o s e / o u p e l o s n o m e s d e r e l a c i o n a m e n t o s d a c o n s u l t a em S Q L - F A C I L . E s t e s c ó d i g o s c o r r e s p o n d e m a o s e n d e r e ç o s d a s r e l a ç õ e s n a t a b e l a d e r e l a ç õ e s . Os e l e m e n t o s d o v e t o r de r e l a ç õ e s ( V R ) s ã o p e r m u t a d o s o b j e t i v a n d o uma s e q u ê n c i a q u e s e r v i r á p a r a e n c o n t r a r m o s o c a m i n h o m í n i m o e n v o l v e n d o t o d a s a s r e l a ç õ e s p a r t i c i p a n t e s d a c o n s u l t a em SQL Na s e ç ã o 4.3 d e s t e c a p í t u l o d e s c r e v e m o s o p r o c e d i m e n t o d e

(56)

- V e t o r g e r a l . É o v e t o r q u e c o n t é m o s c ó d i g o s g e r a d o s p e l o s a n a l i s a d o r e s l é x i c o e s i n t á t i c o ( c o m e n t a d o s n a s e ç ã o 4 . 4 d e s t e c a p í t u l o ) , a p a r t i r d a c o n s u l t a em S Q L - F A C I L , p o d e n d o c o n t e r t a m b é m c ó d i g o s g e r a d o s p e l o p r é - p r o c e s s a d o r r e f e r e n t e s à s j u n ç õ e s n e c e s s á r i a s à c o n s u l t a . Os c ó d i g o s g e r a d o s p e l o s a n a l i s a d o r e s s ã o os s e g u i n t e s o s e n d e r e ç o s d a t a b e l a d a r e l a ç ã o u n i v e r s a l c o r r e s p o n d e n t e s a o s a t r i b u t o s d a c o n s u l t a , o s e n d e r e ç o s d a s t a b e l a s d e c o n s t a n t e s o n d e f o r a m a r m a z e n a d a s a s c o n s t a n t e s d a c o n s u l t a , o s c ó d i g o s d o s o p e r a d o r e s ( a r i t m é t i c o s , r e l a c i o n a i s e b o o l e a n o s ) e d o s p a r ê n t e s e s d a c o n s u l t a . C a s o s e j a m n e c e s s á r i a s o p e r a ç õ e s d e j u n ç ã o n a c o n s u l t a SQL, o v e t o r g e r a l c o n t e r á t a m b é m o s c ó d i g o s g e r a d o s p e l o p r é - p r o c e s s a d o r r e f e r e n t e s a e s t a s j u n ç õ e s . E s t e s c ó d i g o s s ã o o s s e g u i n t e s o s e n d e r e ç o s d a t a b e l a da r e l a ç ã o u n i v e r s a l c o r r e s p o n d e n t e s a o s a t r i b u t o s d a j u n ç ã o , o c ó d i g o d o o p e r a d o r r e l a c i o n a l d e i g u a l d a d e , o c ó d i g o d o o p e r a d o r b o o l e a n o a n d e o c ó d i g o e s p e c i a l 0 ( z e r o ) q u e é u s a d o p a r a s e p a r a r a s c l á u s u l a s SELECT e UHERE. As i n f o r m a ç õ e s d e s t e s v e t o r e s s ã o u s a d a s p a r a m o n t a r a c o n s u l t a em SQL d a s e g u i n t e m a n e i r a As i n f o r m a ç õ e s d o v e t o r g e r a l s ã o u s a d a s n a m o n t a g e m d a s c l á u s u l a s SELECT e UHERE, e a s i n f o r m a ç õ e s d o v"R n a m o n t a g e m d a c l á u s u l a FROM.

(57)

V e j a m o s e x e m p l o s d o s v e t o r e s c o n s t r u í d o s a p a r t i r d a s e g u i n t e c o n s u l t a em S Q L - F A C I L f e i t a s o b r e a j a n e l a d a RU d o e x e m p l o - 3 d o c a p í t u l o a n t e r i o r SELECT n o m e - f UHERE q u a n t i d a d e > 10 AND q u a n t i d a d e < 2 0 0 VR c o n t é m o s e l e m e n t o s i e 2 q u e c o r r e s p o n d e m a o s e n d e r e ç o s d a t a b e l a d e r e l a ç õ e s o n d e e s t ã o a r m a z e n a d o s r e s p e c t i v a m e n t e a s r e l a ç õ e s f o r n e c e d o r e s e f o r n e c e m a s q u a i s s ã o r e f e r e n c i a d a s p e l o s a t r i b u t o s n o m e - f e q u a n t i d a d e . • v e t o r g e r a l c o n t é m r e s p e c t i v a m e n t e o s s e g u i n t e s e l e m e n t o s - 5 7 0 - 5 6 17 - 2 0 0 1 - 5 6 15 - 1 9 9 1 - 5 5 18 - 5 4 o n d e - 5 7 é o e n d e r e ç o d o a t r i b u t o u n i v e r s a l n o m e - f n a t a b e l a d a r e l a ç ã o u n i v e r s a l . 0 é o c ó d i g o e s p e c i a l s e p a r a d o r d a s c l á u s u l a s SELECT e UHERE

(58)

- 5 6 : é o e n d e r e ç o d o a t r i b u t o u n i v e r s a l q u a n t i d a d e n a t a b e l a d a r e l a ç ã o u n i v e r s a l . 17 : é o c ó d i g o d o o p e r a d o r r e l a c i o n a l > ( m a i o r ) . - 2 0 0 é o e n d e r e ç o na t a b e l a de c o n s t a n t e s i n t e i r a s o n d e f o i a r m a z e n a d a a c o n s t a n t e i n t e i r a 1 0 . i : é o c ó d i g o d o o p e r a d o r b o o l e a n o AND. - 5 6 : é o e n d e r e ç o d o a t r i b u t o u n i v e r s a l q u a n t i d a d e na t a b e l a d a r e l a ç ã o u n i v e r s a l . 15 : é o c ó d i g o do o p e r a d o r r e l a c i o n a l ( ( m e n o r ) . - 1 9 9 é o e n d e r e ç o na t a b e l a de c o n s t a n t e s i n t e i r a s o n d e f o i a r m a z e n a d a a c o n s t a n t e i n t e i r a 2 0 . 1 é o c ó d i g o d o o p e r a d o r b o o l e a n o AND. - 5 5 é o e n d e r e ç o do a t r i b u t o de j u n ç ã o c o d - f na t a b e l a d a r e l a ç ã o u n i v e r s a l . 18 é o c ó d i g o do o p e r a d o r r e l a c i o n a l de i g u a l d a d e . - 5 4 é o e n d e r e ç o d o a t r i b u t o de j u n ç ã o c o d i g o - f na t a b e l a d a r e l a ç ã o u n i v e r s a l .

(59)

Os e n d e r e ç o s d a s t a b e l a s a u x i l i a r e s s ã o p r o p o s i t a d a m e n t e n ú m e r o s i n t e i r o s n e g a t i v o s a p e n a s p a r a d i f e r e n c i a ç ã o com o s c ó d i g o s d o s s í m b o l o s u s a d o s na i n t e r f a c e . A c o n s u l t a em SQL g e r a d a a p a r t i r d e s t e s v e t o r e s é a s e g u i n t e SELECT f o r n e c e d o r e s . n o m e FROM f o r n e c e d o r e s , f o r n e c e m 1 UHERE f o r n e c e m . q u a n t i d a d e > 10 AND f o r n e c e m . q u a n t i d a d e < 2 0 AND f o r n e c e d o r e s . c o d i g o = f o r n e c e m . c o d - f 4 . 2 . 3 . M a t r i z de d i s t â n c i a s m í n i m a s ( c o m l i s t a s de a t r i b u t o s d a j u n ç ã o ) . A m a t r i z de d i s t â n c i a s m í n i m a s ( D ) c o n t é m a s d i s t â n c i a s m í n i m a s e n t r e t o d o s o s p a r e s de r e l a ç õ e s do BD. Se h á uma j u n ç ã o n a t u r a l e n t r e d u a s r e l a ç õ e s , d i g a m o s i e j , a s s u m i m o s que a d i s t â n c i a t e m v a l o r 1 ( u m ) e o s e n d e r e ç o s da t a b e l a da r e l a ç ã o u n i v e r s a l ( o n d e e s t ã o a r m a z e n a d o s o s a t r i b u t o s da j u n ç ã o d a s r e s p e c t i v a s r e l a ç õ e s ) s ã o g r a v a d o s numa l i s t a a p o n t a d a p e l o s e l e m e n t o s D C i , j D e D C j , i1 . Cada l i s t a c o n t é m

Referências

Documentos relacionados

a) Expedições financiadas pela Coroa que se propunham exclusivamente a descobrir metais e pedras preciosas. b) Movimento de fundo catequético, liderados pelos jesuítas para a

3.2 Quitinase e β-1,3-glucanase De maneira geral, para a atividade de quitinase, todos os tratamentos com o fosfito de potássio, de manganês e ASM apresentaram aumento na atividade

O desempenho notável de Portugal na transição energética foi acompanhado pela existência de um problema de subsidiação abusiva ao setor renovável transparece

Consumo dos créditos ativos de acordo com as tarifas do plano do Cliente (aquisições e ativações de créditos Oi Multiuso efetuadas). 7.5 O Cliente poderá, a qualquer

Franquia de 30 (trinta) SMSs, acesso ao conteúdo do Oi Esportes, acesso ao aplicativo Oi Jornais e acesso à internet, limitado à franquia de 60MB (sessenta

Quando esta opção está desactivada, o SmartControl Lite não arranca ou aparece no tabuleiro de sistema.. A única forma de iniciar o SmartControl Lite é a partir do atalho

A música e a dança foram, portanto, meios importantes através dos quais os negros de então puderam manter o contato e as trocas com seus ancestrais, a exemplo do que se observa

Eles ressaltaram diversos aspectos de sua imensa contribuição ao management: Drucker foi um transgressor, tinha imensa capacidade de fazer previsões, foi um fenômeno como autor