banco de dados eco031 · 2016. 5. 17. · –microsoft visual foxpro –dbase –sqlite 13 . 1.3...

141
Banco de Dados – ECO031 Profa. Rossana Junqueira 1

Upload: others

Post on 19-Jan-2021

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Banco de Dados – ECO031

Profa. Rossana Junqueira

1

Page 2: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1 – Introdução

2

Page 3: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.1 – Compartilhamento de dados

• Implantação da informática ocorre de forma evolutiva e gradual;

• Apenas determinação funções são automatizadas;

• Novas funções vão sendo informatizadas à medida da sua necessidade.

3

Page 4: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.1 – Compartilhamento de dados

• Para exemplificar, uma Indústria: – Vendas: função concentra as atividades relativas

ao contato com os clientes – cotação de preço, vendas e informações sobre a disponibilidade de produtos.

– Produção: função concentra as atividades relativas à produção – planejamento e controle do que foi produzido.

– Compras: função concentra atividades relativas à aquisição de insumos necessários à produção – cotação de preços junto a fornecedores, compras e acompanhamento do fornecimento.

4

Page 5: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.1 – Compartilhamento de dados

• Dados de um produto são usados em várias funções.

– Produção: para planejar o que vai ser produzido, é necessário conhecer como os produtos são estruturados e como são produzidos.

– Compras: é necessário saber quais componentes devem ser adquiridos.

– Vendas: é necessário conhecer dados de produtos, como seu preço, seu estoque atual, seu prazo de fabricação, etc.

5

Page 6: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.1 – Compartilhamento de dados

• Se cada uma das funções for informatizada de forma separada, sem considerar a informatização das demais funções, pode ocorrer que, para cada uma das funções, seja criado um arquivo separado de produtos.

6

Page 7: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.1 – Compartilhamento de dados

• Problema: – Redundância de dados

– Tipos: • Redundância controlada de dados

– Quando o software tem conhecimento da múltipla representação da informação e garante a sincronia entre as diversas representações.

• Redundância não controlada de dados – Quando a responsabilidade pela manutenção da sincronia

entre as diversas representações de uma informação é feita pelo usuário e não pelo software.

» Entrada repetida da mesma informação

» Inconsistência de dados

7

Page 8: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.1 – Compartilhamento de dados

• Solução: – Compartilhamento de dados, ou seja, cada

informação é armazenada uma única vez, sendo acessada pelos vários sistemas que dela necessitam.

– Ao conjunto de arquivos integrados que atendem a um conjunto de sistemas dá-se o nome de banco de dados (BD).

8

Page 9: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.1 – Compartilhamento de dados

• O compartilhamento de dados tem reflexos na estrutura do software.

– Estrutura interna dos arquivos passa a ser mais complexa.

– Para contornar este problema, usa-se um sistema de gerência de banco de dados (SGBD).

9

Page 10: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.2 – Sistema de gerência de banco de dados

• Inicialmente...

– Um programa continha as operações da interface do usuário, as transformações de dados e cálculos, as operações de armazenamento de dados, bem como as tarefas de comunicação com outros sistemas e programas.

10

Page 11: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.2 – Sistema de gerência de banco de dados

• Com o tempo...

– Foram sendo identificadas funcionalidades comuns a muitos programas.

– Utilização de:

• Gerenciadores de interface de usuários.

• Gerenciadores de comunicação.

• Sistemas de gerência de banco de dados.

11

SGBD = Software que incorpora as funções de definição, recuperação, alteração e exclusão de

dados em um banco de dados.

Page 12: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.2 – Sistema de gerência de banco de dados

• Vantagens da modularização:

– Manutenção de programas torna-se mais simples.

– A produtividade dos programadores aumenta.

• Principais tipos de SGBD:

– Relacional;

– Orientado a objetos;

– Objeto-relacional.

12

Page 13: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.2 – Sistema de gerência de banco de dados

• Exemplos: – DB2

– MySQL

– Microsoft SQL Server

– Oracle

– Firebird

– PostgreSQL

– Microsoft Visual FoxPro

– dBASE

– SQLite

13

Page 14: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.3 – Modelos de banco de dados • Descrição dos tipos de informações que estão

armazenadas em um banco de dados.

• No exemplo da indústria...

– O modelo de dados poderia informar que o banco de dados armazena informações sobre produtos e que, para cada produto, são armazenados seu código, descrição e preço.

– Não informa quais os produtos estão armazenados no banco de dados.

14

Modelo de dados = descrição formal da estrutura de um banco de dados

Page 15: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.3 – Modelos de banco de dados • Para construir um modelo de dados, usa-se

uma linguagem de modelagem. – Textuais

– Gráficas

• Cada representação de um modelo de dados através de uma linguagem de modelagem de dados recebe a denominação esquema de banco de dados.

• De acordo com a intenção do modelador, um banco de dados pode ser descrito em vários níveis de abstração.

15

Page 16: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.3 – Modelos de banco de dados • Podemos usar diferentes técnicas ao construir

modelos.

• Ao conjunto de conceitos usados na construção de um modelo denominamos abordagem de modelagem.

16

Page 17: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.4 – Modelo conceitual • Descrição do banco de dados de forma independente de

implementação em um SGBD.

• Registra que dados podem aparecer no banco de dados.

• Não registra como estes dados estão armazenados a nível de SGBD.

• Técnica mais difundida é a abordagem entidade-relacionamento (ER).

• Representado através do diagrama entidade-relacionamento (DER).

17

Page 18: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.5 – Modelo lógico • Descrição de um banco de dados no nível de abstração

