Sei sulla pagina 1di 11

Banco de Dados

Parte 3 : Modelo Relacional – Parte 1


Professor : Alan

Modelo Relacional
• Modo mais simples, seguro e versátil de organizar informação.

• Tabela é uma forma de se organizar os dados em linhas e colunas. Na


intersecção de uma linha com uma coluna encontra-se um dado.

1
Modelo Relacional
• Chave Primária (PK – Primary Key) : É o
atributo que identifica univocamente as
tuplas (ou linhas) de uma tabela.
Normalmente é o atributo determinante no
modelo E—R (sublinhado).

• Chave Candidata : É qualquer atributo que


consegue satisfazer ao critério de chave
primária.
– Toda tabela tem pelo menos uma chave
candidata.

Exemplo

Código, CPF, Identidade e Carteira de Trabalho são


chaves candidatas (não existem duas pessoas com
valores iguais para esses atributos).
Análise:
• Código - sempre existirá.
• CPF - se o cliente for uma criança o campo poderá ser nulo.
• Identidade - idem.
• Carteira de Trabalho - idem.
Logo o Código para chave primária da tabela Cliente.

2
Modelo Relacional
• Chave estrangeira (FK – Foreign Key) :
É o atributo de uma tabela que é chave
primária de outra tabela.

• A chave estrangeira é utilizada sempre


que uma entidade se relacionar com outra
por meio do relacionamento tipo 1:N.

• Quando isso ocorre, o campo chave


primária da tabela l é chave estrangeira da
tabela N.

1:N

3
Modelo Relacional / Lógico

Projeto Lógico de Banco de Dados


 Relacionamento m-n
– Todo relacionamento m-n dá origem a dois relacionamentos 1-n
através de uma nova entidade lógica denominada:
entidade associativa ou entidade-interseção.
– Exemplo :
Fornecedor M Fornece
N Peça Fornecedor
1 N Forneci- N 1
Peça
mento

Fornecimento = { @Cod-Fornecedor + @Cod-Peça + Preço + Prazo-Entrega + ... }

• Relacionamento 1-n
A entidade do lado n recebe a chave primária da entidade do lado 1
como chave estrangeira.
1 N Cod_Pedido
Cod_cliente Cliente Pedido
Cod_Cliente

Cliente = { @Cod-Cliente + Nome + Endereço + Tipo + [CPF|CGC] + ... }


Pedido = { @N°-Pedido + Data-Pedido + Valor-Total + ... + Cod-Cliente }
(chave estrangeira)
8

4
Projeto Lógico de Banco de Dados
 Relacionamento 1-1
– As duas entidades são realmente distintas ou elas podem ser fundidas em
uma única
– Se elas possuem a mesma chave primária, deve-se fundí-las.

1 1
Estado Capital

Capital passa a ser atributo da Entidade Estado

 Entidades Fracas
– A chave primária da entidade-fraca será a concatenação da chave primária
da entidade fundamental com um atributo determinante da entidade fraca.

1 N
Funcionário Dependente

Funcionário = { @Cod-Func + CPF + Nome-Func + Função + ... }


Dependente = { @Cod-Func + @CPF + Nome-Depend + Sexo + Dt-Nasc + ... }

Exercícios
1 - Elaborar um modelo lógico para uma seguradora de automóveis
Entidades: Cliente, Apólice, Carro e Acidentes.

Requisitos:

a) Um cliente pode ter várias apólices (no mínimo uma);


b) Cada apólice somente dá cobertura a um carro;
c) Um carro pode ter zero ou n registros de acidentes a ele.

Atributos:

a) Cliente: Número, Nome e Endereço;


b) Apólice: Número e Valor;
c) Carro: Registro e Marca;
d) Acidente: Data, Hora e Local

5
Exercícios
2 - Elaborar um modelo lógico de um consultório clínico

Entidades: Médico, Paciente e Exame.

Requisitos:

O banco de dados deverá armazenar informações sobre os vários


exames de um determinado paciente

Atributos:

a) Médico: CRM, Nome e Especialidade;


b) Paciente: Número, Nome, Endereço;
c) Código, Descrição e Valor exame

Exercícios
3) Elaborar um modelo lógico satisfazendo as seguintes restrições e
requisitos para uma revendedora de peças:

a) Para um Vendedor, armazenar seu código, nome e endereço;

b) Para um Cliente, armazenar o seu código, nome, endereço e o limite


de crédito.

c) Um vendedor pode atender muitos clientes, porém um cliente deve ter


exatamente um vendedor;

d) Para um pedido, armazenar seu número e data. Além disso, para cada
item do pedido (peça) armazenar o código da peça, quantidade e
preço de venda. Há somente um cliente por pedido e um vendedor;

e) Para uma peça, armazenar seu código, descrição e preço de custo.


Uma peça somente pode estar estocada num único armazém. Para um
armazém, armazenar seu código e endereço;

6
Exercícios
4) Elaborar um modelo lógico para cada um dos descritivos
a seguir:

a) Uma instituição bancária deseja controlar o movimento


de suas contas-corrente. A instituição possui agências
espalhadas por várias cidades, e o seu cadastro contém
informações sobre o código, nome, e endereço onde a
agência fica localizada. No cadastro de clientes, devem-
se manter informações sobre nome, CPF e endereço de
cada cliente. As informações sobre contas-corrente são
identificadas por um número, e devem fornecer o saldo
atualizado das mesmas. Cada conta é submetida a uma
série de transações (saque, deposito,...)

