Sei sulla pagina 1di 89

Matemtica e Informtica Mdulo IV

Bases de Dados Relacionais (linguagem SQL)

2006/2007

Utilidade das Bases de Dados


Recolha e processamento de dados
que possuem um volume significativo, que so interrelacionados, de forma a que no existam perdas de informao, cuja organizao permita a sua fcil compreenso e que o seu processamento seja eficiente.

Eficcia!!!

Base de Dados
um conjunto de dados relacionados que utilizado recorrendo a um Sistema Gestor de Bases de Dados (SGBD).
Uma Base de Dados representa uma parte da realidade que relevante para a resoluo de um determinado conjunto de problemas.

Existem no mercado diversos SGBD, os mais utilizados so os SGBD relacionais que permitem criar bases de dados relacionais.

SGBD relacional
Os conceitos em que se baseia foram apresentados em 1970. Desde ento vrios fornecedores de software informtico tm vindo a desenvolver SGBD relacionais.
O OpenOffice.org Base um SGBD relacional
pode ser utilizado em computadores com sistema operativo Windows ou Linux

O Microsoft Access tambm um SGBD relacional


destina-se a ser utilizado em computadores com sistema operativo Windows

O ORACLE outro exemplo de SGBD relacional


muito utilizado em computadores com sistema operativo Windows ou Linux
4

Mtodos de desenvolvimento de bases de dados


Os mais divulgados incluem:
uma fase de criao de um modelo conceptual de dados uma fase de converso deste modelo para o SGBD escolhido para a sua implementao

Um modelo conceptual de dados pode ser criado utilizando conceitos e regras de tipo EntidadeAssociao (E-A).
Vantagens necessita apenas de um conjunto diminuto de conceitos e regras simples, representao por diagramas com uma notao muito elementar.
5

Conceitos para modelos conceptuais de tipo E-A


Os modelos de tipo E-A so compostos por entidades e associaes. As entidades representam objectos reais que possuem uma descrio que determinada pelos problemas que se pretendem resolver por meio da Base de Dados. As associaes representam relacionamentos relevantes entre entidades.

Tipo de entidades e atributos


As entidades que possuem uma descrio comum so representadas por um tipo de entidade, o qual caracterizado por um conjunto de atributos. Os valores que tomam cada um dos atributos de um tipo de entidade permitem descrever e distinguir entre si as entidades que pertencem a um mesmo tipo de entidade.

Exemplo
Numa base de dados que se destina a servir os alunos de uma Faculdade:
os alunos, os professores e as disciplinas so entidades aluno, professor e disciplina so tipos de entidade
identificados, respectivamente, por Aluno, Professor, Disciplina

n de aluno (nAluno), nome de aluno (nomeA) e data de nascimento (datanasc) so atributos do tipo de entidade Aluno; cdigo da disciplina (cdigo), designao (designao) e crditos (crditos) so atributos do tipo de entidade Disciplina 12345, Jos Silva, 1980-11-30 so valores dos atributos8 ...

Chave primria de um tipo de entidade


A um atributo de um tipo de entidade cujos valores permitam identificar de forma inequvoca cada uma das entidades desse tipo d-se o nome de chave primria. Regra: cada tipo de entidade deve possuir uma chave primria.
no exemplo, cada entidade do tipo Aluno pode ser identificada pelo nAluno e cada entidade do tipo Disciplina pode ser identificada pelo cdigo alunos distintos tero nmeros diferentes; duas disciplinas diferentes tero cdigos diferentes.
9

Associao e tipo de associao


Entre alunos e disciplinas existem associaes, entre professores e disciplinas tambm existem associaes ... Um tipo de associao representa as associaes com caractersticas comuns que se estabelecem entre as vrias entidades.
no exemplo, pode ser criado um tipo de associao, com o nome Inscrito, que representa as associaes que se estabelecem entre as entidades do tipo Aluno e as entidades do tipo Disciplina; pode ainda ser criado um tipo de associao Responsabilidade para representar as associaes existentes entre as entidades do tipo Professor e as entidades do tipo Disciplina

10

Diagrama do modelo conceptual


Aluno

Inscrito

Disciplina

Responsabilidade

Professor

11

Atributos de um tipo de Associao


Um tipo de associao pode possuir atributos que permitam descrever as caractersticas prprias de cada associao.
como atributo do tipo de associao Inscrito pode incluir-se a data de inscrio dos alunos na disciplina (dataInsc) .

12

Diagrama do modelo conceptual


nAluno nomeA dataNasc

Aluno

dataInsc

Inscrito
cdigo designao nProf nomeP categoria

Disciplina

Responsabilidade

Professor

13

Cardinalidade de um tipo de associao