visto pelo usuário do SGBD.

• É dependente do tipo de SGBD que está sendo usado.

• Serão tratados apenas modelos lógicos referentes a SGBD relacional.

• Os dados são organizados na forma de tabelas.

18

Page 19: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.6 – Modelo físico • Descrição dos detalhes de armazenamento interno de

informações.

• As linguagens e notações são padronizadas e variam de SGBD para SGBD.

19

Page 20: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

1.7 – Projeto de banco de dados • Três fases:

– Modelagem conceitual: • Capturar as necessidades da organização em termos de

armazenamento de dados independentemente de implementação.

– Projeto lógico: • Transformar o modelo conceitual em um modelo

lógico. Define como o banco de dados será implementado em um SGBD específico.

– Projeto físico: • O modelo de banco de dados é enriquecido com

detalhes que influenciam no desempenho do banco de dados.

20

Page 21: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2 – Abordagem entidade-relacionamento

21

Page 22: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2 – Abordagem entidade-relacionamento

• Técnica mais difundida e utilizada.

• Modelo de dados é representado pelo modelo entidade-relacionamento (ER).

• Padrão para a modelagem conceitual.

22

Page 23: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.1 – Entidade

• Conceito fundamental da abordagem ER.

• Objetos sobre os quais deseja-se manter informações.

23

Entidade = conjunto de objetos da realidade modelada sobre as quais deseja-se manter

informações no banco de dados.

Page 24: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.1 – Entidade

• Exemplo: – Sistema de informações industrial:

• Produto

• Tipo de produto

• Venda

• Compra

– Sistemas de contas: • Cliente

• Conta

• Cheque

• Agência

24

Page 25: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.1 – Entidade

• Pode representar tanto objetos concretos (produto, cliente) quanto objetos abstratos (venda, conta).

• Representada através de um retângulo que contém o nome da entidade.

25

Empregado Departamento

Page 26: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.1 – Entidade

• Conjunto de todas as pessoas sobre as quais deseja-se manter informações no banco de dados.

• Caso seja necessário referir um objeto em particular (um determinado empregado) fala-se em ocorrência (instância) da entidade.

26

p1

p2 p5

p4

p3 Entidade EMPREGADO

Page 27: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Um das propriedades sobre as quais pode ser desejável manter informações é a associação entre objetos.

• Exemplificando, pode ser desejável saber quais os empregados estão associados a quais departamentos em uma empresa.

27

Relacionamento = conjunto de associações entre ocorrências de entidades.

Page 28: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Representado através de um losango, ligados por linhas aos retângulos que representam as entidades.

28

Page 29: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Da mesma forma que fizemos com entidades, quando quisermos nos referir a associações específicas dentro de um conjunto, vamos nos referir a ocorrência (instância) de relacionamento.

29

Page 30: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Não necessariamente um relacionamento associa entidades diferentes.

• Existem casos de relacionamento entre ocorrências de uma mesma entidade: auto-relacionamento.

• Neste caso, é necessário saber o papel da entidade no relacionamento.

30

Papel de entidade em relacionamento = função que uma instância da entidade cumpre dentro de uma

instância do relacionamento.

Page 31: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Cardinalidade de relacionamentos:

– Uma propriedade importante de um relacionamento é a de quantas ocorrências de uma entidade podem estar associadas a uma determinada ocorrência através dos relacionamento.

– Esta propriedade é chamada de cardinalidade.

– Dois tipos: mínima e máxima.

31

Cardinalidade = números de ocorrências associadas a uma ocorrência da entidade em

questão através do relacionamento.

Page 32: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Cardinalidade de relacionamentos:

– Cardinalidade MÁXIMA:

• Representa quantas vezes o relacionamento entre as entidades pode acontecer.

• Pode acontecer uma única (1) vez.

• Pode acontecer várias (n) vezes.

32

Page 33: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Cardinalidade de relacionamentos:

– Cardinalidade MÁXIMA:

• Exemplos:

33

Page 34: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.2 – Relacionamento

• Cardinalidade de relacionamentos:

– Cardinalidade MÍNIMA:

• Representa se o relacionamento entre as entidades é obrigatório ou não.

• O relacionamento pode ser obrigatório (1).

• O relacionamento pode não ser obrigatório (0).

34

(1, n) (0, 1)

Obs: No caso da representação das cardinalidade mínimas e máximas, antes da vírgula será a mínima e depois da vírgula a máxima.

Page 35: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.3 – Exemplo de uso de entidades e relacionamentos

35

Page 36: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.4 – Atributo

• Associa informações a ocorrências de entidades ou de relacionamentos.

• Representação:

36

Atributo = dado que é associado a cada ocorrência de uma entidade ou de um relacionamento.

Page 37: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.4 – Atributo

• Cada entidade deve possuir um identificador.

37

Atributo Identificador = conjunto de um ou mais atributos cujos valores servem para diferenciar

uma ocorrência da entidade das demais ocorrências da mesma entidade.

Page 38: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.5 – Generalização/Especialização

• Atribuição de propriedades particulares a um subconjunto das ocorrências (especializadas) de uma entidade genérica.

• Exemplo:

38

Page 39: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.5 – Generalização/Especialização

• Pode ser classificada em dois tipos: total ou parcial.

• Exemplo:

39

Page 40: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.6 – Entidade associativa

• Redefinição de um relacionamento que passa a ser tratado como se fosse também uma entidade.

• Exemplo:

40

Page 41: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

2.7 – Resumo gráfico

41

Page 42: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3 – Construindo modelo ER

42

