modelagem de banco de dados prof. marcus vinícius [email protected]

64
Modelagem de Banco de Dados Prof. Marcus Vinícius [email protected] www.marcussilva.c om.br

Upload: internet

Post on 17-Apr-2015

110 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Modelagem de Banco de Dados

Prof. Marcus Viní[email protected]

www.marcussilva.com.br

Page 2: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

DADO- Fator que pode ser gravado- Não possui utilidade

INFORMAÇÃO- Dados contextualizados e apresentados de forma significativa e útil

AÇÃO / CONHECIMENTO- Atitude tomada com base em experiências / conhecimento pessoal mediante a informação recebida.

Page 3: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

(1) (2)

(3)

Page 4: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Total de Alunos: 3Total de Aprovados: 2Total de Pontos: 211

Média das Notas: 70,33Sexo masculino: 2Sexo feminino: 1

(1) (2)

(3)

Page 5: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Total de Alunos: 3Total de Aprovados: 2Total de Pontos: 211

Média das Notas: 70,33Sexo masculino: 2Sexo feminino: 1

AÇÕES:

A quantidade de alunos não são suficientes conforme estrutura da escola. A escola deve investir no marketing para captação de novos alunos.

A média das notas estão baixas em relação ao nível de conhecimento adquirido e esperado pelos alunos. A escola deve verificar onde está a falha no processo de aprendizagem.

Page 6: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Dados Persistentes

Uma coleção de dados persistentes podem ser armazenados em vários tipos de dispositivos, como: Planilha Eletrônica, Agenda e Documentos

Page 7: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

O Professor José deseja armazenar os nomes e data de nascimento de seus alunos, qual o melhor banco de dados para indicar?

Carlos Alberto CostaMaria Joana PereiraFernanda OliveiraAlan Cordeiro LimaBianca Souza

20/05/199029/11/198509/08/195003/12/197606/01/1963

Total de Registros: 5

Page 8: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

O Professor José deseja armazenar os nomes e data de nascimento de seus alunos, qual o melhor banco de dados para indicar?

Aprox. 10 registros Folha de Papel (manual)Aprox. 50 registros Documento de Texto (word)Aprox. 1.000 registros Planilha Eletrônica (Excel)Aprox. 10.000 registros AccessAcima de 10.000 SGBD

Page 9: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

O que é um Banco de Dados? Para que serve um Banco de Dados? Qual o melhor Banco de Dados?

Page 10: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Restrições de acesso aos dados Armazenamento persistente Recursos para consultas Backup e Restore Controle de redundância (compartilhamento X replicação)

Page 11: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Modelagem Conceitualo Abstração de alto nível o DER alto nívelo Identificação dos requisitos de software e de banco de dados

Modelagem Lógicao Modelagem do Projeto de Banco de Dados (DER)

Modelagem Físicao Geração de Script do Banco de Dadoso Implementação do Banco de Dadoso Otimização de Estrutura (view, índices, chaves, etc.. )

Page 12: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Diagrama de Esquemao Projeto de Banco de Dadoso Estado vazio (sem dados)

Instância ou Estadoo Os dados no banco de dados em um determinado momento no tempo são chamados de estado ou instante do banco de dados. Também são chamados de conjunto atual de ocorrências ou instâncias no banco de dados.

Page 13: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Linguagem do SGBDo Linguagem de comunicação com o banco de dados (SQL: DML, DQL, DDL, etc... )

Interfaces de Aplicação para Usuárioso Interfaces amigáveis de manipulação das informações pelos usuários

Interfaces de buscas o Interface dentro da área administrativa do banco, utilizada para buscar informações sem a utilização de comandos SQL

Interface de Entrada e Saída de vozo Interface dentro da área administrativa do banco, com base em comando de voz para realizar procedimentos no banco de dados

Interface para o DBAo Interface visual de administração do banco de dados

Page 14: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Cargao Geração de carga de teste nos objetos do banco de dados

Reorganizaçãoo Reorganização das instâncias armazenas, com objetivo de melhoria de desempenho. • Comando: OPTIMIZE TABLE aluno

