1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo...

49
1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

Transcript of 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo...

Page 1: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

1

Desenvolvimento de uma base de dados

Realidade

Modelo conceptual(e.g. Modelo Entidade-Associação)

Modelo lógico(e.g. Modelo Relacional)

Page 2: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

2

Modelos conceptuais de tipo E-A

Os modelos de tipo E-A são compostos por entidades e associações.

As entidades representam objectos reais que possuem uma descrição que é determinada pelos problemas que se pretendem resolver por meio da Base de Dados.

As associações representam relacionamentos relevantes entre entidades.

Page 3: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

3

Tipo de entidades e atributos

As entidades que possuem uma descrição comum são 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.

Page 4: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

4

Exemplo

Num sistema de informação geográfica, um tipo de entidade pode ser constituído por polígonos (objectos espaciais). Cada polígono pode ter um conjunto de atributos (e.g. área, perímetro,...).

Um segundo tipo de entidade poderia ser constituído por unidades territoriais (e.g. concelhos), tendo atributos (e.g. código, designação).

Polígonos e concelhos podem estar relacionados.

Page 5: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

5

Diagrama do modelo conceptual: exemplo

concelho empresa

representa

actua

polígono

Page 6: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

6

Atributos de um tipo de Associação

Um tipo de associação pode possuir atributos que permitam descrever as características próprias de cada associação.– por exemplo, cada empresa tem um certo número de

trabalhadores em cada concelho.

Page 7: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

7

Diagrama do modelo conceptual

concelho empresa

representa

actua

polígono

poli-IDáreaperímetro

códigodesignação

número trab.NIFnome

Page 8: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

8

Grau de um tipo de associação

Um tipo de associação caracteriza-se pelo número de tipos de entidade que envolve, podendo ser unária, binária (o caso mais frequente), ternária, ...

Page 9: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

9

Multiplicidade (ou cardinalidade) de um tipo de associação

Um tipo de associação binária pode ser:– de um para um (1:1) quando cada entidade só pode

ocorrer numa única associação desse tipo;– de um para muitos (1:n) quando cada entidade de um

tipo só pode ocorrer numa associação, mas as entidades do outro tipo podem ocorrer em mais do que uma associação desse tipo;

– de muitos para muitos (n:n) quando não existe nenhuma restrição ao número de ocorrências de cada entidade em associações desse tipo.

Page 10: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

10

Multiplicidade (continuação)

A multiplicidade de um tipo de associação binária é indicada por 4 números: número mínimo e máximo de entidades que ocorrem numa associação, em cada sentido.

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).

Page 11: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

11

Exemplo

concelho empresa

representa

actua

polígono

poli-IDáreaperímetro

códigodesignação

número trab.NIFnome

1:n

1:1

1:n 1:n

1:n

n:n

Page 12: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

12

Criação de um modelo conceptual de dados

1. Identificar tipos de entidade e seus atributos2. Identificar tipos de associação e seus atributos3. Definir multiplicidades dos tipos de associação

Exercício: Suponha que tem que estruturar um tema relativo a árvores notáveis numa estrutura de dados vectoriais de um sistema de informação geográfica (SIG). Para cada árvore pretende registar o nome comum, o nome científico, a família, a altura da árvore e o diâmetro do tronco (DAP). Existe um milhar de árvores notáveis na região de interesse, havendo várias espécies representadas por diversos indivíduos. Como estruturaria essa informação no SIG?

Page 13: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

13

Modelo lógico: SGBD relacional

Baseiam-se num conjunto de conceitos teóricos apresentados em 1970 por E. F. Codd.

Vantagens dos SGBD relacionais:– simplicidade dos conceitos que utilizam– existência de definições formais para os conceitos

• permitiram uma rápida divulgação • permitiram a adesão de diversos fabricantes de software;

– adequação à representação de muitos dos aspectos que constituem a realidade

Page 14: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

14

Relação

Nas bases de dados relacionais a estrutura fundamental é a relação.

Uma relação é definida por um esquema e por uma tabela.

Um esquema é composto:– pelo nome da relação– pelos nomes dos atributos

Page 15: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

15

1. Esquema

Exemplos:

Polígono(poli-ID, área, perímetro)

Concelho(código,designação)

Page 16: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

16

Atributos

Um atributo Ai toma valores num conjunto Di chamado domínio do atributo. – O domínio determina o tipo de valores que o atributo

pode tomar.

Dado U={A1, A2,...,An}, uma relação R sobre U é um subconjunto de D1 x D2 x ... x Dn.

A cada tuplo deste produto cartesiano dá-se o nome de instância da relação R.

Page 17: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

17

2. Tabela

O conjunto das instâncias da relação R constituí uma tabela em que - as linhas são as instâncias (ou registos)- as colunas são os atributos (ou campos)

Page 18: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

18

Observações os valores de cada atributo pertencem a um mesmo

domínio; o valor de um atributo é sempre atómico;

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

numa relação não podem existir instâncias iguais; a ordem porque se encontram as instâncias de uma relação

e os seus atributos é irrelevante; podem existir instâncias 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 relação são únicos nessa relação.