Page 43: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.1 – Propriedades do modelo ER

• Modelo formal, preciso, não ambíguo.

– Diferentes leitores de um mesmo modelo ER devem sempre entender exatamente o mesmo.

– Pode ser usado como entrada a uma ferramenta CASE.

– É importante que todos os que o manipulam sejam treinados para compreendê-lo.

43

Page 44: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.2 – Modelos ER têm poder de expressão limitado

• São apresentadas apenas algumas propriedades de um banco de dados.

• Muitas propriedades desejáveis do banco de necessitam ser anotadas adicionalmente ao DER.

44

Page 45: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.3 – Diferentes modelos podem ser equivalentes

• Diz-se que dois modelos são equivalentes quando expressam o mesmo, ou seja, quando modelam a mesma realidade.

• Dois modelos são equivalentes quando geram o mesmo esquema de banco de dados.

45

Page 46: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.4 – Determinando construções

• Não pode ser feita através da observação do objeto isoladamente.

• É necessário conhecer o contexto, isto é, o modelo dentro do qual o objeto aparece.

• O próprio desenvolvimento do modelo e o aprendizado sobre a realidade refinarão e aperfeiçoarão o modelo.

46

Page 47: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.4 – Determinando construções

3.4.1 – Atributo x Entidade relacionada

• Caso o objeto tenha propriedades, o objeto deve ser modelado como entidade.

• Caso contrário, o objeto pode ser modelado como atributo.

47

Page 48: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.4 – Determinando construções

3.4.2 – Atributo x Especialização

• Uma especialização deve ser usada quando sabe-se que as classes especializadas de entidades possuem propriedades particulares.

48

Page 49: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.5 – Verificação do modelo

• Modelo deve ser correto:

– Quando não contém erros de modelagem;

– Erro sintático: Ocorre quando o modelo não respeita as regras de construção de um modelo ER.

– Erro semântico: Ocorre quando o modelo reflete a realidade de forma inconsistente.

49

Page 50: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.5 – Verificação do modelo

• Modelo deve ser completo:

– Deve fixar todas a propriedades desejáveis do banco de dados.

– Somente pode ser verificado por alguém que conhece profundamente o sistema a ser implementado.

50

Page 51: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.5 – Verificação do modelo

• Modelo deve ser livre de redundância:

51

Page 52: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.5 – Verificação do modelo

• Um modelo deve refletir o aspecto temporal:

52

Page 53: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.5 – Verificação do modelo

• Um modelo deve refletir o aspecto temporal:

53

Page 54: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

3.5 – Verificação do modelo

• Entidade isolada e entidade sem atributos

Cuidado!!!

54

Page 55: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4 – Abordagem Relacional

55

Page 56: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.1 - Tabela

• Conjunto não ordenado de linhas.

• Cada linha é composta por uma série de campos.

• Cada campo é identificado por um nome de campo.

• O conjunto de campos homônimos de todas as linhas de uma tabela formam uma coluna.

56

Page 57: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.1 - Tabela

57

Page 58: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.1 – Tabela

• Características das tabelas:

– As linhas de uma tabela não têm ordenação

– Valores de campo:

• Atômicos: o campo não pode ser composto de outros.

• Monovalorados: o campo possui um único valor.

58

Page 59: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.1 – Tabela

• Características das tabelas:

– Acesso por quaisquer critérios envolvendo os campos de uma ou mais linhas, programadores escrevem consultas sem considerar a existência de caminhos de acesso.

– Caminho de acesso:

• Estrutura auxiliar (índice, cadeia de ponteiros,...).

• Acelera a recuperação de registros por determinados critérios.

• Evita a leitura exaustiva de todos registros de um arquivo.

59

Page 60: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Conceito básico usado para identificar e estabelecer relações entre linhas de tabelas de um banco de dados relacional.

• Três tipos:

– Chave Primária

– Chave Estrangeira

– Chave Alternativa

60

Page 61: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Chave Primária: é uma coluna ou uma combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela.

61

Page 62: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Chave Estrangeira: Uma coluna ou uma combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela.

• Mecanismo que permite a implementação de relacionamentos em um banco de dados relacional.

62

Page 63: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Chave Estrangeira

63

Page 64: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Chave Estrangeira

– Restrições que devem ser garantidas ao executar diversas operações de alteração do banco de dados:

• Quando da inclusão de uma linha na tabela que contém a chave estrangeira: o valor da chave estrangeira deve aparecer na coluna da chave primária referenciada.

– Ex: Um novo empregado deve atuar em um departamento já existente no banco de dados.

• Quando da alteração do valor da chave estrangeira: o novo valor de uma chave estrangeira deve aparecer na coluna da chave primária referenciada.

64

Page 65: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Chave Estrangeira – Restrições que devem ser garantidas ao executar diversas

operações de alteração do banco de dados: • Quando da exclusão de uma linha da tabela que contém a chave

primária referenciada pela chave estrangeira: na coluna chave estrangeira não deve aparecer o valor da chave primária que está sendo excluída. – Ex: Um departamento não pode ser excluído, caso nele ainda existirem

empregados.

• Quando da alteração do valor da chave primária referenciada pela chave estrangeira: na coluna chave estrangeira, não apareça o antigo valor da chave primária que está sendo alterada. – Ex: Caso um departamento possua empregados, seu código não pode ser

modificado.

65

Page 66: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Chave Estrangeira

– A palavra “estrangeira” pode levar a crer que a chave estrangeira sempre referencia uma chave primária de outra tabela.

– Esta restrição não existe.

