tópicos em banco de dados · modelos de dados: relacional cliente ... cod_conta saldo 900 55,00...

30
Modelagem de Banco de Dados Revisão

Upload: others

Post on 15-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem de

Banco de Dados

▪ Revisão

Page 2: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelo Relacional

Tem por base a teoria dos conjuntos e álgebra relacional;

Revelou-se ser o mais flexível e adequado ao solucionar

os vários problemas que se colocam no nível da

concepção e implementação da base de dados;

A estrutura fundamental do modelo relacional é a

relação (tabela):

◦ Uma relação (tabela) é constituída por um ou mais atributos

(campos) que, juntos, representam uma entidade (registro);

◦ Cada atributo da entidade é chamada de campo

◦ O conjunto de atributos que define uma entidade é chamada de

registro.

Page 3: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelos de Dados: relacional

Cliente

Cod_cliente Nome Rua Cidade

01 José Av. Pio XI São Paulo

02 Maria R. São Francisco Recife

03 Gabriela R. do Sol Maceió

Conta

Cod_conta Saldo

900 55,00

556 100.000,00

647 105.366,00

801 744,00Cliente_Conta

Cod_cliente Cod_conta

01 900

02 556

02 647

03 647

03 801

Nome Endereço Cidade Conta Saldo

José Av. Pio XI São Paulo 900 55,00

Maria R. São Francisco Recife 556 100.000,00

Maria R. São Francisco Recife 647 105.366,00

Gabriela R. do Sol Maceió 801 744,00

Gabriela R. do Sol Maceió 647 105.366,00

Cliente

Page 4: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem

Conceitual

Modelagem Conceitual

Page 5: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual:entidade

Pode representar tanto objetos concretos (uma

pessoa, um automóvel) quanto objetos abstratos

(um departamento, uma venda);

É representada através de um retângulo com o

nome da entidade.

Livro Editora EmpréstimoReserva

Page 6: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual:relacionamento

Conjunto de associações entre entidades;

É representado através de um losango ligado por

linhas aos retângulos das entidades que

participam do relacionamento;

ALUNOCURSO Matrícula

PACIENTEMÉDICO Consulta

Page 7: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual:cardinalidade

Número de ocorrências das entidades associadas

em um relacionamento.

Quantas ocorrências de uma entidade podem

estar associadas a uma determinada ocorrência

de outra entidade através do relacionamento?

Empresa Departamentopossuin

Uma ocorrência de DEPARTAMENTO

pode estar associada ao no máximo 1

ocorrência de EMPRESA

1

A uma ocorrência de EMPRESA pode

estar associada várias (n) ocorrências

de DEPARTAMENTO

Page 8: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual: relacionamentos 1 para n

Departamento Funcionáriopossuin1

Page 9: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual: relacionamentos n para n

Médico Pacienteconsultan n

Livro Autorautorian n

Page 10: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual: exemplo

Deseja-se manter informações sobre

alunos, cursos, disciplinas e

departamentos:

1. Cada disciplina possui um

departamento responsável. Um

departamento é responsável por

muitas disciplinas.

2. Uma disciplina pode possuir

diversos pré-requisitos. Uma

disciplina pode ser pré-requisito de

muitas outras disciplinas.

3. Uma disciplina pode aparecer no

currículo de muitos cursos. Um

curso pode possuir muitas

disciplinas em seu currículo.

4. Um aluno está inscrito em um

curso. Um curso pode ter nele

inscritos muitos alunos.

Departamento Disciplinaresponsável1 n

pré-requisito

n n

Curso

disc-curso

n

n

Aluno inscrição1n

Page 11: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual:atributos

Dado que é associado a cada ocorrência de uma

entidade ou de um relacionamento;

Muitas vezes os atributos não são representados

para não sobrecarregar o diagrama;

Projeto

tipo

nome

código

Page 12: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Assim como uma entidade, relacionamentos

também podem possuir atributos;

Modelagem conceitual:atributos de relacionamentos

Médico

data

nomeCRM

Paciente

nomecódigo

consultan n

Departamento Funcionáriopossuin1

nomecódigo nomematrícula

Page 13: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Modelagem Conceitual: identificadores

Cada entidade deve possuir um identificador;

Um identificador é um conjunto de um ou mais

atributos cujos valores servem para distinguir

uma entidade.

Aluno

nomeRA endereço

Page 14: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem SQL

Page 15: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

A linguagem SQL: estrutura

Linguagem de Definição de dados (DDL)

◦ Subconjunto de comandos para definição e

modificação de esquemas de relação (tabelas),

remoção de tabelas, etc.

Linguagem de Manipulação de dados (DML)

◦ Subconjunto de comandos para inserir, remover e

modificar informações em um banco de dados.

Page 16: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de

Definição de Dados

DDL

Page 17: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de Definição de Dados:comandos