Um tipo de associao caracteriza-se pelo nmero de tipos de entidade que envolve, podendo ser unria, ou binria (o caso mais frequente), ou ternria, ou

14

Multiplicidade de um tipo de associao


A multiplicidade do tipo de associao indica o modo como se podem estabelecer associaes desse tipo. Um tipo de associao binria pode ser:

de um para um (1:1) quando cada entidade s pode ocorrer numa nica associao desse tipo; de um para muitos (1:n) quando cada entidade de um tipo s pode ocorrer numa associao, mas as entidades do outro tipo podem ocorrer em mais do que uma associao desse tipo; de muitos para muitos (n:n) quando no existe nenhuma restrio ao nmero de ocorrncias de cada entidade em associaes desse tipo.
15

Exemplos
O tipo de associao Responsabilidade entre os tipos de entidade Professor e Disciplina de 1:n
cada disciplina da responsabilidade de um nico professor mas um professor pode ser responsvel por mais do que uma disciplina

O tipo de associao Inscrito entre Aluno e Disciplina de n:n


um aluno pode estar inscrito em mais do que uma disciplina e uma disciplina pode ter vrios alunos inscritos.

16

Multiplicidade (mais detalhe)


Geralmente, vantajoso definir a multiplicidade de um tipo de associao de uma forma mais detalhada, indicando dois nmeros: o mnimo e o mximo de vezes que uma entidade pode participar em associaes de um mesmo tipo. A multiplicidade frequentemente 0,1 ou 1,1 ou 0,n ou 1,n, mas pode ser diferente (2,2 ou 2,n, por exemplo).

17

Exemplos
O tipo de associao Inscrito tem multiplicidade 1,n relativamente ao tipo de entidade Aluno
nesta base de dados, um aluno tem que estar inscrito em pelo menos uma disciplina

O tipo de associao Inscrito tem multiplicidade 0,n relativamente ao tipo de entidade Disciplina
nesta base de dados, podem existir entidades de tipo Disciplina que no estejam associadas a nenhuma entidade do tipo Aluno e outras que estejam associadas a uma ou mais entidades do tipo Aluno

A multiplicidade do tipo de associao Responsabilidade 1,1 relativamente ao tipo de entidade Professor


para cada disciplina existe sempre um e s um professor responsvel
18

Restries de integridade
So condies que tm que ser verificadas para que a base de dados seja fiel realidade. A multiplicidade dos tipos de associao representam restries de integridade do modelo de dados. Nem todas as restries de integridade dos dados podem ser representadas no modelo pela multiplicidade dos tipos de associao
por exemplo: a data de inscrio numa disciplina tem que ser posterior data de nascimento do aluno.
19

1 etapa da criao de um modelo conceptual de dados


Identificao dos tipos de entidade e respectivos atributos.
Regras gerais:
As entidades representam objectos que podem possuir uma descrio; os atributos no possuem informao descritiva. Quando a uma entidade pode corresponder mais do que um valor de um dado atributo, este deve ser considerado como uma entidade mesmo que sobre ele no exista mais nenhuma informao descritiva. Os atributos devem ser usados nas entidades a que mais directamente dizem respeito. Como chave primria deve-se evitar a utilizao de conjuntos de atributos.
20

2 etapa da criao de um modelo conceptual de dados


Identificao dos tipos de associao e respectivos atributos.
Por excluso de partes, devero representar os objectos que no foram considerados nem entidades nem atributos. Regras gerais:
As associaes redundantes devem ser eliminadas. Consideram-se redundantes as associaes que representam um mesmo aspecto da realidade; as redundncias mais frequentes resultam da existncia de associaes transitivas S devem ser usadas associaes ternrias quando for impossvel represent-las por meio de vrias associaes binrias.
21

Diagrama do modelo conceptual


nAluno nomeA dataNasc

Aluno 0,n

dataInsc

Inscrito

n:n
cdigo designao nProf nomeP categoria

1,n Disciplina

0,n

Responsabilidade 1:n

1,1

Professor

22

Exerccios:
1. Uma loja pretende construir uma base de dados com informao relevante sobre os discos que vende. Relativamente a cada disco, pretende registar na base de dados um cdigo identificativo, o ttulo, n de cpias vendidas, data de gravao e o grupo/intrprete. Pretende tambm registar as msicas que cada disco inclui. Sobre cada msica, pretende registar o ttulo que identifica a msica e o primeiro autor. Uma mesma msica pode figurar em discos distintos.

23