– Um chave primária pode referenciar a chave primária da própria tabela.

66

Page 67: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.2 - Chave

• Chave Alternativa – Em alguns casos, mais de uma coluna ou combinações de

colunas podem servir para distinguir uma linha das demais.

– Uma das colunas (ou combinação de colunas) é escolhida como chave primária.

– As demais colunas ou combinações são denominadas chaves alternativas.

67

Page 68: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

• Domínio de Coluna ou de Campo: – Conjunto de valores que podem aparecer em uma coluna.

• Valor vazio: – Um valor de campo pode assumir o valor especial vazio (“null”

em inglês).

– Colunas nas quais não são admitidos valores vazios são chamadas de colunas obrigatórias.

– Colunas nas quais podem aparecer campos vazios são chamadas de colunas opcionais.

– Abordagem relacional: • Todas colunas que compõem a chave primária e alternativa devem ser

obrigatórias.

• Chaves estrangeiras podem conter colunas opcionais.

68

Page 69: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

• Restrições de Integridade: – Objetivo primordial de um SGBD.

– Dados refletem corretamente a realidade representada pelo bando de dados e que são consistentes entre si.

– Para garantir a integridade de um banco de dados, SGBD oferecem o mecanismo de restrições de integridade.

– Uma restrição de integridade é uma regra de consistência de dados que é garantida pelo próprio SGBD.

69

Page 70: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

• Restrições de Integridade: – São classificadas nas seguintes categorias:

• Integridade de domínio: o valor de um campo deve obedecer a definição de valores admitidos para a coluna.

• Integridade de vazio: é especificado se os campos de uma coluna podem ou não ser vazios.

• Integridade de chave: define que os valores da chave primária e alternativa devem ser únicos.

• Integridade referencial: define que os valores que aparecem em uma chave estrangeira devem aparecer na chave primária da tabela referenciada.

– Restrições acima são garantidas automaticamente por um SGBD relacional.

– Não é exigido que o programador escreva procedimentos para garanti-las explicitamente.

70

Page 71: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

• Restrições de integridade semânticas: – Restrições de integridade que não se encaixam nas

categorias básicas.

– Exemplos de restrições semânticas:

• Um empregado do departamento denominado “Finanças” não pode ter a categoria funcional “Engenheiro”.

• Um empregado não pode ter um salário maior que seu superior imediato.

71

Page 72: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.3: Modelo de banco de dados relacional – A especificação de um banco de dados relacional, ou seja

um modelo de banco de dados relacional (chamada de esquema do banco de dados) deve conter no mínimo a definição do seguinte:

• Tabelas que formam o banco de dados.

• Colunas que as tabelas possuem.

• Restrições de integridade.

72

Page 73: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.3: Modelo de banco de dados relacional – Esquema textual:

73

Page 74: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

4.1 – Composição de um banco de dados relacional

4.1.3: Modelo de banco de dados relacional – Esquema diagramático:

74

Page 75: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5 – Transformação entre Modelos

75

Page 76: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.1 – Transformação entre Modelos

76

Page 77: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.1 – Transformação entre Modelos

• Objetivos:

– Bom desempenho.

– Ocupar pouco espaço em disco.

– Evitar junções.

– Usar implementações com menos chaves (índices ocupam muito espaço em disco).

– Campo opcional não tem influência na performance.

77

Page 78: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2 – Projeto lógico de BD relacional

• Implementação inicial das entidades:

– Cada entidade é traduzida como uma tabela.

– Cada atributo define uma coluna da tabela.

– Atributos identificadores correspondem à chave primária da tabela.

• Obs: Nome das colunas.

78

Page 79: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2 – Projeto lógico de BD relacional

• Implementação de relacionamentos:

– Depende das cardinalidades mínima e máxima do relacionamento.

– Alternativas:

• Tabela própria.

• Fusão de tabelas.

• Adição de colunas a uma das tabelas.

79

Page 80: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.1 – Tabela própria

• Significa que será criado uma tabela própria para o relacionamento.

A (A1, A2)

B (B1, B2)

AB (A1, B1, C)

A1 referencia A

B1 referencia B

80

A

B

A1 A2 B1 B2 C

Page 81: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.2 – Adição de coluna

• Significa que uma das duas tabelas vai receber a chave primária da outra.

• Caso exista atributos no relacionamento, a mesma tabela que recebeu a chave primária da outra, também receberá o atributo do relacionamento.

A (A1, A2)

B (B1, B2, A1, C)

A1 referencia A

81

A

B

A1 A2 B1 B2 C

Page 82: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.3 – Fusão de tabelas

• Significa que será criada uma única tabela com todos os atributos das duas tabelas relacionadas e os atributos do relacionamento, caso existam.

• Devemos escolher entre um dos atributos identificadores das entidades relacionadas para ser a chave primária da tabela.

AB (A1, A2, B1, B2, C)

82

A

B

A1 A2 B1 B2 C

Page 83: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.4 – Quando usar?

83

Page 84: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.4 – Quando usar?

84

Page 85: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.4 – Quando usar?

85

Page 86: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.5 – Relacionamento de grau maior que dois

• Relacionamento transformado em uma tabela.

86

Page 87: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.6 – Generalização/Especialização

• Tabela única (menor número de junções).

• Uma tabela por entidade especializada (maior número de junções).

87

Page 88: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.7 – Engenharia reversa

• Uma tabela pode corresponder:

– Uma entidade

– Um relacionamento n:n

– Uma entidade especializada

• Fator determinante: chave primária

88

Page 89: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.7 – Engenharia reversa

89