Page 19: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

19

Chave(s) de uma relação

Um conjunto de atributos que tomam valores diferentes para cada instância da relação é uma chave da relação. – cada instância pode ser identificada pelo valor da

chave: o valor da chave nunca se repete. Uma chave pode ser composta por um ou mais

atributos. Atributo primário: pertence à chave Atributo não primário: não pertence à chave

Page 20: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

20

Chave primária e chave estrangeira

Nos SGBD relacionais, para representar as associações existentes entre as várias entidades utilizam-se esquemas de relações em que figuram atributos comuns.

Chave primária de uma relação é um subcon-junto mínimo de atributos cujos valores permitem identificar de modo único cada uma das instâncias dessa relação.

Uma chave estrangeira de uma relação é um conjunto de atributos que é chave primária de outra relação.

Page 21: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

21

Passagem do modelo E-A para relacional

Um modelo de tipo E-A descreve de uma forma natural e simples a realidade.

Os modelos deste tipo são suficientemente flexíveis para poderem ser utilizados eficazmente numa fase em que a estruturação dos dados é ainda confusa.

A estas vantagens pode ainda adicionar-se a facilidade com que é possível efectuar a sua passagem para um SGBD relacional, bem formalizado e comercializado por diversos fornecedores de software.

Page 22: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

22

Regras para transformação de um modelo E-A num esquema relacional (1)

Cada tipo de entidades do modelo E-A traduz-se por uma relação em que a chave primária e os atributos provêm do tipo de entidade.

Page 23: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

23

Regras para transformação de um modelo E-A num esquema relacional (2)

Um tipo de associação 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 relação R que é tradução de Ej.

Ej Ei1,n 1,1

Rj Ri

Page 24: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

24