Monitoração de Desempenhoo Utilitários para monitoramento do uso do banco de dados

Page 15: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Centralizadao Arquitetura antigao Utilização de Mainframeo Terminais (baixa capacidade de processamento)o Todo processamento é feito no servidor

Arquitetura de Cliente / Servidoro Servidor de Banco o Estação de Trabalhoo Servidores Especializados (Aplicação, E-mail, Arquivos)o Client Side

Page 16: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Cliente

Servidor Web (IIS, Apache e Tomcat)

Servidor de Banco de Dados

Camada de Apresentação

Camada LógicaDe Negócios

Camada de ServiçosDe Banco de dados

Page 17: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Modelo de dados hierárquico e de redeo Modelo baseado em arquivos

Modelo Relacional de dados o Objetos Relacionais (MySQL, SQL Server e Oracle)

Modelo de Dados Orientado a Objetoso Modelo de dados Pseu da Orientação a Objetos ou Pós-Relacional (Caché)

Modelo XML NativosoModelo de dados estruturados em documentos XML (Tamino)

Page 18: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Case Studio DBDesigner Poseidon System Architect Rational Rose Enterprise Architect Erwin Visible Suite Power Designer Jude

Software utilizado para projetar um Banco de Dados.

Page 19: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Criadas antes do SQL

SQL: linguagem derivada

Operações Relacionais: Unárias: Seleção e Projeção de Resultados com apenas 1 tabela Binárias: Seleção com 2 tabelas combinando tuplas relacionadas

Page 20: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Operação Relacionais Unárias: Seleção e Projeçãoo Seleção: é usada para escolher um subconjunto das tuplas de uma relação que satisfaça uma condição de seleção. σ (sigma) indicar operador de seleção

σ salario >= 3000(FUNCIONARIO)

* Busca todos funcionário com o salário maior ou igual a 3 mil.

Page 21: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

σ salario >= 3000 and departamento = 4 (FUNCIONARIO)

* Busca todos os funcionários com salário maior ou igual a 3000 e departamento igual a 4.

Page 22: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Operação Relacionais Unárias: Seleção e Projeçãoo Projeção: é usada para definir a lista de atributos que serão mostradas na projeção. π (pi) indicar operador de projeção

π nome, salario, telefone (FUNCIONARIO)

Page 23: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

UniãoÁlgebra: A U

B

InterseçãoÁlgebra:

R∩S

Diferença deConjuntos

Álgebra: A-B

Page 24: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com
Page 25: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Operação Relacionais binárias: Junçãoo Junção: é usada para combinar tuplas relacionadas de duas relações em uma única tupla maior. X (Junção) indicar operador de junção

π nome, cpf (FUNCIONARIO X (cpf_fun = cpf_ger) GERENTE)

Page 26: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Funções: SOMA, MÉDIA, MÁXIMO, MÍNIMO £ (F script) é usado para definir as funções de agregação

NroDep £ MÉDIA salario (FUNCIONARIO) NroDep £ MÁXIMO salario (FUNCIONARIO)

Page 27: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com
Page 28: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

O que é uma entidade?

Conjunto de objetos / registros / tuplas de uma mesma natureza.

Outras definições:

“...algo o mundo real com existência independente.” (NAVATHE, 2005);

“Conjunto de objetos da realidade do mundo modelada sobre os quais deseja-se manter informações no banco de dados.” (HEUSER, 2004);

Page 29: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

O que deve compor em uma entidade?

- Nome- Atributo chave (unívoco) - PK (Primary Key)- Propriedades de um objeto/registro

Observações:

- Nomenclatura das tabelas- Nomenclatura das chaves- Nomenclatura dos atributos

Page 30: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

É o fator de comunicação e referência entre Entidades.

Page 31: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

É o mínimo de ocorrência em uma entidade.

0,0 | 0,1 | 0,N | 1,0 | 1,1 | 1,N | N,0 | N,1 | N,N

Page 32: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

(1,N)(1,1)

(0,N)(0,1)

Page 33: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

1) Ache o relacionamento e a cardinalidade das entidades abaixo:

•aluno e prova•cliente e conta_receber•banco e agencia•cliente e conta_pagar