Exercícios
b) Uma empresa de agenciamento de mão-de-obra
pretende informatizar o cadastro de profissionais,
candidatos a empregos temporários. Pretende-se
construir um banco de dados onde se possam manter os
dados cadastrais dos profissionais, e seus contratos
temporários com as empresas-clientes. O profissional é
identificado por um número de controle e, além desta
identificação, fica registrado seu nome, endereço, data
de nascimento e profissão. Os contratos de mão-de-
obra temporária são feitos individualmente (um contrato
para cada profissional), com as empresas-clientes. Cada
contrato é identificado por um número único, e nele são
registrados a empresa contratante, a vigência do
contrato (data de início e de término), e o valor pago por
hora trabalhada. As empresas-clientes são identificadas
pelo CNPJ, e possuem um nome e endereço.

7
Exercícios
c) Uma clínica veterinária, especializada no tratamento de
cães e gatos, pretende informatizar o seu sistema de
controle de vacinas, de forma a melhorar a notificação
aos clientes sobre a data e o tipo de vacina a ser
aplicada em qualquer um dos animais cadastrados na
clínica. Os clientes, quando são cadastrados na clínica,
são identificados por um código numérico, e devem
fornecer o nome, telefone e endereço completo (rua,
número, complemento, bairro, cidade, estado, CEP).
Para cada animal, que também é identificado por um
código numérico, é registrado: nome, data de
nascimento, espécie, raça, cor e sexo. As vacinas, por
sua vez, também são identificadas por um código
numérico, e possuem nome, nome do laboratório
fabricante, e lote de fabricação. Quando o animal é
vacinado, deve ser feito o registro da data de aplicação.

Obtendo Dados de Várias


Tabelas
EMPLOYEES DEPARTMENTS

8
Análise de uma Junção
Exemplo: Tabelas Regions e Countries

Region_id Region_name Country_id Country_name Region_id


1 Europe AR Argentina 2
2 Americas AU Australia 3
3 Asia BR Brazil 2
4 Middle East and Africa CN China 3
DE Germany 1
DK Denmark 1
EG Egypt 4

Análise de uma Junção


PK R PK C FK
SELECT Region_id Region_name Country_id Country_name Region_id
1 Europe AR Argentina 2
2 Americas AR Argentina 2
* 3 Asia AR Argentina 2
4 Middle East and Africa AR Argentina 2
FROM 1 Europe AU Australia 3
2 Americas AU Australia 3
3 Asia AU Australia 3
regions, 4 Middle East and Africa AU Australia 3
1 Europe BR Brazil 2
countries ; 2 Americas BR Brazil 2
3 Asia BR Brazil 2
4 Middle East and Africa BR Brazil 2
1 Europe CN China 3
2 Americas CN China 3
PRODUTO 3 Asia CN China 3
4 Middle East and Africa CN China 3
1 Europe DE Germany 1
CARTESIANO ! 2 Americas DE Germany 1
3 Asia DE Germany 1
4 Middle East and Africa DE Germany 1
1 Europe DK Denmark 1
2 Americas DK Denmark 1
3 Asia DK Denmark 1
4 Middle East and Africa DK Denmark 1
1 Europe EG Egypt 4
2 Americas EG Egypt 4
3 Asia EG Egypt 4
4 Middle East and Africa EG Egypt 4

9
PK R
Análise de uma Junção PK C FK
Region_id Region_name Country_id Country_name Region_id
1 Europe AR Argentina 2 Quando:
2 Americas AR Argentina 2
3 Asia AR Argentina 2 Region_id(Regions) =
4 Middle East and Africa AR Argentina 2
1 Europe AU Australia 3 Region_id(Countries)
2 Americas AU Australia 3
3 Asia AU Australia 3 → CORRETO !
4 Middle East and Africa AU Australia 3
1 Europe BR Brazil 2
2 Americas BR Brazil 2
3 Asia BR Brazil 2
4 Middle East and Africa BR Brazil 2
1 Europe CN China 3
2 Americas CN China 3
3 Asia CN China 3
4 Middle East and Africa CN China 3
1 Europe DE Germany 1
2 Americas DE Germany 1
3 Asia DE Germany 1
4 Middle East and Africa DE Germany 1
1 Europe DK Denmark 1
2 Americas DK Denmark 1
3 Asia DK Denmark 1
4 Middle East and Africa DK Denmark 1
1 Europe EG Egypt 4
2 Americas EG Egypt 4
3 Asia EG Egypt 4
4 Middle East and Africa EG Egypt 4

Análise de uma Junção


SELECT *
FROM regions, countries
WHERE regions.region_id = countries.region_id;
(JOIN CLÁSSICO)

Region_id Region_name Country_id Country_name Region_id


2 Americas AR Argentina 2
3 Asia AU Australia 3
2 Americas BR Brazil 2
3 Asia CN China 3
1 Europe DE Germany 1
1 Europe DK Denmark 1
4 Middle East and Africa EG Egypt 4

10
Recuperando Registros com
Joins “Clássicos”
SELECT d.department_id, d.department_name,
d.location_id, l.city
FROM departments d, locations l
WHERE l.location_id = d.location_id;

Recuperando Registros com


INNER JOINs
SELECT d.department_id, d.department_name,
d.location_id, l.city
FROM departments d INNER JOIN locations l
ON l.location_id = d.location_id;

11

Potrebbero piacerti anche