Exerccios (cont.):
2. Uma empresa agrcola pretende construir uma base de dados com informao relevante sobre os animais que possui. Relativamente a cada variedade de animal, pretende registar na base de dados um nome identificativo e o nmero de animais dessa variedade que possui. Pretende tambm registar os produtos derivados de cada variedade de animal, em particular a sua designao, a quantidade produzida e o seu preo de venda. Cada um destes produtos produzido apenas por uma variedade de animal. Cada variedade de animal consome vrios alimentos e um dado alimento pode ser includo na alimentao de diversas variedades de animal. necessrio registar os alimentos utilizados, sendo cada alimento caracterizado por um nome identificativo e pelo seu preo de aquisio. A base de dados deve ainda conter informao relativa quantidade de cada alimento consumida por cada variedade de animal.
24

Exerccios (cont.):
3. Pretende-se criar uma base de dados, para efectuar a gesto de uma empresa agrcola, onde seja registada informao relativa aos seus trabalhadores e produo e venda. Sobre cada trabalhador pretende-se registar o seu nome, data de nascimento e especialidade. Sobre cada produto da explorao agrcola pretende-se conhecer a sua designao, rea cultivada e qual o trabalhador responsvel. Em relao aos compradores e aos fornecedores, pretende-se conhecer a sua identificao, morada e telefone. Para cada matria-prima pretende-se registar a sua designao e quantidade armazenada. Para cada produto vendido dever ser registado o comprador, a data da venda, a quantidade vendida, o valor da venda e a data do recebimento. Para a matria-prima consumida pretende-se registar os produtos a que esta se destina, a data da utilizao e a quantidade utilizada. Para cada aquisio de matria-prima deve-se conhecer o fornecedor, a data da compra, a quantidade comprada, o valor da compra e a data de pagamento.
25

Trabalhador
1,1

nmero nome data_nasc especialidade

Responsvel
cdigo-p designao-p rea 1,n data-v quantidade-v valor-v data_recebim cdigo-c identificao-c morada-c telefone-c

0,n

Produto
1,n

Venda

0,n

Comprador

Utiliza
data-u quantidade-u 0,n

Matria-prima 1,n

Compra

1,n

Fornecedor

cdigo-mp designao-mp quant-armaz

data-c quantidade-c valor-c data-pagam

cdigo-f identificao-f morada-f telefone-f

26

SGBD relacional
Baseiam-se num conjunto de conceitos tericos apresentados em 1970 por E. F. Codd.
os conceitos que Codd introduziu foram desenvolvidos por outros autores actualmente so os mais utilizados

Vantagens dos SGBD relacionais:


simplicidade dos conceitos que utilizam existncia de definies formais para os conceitos
permitiram uma rpida divulgao permitiram a adeso de diversos fabricantes de software;

adequao representao de muitos dos aspectos que constituem a realidade


27

Relao
Nas bases de dados relacionais a estrutura fundamental a relao ou tabela. Uma relao definida por um esquema. Um esquema composto:
pelo nome da relao pelos nomes de cada um dos atributos pelo domnio de cada atributo
a definio de cada atributo depende do tipo de dados (inteiro, real, alfanumrico, data, lgico ) que o atributo ir armazenar.

28

Exemplos de esquemas
Aluno(nAluno, nomeA, datanasc) Professor(nProf, nomeP, categoria)

29

Atributos
Um atributo Ai toma valores num conjunto Di

chamado domnio do atributo.


O domnio determina o tipo de valores que o atributo pode tomar.

Dado U={A1, A2,...,An}, uma relao R sobre U um subconjunto de D1xD2x...xDn. A cada tuplo deste produto cartesiano d-se o nome de instncia da relao R.
as linhas da relao R so os registos as colunas so os atributos (ou campos)
30

Tabela
O conjunto das instncias da relao R constitu uma tabela em que - as linhas so as instncias (ou registos) - as colunas so os atributos (ou campos)

31

Exemplo de uma tabela


Atributos ou campos
naluno 11111 12345 22222 ... nomeA Ana Maria Santos Jos Silva Natlia Costa ... datanasc 1978-12-03 1980-11-30 1985-12-25 ...

Instncias ou registos

Domnio de naluno: integer (N) Domnio de nome: string 50 (A ) Domnio de datanasc: date (D) Cada registo (instncia) um tuplo

(12345, "Jos Silva", 1980-11-03) NA D


32

Observaes
Numa relao todas as instncias tm o mesmo nmero de atributos;
por exemplo, Aluno (nAluno, nomeA, disciplina1, , disciplinaj, ,dataNasc) no uma relao;

Numa instncia o valor de um atributo sempre atmico;


isto , numa tabela, no cruzamento de uma linha com uma coluna s pode existir um valor de atributo;