Page 34: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com
Page 35: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Segue abaixo alguns tipo de Atributos comuns em uma modelagem de base de dados:

Tipos de Atributos Descrição

Cadeia de Caracteres Char(n) - Tamanho fixo de Caracteres Varchar(n) – Tamanho máximo de Caracteres

Numéricos Int(n) - Tamanho máximo de Caracteres Float(m,n) – Tamanho fixo de casas decimais

Date e Time Date() - Armazenamento de data Time() - Armazenamento de horário

Texto Livre Text() - Atributo de texto livre

Page 36: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Atributo Tipos de Atributos(caracteres)

nome Varchar(60)

telefone Varchar(13)

sexo Char(1)

nota Int(3)

salario Float(5,2)

dataNascimento Date()

horaCadastro Time()

Page 37: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Devemos gravar o dado no banco com máscara ou sem máscara?

Com máscara: (31)2222-1133Sem máscara: 3122221133

Com máscara: 015.369.259-29Sem máscara: 01536925929

Page 38: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

aluno

nome

telefone

email

dataNascimento

endereco

numero

complemento

bairro

cidade

estado

cep

dataCadastro

observacao

Praticar:

Page 39: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

O que é uma Entidade Fraca?

Entidade Fraca é aquela que para existir depende de uma outra Entidade.

Entidade ForteEntidade Forte Entidade FracaEntidade Fraca

Page 40: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Especialização é uma Entidade derivada de uma Genérica. Uma Entidade genérica pode ser especializada para melhor caracterizar um objeto/registro. Veja o exemplo baixo:

Page 41: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

?

corrente

?

aquatico terrestre aereopoupanca

Page 42: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

NULL

Null/Nulo é a possibilidade de um atributo aceitar ausência de valores.

Observações:

0 <> null‘ ’ <> nullnull X not null

Page 43: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Atributo Null/Not Null

nome:varchar(60) not null

telFixo:varchar(13) not null

telCelular:varchar(13) null

cpf:varchar(14) not null

carteiraHab:varchar(20) null

dataNascimento:date() not null

nomePai:varchar(60) null

nomeMae:varchar(60) null

Page 44: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

A Chave Estrangeira (FK) é utilizada para referenciar registros entre Entidades de um mesmo escopo.

Page 45: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

A Chave Estrangeira (FK) é utilizada para referenciar registros entre Entidades de um mesmo escopo.

Page 46: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Sempre que ocorrer um relacionamento entre entidades cuja cardinalidade seja “(M,N)”, é necessário criar uma nova tabela. Veja Exemplo abaixo:

consulta

(N) (N)

Page 47: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com
Page 48: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Processo de análise que minimiza redundância de dados e minimiza anomalias nas operações de modificação dos dados.

As relações que não satisfazem certas propriedades (formas normais) são sucessivamente decompostas em relações menores de modo a satisfazerem as propriedades pretendidas (Codd 1972).

Page 49: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

1NF – Primeira forma normal 2NF – Segunda forma normal 3NF – Terceira forma normal

As principais formas normais são:

Page 50: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Para um esquema relacional estar na primeira forma (1FN), a entidade não deve conter os atributos não atômicos ou as relações aninhadas (só conter os atributos atômicos). (ELMASRI, R. & NAVATHE )

ou seja:

Atômico é

Algo que não pode ser dividido

Ex.:enderecoCompletonomeCompletonoticiacarteiraTrabalho

Page 51: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Para um esquema relacional estar na segunda forma (2FN), as relações que possuam chaves primárias com vários atributos, nenhum atributo externo à chave deve ser funcionalmente dependente de parte da chave primária. (ELMASRI, R. & NAVATHE )

errado

Page 52: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Para um esquema relacional estar na segunda forma (2FN), as relações que possuam chaves primárias com vários atributos, nenhum atributo externo à chave deve ser funcionalmente dependente de parte da chave primária. (ELMASRI, R. & NAVATHE )

certo