Page 90: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.7 – Engenharia reversa

Disciplina (CodDisc, NomeDisc) Curso (CodCr, NomeCr) Curric (CodCr, CodDisc, Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr, CodSl, Capacidade) CodPr referencia Prédio Prédio (CodPr, Endereço) Turma (Anosem, CodDisc, SiglaTur, Capacidade, CodPr, CodSl) CodDisc referencia Disciplina (CodPr, CodSl) referencia Sala Laboratório ( CodPr, CodSl, Equipam) (CodPr, CodSl) referencia Sala

90

Page 91: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

5.2.7 – Engenharia reversa

91

Page 92: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6 – Modelo Físico

92

Page 93: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.1 – Modelo físico

93

• Contém detalhes de armazenamento interno de informações.

• Usados por profissionais que fazem sintonia de performance em banco de dados, procurando otimizar o desempenho.

Page 94: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.2 – Criação do banco de dados

94

• Regras para nomeação dos objetos:

– Caracteres A...Z, a...z, 0...9, $ e _

– Nomes devem começar com A...Z ou a...z

– Nomes limitados a 31 caracteres

– Nomes dos objetos devem ser únicos

Page 95: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.2 – Criação de tabelas

95

• Restrições a serem especificadas para uma coluna de tabela: – Restrição UNIQUE e PRIMARY KEY:

• Asseguram que os valores inseridos em uma ou mais colunas são únicos para cada linha da tabela.

• Uma ou mais colunas definidas com essas restrições devem também ser definidas com o atributo NOT NULL.

– Restrição FOREIGN KEY: • Chave estrangeira é uma ou mais colunas em uma

tabela que corresponde exatamente a uma ou mais colunas definida(s) como chave primária em outra tabela.

Page 96: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.2 – Criação de tabelas

96

• Restrições a serem especificadas para uma coluna de tabela:

– Restrição CHECK:

• Estabelece uma condição que deve ser verdadeira durante uma entrada ou atualização de dados na tabela.

– Atributo NOT NULL:

• Esse atributo não permite valores nulos na coluna onde é definida e é obrigatório em colunas com restrições PRIMARY KEY ou UNIQUE.

Page 97: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.2 – Criação de tabelas

97

• CREATE TABLE cria uma nova tabela, suas colunas e restrições de integridade em um banco de dados.

CREATE TABLE FABRICA ( ID_FABRICA INTEGER NOT NULL, NOME VARCHAR(40) NOT NULL, NOME_FANTASIA VARCHAR(40) NOT NULL, ENDERECO VARCHAR(40), CIDADE VARCHAR(30), UF CHAR(2), TELEFONE VARCHAR(20), CONSTRAINT PK_FABRICA PRIMARY KEY (ID_FABRICA), CONSTRAINT UN_NOME UNIQUE (NOME_FANTASIA));

Page 98: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.2 – Criação de tabelas

98

CREATE TABLE Produto ( Id_Produto INTEGER NOT NULL, Referencia VARCHAR(15), Descricao VARCHAR(40) NOT NULL, Preco DECIMAL(7,2) NOT NULL, Id_Fabrica INTEGER, Id_ProdutoC INTEGER, CONSTRAINT PK_PRODUTO PRIMARY KEY (ID_PRODUTO), CONSTRAINT FK_PRODUTO_FABRICA FOREIGN KEY (ID_FABRICA) REFERENCES Fabrica (Id_Fabrica), CONSTRAINT FK_PRODUTO_PRODUTO FOREIGN KEY (ID_PRODUTOC) REFERENCES Produto (Id_Produto), CONSTRIANT CH_PRECO CHECK (PRECO > 0));

Page 99: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercício

99

Page 100: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercício

100

• Crie uma restrição para checar que o campo DataNasc da tabela Atleta seja menor do que a data atual.

Page 101: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.3 – Alteração de tabelas

101

• ALTER TABLE modifica uma tabela adicionando, modificando ou eliminando colunas ou restrições.

• ALTER TABLE provoca erro se os novos dados em uma tabela violam as definições de restrição PRIMARY KEY ou UNIQUE.

• Eliminar uma coluna provoca falha se: – A coluna é parte de uma restrição UNIQUE, PRIMARY

KEY ou FOREING KEY. – A coluna é usada em uma restrição CHECK. – A coluna é utilizada em uma expressão value de uma

coluna calculada. – A coluna é referenciada por outros objetos, tais como

uma visão.

Page 102: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.3 – Alteração de tabelas

102

• Exemplos de utilização de ALTER TABLE:

– Incluir nova coluna:

• ALTER TABLE Fabrica ADD Email VARCHAR(30);

• ALTER TABLE Fabrica

ADD Contato VARCHAR(30) ,

ADD Fax VARCHAR(18);

– Eliminar uma coluna existente

• ALTER TABLE Fabrica DROP Fax;

Page 103: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.3 – Alteração de tabelas

103

• Exemplos de utilização de ALTER TABLE:

– Alterar o tipo de dado de uma coluna

• ALTER TABLE Fabrica ALTER Email TYPE VARCHAR(40);

• Obs: Tamanhos de tipos não podem ser reduzidos e o

novo tipo de dado deve ser capaz de manter os dados originais.

– Alterar o nome da coluna

• ALTER TABLE Fabrica ALTER Nome TO RazaoSocial;

Page 104: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.3 – Alteração de tabelas

104

• Exemplos de utilização de ALTER TABLE:

– Adicionar uma nova restrição

• ALTER TABLE Fabrica ADD CONSTRAINT Un_Mail UNIQUE (Email);