numa relao no podem existir instncias iguais; a ordem porque se encontram as instncias de uma relao e os seus atributos irrelevante; os valores de cada atributo pertencem a um mesmo domnio; podem existir instncias sem valores em alguns dos seus atributos; neste caso o atributo diz-se opcional e o seu valor null; os nomes (ou identificadores) dos atributos que constituem o esquema de uma relao so nicos nessa relao.
33

Chave(s) de uma relao


Um atributo que toma valores diferentes para cada instncia da relao uma chave candidata da relao.
cada instncia pode ser identificada pelo valor da chave: o valor da chave nunca se repete.

Por vezes, uma chave pode ser composta por mais do que um atributo. E, no caso extremo, uma chave pode at ser composta por todos os atributos que definem a relao.

34

Chave primria
Chave primria de uma relao um subconjunto mnimo de atributos cujos valores permitam identificar de modo nico cada uma das instncias dessa relao. Atributo primrio: pertence chave primria. Atributo no primrio: no pertence chave primria.

35

Chave estrangeira
Nos SGBD relacionais, para representar as associaes existentes entre as vrias entidades utilizam-se esquemas de relaes em que figuram atributos comuns. Uma chave estrangeira de uma relao um conjunto de atributos que chave primria de outra relao.

36

Restries de integridade
Condies que devem ser verificadas para que um elemento do produto cartesiano dos domnios dos atributos possa pertencer relao. Consequncias imediatas das definies dadas:
integridade de domnio integridade de entidade
impostas pelo domnio de cada atributo; no existem duas instncias de uma relao cujas chaves tenham o mesmo valor valor de uma chave primria (ou mesmo de uma parte dela) no pode ser null; o valor de qualquer chave estrangeira de uma relao um valor da chave primria da relao que refere
37

integridade de referncia

Outras restries de integridade


Outra categoria de restries:
condies que devem ser verificadas pelos valores de dois ou mais atributos de uma mesma instncia da relao.
Algumas restries requerem a utilizao de frmulas matemticas ou lgicas.

Exemplo:
a data de nascimento de um aluno tem de ser posterior data de inscrio nas vrias disciplinas.

38

Dependncias funcionais
Dada um relao R definida sobre um conjunto de atributos U={A1, A2, , An}, diz-se que o atributo Aj depende funcionalmente do atributo Ai (AiAj) quando impossvel terem-se duas instncias de R com o mesmo valor para Ai e diferentes valores para Aj. Exemplo:
Nprof NomeP Categoria 101 Maria Prof. Aux. 321 Joo Assistente 98 Manuel Prof. Aux. 294 Maria Assistente

no

39

Esquema de uma base de dados


O conjunto das relaes que a compem, definidas por meio dos seus atributos, e das restries de integridade. Para cada base de dados pode existir um nmero quase ilimitado de esquemas. Um esquema tanto melhor quanto mais fcil for o seu manuseamento, nomeadamente no que se refere manuteno da sua coerncia aps as actualizaes que venha a sofrer. Um esquema tanto melhor quanto menor for o nmero de dependncias funcionais nele existente.
40

Normalizao
O objectivo das regras de normalizao definir regras para o agrupamento de atributos de forma a minimizar o nmero de dependncias funcionais existentes numa base de dados. Resumidamente, pode dizer-se que numa relao que verifica as primeiras trs formas normais, qualquer atributo que no pertence chave depende completamente e exclusivamente da totalidade da chave.

41

Primeira forma normal


Uma relao R encontra-se na primeira forma normal se e s se todos os seus atributos contm valores atmicos.
Por exemplo, o esquema
Aluno (nAluno, nomeA, disciplina1, , disciplinaj, ,dataNasc)

no respeita a 1 forma normal (nem sequer uma relao) porque possui um nmero varivel de atributos.

42

Segunda forma normal


Uma relao R encontra-se na segunda forma normal se e s se:
verifica a primeira forma normal e todos os atributos no primrios so funcionalmente dependentes da totalidade da chave primria de R.
Esta normalizao visa diminuir a duplicao de dados. Exemplo:
Inscrito (nAluno, cdigo, nomeA, dataNasc)

no se encontra na 2 forma normal porque ... Aplicao da 2 forma normal a esta relao:
Inscrito (nAluno, cdigo) Aluno (nAluno, nomeA, dataNasc)

43

Terceira forma normal


Uma relao R encontra-se na terceira forma normal se e s se:
verifica a segunda forma normal e no contm dependncias funcionais entre atributos no primrios.
Um atributo que no pertence chave primria da relao no pode ser funcionalmente dependente de outro atributo que tambm no pertence chave da relao.
Exemplo: Disciplina (cdigo, designao, nProf, nomeP, categoria) no se encontra na 3 forma normal, mas Disciplina (cdigo, designao, nProf) Professor (nProf, nomeP, categoria) j esto na terceira forma normal.
44