Page 53: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Para um esquema relacional estar na terceira forma (3FN), as relações não devem ter atributos que não pertençam a uma chave, funcionalmente determinados por outro atributo que também não pertença a uma chave (ou por um conjunto de atributos não – chave). Isto é, não deve haver dependência transitiva entre um atributo não-chave e uma chave primária. (ELMASRI, R. & NAVATHE )

errado

Page 54: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Para um esquema relacional estar na terceira forma (3FN), as relações não devem ter atributos que não pertençam a uma chave, funcionalmente determinados por outro atributo que também não pertença a uma chave (ou por um conjunto de atributos não – chave). Isto é, não deve haver dependência transitiva entre um atributo não-chave e uma chave primária. (ELMASRI, R. & NAVATHE )

certo

Page 55: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Chave Primária: (PK - Primary Key) é a chave que identifica cada registro dando-lhe unicidade. A chave primária nunca se repetirá.

Chave Estrangeira: (FK - Foreign Key) é a chave formada através de um relacionamento com a chave primária de outra tabela. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primária seja composta na origem, a chave estrangeira também o será.

Chaves Candidatas: Ocorrem quando em uma relação existe mais de uma combinação de atributos possuindo a propriedade de identificação única. Matrícula, CPF, RG, Titulo Eleitor 

Page 56: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Chaves Candidatas ou Chaves Alternativas (KA – Alternate Key): Ocorrem quando em uma relação existe mais de uma combinação de atributos possuindo a propriedade de identificação única. Matrícula, CPF, RG, Titulo Eleitor 

Create table medico (

codMedico Int NOT NULL AUTO_INCREMENT,nome Varchar(40) NOT NULL,cpf Char(14) NOT NULL,

Primary Key (codMedico));

Alter table medico add unique KA_cpf (cpf);

Page 57: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Chave Simples: Chave definida por apenas 1 atributo.

Chave Composta: Chave definida por mais de 1 atributo.

Create table cidade (cidade Varchar(40) NOT NULL,estado Char(2) NOT NULL,populacao Int NOT NULL,

Primary Key (cidade,estado));

Page 58: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Create table consulta (codMedico Int NOT NULL,codPaciente Int NOT NULL,dataHora Datetime NOT NULL,

Primary Key (codMedico,codPaciente,dataHora));

Page 59: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Create table profissional (codProfissional Int NOT NULL AUTO_INCREMENT,codProfissionalChefe Int NOT NULL,nome Varchar(40) NOT NULL,email Varchar(60) NOT NULL,

Primary Key (codProfissional);

Alter table profissional add Foreign Key (codProfissionalChefe) references profissional (codProfissional) on delete restrict on update restrict;

O Self Relationship é usado quando ocorre o relacionamento de uma tabela com ela mesma. No exemplo abaixo o objetivo é identificar o chefe de um determinado profissional.

Auto Relacionamento (Self Relationship)

Page 60: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Código de criação do auto incremento e definição do valor inicial do auto incremento.

Create table cargo (codCargo Int NOT NULL AUTO_INCREMENT,nome Varchar(40) NOT NULL,

Primary Key (codCargo))AUTO_INCREMENT = 1000;

Page 61: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

funcionario

(0,1)usuario

cliente

(0,1)

(1,1) (1,1)

Page 62: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Criptografia Unidirecional password() – 16 caracteres md5() – 32 caracteres sha1() – 40 caracteres

Senha Normal Senha Criptografada com MD5

123456 E10adc3949ba59abbe56e057f20f883e

1859789 79044446c5eb49ce129f7bc0370ca2cf

AB1564 B27ebb234978c30459e1cce3c40609c0

yuTRk7893 23bcf705d7fb11ee155ea9aeeb5c15fe

G&*/osiusn#@ C293dc308b571573e149ae5b0bcc4f4e

Page 63: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

Regra de Negócio: O cliente pode ter no máximo 3 endereços, sendo: cobrança, comercial e residencial.

cliente endereco

(1,N) (1,3)

Page 64: Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com

- Criação de Tabelas- Atributos- Tipos de Dados- PK- Relacionamento- FK- Cardinalidade- Auto Incremento- UNIQUE- Alternate Key- Null X Not Null

- Index- Imagem de Projeto- Database Conversion- Geração de SQL- Engenharia Reversa