SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
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!

Contenu connexe

Similaire à Modelagem Relacional em

Similaire à Modelagem Relacional em (10)

BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefBD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
 
Bd aula2
Bd aula2Bd aula2
Bd aula2
 
F# para devs c#
F# para devs c#F# para devs c#
F# para devs c#
 
Apostila bancodedados (2)
Apostila bancodedados (2)Apostila bancodedados (2)
Apostila bancodedados (2)
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Algoritmos: Tipos de Dados
Algoritmos: Tipos de DadosAlgoritmos: Tipos de Dados
Algoritmos: Tipos de Dados
 
PHP
PHPPHP
PHP
 
04 LabMM4 - Bases de dados
04 LabMM4 - Bases de dados04 LabMM4 - Bases de dados
04 LabMM4 - Bases de dados
 
Aplicativos2
Aplicativos2Aplicativos2
Aplicativos2
 

Plus de Junior Grossi

Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da InformaçãoApresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da InformaçãoJunior Grossi
 
Introdução a Banco de Dados UFMG/2014-02 - Exercício 02
Introdução a Banco de Dados UFMG/2014-02 - Exercício 02Introdução a Banco de Dados UFMG/2014-02 - Exercício 02
Introdução a Banco de Dados UFMG/2014-02 - Exercício 02Junior Grossi
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 10
Introdução a Banco de Dados UFMG/2014-02 - Aula 10Introdução a Banco de Dados UFMG/2014-02 - Aula 10
Introdução a Banco de Dados UFMG/2014-02 - Aula 10Junior Grossi
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 09
Introdução a Banco de Dados UFMG/2014-02 - Aula 09Introdução a Banco de Dados UFMG/2014-02 - Aula 09
Introdução a Banco de Dados UFMG/2014-02 - Aula 09Junior Grossi
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 08
Introdução a Banco de Dados UFMG/2014-02 - Aula 08Introdução a Banco de Dados UFMG/2014-02 - Aula 08
Introdução a Banco de Dados UFMG/2014-02 - Aula 08Junior Grossi
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 07
Introdução a Banco de Dados UFMG/2014-02 - Aula 07Introdução a Banco de Dados UFMG/2014-02 - Aula 07
Introdução a Banco de Dados UFMG/2014-02 - Aula 07Junior Grossi
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 04
Introdução a Banco de Dados UFMG/2014-02 - Aula 04Introdução a Banco de Dados UFMG/2014-02 - Aula 04
Introdução a Banco de Dados UFMG/2014-02 - Aula 04Junior Grossi
 
Exercícíos de Modelagem Conceitual 2014/2
Exercícíos de Modelagem Conceitual 2014/2Exercícíos de Modelagem Conceitual 2014/2
Exercícíos de Modelagem Conceitual 2014/2Junior Grossi
 
Introdução a Banco de Dados 03 - UFMG BIBL 2014/02
Introdução a Banco de Dados 03 - UFMG BIBL 2014/02Introdução a Banco de Dados 03 - UFMG BIBL 2014/02
Introdução a Banco de Dados 03 - UFMG BIBL 2014/02Junior Grossi
 
Introdução a Banco de Dados 02 - UFMG BIBL 2014/02
Introdução a Banco de Dados 02 - UFMG BIBL 2014/02Introdução a Banco de Dados 02 - UFMG BIBL 2014/02
Introdução a Banco de Dados 02 - UFMG BIBL 2014/02Junior Grossi
 
Introdução a Banco de Dados 01 - UFMG BIBL 2014/02
Introdução a Banco de Dados 01 - UFMG BIBL 2014/02Introdução a Banco de Dados 01 - UFMG BIBL 2014/02
Introdução a Banco de Dados 01 - UFMG BIBL 2014/02Junior Grossi
 
Flink (Peter Mika) - Semantic Web
Flink (Peter Mika) - Semantic WebFlink (Peter Mika) - Semantic Web
Flink (Peter Mika) - Semantic WebJunior Grossi
 
