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

Preview:

Citation preview

Modelagem RelacionalArmazenamento dos Dados

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.

M. Conceitual vs M. Relacional

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)

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!

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.

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

Conceitual vs Relacional

Modelagem Conceitual

Modelagem Relacional

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

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

Relacionamento

Cardinalidade (N)

Entidade (tabela)

Chave PrimáriaCardinalidade (1)

Chaves Estrangeiras Atributos

(tipo de dado)

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

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

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, …

… … …

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

Many to many* *

many to many

* *1 1

BlogModelagem Relacional

• 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?

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

Entidades post, comentario e autor

Relacionamento post (one to many) comentario

Relacionamento autor (one to many) post

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 jgrossi@ufmg.br

… … …

autor

Obrigado!

Recommended