26
Modelagem Relacional Armazenamento dos Dados

Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Embed Size (px)

Citation preview

Page 1: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Modelagem RelacionalArmazenamento dos Dados

Page 2: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Modelagem Relacional• Pensamento não no modelo, mas sim na

armazenagem dos dados;

• Pensamento em funcionalidades;

• Diagrama Entidade Relacionamento (DER);

• Parecido com Modelagem Conceitual no ponto de vista de representação visual;

• Objeto de modelagem diferente da Modelagem Conceitual.

Page 3: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

M. Conceitual vs M. Relacional

Page 4: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Modelagem Conceitual Modelagem Relacional

Baseado no modelo Baseado na armazenagem dos dados

Conceito Entidade

Atributos Atributos

Associações Relacionamento

1 ou * one (1), many (N)

Page 5: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Como pensar?• Tudo o que precisa ser armazenado é uma Entidade

• Deve possuir um ou mais atributos

• Os relacionamentos somente existem para representar relacionamentos e cardinalidade, basicamente.

• Sempre associar perguntando “possui um” ou “possui muitos”.

• Pense sempre nos dados armazenados!

Page 6: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Banco de Dados Relacional• Tabelas como forma de armazenar os dados de

uma Entidade;

• Cada linha é um registro da tabela

• Cada coluna um atributo da Entidade

• Tabelas podem se relacionar com outras

• DICA: Não usar acentos ou caracteres especiais para nomes de tabelas ou atributos.

Page 7: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Tabela "cliente"id nome cpf rg

1 Luan Murilo Tomás Araújo 255.439.755-46 38.482.664-7

2 Marcos Vinicius Eduardo Ribeiro 358.759.431-73 13.437.510-5

3 André Ryan André Moura 735.854.288-60 17.798.939-7

4 Thales Gabriel Ribeiro 504.062.242-26 41.880.743-7

5 Danilo Otávio Diogo Fernandes 584.504.965-27 45.650.089-3

6 Lucca Enrico Ribeiro 518.361.699-06 46.480.017-1

7 Davi Daniel Araújo 811.927.356-76 21.305.687-2

8 Cauã Gustavo Carlos Rodrigues 149.681.709-55 11.920.294-3

9 Nathan Carlos Eduardo Freitas 892.136.345-95 34.259.458-8

Page 8: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Conceitual vs Relacional

Modelagem Conceitual

Modelagem Relacional

Page 9: Introdução a Banco de Dados UFMG/2014-02 - Aula 06
Page 10: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

MySQL Workbenchhttp://www.mysql.com/products/workbench/

http://dev.mysql.com/downloads/mysql/

Page 11: Introdução a Banco de Dados UFMG/2014-02 - Aula 06
Page 12: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Relacionamento

Cardinalidade (N)

Entidade (tabela)

Chave PrimáriaCardinalidade (1)

Chaves Estrangeiras Atributos

(tipo de dado)

Page 13: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Chave Primária• Garante apenas um registro com aquele valor, seja

ele número (inteiro, por exemplo) ou texto

• Exemplo: CPF de uma pessoa (não existe duas pessoas com o mesmo CPF)

• Geralmente chamamos de ID (identificador)

• Pode existir mais de uma chave primária por tabela

Page 14: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Chave Estrangeira• Demonstra a relação entre um determinado

registro com outro registro de outra tabela

• Segue sempre o mesmo tipo do atributo na tabela de relacionamento

id nome cpf …

67 José Silva 123.456.789.-11 …

cliente

id data_emprestimo data_devolucao cliente_id …

871 2014-09-19 2014-09-25 67 …

emprestimo

Page 15: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Tipos de Atributos• Cada atributo deve ter seu tipo informado.

Tipo O que representa? Exemplo

INT(N) Número inteiro INT(9) = 999999999

VARCHAR(N) String (texto em geral) VARCHAR(255) = 255 caract.

CHAR(N) String (texto em geral) CHAR(40) = 40 caract. fixos

BOOL Booleano True (V) ou False (F)

DECIMAL(M, D) Números com casas decimais DECIMAL(4,2) = 1234.12

DATE Data com dia, mês e ano 2014-09-19 (YYYY-MM-DD)

DATETIME Data completa com horários 2014-09-19 17:23:54 (HH:MM:SS)

YEAR(2|4) Ano com 2 ou 4 dígitos 14 ou 2014

BLOB String/Arquivos em binário Imagem, arquivo PDF, etc

TEXT Texto em geral sem limite Texto de um post no Facebook

ENUM(xxx,…) Enumeração (opções pré-definidas) Chevrolet, Fiat, GM, …

… … …

Page 16: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

CardinalidadeOne to one!

(non identifying)

“um para um” sem identificação; chave estrangeira não precisa

existir para registro existir

One to many!(non identifying)

“um para muitos” sem identificação; chave estrangeira não precisa

existir para registro existir

One to one!(identifying)

“um para um” com identificação; chave estrangeira precisa existir

para registro existir

One to many!(identifying)

“um para muitos” com identificação; chave estrangeira

precisa existir para registro existir

Many to many "ver exemplo" inclui uma tabela com “one to many” dos dois lados

Page 17: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Many to many* *

many to many

* *1 1

Page 18: Introdução a Banco de Dados UFMG/2014-02 - Aula 06
Page 19: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

BlogModelagem Relacional

Page 20: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

• Um blog possui várias postagens (posts).

• Um post possui um título, texto e data de criação.

• Um post pode ter um ou mais comentários.

• Um comentário deve ter um texto e data de criação, somente.

• Um post é escrito por um autor

• Um autor possui nome e email

• Um autor pode escrever vários posts

Blog

Entidades?

Page 21: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Blog• Um blog possui várias postagens (posts).

• Um post possui um título, texto e data de criação.

• Um post pode ter um ou mais comentários.

• Um comentário deve ter um texto e data de criação, somente.

• Um post é escrito por um autor

• Um autor possui nome e email

• Um autor pode escrever vários posts

Page 22: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Entidades post, comentario e autor

Relacionamento post (one to many) comentario

Page 23: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Relacionamento autor (one to many) post

Page 24: Introdução a Banco de Dados UFMG/2014-02 - Aula 06
Page 25: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Resultadoid titulo texto criacao autor_id

1 Meu primeiro post Este é um post… 2014-09-19 20:54:23 2

… … … … …

post

id texto criacao post_id

3 Gostaria de dizer que… 2014-09-19 21:32:19 1

… … … …

comentario

id nome email

2 Junior Grossi [email protected]

… … …

autor

Page 26: Introdução a Banco de Dados UFMG/2014-02 - Aula 06

Obrigado!