aulasbasedados
TRANSCRIPT
-
8/22/2019 AulasBaseDados
1/89
Matemtica e Informtica
Mdulo IV
Bases de Dados RelacionaisBases de Dados Relacionais
(linguagem SQL)(linguagem SQL)
2006/2007
-
8/22/2019 AulasBaseDados
2/89
2
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!!!
-
8/22/2019 AulasBaseDados
3/89
3
Base de Dados
um conjunto de dados relacionados que utilizado recorrendo a um Sistema Gestor deBases de Dados (SGBD). Uma Base de Dados representa uma parte da realidade
que relevante para a resoluo de um determinadoconjunto de problemas.
Existem no mercado diversos SGBD, os maisutilizados so os SGBD relacionais que permitem
criar bases de dados relacionais.
-
8/22/2019 AulasBaseDados
4/89
4
SGBD relacional
Os conceitos em que se baseia foram apresentadosem 1970.
Desde ento vrios fornecedores de softwareinformtico tm vindo a desenvolver SGBDrelacionais. O OpenOffice.org Base um SGBD relacional
pode ser utilizado em computadores com sistema operativoWindows 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 operativoWindows ou Linux
-
8/22/2019 AulasBaseDados
5/89
5
Mtodos de desenvolvimentode 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 criadoutilizando conceitos e regras de tipo Entidade-Associao (E-A).Vantagens
necessita apenas de um conjunto diminuto de conceitose regras simples, representao por diagramas com uma notao muito
elementar.
-
8/22/2019 AulasBaseDados
6/89
6
Conceitos para modelos conceptuaisde tipo E-A
Os modelos de tipo E-A so compostos porentidades e associaes.
As entidades representam objectos reais quepossuem uma descrio que determinada pelosproblemas que se pretendem resolver por meio daBase de Dados.
As associaes representam relacionamentos
relevantes entre entidades.
-
8/22/2019 AulasBaseDados
7/89
7
Tipo de entidades e atributos
As entidades que possuem uma descrio comumso representadas por um tipo de entidade, o qual caracterizado por um conjunto de atributos.
Os valores que tomam cada um dos atributos deum tipo de entidade permitem descrever edistinguir entre si as entidades que pertencem aum mesmo tipo de entidade.
-
8/22/2019 AulasBaseDados
8/89
8
Exemplo
Numa base de dados que se destina a servir osalunos de uma Faculdade: os alunos, os professores e as disciplinas so entidades
aluno, professor e disciplina so tipos de entidade identificados, respectivamente, porAluno, 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 atributos...
-
8/22/2019 AulasBaseDados
9/89
9
Chave primria de um tipo de entidade
A um atributo de um tipo de entidade cujosvalores permitam identificar de forma inequvocacada uma das entidades desse tipo d-se o nome dechave primria.
Regra: cada tipo de entidade deve possuir umachave 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.
-
8/22/2019 AulasBaseDados
10/89
10
Associao e tipo de associao
Entre alunos e disciplinas existem associaes,entre professores e disciplinas tambm existemassociaes ...
Um tipo de associao representa as associaes
com caractersticas comuns que se estabelecementre 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 eas entidades do tipo Disciplina; pode ainda ser criadoum tipo de associao Responsabilidade pararepresentar as associaes existentes entre as entidadesdo tipo Professor e as entidades do tipo Disciplina
-
8/22/2019 AulasBaseDados
11/89
11
Diagrama do modelo conceptual
Disciplina Professor
Aluno
Inscrito
Responsabilidade
-
8/22/2019 AulasBaseDados
12/89
12
Atributos de um tipo de Associao
Um tipo de associao pode possuiratributos quepermitam descrever as caractersticas prprias decada associao. como atributo do tipo de associao Inscrito pode
incluir-se a data de inscrio dos alunos na disciplina(dataInsc) .
-
8/22/2019 AulasBaseDados
13/89
13
Diagrama do modelo conceptual
cdigodesignao
nAluno
nomeA
dataNasc
nProfnomePcategoria
dataInsc
Disciplina Professor
Aluno
Inscrito
Responsabilidade
-
8/22/2019 AulasBaseDados
14/89
14
Cardinalidade de um tipo de associao
Um tipo de associao caracteriza-se pelo nmerode tipos de entidade que envolve, podendo serunria, ou binria (o caso mais frequente), outernria, ou
-
8/22/2019 AulasBaseDados
15/89
15
Multiplicidade de um tipo de associao
A multiplicidade do tipo de associao indica omodo como se podem estabelecer associaesdesse tipo.
Um tipo de associao binria pode ser:
de um para um (1:1) quando cada entidade s podeocorrer numa nica associao desse tipo; de um para muitos (1:n) quando cada entidade de um
tipo s pode ocorrer numa associao, mas as entidadesdo outro tipo podem ocorrer em mais do que uma
associao desse tipo; de muitos para muitos (n:n) quando no existenenhuma restrio ao nmero de ocorrncias de cadaentidade em associaes desse tipo.
-
8/22/2019 AulasBaseDados
16/89
16
Exemplos
O tipo de associao Responsabilidade entre ostipos 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 disciplinaO 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 alunosinscritos.
-
8/22/2019 AulasBaseDados
17/89
17
Multiplicidade (mais detalhe)
Geralmente, vantajoso definir a multiplicidadede um tipo de associao de uma forma maisdetalhada, indicando dois nmeros: o mnimo e omximo 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, porexemplo).
-
8/22/2019 AulasBaseDados
18/89
18
Exemplos
O tipo de associao Inscrito tem multiplicidade 1,nrelativamente 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,nrelativamente 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 tipoAluno
A multiplicidade do tipo de associao Responsabilidade
1,1 relativamente ao tipo de entidade Professor
para cada disciplina existe sempre um e s um professorres onsvel
-
8/22/2019 AulasBaseDados
19/89
19
Restries de integridade
So condies que tm que ser verificadas paraque a base de dados seja fiel realidade.
A multiplicidade dos tipos de associaorepresentam restries de integridade do modelode dados.
Nem todas as restries de integridade dos dadospodem ser representadas no modelo pela
multiplicidade dos tipos de associao por exemplo: a data de inscrio numa disciplina temque ser posterior data de nascimento do aluno.
-
8/22/2019 AulasBaseDados
20/89
20
1 etapa da criao de um modeloconceptual de dados
Identificao dos tipos de entidade e respectivosatributos.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 comouma entidade mesmo que sobre ele no exista mais nenhumainformao descritiva.
Os atributos devem ser usados nas entidades a que maisdirectamente dizem respeito.
Como chave primria deve-se evitar a utilizao de conjuntosde atributos.
-
8/22/2019 AulasBaseDados
21/89
21
2 etapa da criao de um modeloconceptual de dados
Identificao dos tipos de associao e respectivosatributos. 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 representamum 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 associaesbinrias.
-
8/22/2019 AulasBaseDados
22/89
22
Diagrama do modelo conceptual
cdigodesignao
nAluno
nomeA
dataNasc
nProfnomePcategoria
dataInsc
Disciplina Professor
Aluno
Inscrito
Responsabilidade
1:n
n:n
1,1
1,n
0,n
0,n
-
8/22/2019 AulasBaseDados
23/89
23
Exerccios:
1. Uma loja pretende construir uma base de dados cominformao relevante sobre os discos que vende.Relativamente a cada disco, pretende registar na basede dados um cdigo identificativo, o ttulo, n de cpias
vendidas, data de gravao e o grupo/intrprete.Pretende tambm registar as msicas que cada discoinclui. Sobre cada msica, pretende registar o ttulo queidentifica a msica e o primeiro autor. Uma mesmamsica pode figurar em discos distintos.
-
8/22/2019 AulasBaseDados
24/89
24
Exerccios (cont.):
2. Uma empresa agrcola pretende construir uma base de dados cominformao relevante sobre os animais que possui. Relativamente acada variedade de animal, pretende registar na base de dados umnome identificativo e o nmero de animais dessa variedade quepossui. Pretende tambm registar os produtos derivados de cada
variedade de animal, em particular a sua designao, a quantidadeproduzida e o seu preo de venda. Cada um destes produtos produzido apenas por uma variedade de animal. Cada variedade deanimal consome vrios alimentos e um dado alimento pode serincludo na alimentao de diversas variedades de animal. necessrio registar os alimentos utilizados, sendo cada alimento
caracterizado por um nome identificativo e pelo seu preo deaquisio. A base de dados deve ainda conter informao relativa quantidade de cada alimento consumida por cada variedade deanimal.
-
8/22/2019 AulasBaseDados
25/89
25
Exerccios (cont.):
3. Pretende-se criar uma base de dados, para efectuar a gesto de umaempresa agrcola, onde seja registada informao relativa aos seustrabalhadores e produo e venda. Sobre cada trabalhadorpretende-se registar o seu nome, data de nascimento e especialidade.Sobre cada produto da explorao agrcola pretende-se conhecer asua designao, rea cultivada e qual o trabalhador responsvel. Emrelao aos compradores e aos fornecedores, pretende-se conhecer asua identificao, morada e telefone. Para cada matria-primapretende-se registar a sua designao e quantidade armazenada. Paracada produto vendido dever ser registado o comprador, a data davenda, a quantidade vendida, o valor da venda e a data do
recebimento. Para a matria-prima consumida pretende-se registaros produtos a que esta se destina, a data da utilizao e a quantidadeutilizada. Para cada aquisio de matria-prima deve-se conhecer ofornecedor, a data da compra, a quantidade comprada, o valor dacompra e a data de pagamento.
-
8/22/2019 AulasBaseDados
26/89
26
Produto
Matria-prima Fornecedor
Comprador
Trabalhador
cdigo-pdesignao-prea
nmeronomedata_nascespecialidade
Responsvel
Venda
Compra
Utiliza
data-uquantidade-u
cdigo-cidentificao-cmorada-ctelefone-c
data-vquantidade-vvalor-vdata_recebim
cdigo-mp
designao-mpquant-armaz
data-c
quantidade-cvalor-cdata-pagam
cdigo-fidentificao-fmorada-ftelefone-f
1,1
0,n
1,n 0,n
1,n
0,n
1,n 1,n
-
8/22/2019 AulasBaseDados
27/89
27
SGBD relacional
Baseiam-se num conjunto de conceitos tericosapresentados em 1970 porE. F. Codd. os conceitos que Codd introduziu foram desenvolvidos
por outros autores
actualmente so os mais utilizadosVantagens 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 queconstituem a realidade
-
8/22/2019 AulasBaseDados
28/89
28
Relao
Nas bases de dados relacionais a estruturafundamental 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 irarmazenar.
-
8/22/2019 AulasBaseDados
29/89
29
Exemplos de esquemas
Aluno(nAluno, nomeA, datanasc)
Professor(nProf, nomeP, categoria)
-
8/22/2019 AulasBaseDados
30/89
30
Atributos
Um atributo Ai toma valores num conjunto Dichamado 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 D1 x D2 x ... x Dn.
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)
-
8/22/2019 AulasBaseDados
31/89
31
Tabela
O conjunto das instncias da relao R constitu umatabela em que
- as linhas so as instncias (ou registos)
-as colunas so os atributos (ou campos)
-
8/22/2019 AulasBaseDados
32/89
32
Exemplo de uma tabela
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
Atributos ou campos
Instnciasou
registos1985-12-25...Natlia Costa...22222...
1980-11-30Jos Silva12345
1978-12-03Ana Maria Santos11111
datanascnomeAnaluno
-
8/22/2019 AulasBaseDados
33/89
33
Observaes
Numa relao todas as instncias tm o mesmo nmero deatributos; 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.
-
8/22/2019 AulasBaseDados
34/89
34
Chave(s) de uma relao
Um atributo que toma valores diferentes para cadainstncia da relao uma chave candidata darelao. 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, umachave pode at ser composta por todos os atributos
que definem a relao.
-
8/22/2019 AulasBaseDados
35/89
35
Chave primria
Chave primria de uma relao um subcon-junto mnimo de atributos cujos valores permitamidentificar de modo nico cada uma das instnciasdessa relao.
Atributo primrio: pertence chave primria. Atributo no primrio: no pertence chave
primria.
-
8/22/2019 AulasBaseDados
36/89
36
Chave estrangeira
Nos SGBD relacionais, para representar asassociaes existentes entre as vrias entidadesutilizam-se esquemas de relaes em que figuramatributos comuns.
Uma chave estrangeira de uma relao umconjunto de atributos que chave primria deoutra relao.
-
8/22/2019 AulasBaseDados
37/89
37
Restries de integridade
Condies que devem ser verificadas para que umelemento do produto cartesiano dos domnios dosatributos possa pertencer relao.
Consequncias imediatas das definies dadas:
integridade de domnio impostas pelo domnio de cada atributo; integridade de entidade
no existem duas instncias de uma relao cujas chavestenham o mesmo valor
valor de uma chave primria (ou mesmo de uma parte dela)
no pode sernull; integridade de referncia
o valor de qualquer chave estrangeira de uma relao umvalor da chave primria da relao que refere
-
8/22/2019 AulasBaseDados
38/89
38
Outras restries de integridade
Outra categoria de restries: condies que devem ser verificadas pelos valores de
dois ou mais atributos de uma mesma instncia darelao.
Algumas restries requerem a utilizao de frmulasmatemticas ou lgicas.
Exemplo: a data de nascimento de um aluno tem de ser posterior data
de inscrio nas vrias disciplinas.
-
8/22/2019 AulasBaseDados
39/89
39
Dependncias funcionais
Dada um relao R definida sobre um conjunto deatributos 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:
Categoria
101 Maria321 Joo Assistente
98 Manuel
294 Maria Assistente
Nprof NomeP
Prof. Aux.
Prof. Aux.
no
-
8/22/2019 AulasBaseDados
40/89
40
Esquema de uma base de dados
O conjunto das relaes que a compem, definidaspor meio dos seus atributos, e das restries deintegridade.
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 serefere 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.
-
8/22/2019 AulasBaseDados
41/89
41
Normalizao
O objectivo das regras de normalizao definirregras para o agrupamento de atributos de forma aminimizar o nmero de dependncias funcionaisexistentes numa base de dados.
Resumidamente, pode dizer-se que numa relaoque verifica as primeiras trs formas normais,qualquer atributo que no pertence chavedepende completamente e exclusivamente da
totalidade da chave.
-
8/22/2019 AulasBaseDados
42/89
42
Primeira forma normal
Uma relao R encontra-se na primeira formanormal se e s se todos os seus atributos contmvalores atmicos.
Por exemplo, o esquemaAluno (nAluno, nomeA, disciplina1, , disciplinaj, ,dataNasc)
no respeita a 1 forma normal (nem sequer umarelao) porque possui um nmero varivel deatributos.
-
8/22/2019 AulasBaseDados
43/89
43
Segunda forma normal
Uma relao R encontra-se na segunda formanormal 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)
-
8/22/2019 AulasBaseDados
44/89
44
Terceira forma normal
Uma relao R encontra-se na terceira formanormal 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 quetambm 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.
-
8/22/2019 AulasBaseDados
45/89
45
Passagem do modelo E-A para relacional
Um modelo de tipo E-A descreve bem e de umaforma natural e simples a realidade.
Os modelos deste tipo so suficientementeflexveis para poderem ser utilizados eficazmente
numa fase em que a estruturao dos dados aindaconfusa.
A estas vantagens pode ainda adicionar-se afacilidade com que possvel efectuar a sua
passagem para um SGBD relacional, bemformalizado e comercializado por diversosfornecedores desoftware.
-
8/22/2019 AulasBaseDados
46/89
46
Regras para transformao de um modeloE-A num esquema relacional (1)
Cada tipo de entidades do modelo E-A traduz-sepor uma relao em que a chave primria e osatributos provm do tipo de entidade.
Aluno (nAluno, nomeA, dataNasc)
Disciplina (cdigo, designao)
Professor (nProf, nomeP, categoria)
cdigo
designao
nAlunonomeAdataNasc
nProfnomePcategoria
dataInsc
Disciplina Professor
Aluno
Inscrito
Responsabilidade
1:n
n:n
1,1
1,n
0,n
0,n
-
8/22/2019 AulasBaseDados
47/89
47
Regras para transformao de um modeloE-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 umamultiplicidade igual a 0,1 ou 1,1 para um tipo deentidade Ei traduz-se por uma chave estrangeira na
relao R que traduo de Ej.
Disciplina (cdigo, designao, nProf)
cdigodesignao
nAlunonomeAdataNasc
nProfnomePcategoria
dataInsc
Disciplina Professor
Aluno
Inscrito
Responsabilidade
1:n
n:n
1,1
1,n
0,n
0,n
-
8/22/2019 AulasBaseDados
48/89
48
Regras para transformao de um modeloE-A num esquema relacional (2')
Um tipo de associao de 1:1 (um para um) entredois tipos de entidades Ei e Ej tratado como umcaso 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-sepreferncia relao que traduz este tipo de entidade,
no caso contrrio indiferente qual a relao que escolhida.
-
8/22/2019 AulasBaseDados
49/89
49
Regras para transformao de um modeloE-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 sochave primria dos tipos de entidade que a
constituem; os outros atributos so a traduo dostipos de atributos da associao (se esta possuiralgum). No caso das chaves estrangeiras no serem suficientes
para formar a chave primria da relao, naconstituio desta devem tambm ser utilizados outrosatributos de forma a ser obtida uma chave primriaadequada relao.
-
8/22/2019 AulasBaseDados
50/89
50
Aluno (nAluno, nomeA, dataNasc)
Disciplina (cdigo, designao, nProf)
Professor (nProf, nomeP, categoria)
Inscrito (nAluno, cdigo, dataInsc)
Cacifo (nCacifo, local, nAluno,dataAlug)
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.
Regras para transformao de um modeloE-A num esquema relacional (3) (exemplo)
cdigodesignao
nAlunonomeAdataNasc
dataInsc
Disciplina Professor
Aluno
Inscrito
Responsabilidade
nProfnomePcategoria
1:n
n:n
1,1
1,n
0,n
0,n
nCacifolocal
Aluga Cacifo
dataAlug
0,11,11:1
-
8/22/2019 AulasBaseDados
51/89
51
Traduo do Modelo E-A no Modelo Relacional
Estas regras permitem que se proceda de umaforma rpida (e quase automtica) passagem deum modelo Entidade-Associao em que sexistam associaes binrias para um esquema
relacional.
-
8/22/2019 AulasBaseDados
52/89
52
Exerccio:
A partir dos modelos entidade associaoestabelecidos nos exerccios anteriores, crie, para cadaum deles, um esquema relacional que respeite aterceira forma normal.
-
8/22/2019 AulasBaseDados
53/89
53
OpenOffice.org Base
O Open Office.org um conjunto de aplicaesmultiplataforma (Windows, Linux, Sun Solaris,Mac OS X, FreeBSD), open source e dedistribuio gratuita (www.openoffice.org).
O OpenOffice.org Base um sistema de gesto debases de dados relacionais que utiliza como motorda base de dados o HSQLDB (www.hsqldb.org) eque suporta a linguagem SQL.
O SQL, Structured Query Language, umalinguagem normalizada (ANSI) usada paramanipular a informao de uma base de dadosrelacional.
http://www.openoffice.org/http://www.hsqldb.org/http://www.hsqldb.org/http://www.openoffice.org/ -
8/22/2019 AulasBaseDados
54/89
54
Criao de uma base de dados em Base
Activar a aplicao:Start Programs OpenOffice.org 2.1
OpenOffice.org Base
-
8/22/2019 AulasBaseDados
55/89
55
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 servidorquercus.
-
8/22/2019 AulasBaseDados
56/89
56
Criao de uma tabela
-
8/22/2019 AulasBaseDados
57/89
57
Para adicionar /alterar registosnuma tabela necessrio abrir a
tabela: duplo clique nonome da tabela, ou
aps clicar com oboto direito do
rato, seleccionarOpen, ou
menu Edit OpenDatabase Object...
Introduo de dados numa tabela
-
8/22/2019 AulasBaseDados
58/89
58
Exerccio:
Crie as tabelas Trabalhador e Produto, da base dedados do exerccio 3, com os seguintes registos:
-
8/22/2019 AulasBaseDados
59/89
59
Implementao de restries de integridadede referncia
1
2
3
-
8/22/2019 AulasBaseDados
60/89
60
Restries de integridade de referncia:exemplo da base de dados Explorao
-
8/22/2019 AulasBaseDados
61/89
61
Consultas a uma base de dados
As operaes de consulta (e actualizao) de umabase de dados denominam-se queries.
As regras do modelo relacional levaram aodesenvolvimento de uma linguagem, o SQL, que
permite efectuar eficientemente queries.Iniciar a criao de uma query em SQL:
-
8/22/2019 AulasBaseDados
62/89
62
13executara query
2 escrever oscomandos SQL
Execuo de uma query em SQL
1 Seleccionar o icon SQL (deste modo os comandos sodirectamente 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.
-
8/22/2019 AulasBaseDados
63/89
63
A instruo SELECT
As consultas a uma base de dados relacionalfazem-se em SQL recorrendo instruoSELECT. Esta instruo permite criar conjuntosde registos de uma ou mais tabelas da base de
dados seleccionados segundo diversos critrios.A sintaxe completa da instruo SELECT
complexa.
A f i i l d i
-
8/22/2019 AulasBaseDados
64/89
64
A forma mais simples da instruoSELECT
utiliza apenas a clusula FROMselecciona todos os registos de uma tabela
Sintaxe 1 variante:SELECT { * | table.* | [table.]field1 [, [table.]field2 [, ...]]}FROM table;
onde* especifica que todos os campos devem ser seleccionados
table especifica o nome da tabela que contm os campos e os registos
seleccionadosfield especifica os nomes dos campos que so seleccionados
-
8/22/2019 AulasBaseDados
65/89
65
Considere a base de dados Explorao1
com o seguinte esquemarelacional: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)
1 \\prunus\home\cadeiras\MatInf\BDados\Explorao.odb
Exemplo
-
8/22/2019 AulasBaseDados
66/89
A f i i l d i t SELECT
-
8/22/2019 AulasBaseDados
67/89
67
A forma mais simples da instruo SELECT(exemplo)
Seleccionar todos os produtos e os valores de todos osseus atributos.
SELECT *FROM Produto;
Conjunto de registos seleccionados:
21rosa8
42.6batata7
16.5feijo verde6
44.5cenoura5
numeroareadesignacaoPcodigoP
-
8/22/2019 AulasBaseDados
68/89
68
A clusula WHERE
permite especificar uma condio que os registosseleccionados verificam.Sintaxe 2 variante:
SELECT fieldlist
FROM tableWHERE condition;
ondefieldlist ...table ...
condition uma condio que os registos seleccionados verificam; podemser utilizados operadores relacionais (=, =, ) ,operadores lgicos (NOT, AND, OR) e os operadores IN, ISBETWEEN e LIKE.
-
8/22/2019 AulasBaseDados
69/89
69
A clusula WHERE (exemplo)
Seleccionar os cdigos dos produtos vendidos desde1999-04-01, os cdigos dos compradores que oscompraram, as datas destas vendas e os respectivosvalores.
SELECT codigoP, codigoC, dataV, valorV
FROM VendaWHERE dataV > {D 1999-04-01};
Conjunto de registos seleccionados:
6000005-04-199926
4500007-04-199915
valorVdataVcodigoCcodigoP
-
8/22/2019 AulasBaseDados
70/89
70
A clusula FROM
A clusula FROM especifica o(s) nome(s) da(s)tabela(s) em que se encontram os registos aseleccionar.
Quando indicada mais do que uma tabela, a
instruo SELECT produz um conjunto deregistos cujos campos so os indicados na lista decampos.
Os registos seleccionados correspondem aos
tuplos do produto cartesiano das tabelasespecificadas, isto , cada registo composto porum registo de cada uma dessas tabelas.
-
8/22/2019 AulasBaseDados
71/89
71
A clusula FROM
Sintaxe 3 variante:SELECT fieldlist
FROM tableexpression
[ WHERE condition ] ;
ondetableexpression especifica o(s) nome(s) da(s) tabela(s) que contm oscampos e os registos seleccionados.
Exemplo:
SELECT designacaoP, area, Produto.numero,Trabalhador.numero, nome, especialidade
FROM Produto, Trabalhador;
-
8/22/2019 AulasBaseDados
72/89
-
8/22/2019 AulasBaseDados
73/89
73
A clusula FROM e a clusula WHERE
Quando a clusula FROM refere mais do que umatabela, a clusula WHERE frequentementeutilizada para seleccionar no resultado do produtocartesiano os tuplos que correspondem a registos
em que o valor de uma chave estrangeira igualao 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 quese efectua umjoin ou cruzamento de tabelas.
A l l FROM l l WHERE
-
8/22/2019 AulasBaseDados
74/89
74
A clusula FROM e a clusula WHERE(exemplos)
Para cada produto seleccionar a designao, a rea e onmero, 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:
eng agrnomoJoana Garcia42.6batata
eng agrnomoJoana Garcia44.5cenoura
jardineiroLusa Ferreira21rosa
horteloJoo Dias16.5feijo verde
especialidadenomenumeroareadesignacaoP
-
8/22/2019 AulasBaseDados
75/89
75
Eliminao de registos duplicados
Algumas queries podem conduzir a conjuntos deregistos com duplicaes. Os registos duplicadospodem ser eliminados recorrendo utilizao deDISTINCT.
Sintaxe 4 variante:SELECT DISTINCT fieldlistFROM tableexpressionWHERE condition;
Eliminao de registos duplicados
-
8/22/2019 AulasBaseDados
76/89
76
Eliminao de registos duplicados(exemplo)
Seleccionar o nmero, nome e especialidade dostrabalhadores que so responsveis por algum produto.
SELECT DISTINCT Trabalhador.numero, nome,especialidade
FROM Produto, TrabalhadorWHERE Produto.numero=Trabalhador.numero;
Conjunto de registos seleccionados:
eng agrnomoJoana Garcia4
jardineiroLusa Ferreira2
horteloJoo Dias1
especialidadenomenumero
-
8/22/2019 AulasBaseDados
77/89
77
Sub-query numa clusula WHERE
Na clusula WHERE pode ainda figurar umaquery, neste caso denominada sub-query,constituda por outra instruo SELECT.
O resultado dasub-query define um conjunto de
valores que so utilizados na condioespecificada pela clusula WHERE.
Sub query numa clusula WHERE
-
8/22/2019 AulasBaseDados
78/89
78
Sub-query numa clusula WHERE(exemplo)
Seleccionar as designaes dos produtos dos quais j setenham efectuado vendas, e o nome e a especialidade dosrespectivos reponsveis.
SELECT nome, especialidade, designacaoPFROM Trabalhador, Produto
WHERE Trabalhador.numero=Produto.numeroAND Produto.codigoP IN (SELECT codigoP
FROM Venda);
Conjunto de registos seleccionados:
feijo verdehorteloJoo Dias
cenouraeng agrnomoJoana Garcia
designacaoPespecialidadenome
-
8/22/2019 AulasBaseDados
79/89
79
A clusula ORDER BY
A clusula ORDER BY apenas ordena os registosseleccionados pelos valores de um conjunto decampos especificado.
Sintaxe 5 variante:
SELECT fieldlistFROM tableexpression
WHERE condition
ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ][, ...]];
ondeASC especifica a ordem ascendenteDESC especifica a ordem descendente
-
8/22/2019 AulasBaseDados
80/89
80
Aliases
possvel definir novos nomes (aliases) para onome das tabelas e/ou dos campos utilizados numainstruo SELECT.
Exemplo: Para cada produto seleccionar a designao, area e o nome e especialidade do respectivo responsvel. Oresultado deve ser apresentado por ordem decrescente darea do produto.
SELECT designacaoP AS prod, area, nome AS responsvel,especialidade
FROM Produto AS P, Trabalhador AS T
WHERE P.numero=T.numero
ORDER BY area DESC;
-
8/22/2019 AulasBaseDados
81/89
81
Funes de agregao
Estas funes possibilitam o resumo dosresultados de uma seleco de registos, comoalternativa seleco de registos. Podem serutilizadas as funes SUM, AVG, MAX, MIN e
COUNT.
-
8/22/2019 AulasBaseDados
82/89
82
Funes de agregao (exemplo)
Seleccionar a rea total de todos os produtos, a rea mdiapor produto e o nmero de produtos existentes
SELECTSUM(area)AS rea total,AVG (area) AS rea mdia,
COUNT(*)AS N de produtosFROM Produto;
Conjunto de registos seleccionados:
43.6514.6N de produtosrea mdiarea total
-
8/22/2019 AulasBaseDados
83/89
83
Clusula GROUP BY
A utilizao de funes de agregao feitafrequentemente em conjunto com a clusulaGROUP BY. Esta especifica os conjuntos deregistos seleccionados que so objecto da(s)
funo(es).Quando utilizada a clusula GROUP BY, s
podem ser indicados na clusula SELECT osatributos includos na clusula GROUP BY (para
alm daqueles que so objecto de uma funo).
-
8/22/2019 AulasBaseDados
84/89
84
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 VendaGROUP BY "codigoP";
Conjunto de registos seleccionados:
55026
55.625
Quantidade TotN de vendascodigoP
-
8/22/2019 AulasBaseDados
85/89
85
Clusula GROUP BY ... HAVING
A clusula GROUP BY pode ser utilizada emconjunto com HAVING para restringir os registosseleccionados queles que verificam a condioespecificada em HAVING.
-
8/22/2019 AulasBaseDados
86/89
86
Clusula GROUP BY ... HAVING (exemplo)
Para cada produto com vendas no pagas numa qantidadetotal superior ou igual a 250, seleccionar o respectivocdigo, nmero de vendas por pagar e a quantidade totaldessas vendas.
SELECT codigoP, COUNT(codigoP) AS N de vendas,SUM(quantidadeV)AS Quantidade Tot
FROM Venda
WHERE dataRecebim ISNULL
GROUP BY codigoPHAVING SUM(quantidadeV)>=250;
Conjunto de registos seleccionados:
55026
Quantidade TotN de vendascdigoP
-
8/22/2019 AulasBaseDados
87/89
87
O operador UNION
UNION usado para combinar o resultado de duas ou maisinstrues SELECT num nico conjunto de resultados.
Cada instruo SELECT tem de ter como resultado o mesmonmero 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 ][, ...]];
-
8/22/2019 AulasBaseDados
88/89
88
O operador UNION (exemplo)
Seleccionar os cdigos e as identificaes de todos oscompradores e fornecedores indicando os que so clientes eos que so fornecedores.
SELECT codigoC AS cdigo, identificacaoC AS Nome,
'Cliente' AS TipoFROM Comprador
UNION
SELECT codigoF, identificacaoF, 'Fornecedor'
FROM Fornecedor;codigo nome Tipo
1 Ana Sousa Fornecedor 1 Manel Maria Cliente2 Luisa Fraga Cliente
3 Duarte Silva Cliente
O i SQL
-
8/22/2019 AulasBaseDados
89/89
Outras instrues SQL
A linguagem SQL inclui outras instrues paradefinio/alterao do esquema de uma base dedados: CREATE TABLE
ALTER TABLE INSERT DELETE UPDATE