Regras para transformação de um modelo E-A num esquema relacional (2')

Um tipo de associação de 1:1 (um para um) entre dois tipos de entidades Ei e Ej é tratado como um caso especial do tipo de associação 1:n– traduz-se por uma chave estrangeira na relação que é

tradução 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 preferência à relação que traduz este tipo de entidade,

– no caso contrário é indiferente qual a relação que é escolhida.

Page 25: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

25

Regras para transformação de um modelo E-A num esquema relacional (3)

Um tipo de associação n:n (muitos para muitos) traduz-se por uma relação R em que a chave primária inclui as chaves estrangeiras que são chave primária dos tipos de entidade que a constituem; os outros atributos são a tradução dos tipos de atributos da associação (se esta possuir algum).

Ej Ei1,n 1,n

RjRiR

Page 26: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

26

Nota: se nas associações n:n as chaves estrangeiras não são suficientes para formar a chave primária da relação R, na constituição desta devem também ser utilizados outros atributos de forma a ser obtida uma chave primária.

Page 27: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

27

Consistência, redundância e formas normais

Para evitar redundâncias e para facilitar a manutenção da consistência dos dados na base de dados, as tabelas devem verificar algumas propriedades.

As duas primeiras formas normais são obrigatoriamente respeitadas por uma relação.

A terceira forma normal assegura a não existência de um certo tipo de redundâncias na base de dados.

Page 28: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

28

Modelo relacional: 1ª forma normal

• Todos os atributos tomam valor único.

Exemplo: Em vez de

Fazer:

Tejo principal marítima, terrestre

Mondego principal marítima

Tejo principal sim sim

Mondego principal sim não

Page 29: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

29

Modelo relacional - Dependências funcionais

• Dada um relação R definida sobre um conjunto de atributos U={A1, A2, …, An}, diz-se que o atributo Ak depende funcionalmente do atributo Ai (AiAk) se e só se sempre que duas instâncias tiverem o mesmo valor em Ai tiverem também o mesmo valor em Ak.

Page 30: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

30

Modelo relacional: 2ª forma normal

• A relação tem que estar na 1ª forma normal• Todos os atributos não primários são

funcionalmente dependentes da chave primária.

Page 31: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

31

2ª forma normal

As tabelas num sistema de informação geográfica devem estar na segunda forma normal.

No entanto, essa condição não é suficiente para garantir que as bases de dados não apresentam redundâncias indesejáveis.

Page 32: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

32

Exemplo de redundância:

Page 33: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

33

Modelo relacional: 3ª forma normal

• A tabela tem que estar na 2ª forma normal• Não existem dependências funcionais entre

atributos que não são chave primária

Page 34: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

34

Normalização

• A passagem de uma forma normal para outra pode implicar a decomposição de uma tabela num conjunto de tabelas.

Page 35: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

35

Exemplo: 2ª FN 3ª FN

Exemplo: dada a tabela na 2ª forma normal

Fazer:

e

25 RC11802 Bragança

26 RC11808 Vinhais

25 RC11802

26 RC11808

RC11802 Bragança

RC11808 Vinhais

Page 36: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

36

Tabela normalizada (3ª forma normal)

• Numa tabela que verifica as primeiras três formas normais, qualquer atributo que não pertence à chave primária depende completamente e exclusivamente da totalidade dessa chave.

Page 37: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

37

Structured Query Language (SQL)

SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Page 38: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

38

A instrução SELECT

As consultas a uma base de dados relacional fazem-se em SQL recorrendo à instrução SELECT. Esta instrução permite criar conjuntos de registos de uma ou mais tabelas da base de dados seleccionados segundo diversos critérios.

Page 39: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

39

A cláusula WHERE: selecção de linhas

SELECT atributo1, atributo2, .... (ou *)FROM tabela1, tabela 2, ...WHERE condição;

onde o argumento de WHERE é uma condição que os registos seleccionados verificam; podem ser utilizados operadores relacionais (<, <=, >, >=, =, <>) , operadores lógicos (NOT, AND, OR) e os operadores IN, IS, BETWEEN e LIKE.

Page 40: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

40

A cláusula WHERE (exemplos) select * from conc where area > 500000000 select * from conc where concelho like ‘A%’ select * from rios where "TIPO" = 'Principal' or

"DESIGNACAO" in ( 'Fronteira terrestre' , 'Fronteira marítima' )

Page 41: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

41

Cruzamento de tabelas (“join”)

A cláusula FROM especifica o(s) nome(s) da(s) tabela(s) em que se encontram os registos a seleccionar.

A instrução SELECT produz o produto cartesiano das tabelas especificadas, isto é, cada registo do resultado é composto por um registo de cada uma dessas tabelas.

Num cruzamento (join) de tabelas a cláusula WHERE é 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 primária.

Page 42: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

42

SELECT *FROM conc,ValorAcrescentadoWHERE DTCC=codigo;

Exemplo (cruzamento ou join):

onde codigo é a chave primária da tabela ValorAcrescentado e DTCC é a correspondente chave estrangeira na tabela conc.

Page 43: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

43

Problema: criar um mapa de valor acrescentado por concelho para produção agrícola e silvícola. Usar dados da tabela ValorAcrescentadoConcelhos.mdb

Procedimento:1. Adicionar a tabela ValorAcrescentadoConcelhos.mdb2. Cruzar 2 tabelas que têm um atributo comum

– abrir a tabela de atributos do layer conc e a tabela ValorAcrescentadoConcelhos

– ambas têm o um atributo que é o código de concelho• fechar as tabelas

– activar o layer conc e right-click Join and Relates / Join...• Join attributes from a table: escolher os atributos DTCC de conc e

Codigo de ValorAcrescentadoConcelhos• alterar a legenda do layer conc para criar um mapa com categorias de

valor acrescentado, % produção agrícola, ...– Join and Relates / Join... / Remove Joins(s)

Page 44: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

44

A cláusula GROUP BY e as funções de agregação

As funções de agregação aplicam-se a selecções de registos. Podem ser utilizadas as funções SUM, AVG, MAX, MIN e COUNT,...

A utilização de funções de agregação é feita frequentemente em conjunto com a cláusula GROUP BY. Esta especifica os conjuntos de registos seleccionados que são objecto da(s) função(ões).

Quando é utilizada a cláusula GROUP BY, só podem ser indicados na cláusula SELECT os atributos incluídos na cláusula GROUP BY (para além daqueles que são argumento de uma função).

Page 45: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

45

GROUP BY

Group by indica o atributo que define o agrupamento Select atrib1From tabela_entradaGroup by atrib1

Se se quiser também incluir no resultado da operação uma função f dos valores do atributo atrib2, aplicada a cada grupo definido da forma acima:

Select atrib1, f(atrib2)From tabela_entradaGroup by atrib1

Page 46: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

46

Dissolve vs GROUP BY

Num SIG, a operação de “dissolução” de objectos espaciais (dissolve) corresponde a uma pesquisa com cláusula GROUP BY na tabela do tema que se quer “dissolver”.

Page 47: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

47

SELECT DT as conc.DT, area AS SUM(conc.area) FROM conc GROUP BY conc.DT;

Page 48: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

48

Resultado da operação de dissolução

Page 49: 1 Desenvolvimento de uma base de dados Realidade Modelo conceptual (e.g. Modelo Entidade-Associação) Modelo lógico (e.g. Modelo Relacional)

49

Problema: Construir um mapa com informação sobre a densidade populacional (nº hab/Km2) ao nível das unidades territoriais de nível 3 (NUT3) e indicar sobre o mapa a designação dessas unidades

Procedimento:Cruzar tabelas

Primeiro: cruzar conc com NUT4NUT3.dbfSegundo: cruzar conc com NUT3PopPT2000.dbf

Dissolver conc com o atributo NUTS3 e criar uma novo tema NUT3Adicionar uma coluna a uma tabela

abrir a tabela de atributos de NUT3 Options button / Add Field (name: pop_dens + type: double)

CálculosEditor button na standard toolbar / Editor / Start Editingright click na coluna pop_dens / Calculate ValuesNUT3.pop_dens = 1000000* [POPNUT3PT2000.RESIDENTES] / ([NUT3.Shape_Area])

Editor menu na editor toolbar / Stop EditingConstruir o mapa cuja legenda corresponde às densidades populacionais

por unidade NUT3 e adicionar os nomes dessas unidades