– Eliminar uma restrição existente

• ALTER TABLE Fabrica DROP CONSTRAINT Un_Mail;

Page 105: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.4 – Exclusão de tabelas

105

• A instrução DROP TABLE remove dados de tabela.

• Não se pode eliminar uma tabela que é referenciada em uma coluna calculada, uma visão, restrição de chave estrangeira ou procedimento armazenado.

– DROP TABLE Aluno;

Page 106: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercício

106

• Baseando-se no banco de dados criado anteriormente, que tinha as tabelas Departamento e Empregado, responda às questões abaixo: – Inclua na tabela Empregado a coluna Cargo, do tipo

Varchar(30) e não nula. – Inclua uma restrição do tipo CHECK na coluna Cargo

da tabela Empregado de modo que ela aceite apenas os seguintes cargos: Vendedor, Supervisor, Gerente, AuxEscritório e GerFinanceiro.

– Modifique a coluna Nome da tabela Empregado para que o tipo de dado seja Varchar(50).

– Exclua da tabela Empregado o campo Data_Admissão.

Page 107: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercício

107

• Baseando-se no banco de dados criado anteriormente, que tinha as tabelas Atleta, Competição e outras, responda às questões abaixo: – Inclua uma restrição do tipo Chave Estrangeira nas

colunas CodEquipe e CodAtleta da tabela EquipeAtleta.

– Modifique o nome da coluna Qualificacao da tabela Participacao para Classificacao.

– Aumente de 20 para 40 a quantidade de caracteres do compo Cidade da tabela Competicao.

– Inclua o campo Idade integer na tabela Atleta. – Inclua uma restrição check na tabela atleta de forma

que só sejam aceitos atletas maiores de 18 anos.

Page 108: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.4 – Inserindo dados na tabela

108

• INSERT armazena uma ou mais linhas de dados em uma tabela.

• Os valores inseridos devem estar na mesma ordem das colunas da tabela.

• Se o número de colunas informadas no comando for menor que o número de colunas da tabela, valores NULL são armazenados nas colunas não informadas.

• Para inserir uma única linha de dados na tabela, deve-se especificar uma lista de valores na cláusula VALUES.

• Inserções de dados nas tabelas não podem violar as restrições.

• É importante inserir dados primeiramente nas tabelas referenciadas por chaves estrangeiras.

Page 109: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.4 – Inserindo dados na tabela

109

• Exemplos:

INSERT INTO Vendedor VALUES (1, ‘João Dias’);

INSERT INTO Vendedor (Id_Vendedor, Nome)

VALUES (2, ‘Fábio Almeida’);

INSERT INTO Fabrica (Id_Fabrica, RazaoSocial, UF)

VALUES (1, ’CAP Computadores Ltda’, ‘SP’);

INSERT INTO Fabrica

VALUES (1, ‘Garoto’, null, null, ‘SP’, null);

Page 110: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercícios

110

• Baseando-se no banco de dados criado na aula anterior, que tinha as tabelas Departamento e Empregado, insira os dados abaixo:

Page 111: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.5 – Alteração de dados na tabela

111

• A instrução UPDATE modifica os dados em toda ou parte de uma linha de uma tabela.

• A cláusula opcional WHERE pode ser usada para restringir as atualizações a um subconjunto de linhas na tabela.

• Se a cláusula WHERE não for utilizada, todas as linhas da tabela serão atualizadas.

Page 112: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.5 – Alteração de dados na tabela

112

• Exemplo:

– Esse comando calcula um novo preço para todos os produtos, reajustando-os em 5%:

UPDATE ProdutoCond SET Preco = Preco * 1.05;

– Modifica a descrição do produto que tem chave primária igual a 2:

UPDATE Produto SET Descricao = ‘Monitor de vídeo 15”’ WHERE Id_Produto = 2;

Page 113: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercícios

113

• Baseando-se no banco de dados criado na aula anterior, que tinha as tabelas Departamento e Empregado, responda às questões abaixo:

– Atualize em 10% de aumento o salário dos empregados que ganham até R$999,00.

– Atualize todos os empregados que estejam trabalhando no departamento 1 para o 2.

– Altere o salário dos empregados que trabalham no departamento 3 em 15%.

– O departamento de Serviços Gerais mudou de nome, modifique o nome dele para Serviços de Limpeza.

Page 114: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.6 – Exclusão de dados na tabela

114

• O comando DELETE elimina linhas de uma tabela.

• A cláusula WHERE deve ser utilizada para restringir as exclusões a um subconjunto de linhas de uma tabela.

• Se a cláusula WHERE não for especificada, todas as linhas da tabela são eliminadas.

Page 115: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.6 – Exclusão de dados na tabela

115

• Exemplo:

– O comando a seguir deleta todas as linhas da tabela:

DELETE FROM ProdutoPedido;

– O comando seguinte elimina linhas específicas de uma tabela:

DELETE FROM ProdutoPedido WHERE Id_Pedido = 1;

Page 116: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercícios

116

• Baseando-se no banco de dados criado na aula anterior, que tinha as tabelas Departamento e Empregado, responda às questões abaixo:

– Exclua da tabela empregado todos os empregado que ganham acima de R$1500,00.

– Exclua todos os empregados que estejam trabalhando no departamento 1.

– O empregado Carlos foi demitido, exclua-o do banco de dados.

– O departamento de Financeiro não existe mais, exclua-o do banco de dados.

Page 117: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

117

• Uma das funções mais importantes de um SGBD é permitir que os dados armazenados em um banco de dados sejam recuperados das formas mais diversas que se possa imaginar.