Passagem do modelo E-A para relacional


Um modelo de tipo E-A descreve bem e de uma forma natural e simples a realidade. Os modelos deste tipo so suficientemente flexveis para poderem ser utilizados eficazmente numa fase em que a estruturao dos dados ainda confusa. A estas vantagens pode ainda adicionar-se a facilidade com que possvel efectuar a sua passagem para um SGBD relacional, bem formalizado e comercializado por diversos fornecedores de software.
45

Regras para transformao de um modelo E-A num esquema relacional (1)


Cada tipo de entidades do modelo E-A traduz-se por uma relao em que a chave primria e os atributos provm do tipo de entidade.
Aluno (nAluno, nomeA, dataNasc) Disciplina (cdigo, designao)
Aluno nAluno nomeA dataNasc dataInsc

Professor (nProf, nomeP, categoria) 0,n


Inscrito

n:n
cdigo designao nProf nomeP categoria

1,n

Disciplina

0,n

Responsabilidade

1:n

1,1

Professor

46

Regras para transformao de um modelo E-A num esquema relacional (2)


Um tipo de associao de 1:n (um para muitos) entre dois tipos de entidades Ei e Ej que tenha uma multiplicidade igual a 0,1 ou 1,1 para um tipo de entidade Ei traduz-se por uma chave estrangeira na relao R que traduo de Ej.
Disciplina (cdigo, designao, nProf)
Aluno

0,n
Inscrito

nAluno nomeA dataNasc dataInsc

n:n
cdigo designao nProf nomeP categoria

1,n

Disciplina

0,n

Responsabilidade

1:n

1,1

Professor

47

