Megadados
Modelagem relacional
Maciel C. Vidal
Marcio Stabile
Como representar os dados?
• Estrutura
• Operações
• Restrições
• Abstração versus implementação
2
Abstração
Estrutura
• Como representar os dados de um modo que faça sentido para
nós?
Operações
• Como especificar nossa interação com os dados?
• Consultas (em inglês: query, plural queries)
• Modificações: criar, remover, alterar
• CRUD: Create, Read, Update, Delete
Restrições
• Como especificar invariantes e restrições nos dados
• Garantir integridade e segurança
3
Implementação
Estrutura
• Como armazenar grandes volumes de dados de maneira eficiente?
• Armazenamento de massa
• Armazenamento em RAM
Operações
• Como realizar as operações definidas na abstração de modo
eficiente?
• Otimização de query
• Caching
• Indexação
Restrições
• Como garantir as restrições?
• Chaves primárias e estrangeiras
• Transações
• Controle de acesso
4
Modelos de dados
• Modelo não-estruturado
• Exemplo: documentos de texto em um sistema de
arquivos de larga escala
• Hadoop Distributed File System (HDFS)
• Modelo semi-estruturado
• Exemplo: documentos hierárquicos como XML ou JSON
• Bancos de dados NoSQL
• Modelo estruturado
• Exemplo: modelo relacional
• Bancos de dados relacionais (“SQL”)
5
Bancos de dados relacionais
Vamos focar em bancos de dados relacionais neste
início de curso.
Estes bancos implementam o modelo relacional
Análise Fundamentos matemáticos:
semântica: Álgebra relacional
Modelo Entidade- Tuplas, conjuntos, operações,
Relacionamento
Entidades, atributos, ...
Linguagem de programação:
Structured Query Language (SQL)
Tabelas, colunas, linhas, ...
6
Modelo relacional
Communications of the
ACM, v. 13(6), pp. 377-
387, Junho 1970
Edgar Frank Codd
Recebeu o Turing
7
Award em 1981
Modelo relacional
• Relação: basicamente tabelas onde a ordem das linhas não
importa
Tabela
“comidas”
Comida:VARCHAR(20) Preço:DECIMAL(10,2) Pais:VARCHAR(20)
Feijoada 25,00 Brasil
Macarrão 15,00 China
Surströmming NULL Suécia
8
Modelo relacional
• Relação: basicamente tabelas onde a ordem das linhas não
importa
Nome da relação
Atributo : tipo
Tabela
“comidas”
Comida:VARCHAR(20) Preço:DECIMAL(10,2) Pais:VARCHAR(20)
Feijoada 25,00 Brasil
Macarrão 15,00 China
Surströmming NULL Suécia
Em linguagem de bancos de dados relacionais: linha
Em linguagem de teoria do modelo relacional: tupla
9
Modelo relacional
Formalmente:
• Relação: conjunto de tuplas
• Tupla: lista de atributos
• Atributos: valores, associados a tipos
• Tipos: conjuntos de valores possíveis para um atributo
• Chave: atributo identificador da tupla
• Esquema de relação: nome da relação e lista de nomes de
atributos
chave
Comidas (Comida, Preço, País)
• Esquema do banco de dados: conjunto de esquemas de relação
10
Exercícios
Escreva os esquemas de relação para as seguintes situações:
1. Bicho de estimação
2. Alunos do curso
3. Cardápio do restaurante
11
Chaves
A chave é um atributo usado para identificar dados
Chave primária: o R.G. da tupla!
• Atributo (ou conjunto de atributos) que permite
identificar unicamente uma ocorrência de uma tupla
em uma tabela.
• Deve ser único para cada linha
• Deve ser imutável
• Os demais atributos acabam por depender deste
• Caso nenhum atributo (ou conjunto de atributos)
satisfaça estes requisitos, devemos criar um atributo
artificial (geralmente um id inteiro).
12
Exercício
Nas entidades obtidas anteriormente, quais são as
chaves primárias?
13
Diagrama do modelo relacional
14
Chaves
Chave estrangeira: um atributo de uma tabela que
é chave primária de outra tabela, permitindo
assim relacionar itens entre tabelas.
Uma chave estrangeira pode também ser chave
primária da tabela: relacionamento identificador
Mas isso não é necessário, e na maioria dos casos
não ocorre: relacionamento não-identificador
15
Exercício
Pense em um par de entidades que se
relacionam. Indique as chaves primárias e
estrangeiras
16
Relacionamento
Conexão entre entidades
• 1:1 – Entidades que se relacionam diretamente. Se
você tem relações 1:1 no seu diagrama, talvez
valha a pena integrar as entidades.
• 1:n – Cada linha em uma entidade A se relaciona
com n linhas na outra entidade B, mas cada linha
de B se relaciona apenas com uma entidade de A
Ambos os casos são implementados simplesmente
com o uso de chave estrangeira
17
Relacionamento
18
Relacionamento m:n
19
Relacionamento m:n
Solução: usar uma tabela de relacionamento!
20
Exercício
Construa a relação entre as seguintes entidades:
• Disciplinas e alunos
• Prato de comida e ingredientes
• Prato de comida e adjetivos (vegano ou não,
com ou sem glúten, dietético ou não, etc) –
Pense se precisamos realmente de outras
tabelas aqui.
21
Atividade
Vamos criar um banco de dados para um food truck.
O analista de dados entrevistou o cliente e preparou o seguinte
schema:
Ingrediente (nome, tipo, calorias, preço_unitário, quantidade)
Prato (nome, preço)
Ingrediente_Prato (nome_prato, nome_ingrediente, quantidade)
1. Desenhe o diagrama do modelo relacional no MySQL Workbench
2. Pesquise como criar e popular essas tabelas usando a linguagem
SQL – vamos abordar esse assunto em detalhes na próxima aula
22
[Link]