• O comando SELECT é o comando SQL utilizado para recuperar informações de bancos de dados.

Page 118: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

118

• Exemplos:

– SELECT * FROM CLIENTE;

• Esse comando recupera todas as linhas e colunas da tabela CLIENTE. O asterisco (*) indica que todas as colunas são mostradas.

– SELECT NOME, CONTATO, TELEFONE

FROM CLIENTE;

• Exemplo de como seria se for desejado recuperar colunas específicas da tabela.

Page 119: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

119

• Exemplos:

– SELECT ID_PRODUTO, ID_CONDICAO, PRECO * 1.05

FROM PRODUTOCOND;

• Esta consulta mostra os preços dos produtos com seus valores reajustados em 5%.

– SELECT DISTINCT CIDADE FROM CLIENTE;

• Para eliminar as duplicações utiliza-se DISTINCT.

Page 120: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

120

• Uso da cláusula WHERE:

– O uso de WHERE juntamente com as expressões envolvendo os operadores irá permitir que seja obtido o resultado de uma consulta seletiva, onde apenas as linhas que atendem às restrições estabelecidas são mostradas.

• SELECT ID_CLIENTE, NOME FROM CLIENTE

WHERE UF = 'PA';

– Retornam da tabela CLIENTE as linhas que atendem a condição de que a coluna UF seja igual a ‘PA’.

Page 121: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

121

• SELECT ID_PEDIDO, VALOR, ID_CLIENTE FROM PEDIDO

WHERE DATA > '06/15/2005';

– Essa consulta mostra os pedidos cuja DATA seja maior que 15/06/2005.

• SELECT ID_CLIENTE, NOME FROM CLIENTE

WHERE NOME LIKE 'A%';

– O operador LIKE recupera da tabela os clientes que têm o nome iniciando com a letra A.

Page 122: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

122

• SELECT * FROM PEDIDO

WHERE VALOR BETWEEN 200 AND 700;

– Essa consulta retorna todos os pedidos, tais que a coluna VALOR esteja no intervalo entre 200 e 700 reais. Se houver linhas cujos valores sejam iguais a 200 ou 700, elas serão retornadas.

• SELECT ID_FABRICA, RAZAOSOCIAL FROM FABRICA

WHERE UF IN ('PA', 'AM', 'AC', 'AP');

– Essa consulta retorna as linhas onde a coluna UF seja igual a qualquer dos elementos relacionados entre parênteses.

Page 123: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

123

• SELECT * FROM CLIENTE WHERE UF <> 'PA'; – Mostra os clientes que não são do estado do Pará.

• SELECT *

FROM PEDIDO WHERE VALOR > 200 AND VALOR < 700; – Retorna os pedidos cujos valores estão entre 200 e 700.

• SELECT *

FROM CLIENTE WHERE NOME NOT LIKE 'D%'; – Recupera os clientes cujos nomes não iniciam com a letra D.

Page 124: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

124

• Uso da cláusula ORDER BY:

– Como padrão, uma consulta recupera linhas na mesma ordem em que ela as encontra na tabela.

– Para especificar uma ordem na qual as linhas devem ser retornadas por uma consulta, usa-se a cláusula ORDER BY no fim do comando SELECT.

• SELECT ID_FABRICA, RAZAOSOCIAL, CIDADE

FROM FABRICA

ORDER BY CIDADE;

Page 125: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

125

• Uso de funções: – AVG: Calcula a média dos valores numéricos em uma

coluna. • SELECT AVG(VALOR)

FROM PEDIDO;

– COUNT: Calcula o número de linhas que satisfazem uma

condição de seleção de uma consulta. • SELECT COUNT(*)

FROM CLIENTE;

– SUM: Recupera soma dos valores de uma coluna.

• SELECT SUM(VALOR) FROM PEDIDO;

Page 126: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

126

• Uso de funções:

– MAX: Recupera o valor máximo de uma coluna.

• SELECT MAX(VALOR)

FROM PEDIDO;

– MIN: Recupera o valor mínimo de uma coluna.

• SELECT MIN(VALOR)

FROM CLIENTE;

Page 127: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.7 – Consulta a dados de uma tabela

127

• Agrupamento de linhas com GROUP BY: Habilita uma consulta retornar um resumo sobre grupos de linhas que compartilham valores de coluna. – SELECT ID_CLIENTE, AVG(VALOR) FROM PEDIDO GROUP BY ID_CLIENTE;

• O exemplo retorna o valor médio dos pedidos de cada

cliente. • A cláusula GROUP BY garante que o valor médio dos pedidos

seja calculado e recuperado com base no identificados de cada cliente.

Page 128: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.8 – Consulta a dados de mais de uma tabela

128

• Devido ao Firebird se tratar de um banco de dados relacional, às vezes pode ser necessário construir consultas a dados que estão em tabelas diferentes.

• A recuperação de dados de duas ou mais tabelas usando um único comando SELECT é denominada junção (join). select PEDIDO.ID_PEDIDO, PEDIDO.DATA, PEDIDO.VALOR, CLIENTE.NOME

from PEDIDO, CLIENTE

where PEDIDO.ID_CLIENTE = CLIENTE.ID_CLIENTE and PEDIDO.DATA >= '06/25/2006';

Page 129: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercícios

129

• Baseando-se no banco de dados criado na aula anterior, que tinha as tabelas Departamento e Empregado, responda às consultas abaixo.

a) Selecione todos os dados da tabela departamento.

b) Selecione todos os dados da tabela empregado.