Regras para transformao de um modelo E-A num esquema relacional (2')


Um tipo de associao de 1:1 (um para um) entre dois tipos de entidades Ei e Ej tratado como um caso especial do tipo de associao 1:n
traduz-se por uma chave estrangeira na relao que traduo de Ej ou de Ei; se apenas para um destes tipos entidades a multiplicidade for 1,1 (sendo para a outra 0,1) d-se preferncia relao que traduz este tipo de entidade, no caso contrrio indiferente qual a relao que escolhida.

48

Regras para transformao de um modelo E-A num esquema relacional (3)


Um tipo de associao de n:n (muitos para muitos) traduz-se por uma relao em que a chave primria inclui as chaves estrangeiras que so chave primria dos tipos de entidade que a constituem; os outros atributos so a traduo dos tipos de atributos da associao (se esta possuir algum).
No caso das chaves estrangeiras no serem suficientes para formar a chave primria da relao, na constituio desta devem tambm ser utilizados outros atributos de forma a ser obtida uma chave primria adequada relao.
49

Regras para transformao de um modelo E-A num esquema relacional (3) (exemplo)
Aluno (nAluno, nomeA, dataNasc) Disciplina (cdigo, designao, nProf) Professor (nProf, nomeP, categoria) Inscrito (nAluno, cdigo, dataInsc) Cacifo (nCacifo, local, nAluno,dataAlug)
Aluno nAluno nomeA dataNasc dataAlug Aluga nCacifo local

0,n
Inscrito

1,1

0,1

Cacifo

1:1
dataInsc

n:n
cdigo designao nProf nomeP categoria

1,n

Disciplina

0,n

Responsabilidade

1:n

1,1

Professor

Na notao utilizada um duplo sublinhado indica que o conjunto de atributos a chave primria da relao um sublinhado simples tracejado indica uma chave estrangeira.

50

Traduo do Modelo E-A no Modelo Relacional Estas regras permitem que se proceda de uma forma rpida (e quase automtica) passagem de um modelo Entidade-Associao em que s existam associaes binrias para um esquema relacional.

51

Exerccio:
A partir dos modelos entidade associao estabelecidos nos exerccios anteriores, crie, para cada um deles, um esquema relacional que respeite a terceira forma normal.

52

OpenOffice.org Base
O Open Office.org um conjunto de aplicaes multiplataforma (Windows, Linux, Sun Solaris, Mac OS X, FreeBSD), open source e de distribuio gratuita (www.openoffice.org). O OpenOffice.org Base um sistema de gesto de bases de dados relacionais que utiliza como motor da base de dados o HSQLDB (www.hsqldb.org) e que suporta a linguagem SQL. O SQL, Structured Query Language, uma linguagem normalizada (ANSI) usada para manipular a informao de uma base de dados relacional.

53

Criao de uma base de dados em Base


Activar a aplicao: Start Programs OpenOffice.org 2.1 OpenOffice.org Base

54

Criao de uma base de dados (cont.)

Exerccio: Crie uma base de dados designada PrimeiraBD, salvando-a na pasta de trabalho BDados, na sua rea pessoal, no servidor quercus. 55

Criao de uma tabela

56

Introduo de dados numa tabela


Para adicionar / alterar registos numa tabela necessrio abrir a tabela:
duplo clique no nome da tabela, ou aps clicar com o boto direito do rato, seleccionar Open, ou menu Edit Open Database Object...
57

Exerccio:
Crie as tabelas Trabalhador e Produto, da base de dados do exerccio 3, com os seguintes registos:

58

Implementao de restries de integridade de referncia


1 3

59

Restries de integridade de referncia: exemplo da base de dados Explorao

60

Consultas a uma base de dados


As operaes de consulta (e actualizao) de uma base de dados denominam-se queries. As regras do modelo relacional levaram ao desenvolvimento de uma linguagem, o SQL, que permite efectuar eficientemente queries. Iniciar a criao de uma query em SQL:

61

Execuo de uma query em SQL


1 Seleccionar o icon SQL (deste modo os comandos so directamente executados no motor da base de dados); 2 Escrever os comandos SQL
nas verses mais recentes do OpenOffice.org Base necessrio colocar entre aspas os nomes das tabelas e dos campos;

3 Executar a query.

2 escrever os comandos SQL

3 executar a query

62

A instruo SELECT
As consultas a uma base de dados relacional fazem-se em SQL recorrendo instruo SELECT. Esta instruo permite criar conjuntos de registos de uma ou mais tabelas da base de dados seleccionados segundo diversos critrios. A sintaxe completa da instruo SELECT complexa.

63

A forma mais simples da instruo SELECT


utiliza apenas a clusula FROM selecciona todos os registos de uma tabela Sintaxe 1 variante:
SELECT { * | table.* | [table.]field1 [, [table.]field2 [, ...]]} FROM table;

onde
* table field especifica que todos os campos devem ser seleccionados especifica o nome da tabela que contm os campos e os registos seleccionados especifica os nomes dos campos que so seleccionados

64

Exemplo

Considere a base de dados Explorao1 com o seguinte esquema relacional: Trabalhador (numero, nome, dataNasc, especialidade) Produto (codigoP, designacaoP, area, numero) Comprador (codigoC, identificacaoC, moradaC,telefoneC) Venda (codigoP, codigoC, dataV, quantidadeV, valorV, dataRecebim) MateriaPrima (codigoMP, designacaoMP, quantArmaz) Utiliza (codigoP, codigoMp, dataU, quantidadeU) Fornecedor (codigoF, identificacaoF, moradaF, TelefoneF) Compra (codigoMp, codigoF, dataC, quantidadeC, valorC, dataPagam)

\\prunus\home\cadeiras\MatInf\BDados\Explorao.odb
65

Exemplo (cont.)
Tabela Trabalhador
numero 1 2 3 4 nome Joo Dias Lusa Ferreira Mrio Horta Joana Garcia codigoC 1 2 3 dataNasc 1955-01-05 1945-11-25 1960-12-05 especialidade hortelo jardineiro motorista eng agrnomo identificacaoC Manel Maria Luisa Fraga Duarte Silva codigoC 1 2 2 1

Tabela Produto
codigoP 5 6 7 8 designacaoP cenoura feijo verde batata rosa telefoneC 749658365 589016587 456123789 valorV 45000 1000 60000 90000 telefoneF 213638161 dataRecebim 1999-05-07 area 4.5 6.5 2.6 1 numero 4 1 4 2

Tabela Comprador

moradaC Casais de Cima Casais de Baixo Vila Nova

Tabela Venda

codigoP 5 5 6 6

dataV 1999-04-07 1999-02-20 1999-04-05 1999-03-29

quantidadeV 50 5.6 100 450 moradaF

Tabela Fornecedor

codigoF 1

identificacaoF Ana Sousa

ISA - Tapada da Ajuda

66

A forma mais simples da instruo SELECT (exemplo)


Seleccionar todos os produtos e os valores de todos os seus atributos.
SELECT * FROM Produto;

Conjunto de registos seleccionados:


codigoP designacaoP area 4.5 6.5 2.6 1 numero 4 1 4 2
67

5 cenoura 6 feijo verde 7 batata 8 rosa

A clusula WHERE
permite especificar uma condio que os registos seleccionados verificam. Sintaxe 2 variante:
SELECT fieldlist FROM table WHERE condition;

onde
fieldlist ... table ... condition uma condio que os registos seleccionados verificam; podem ser utilizados operadores relacionais (<, <=, >, >=, =, <>) , operadores lgicos (NOT, AND, OR) e os operadores IN, IS BETWEEN e LIKE.
68

A clusula WHERE (exemplo)


Seleccionar os cdigos dos produtos vendidos desde 1999-04-01, os cdigos dos compradores que os compraram, as datas destas vendas e os respectivos valores.
SELECT codigoP, codigoC, dataV, valorV FROM Venda WHERE dataV > {D 1999-04-01};

Conjunto de registos seleccionados:


codigoP 5 6 codigoC 1 2 dataV 07-04-1999 05-04-1999 valorV 45000 60000
69

A clusula FROM
A clusula FROM especifica o(s) nome(s) da(s) tabela(s) em que se encontram os registos a seleccionar. Quando indicada mais do que uma tabela, a instruo SELECT produz um conjunto de registos cujos campos so os indicados na lista de campos. Os registos seleccionados correspondem aos tuplos do produto cartesiano das tabelas especificadas, isto , cada registo composto por um registo de cada uma dessas tabelas.
70

A clusula FROM
Sintaxe 3 variante:
SELECT fieldlist FROM tableexpression [ WHERE condition ] ;

onde
tableexpression especifica o(s) nome(s) da(s) tabela(s) que contm os campos e os registos seleccionados.

Exemplo:
SELECT designacaoP, area, Produto.numero, Trabalhador.numero, nome, especialidade FROM Produto, Trabalhador;
71

A clusula FROM (exemplo)


designacaoP cenoura feijo verde batata rosa cenoura feijo verde batata rosa cenoura feijo verde batata rosa cenoura feijo verde batata rosa area 4.5 6.5 2.6 1 4.5 6.5 2.6 1 4.5 6.5 2.6 1 4.5 6.5 2.6 1 Produto.numero 4 1 4 2 4 1 4 2 4 1 4 2 4 1 4 2 Trabalhador.numero 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 nome Joo Dias Joo Dias Joo Dias Joo Dias Lusa Ferreira Lusa Ferreira Lusa Ferreira Lusa Ferreira Mrio Horta Mrio Horta Mrio Horta Mrio Horta Joana Garcia Joana Garcia Joana Garcia Joana Garcia especialidade hortelo hortelo hortelo hortelo jardineiro jardineiro jardineiro jardineiro motorista motorista motorista motorista eng agrnomo eng agrnomo eng agrnomo eng agrnomo

72

A clusula FROM e a clusula WHERE


Quando a clusula FROM refere mais do que uma tabela, a clusula WHERE frequentemente utilizada para seleccionar no resultado do produto cartesiano os tuplos que correspondem a registos em que o valor de uma chave estrangeira igual ao valor de uma chave primria. Neste caso, a instruo SELECT produz um subconjunto do produto cartesiano das tabelas referidas na clusula FROM e usual dizer-se que se efectua um join ou cruzamento de tabelas.
73

A clusula FROM e a clusula WHERE (exemplos)


Para cada produto seleccionar a designao, a rea e o nmero, nome e especialidade do respectivo responsvel.
SELECT designacaoP, area, Trabalhador.numero, nome, especialidade FROM Produto, Trabalhador WHERE Produto.numero=Trabalhador.numero;

Conjunto de registos seleccionados:


designacaoP feijo verde rosa cenoura batata area 6.5 1 4.5 2.6 numero nome especialidade hortelo jardineiro eng agrnomo eng agrnomo
74

1 Joo Dias 2 Lusa Ferreira 4 Joana Garcia 4 Joana Garcia

Eliminao de registos duplicados


Algumas queries podem conduzir a conjuntos de registos com duplicaes. Os registos duplicados podem ser eliminados recorrendo utilizao de DISTINCT. Sintaxe 4 variante:
SELECT DISTINCT fieldlist FROM tableexpression WHERE condition;

75

Eliminao de registos duplicados (exemplo)


Seleccionar o nmero, nome e especialidade dos trabalhadores que so responsveis por algum produto.
SELECT DISTINCT Trabalhador.numero, nome, especialidade FROM Produto, Trabalhador WHERE Produto.numero=Trabalhador.numero;

Conjunto de registos seleccionados:


numero nome 1 Joo Dias 2 Lusa Ferreira 4 Joana Garcia especialidade hortelo jardineiro eng agrnomo
76

Sub-query numa clusula WHERE


Na clusula WHERE pode ainda figurar uma query, neste caso denominada sub-query, constituda por outra instruo SELECT. O resultado da sub-query define um conjunto de valores que so utilizados na condio especificada pela clusula WHERE.

77

Sub-query numa clusula WHERE (exemplo)


Seleccionar as designaes dos produtos dos quais j se tenham efectuado vendas, e o nome e a especialidade dos respectivos reponsveis.
SELECT nome, especialidade, designacaoP FROM Trabalhador, Produto WHERE Trabalhador.numero=Produto.numero AND Produto.codigoP IN (SELECT codigoP FROM Venda);

Conjunto de registos seleccionados:


nome Joana Garcia Joo Dias especialidade eng agrnomo hortelo designacaoP cenoura feijo verde
78

A clusula ORDER BY
A clusula ORDER BY apenas ordena os registos seleccionados pelos valores de um conjunto de campos especificado. Sintaxe 5 variante:
SELECT fieldlist FROM tableexpression WHERE condition ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ][, ...]];