CREATE table

◦ cria uma tabela no banco de dados.

DROP table

◦ Apaga/exclui uma tabela do banco de dados.

ALTER table

◦ Altera a estrutura de uma tabela no banco de dados

Page 18: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de Definição de Dados:create table

Aluno

nomeRA endereço

CREATE TABLE aluno

( RA numeric(9) primary key,

nome char(40) not null,

endereco varchar(50)

)

nome da tabela

nomes dos campos

tipos de dado

restrições de

integridade

RA nome endereco

1242532 Manoel Rua Cinco

1425534 Joana Rua São Paulo

1565243 Maria Rua Pio XII

4537642 João Rua Leão 23

Aluno

Page 19: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de Definição de Dados:create table (relacionamento 1:n)

Departamento Funcionáriopossuin1

nomecódigo nomematrícula

CREATE TABLE departamento

( codigo numeric(2) primary key,

nome char(30) not null )

CREATE TABLE funcionario

( matricula numeric(5) primary key,

nome char(40) not null,

depto numeric(2) references departamento(codigo) )

depto

Page 20: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de Definição de Dados:create table (relacionamento 1:n)

Departamento Funcionáriopossuin1

nomecódigo nomematrícula depto

Codigo nome

01 Contabilidade

02 Recursos Humanos

03 Informática

Departamento

Matricula nome depto

35241 João 03

52615 Maria 01

73645 Manoel 02

76545 Heloisa 03

Funcionario

Page 21: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de Definição de Dados:create table (relacionamento n:n)

CREATE TABLE medico

( CRM numeric(6) primary key,

nome char(40) not null )

CREATE TABLE paciente

( codigo numeric(3) primary key,

nome char(40) not null )

Médico

data

nomeCRM

Paciente

nomecódigo

consultan n

CREATE TABLE consulta

( medico numeric(6) references medico(CRM),

paciente numeric(3) references paciente(codigo),

data date )

Page 22: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de Definição de Dados:create table (relacionamento n:n)

Médico

data

nomeCRM

Paciente

nomecódigo

consultan n

CRM nome

102199 Carlos Alberto

243552 Maria Luiza

356623 José Carlos

Medico

Codigo nome

117 João

236 Maria

405 Manoel

765 Heloisa

Paciente

Medico Paciente data

102199 117 10/08/2019

243552 405 12/08/2019

356623 236 03/07/2019

Consulta

Page 23: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de

Manipulação de

Dados

(DML)

Linguagem SQL

Page 24: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem de Manipulação de Dadoscomandos

SELECT

◦ é o comando mais usado do DML, comanda e permite ao

usuário especificar uma consulta com uma descrição do

resultado desejado. A questão não especifica como os

resultados devem ser localizados.

INSERT

◦ Incluir um registro em uma tabela.

UPDATE

◦ Alterar os valores dos dados de uma tabela.

DELETE

◦ remover registros de uma tabela.

Page 25: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

O comando

SELECT

FROM

WHERE

ORDER BY

Linguagem de Manipulação de Dados

Page 26: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

O comando SELECT

select nome, salario

from funcionario

where depto = 1

order by salario DESC

Apresentar o nome e o salário dos

funcionários do departamento 1 em

ordem decrescente salário

Guilherme Dias, 3000

Maria José da Silva, 2000

Adriano José Ribeiro, 1800

Funcionario

Page 27: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem SQL

Funções agregadas

◦ A linguagem SQL possui algumas funções específicas

para os seguintes cálculos:

média...............: AVG

mínimo............: MIN

máximo...........: MAX

total.................: SUM

contar..............: COUNT

Page 28: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem SQL

1. Qual a média salarial da empresa?

SELECT AVG(salario)

FROM Funcionario

3. Qual o maior salário da empresa?

SELECT MAX(salario)

FROM Funcionario

4. Quanto é a folha de pagamento da empresa?

SELECT SUM(salario)

FROM Funcionario

Funcionario

3280

10000

32800

Page 29: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem SQL

Grupos

◦ A SQL oferece a habilidade para calcular funções

relacionados a grupos de registros usando a cláusula

group by.

◦ O atributo utilizado na cláusula group by é usado para

se formar grupos.

◦ Registros com o mesmo valor são colocados em um

mesmo grupo.

Page 30: Tópicos em Banco de Dados · Modelos de Dados: relacional Cliente ... Cod_conta Saldo 900 55,00 556 100.000,00 647 105.366,00 Cliente_Conta 801 744,00 Cod_cliente Cod_conta 01 900

Linguagem SQL

1. Apresentar o código do departamento seguido da média salarial do departamento

SELECT depto, AVG(salario)

FROM Funcionario

GROUP BY depto

2. Apresentar o código do departamento seguido do maior salário do departamento;

SELECT depto, MAX(salario)

FROM Funcionario

GROUP BY depto

Funcionario