Modelo Relacional
- Banco de Dados representado por um conjunto de tabelas também chamadas de relações (relacionam um conjunto de valores).
- Cada linha de uma tabela também é chamada de uma tupla. (n-upla).
- Esquema de um BD Relacional: definição do conjunto de tabelas e seus atributos que irão compor a base de dados (estrutura do BD relacional)
- Instância de um BD Relacional: conjunto de dados armazenados no BD em um determinado momento.
Exemplo de um esquema de um BD Relacional
usuários ( código inteiro [chave primária],
nome caracteres [30],
end_rua caracteres [20],
end_número inteiro, ….)
livros ( código inteiro [chave primária],
título caracteres[20],
editora caracteres[10],
ano_pub inteiro)
empréstimos ( cod_usuário inteiro [chave primária],
cod_livro inteiro [chave primária],
data_ret data [chave primária],
data_dev data )
Obs: tipos de campos e descrição das chaves ainda são opcionais
Exemplo: Instância
Mapeando MER para o Modelo Relacional
- Um Diagrama de Entidade Relacionamento pode ser representado por um conjunto de tabelas (esquema do Modelo Relacional)
- Conjunto de Entidades: cada conjunto de entidades do DER gera uma tabela no Modelo Relacional.
- Entidades Fortes: tabela com seus atributos próprios
- Exemplo:
Contas (Número, saldo)
- Entidades fracas: tabela com chave primária da entidade forte da qual ela depende mais seus atributos próprios
- Exemplo:
Carros (chassi, marca, modelo, ano, cor, placa)
Reparos (chassi, data, tipo, valor, oficina)
Obs: Quando transfornado para MR, deve-se atentar aos campos que irão compor a chave primária
- Conjunto de Relacionamentos: podem ou não gerar tabelas:
- Relacionamentos Múltiplos ou Relacionamentos Binários de n para n: geram tabelas com as chaves primárias das entidades envolvidas mais os atributos próprios do relacionamento.Exemplo: Relacionamentos Binários de N para N:
Usuários (COD, nome, fone)
Livros (No_tombo, título, ano, editora)
Empréstimos (COD, No_tombo, data_ret, data_dev)Obs: No MR, é necessário analisar os campos que irão compor a chave
- Relacionamentos Binários de 1 para n ou de 1 para 1:
- Não geram tabelas.
- Para associar as tuplas das tabelas no Modelo Relacional deve-se transpor a chave de um conjunto de entidades para o outro ( a chave da entidade do lado com 1 é transposta para a entidade do lado n).
- A chave transposta nesse caso não compõe a chave primária da entidade que a recebeu (é uma chave estrangeira).
- Obs: no caso da transposição de chave entre a entidade forte e a entidade fraca que dela depende, a chave transposta compõe a chave primária da entidade fraca).
- Exemplo: Relacionamentos 1 para N:
Países (código, nome, continente)
Cidades ( código, nome, população, código_país)
OBS: Relacionamentos Binários de 1 para n podem gerar tabela quando não há totalidade na associação.
- Generalização e Especialização: há duas maneiras de definir as tabelas para uma generalização ou especialização:
- Define-se uma tabela para o conjunto de entidades do nível mais alto (com os atributos comuns) e uma tabela para cada entidade do nível mais baixo (com seus atributos próprios + a chave primária da entidade do nível mais alto).
- Exemplo: Generalização e Especialização
Contas (número, saldo)
Contas_corrente (número, limite)
Contas_poupança (número, data_base)
- Generalização e Especialização: segunda maneira
- Define-se tabelas apenas para os conjuntos de entidades do nível mais baixo (com seus atributos próprios, mais todos os atributos herdados do conjunto de entidades do nível mais alto). Essa opção só é permitida se a generalização / especialização for mutuamente exclusiva (uma entidade não pertence a mais do que um dos subconjuntos) e total (todas as entidades do nível mais alto pertencem a um dos subconjuntos do nível de baixo)
- Exemplo: Generalização e Especialização
Contas_corrente (número, saldo, limite)
Contas_poupança (número, saldo, data_base)
- Atributos Multivalorados: novas tabelas devem ser criadas para armazená-los juntamente com a chave primária da entidade que os possui.
- Exemplo: Atributos Multivalorados
Livros (No_tombo, título, ano, editora)
Autores (No_tombo, autor)
- Exemplo: Atributos Multivalorados
- Agregação: como a agregação é a representação de um conjunto de relacionamentos como se fosse um conjunto de entidades, o mapeamento para tabelas é semelhante ao mapeamento aplicado em entidades e relacionamentos normais.
- Relacionamentos de 1 para 1: para decidir como será feita a transposição de chaves, deve-se observar a participação total com relação ao relacionamento
- Exemplo: Relacionamentos de 1 para 1
- Todo país tem uma capital, mas nem toda cidade é capital de um país, portanto a tabela de países é que deve receber a código da cidade que é capital.
Países (código, nome, continente, código_capital)
Cidades ( código, nome, população)
- Exemplo: Relacionamentos de 1 para 1
Para onde deve ser transportada a chave?
PAIS | ||
COD | NOME | COD_CAP |
1 | BRASIL | ? |
2 | JAPAO | ? |
3 | ARGENTINA | ? |
4 | USA | ? |
CIDADE | |||
COD | NOME | POPULAC | COD_PAIS |
1 | JUNDIAI | 400 | ? |
2 | TOKYO | 2000 | ? |
3 | BRASILIA | 1000 | ? |
4 | W. D. C. | 800 | ? |
5 | BUENOS AIRES | 300 | ? |
6 | RIO DE JANEIRO | 2500 | ? |
7 | DALLAS | 400 | ? |
PS: Apostila adotada dos professores Cláudio e Carrilho, baixada em 03/2006
Video – Parte 01