onde
ASC especifica a ordem ascendente DESC especifica a ordem descendente

79

Aliases
possvel definir novos nomes (aliases) para o nome das tabelas e/ou dos campos utilizados numa instruo SELECT.
Exemplo: Para cada produto seleccionar a designao, a rea e o nome e especialidade do respectivo responsvel. O resultado deve ser apresentado por ordem decrescente da rea do produto.
SELECT designacaoP AS prod, area, nome AS responsvel, especialidade FROM Produto AS P, Trabalhador AS T WHERE P.numero=T.numero 80 ORDER BY area DESC;

Funes de agregao
Estas funes possibilitam o resumo dos resultados de uma seleco de registos, como alternativa seleco de registos. Podem ser utilizadas as funes SUM, AVG, MAX, MIN e COUNT.

81

Funes de agregao (exemplo)


Seleccionar a rea total de todos os produtos, a rea mdia por produto e o nmero de produtos existentes
SELECT SUM (area) AS rea total, AVG (area) AS rea mdia, COUNT(*) AS N de produtos FROM Produto;

Conjunto de registos seleccionados:


rea total 14.6 rea mdia 3.65 N de produtos 4

82

Clusula GROUP BY
A utilizao de funes de agregao feita frequentemente em conjunto com a clusula GROUP BY. Esta especifica os conjuntos de registos seleccionados que so objecto da(s) funo(es). Quando utilizada a clusula GROUP BY, s podem ser indicados na clusula SELECT os atributos includos na clusula GROUP BY (para alm daqueles que so objecto de uma funo).

