Modelagem Relacional
Armazenamento 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 Workbench
http://www.mysql.com/products/workbench/
http://dev.mysql.com/downloads/mysql/
Relacionamento
Cardinalidade
(N)
Entidade
(tabela)
Chave Primária
Cardinalidade (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, …
… … …
Cardinalidade
One 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
Blog
Modelagem 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
Resultado
id 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!

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

  • 1.
  • 2.
    Modelagem Relacional • Pensamentonã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.
  • 3.
  • 4.
    Modelagem Conceitual ModelagemRelacional Baseado no modelo Baseado na armazenagem dos dados Conceito Entidade Atributos Atributos Associações Relacionamento 1 ou * one (1), many (N)
  • 5.
    Como pensar? • Tudoo 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!
  • 6.
    Banco de DadosRelacional • 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.
  • 7.
    Tabela "cliente" id nomecpf 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
  • 8.
    Conceitual vs Relacional ModelagemConceitual Modelagem Relacional
  • 10.
  • 12.
  • 13.
    Chave Primária • Garanteapenas 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
  • 14.
    Chave Estrangeira • Demonstraa 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
  • 15.
    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, … … … …
  • 16.
    Cardinalidade One to one! (nonidentifying) “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
  • 17.
    Many to many ** many to many * *1 1
  • 19.
  • 20.
    • Um blogpossui 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?
  • 21.
    Blog • Um blogpossui 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
  • 22.
    Entidades post, comentario eautor Relacionamento post (one to many) comentario
  • 23.
  • 25.
    Resultado id titulo textocriacao 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
  • 26.