Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2006/2007
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
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
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 ...
10
Inscrito
Disciplina
Responsabilidade
Professor
11
12
Aluno
dataInsc
Inscrito
cdigo designao nProf nomeP categoria
Disciplina
Responsabilidade
Professor
13
14
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
16
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
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
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
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
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
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
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
Instncias ou registos
Domnio de naluno: integer (N) Domnio de nome: string 50 (A ) Domnio de datanasc: date (D) Cada registo (instncia) um tuplo
Observaes
Numa relao todas as instncias tm o mesmo nmero de atributos;
por exemplo, Aluno (nAluno, nomeA, disciplina1, , disciplinaj, ,dataNasc) no uma relao;
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
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
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
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
no respeita a 1 forma normal (nem sequer uma relao) porque possui um nmero varivel de atributos.
42
no se encontra na 2 forma normal porque ... Aplicao da 2 forma normal a esta relao:
Inscrito (nAluno, cdigo) Aluno (nAluno, nomeA, dataNasc)
43
n:n
cdigo designao nProf nomeP categoria
1,n
Disciplina
0,n
Responsabilidade
1:n
1,1
Professor
46
0,n
Inscrito
n:n
cdigo designao nProf nomeP categoria
1,n
Disciplina
0,n
Responsabilidade
1:n
1,1
Professor
47
48
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
54
Exerccio: Crie uma base de dados designada PrimeiraBD, salvando-a na pasta de trabalho BDados, na sua rea pessoal, no servidor quercus. 55
56
Exerccio:
Crie as tabelas Trabalhador e Produto, da base de dados do exerccio 3, com os seguintes registos:
58
59
60
61
3 Executar a query.
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
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
Tabela Venda
codigoP 5 5 6 6
Tabela Fornecedor
codigoF 1
66
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 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
72
75
77
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
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
85
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
codigo
88
89