83

Clusula GROUP BY (exemplo)


Para cada produto seleccionar o respectivo cdigo, nmero de vendas e a quantidade total dessas vendas.
SELECT codigoP, COUNT(codigoP) AS N de vendas, SUM(quantidadeV) AS Quantidade Tot FROM Venda GROUP BY "codigoP";

Conjunto de registos seleccionados:


codigoP 5 6 N de vendas 2 2 Quantidade Tot 55.6 550
84

Clusula GROUP BY ... HAVING


A clusula GROUP BY pode ser utilizada em conjunto com HAVING para restringir os registos seleccionados queles que verificam a condio especificada em HAVING.

85

Clusula GROUP BY ... HAVING (exemplo)


Para cada produto com vendas no pagas numa qantidade total superior ou igual a 250, seleccionar o respectivo cdigo, nmero de vendas por pagar e a quantidade total dessas vendas.
SELECT codigoP, COUNT(codigoP) AS N de vendas, SUM(quantidadeV) AS Quantidade Tot FROM Venda WHERE dataRecebim IS NULL GROUP BY codigoP HAVING SUM(quantidadeV)>=250;

Conjunto de registos seleccionados:


cdigoP 6 N de vendas 2 Quantidade Tot 550
86

O operador UNION
UNION usado para combinar o resultado de duas ou mais instrues SELECT num nico conjunto de resultados. Cada instruo SELECT tem de ter como resultado o mesmo nmero de colunas. As colunas correspondentes nas vrias instrues SELECT tm de ter tipos de dados compatveis. No resultado final, o nome das colunas corresponde ao do primeiro SELECT.
SELECT ... UNION SELECT ... [UNION SELECT ...] [ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ][, ...]];
87

O operador UNION (exemplo)


Seleccionar os cdigos e as identificaes de todos os compradores e fornecedores indicando os que so clientes e os que so fornecedores.
SELECT codigoC AS cdigo, identificacaoC AS Nome, 'Cliente' AS Tipo FROM Comprador UNION SELECT codigoF, identificacaoF, 'Fornecedor' FROM Fornecedor;

codigo

nome 1 Ana Sousa 1 Manel Maria 2 Luisa Fraga 3 Duarte Silva

Tipo Fornecedor Cliente Cliente Cliente

88

Outras instrues SQL


A linguagem SQL inclui outras instrues para definio/alterao do esquema de uma base de dados:
CREATE TABLE ALTER TABLE INSERT DELETE UPDATE

89

Potrebbero piacerti anche