c) Selecione o nome dos empregados que foram admitidos antes de 2014.

d) Selecione o nome e o salário dos empregados que foram admitidos entre 2013 e 2014.

e) Selecione o Id do empregado e o nome dos empregados do departamento 3.

Page 130: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercícios

130

f) Selecione o nome dos empregados que ganham até 1000,00 reais.

g) Selecione o nome dos empregados que possuem a letra a em seu nome.

h) Selecione o nome dos empregados que ganham mais de 1000,00 reais.

i) Selecione o nome e o id do departamento do empregado que trabalha no departamento 2 ou 4.

j) Selecione o nome dos departamentos que possuem a letra e em seu nome.

k) Selecione o nome dos empregados que ganham menos de 1000,00 reais e retorne o resultado em ordem decrescente pelo nome do empregado.

Page 131: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercícios

131

l) Informe quantos departamentos existem cadastrados no banco de dados.

m) Informe a quantidade de empregados cadastrados no banco de dados.

n) Informe o somatório dos salários dos empregados.

o) Informe qual é o empregado mais antigo na empresa.

p) Informe qual é o empregado mais novo na empresa.

Page 132: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

Exercícios

132

q) Informe qual é a média dos salários dos empregados.

r) Selecione o nome do empregado e o nome do departamento a qual ele pertence.

s) Para cada departamento mostre seu nome e quantos empregados trabalham nele.

t) Mostre o nome dos empregados que trabalham no departamento de Informática.

u) Para cada departamento mostre seu nome e o valor médio dos salários dos seus empregados.

v) Para cada empregado mostre seu nome, data de admissão e o nome do departamento em que o empregado trabalha.

Page 133: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.9 – Subconsultas

133

• É um comando SELECT entre parênteses dentro da cláusula WHERE de outro comando SQL mais externo, o que funciona como uma condição de seleção para restringir as linhas afetadas pelo comando SQL externo.

• Geralmente é avaliada antes do comando SQL mais externo, que usa o resultado para determinar se as linhas atendem ou não as condições definidas na cláusula WHERE.

Page 134: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.9 – Subconsultas

134

• Subconsultas simples:

– select ID_PEDIDO, DATA, VALOR

from PEDIDO

where VALOR > (select AVG(VALOR) from PEDIDO);

– Recupera a lista de pedidos que tenha o valor maior que a média.

Page 135: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.9 – Subconsultas

135

• select ID_CLIENTE, NOME from CLIENTE where CIDADE = (select CIDADE from CLIENTE where NOME = 'Francisco de Assis') and NOME <> 'Francisco de Assis';

– Consulta que recupera os clientes localizados na mesma cidade que o cliente de nome ‘Francisco de Assis’.

• select nome, endereco from TRANSPORTADORA where CIDADE = (select CIDADE from FABRICA where id_fabrica = 1);

– Subconsultas e os comandos mais externos podem se referir a tabelas diferentes.

Page 136: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.9 – Subconsultas

136

• Se a subconsulta puder retornar mais de uma linha o operador a ser utulizado deve ser IN:

• select nome, endereco from TRANSPORTADORA where cidade in (select distinct cidade from FABRICA where UF = 'SP');

• Deve-se observar que, ao se utilizar o operador

de igualdade, o comando externo espera receber um único valor da subconsulta, Se isso não ocorrer, será retornada uma mensagem de erro.

Page 137: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.9 – Subconsultas

137

• Apesar de os exemplos apresentados anteriormente utilizarem sempre o comando SELECT como comando externo, pode-se aplicar o conceito de subconsultas em outros comandos SQL, tais como o UPDATE:

• update empregado set salario = salario * 1.10

where salario < (select avg(salario) from empregado);

Page 138: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.10 – Visões

138

• Uma visão é uma tabela virtual baseada em um subconjunto de linhas de uma ou mais tabelas em um banco de dados.

• São usadas para: – Restringir o acesso aos dados apresentando

apenas um subconjunto dos dados disponíveis.

– Rearranjar e apresentar os dados de uma ou mais tabelas de uma maneira especialmente útil para o programa.

– Substituir consultas longas e complexas por algo mais fácil de ser entendido e manipulado.

Page 139: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.10 – Visões

139

• Diferente de uma tabela, uma visão não armazena dados em um banco de dados.

• Quando a visão é criada, sua definição é armazenada no banco de dados.

• Quando um programa usa uma visão, o Firebird lê a visão e rapidamente gera uma saída como se fosse uma tabela.

Page 140: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.10 – Visões

140

• create view Lista_Pedidos as select PEDIDO.ID_PEDIDO, PEDIDO.DATA, CLIENTE.NOME from PEDIDO, CLIENTE where PEDIDO.ID_CLIENTE = CLIENTE.ID_CLIENTE;

• O nome da visão deve ser único dentro do banco de dados.

• Podemos definir ou não os nomes das colunas mostradas

na visão.

• create view Lista_Pedidos2 (Id, Data, Nome) as select PEDIDO.ID_PEDIDO, PEDIDO.DATA, CLIENTE.NOME from PEDIDO, CLIENTE where PEDIDO.ID_CLIENTE = CLIENTE.ID_CLIENTE;

Page 141: Banco de Dados ECO031 · 2016. 5. 17. · –Microsoft Visual FoxPro –dBASE –SQLite 13 . 1.3 – Modelos de banco de dados •Descrição dos tipos de informações que estão

6.10 – Visões

141

• Após a criação da visão é possível definir uma consulta exatamente como se definem consultas em tabelas, por exemplo:

– select * from LISTA_PEDIDOS;