Presentation about Ontologies at my Masters (UFMG, pt_BR)
Presentation about Ontologies at my Masters (UFMG, pt_BR)Presentation about Ontologies at my Masters (UFMG, pt_BR)
Presentation about Ontologies at my Masters (UFMG, pt_BR)Junior Grossi
 

Plus de Junior Grossi (13)

Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da InformaçãoApresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
 
Introdução a Banco de Dados UFMG/2014-02 - Exercício 02
Introdução a Banco de Dados UFMG/2014-02 - Exercício 02Introdução a Banco de Dados UFMG/2014-02 - Exercício 02
Introdução a Banco de Dados UFMG/2014-02 - Exercício 02
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 10
Introdução a Banco de Dados UFMG/2014-02 - Aula 10Introdução a Banco de Dados UFMG/2014-02 - Aula 10
Introdução a Banco de Dados UFMG/2014-02 - Aula 10
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 09
Introdução a Banco de Dados UFMG/2014-02 - Aula 09Introdução a Banco de Dados UFMG/2014-02 - Aula 09
Introdução a Banco de Dados UFMG/2014-02 - Aula 09
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 08
Introdução a Banco de Dados UFMG/2014-02 - Aula 08Introdução a Banco de Dados UFMG/2014-02 - Aula 08
Introdução a Banco de Dados UFMG/2014-02 - Aula 08
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 07
Introdução a Banco de Dados UFMG/2014-02 - Aula 07Introdução a Banco de Dados UFMG/2014-02 - Aula 07
Introdução a Banco de Dados UFMG/2014-02 - Aula 07
 
Introdução a Banco de Dados UFMG/2014-02 - Aula 04
Introdução a Banco de Dados UFMG/2014-02 - Aula 04Introdução a Banco de Dados UFMG/2014-02 - Aula 04
Introdução a Banco de Dados UFMG/2014-02 - Aula 04
 
Exercícíos de Modelagem Conceitual 2014/2
Exercícíos de Modelagem Conceitual 2014/2Exercícíos de Modelagem Conceitual 2014/2
Exercícíos de Modelagem Conceitual 2014/2
 
Introdução a Banco de Dados 03 - UFMG BIBL 2014/02
Introdução a Banco de Dados 03 - UFMG BIBL 2014/02Introdução a Banco de Dados 03 - UFMG BIBL 2014/02
Introdução a Banco de Dados 03 - UFMG BIBL 2014/02
 
Introdução a Banco de Dados 02 - UFMG BIBL 2014/02
Introdução a Banco de Dados 02 - UFMG BIBL 2014/02Introdução a Banco de Dados 02 - UFMG BIBL 2014/02
Introdução a Banco de Dados 02 - UFMG BIBL 2014/02
 
Introdução a Banco de Dados 01 - UFMG BIBL 2014/02
Introdução a Banco de Dados 01 - UFMG BIBL 2014/02Introdução a Banco de Dados 01 - UFMG BIBL 2014/02
Introdução a Banco de Dados 01 - UFMG BIBL 2014/02
 
Flink (Peter Mika) - Semantic Web
Flink (Peter Mika) - Semantic WebFlink (Peter Mika) - Semantic Web
Flink (Peter Mika) - Semantic Web
 
Presentation about Ontologies at my Masters (UFMG, pt_BR)
Presentation about Ontologies at my Masters (UFMG, pt_BR)Presentation about Ontologies at my Masters (UFMG, pt_BR)
Presentation about Ontologies at my Masters (UFMG, pt_BR)
 

Modelagem Relacional em

  • 2. 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.
  • 3. M. Conceitual vs M. Relacional
  • 4. 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)
  • 5. 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!
  • 6. 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.
  • 7. 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
  • 8. Conceitual vs Relacional Modelagem Conceitual Modelagem Relacional
  • 9.
  • 11.
  • 13. 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
  • 14. 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
  • 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! (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
  • 17. Many to many * * many to many * *1 1
  • 18.
  • 20. • 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?
  • 21. 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
  • 22. Entidades post, comentario e autor Relacionamento post (one to many) comentario
  • 24.
  • 25. 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