BCD29008 – Banco de dados
Modelo ER & Modelo RelacionalProf. Emerson Ribeiro de Mello
Instituto Federal de Santa Catarina – IFSC campus S˜ao Jos´e
http://docente.ifsc.edu.br/mello/bcd
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
A modelagem acima atenderia os casos abaixo?
N˜ao!
Amanh˜a Jo˜ao gostaria de comprar um salgado Amanh˜a Jo˜ao gostaria de comprar uma ´agua
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Pessoa Compra Produto
Jo˜ao Jo˜ao, ´Agua Agua´ Ana Ana, ´Agua Salgado Pedro Pedro, Salgado
Pedro, ´Agua
A modelagem acima atenderia os casos abaixo?
N˜ao!
Amanh˜a Jo˜ao gostaria de comprar um salgado Amanh˜a Jo˜ao gostaria de comprar uma ´agua
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Pessoa Compra Produto
Jo˜ao Jo˜ao, ´Agua Agua´ Ana Ana, ´Agua Salgado Pedro Pedro, Salgado
Pedro, ´Agua
A modelagem acima atenderia os casos abaixo?
N˜ao!
Amanh˜a Jo˜ao gostaria de comprar um salgado Amanh˜a Jo˜ao gostaria de comprar uma ´agua
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Pessoa Compra Produto
Jo˜ao Jo˜ao, ´Agua Agua´ Ana Ana, ´Agua Salgado Pedro Pedro, Salgado
Pedro, ´Agua
A modelagem acima atenderia os casos abaixo? N˜ao!
Amanh˜a Jo˜ao gostaria de comprar um salgado Amanh˜a Jo˜ao gostaria de comprar uma ´agua
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Amanh˜a Jo˜ao gostaria de comprar um salgado Amanh˜a Jo˜ao gostaria de comprar uma ´agua
Jo˜ao Agua´ 2017-07-14 Ana Agua´ 2017-07-14 Pedro Salgado 2017-07-14 Jo˜ao Salgado 2017-07-15 Jo˜ao Agua´ 2017-07-15 3/21
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Jo˜ao tomou sua ´agua e gostaria de comprar outra
A modelagem atual permitiria Jo˜ao fazer duas compras distintas de um mesmo produto em um mesmo dia? N˜ao! Jo˜ao Agua´ 2017-07-14 Ana Agua´ 2017-07-14 Pedro Salgado 2017-07-14 Jo˜ao Salgado 2017-07-15 Jo˜ao Agua´ 2017-07-15
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Jo˜ao tomou sua ´agua e gostaria de comprar outra
A modelagem atual permitiria Jo˜ao fazer duas compras distintas de um mesmo produto em um mesmo dia? N˜ao!
Jo˜ao Agua´ 2017-07-14 Ana Agua´ 2017-07-14 Pedro Salgado 2017-07-14 Jo˜ao Salgado 2017-07-15 Jo˜ao Agua´ 2017-07-15 3/21
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Jo˜ao tomou sua ´agua e gostaria de comprar outra
A modelagem atual permitiria Jo˜ao fazer duas compras distintas de um mesmo produto em um mesmo dia?
N˜ao!
Nota
Algumas abordagens ER n˜ao permitem usar atributos
identificadores em relacionamentos n:n
Modelagem: criar uma entidade ou relacionamento?
Fa¸ca um ER para registrar os produtos comprados por cada cliente
Uma ou mais compras por par (pessoa, produto)
id data pessoa produto 1 2017-07-14 iDJo˜ao iD´Agua 2 2017-07-14 iDJo˜ao iD´Agua 3 2017-07-14 iDJo˜ao iDSalgado 4 2017-07-14 iDPedro iDSalgado
Diferentes modelos ER podem ser equivalentes
Podem gerar o mesmo esquema de banco de dadosTodo relacionamento muitos-para-muitos (n:n) pode ser transformado em entidade
Algumas abordagens ER excluem o uso de relacionamentos n:n, outras excluem apenas relacionamentos n:n com atributos
Modelagem: atributo versus entidade relacionada
Se n˜ao houver qualquer objeto relacionado com a Cor, ent˜ao essa poderia ser modelada como atributo
Se fosse necess´ario registrar o fabricante da tinta da referida cor, datas de in´ıcio e fim de uso da cor, etc. ent˜ao optaria por modelar como entidade
Deseja-se armazenar os telefones dos alunos. Qual abordagem usar? Telefone seria um atributo de Aluno ou Telefone seria uma entidade?
Modelagem: atributo versus entidade relacionada
Se n˜ao houver qualquer objeto relacionado com a Cor, ent˜ao essa poderia ser modelada como atributo
Se fosse necess´ario registrar o fabricante da tinta da referida cor, datas de in´ıcio e fim de uso da cor, etc. ent˜ao optaria por modelar como entidade
Deseja-se armazenar os telefones dos alunos. Qual abordagem usar? Telefone seria um atributo de Aluno ou Telefone seria uma entidade?
Modelagem: atributo versus especializa¸c˜
ao
A especializa¸c˜ao deve ser usada quando sabe-se que os objetos possuem propriedades particulares
´
E necess´ario representar o fato que os funcion´arios s˜ao divididos entre homens e mulheres. Qual abordagem usar?
Modelagem: atributo versus especializa¸c˜
ao
A especializa¸c˜ao deve ser usada quando sabe-se que os objetos possuem propriedades particulares
´
E necess´ario representar o fato que os funcion´arios s˜ao divididos entre homens e mulheres. Qual abordagem usar?
Leitura recomendada
Heuser, C. A.
Projeto de banco de dados
6a. Edi¸c˜ao - Editora Bookman, 2009
Leia as seguintes se¸c˜oes do cap´ıtulo 3 (p´agina 72)
3.1, 3.2 e 3.3
Esquema e instˆ
ancia de banco de dados
Esquema de banco de dados
Projeto l´ogico do banco de dados
Fazendo analogia com a linguagem Java, o esquema seria equivalente a declara¸c˜ao de uma classe
Instˆancia de banco de dados
Situa¸c˜ao dos dados em um banco de dados em um determinado instante no tempo
Fazendo analogia com a linguagem Java, a instˆancia seria equivalente a um objeto, que nada mais que ´e uma instˆancia da classe
Tabela ou Rela¸c˜
ao
Em um banco de dados relacional os dados est˜ao organizados na forma de tabelas, tamb´em chamadas de rela¸c˜oes
Tabela ´e um conjunto n˜ao ordenado de linhas (tuplas). Cada linha ´e composta por uma s´erie de campos (colunas ou atributos)
Chaves
Chave em um banco de dados relacional
tem por objetivo identificar linhas e estabelecer rela¸c˜oes entre linhas de diferentes tabelas
N˜ao trata-se de um ´ındice para tornar o acesso mais r´apido. Trata-se apenas de uma restri¸c˜ao de integridade
Chave prim´aria (primary key – PK)
Coluna ou combina¸c˜ao de colunas cujos valores distinguem uma linha das demais dentro de uma rela¸c˜ao
Chave estrangeira (foreign key – FK)
Coluna ou combina¸c˜ao de colunas cujo valores aparecerem necessariamente na chave prim´aria de uma outra tabela
O mecanismo que permite a implementa¸c˜ao de relacionamentos em banco de dados relacionais
Chave estrangeira
Uma rela¸c˜ao r1 pode incluir entre seus atributos a chave prim´aria de
uma outra rela¸c˜ao, por exemplo, r2
Esse atributo ´e ent˜ao chamado de chave estrangeira de r1,
referenciando r2
r1 ´e chamada de rela¸c˜ao referenciadora da dependˆencia da chave
estrangeira
r2 ´e chamada de rela¸c˜ao referenciada da chave estrangeira
Restri¸c˜ao de integridade referencial
Em qualquer instˆancia de banco de dados, dada qualquer tupla ta de r1,
dever´a haver alguma tupla tb em r2, tal que o valor do atributo da chave
estrangeira de ta seja o mesmo valor da chave prim´aria de tb
Restri¸c˜
oes impostas por chave estrangeira
Inclus˜ao de linha na tabela que cont´em chave estrangeira
O valor a ser colocado na chave estrangeira deve obrigatoriamente aparecer na coluna chave prim´aria da tabela referenciada
Altera¸c˜ao do valor da chave estrangeira
O novo valor deve obrigatoriamente aparecer na coluna chave prim´aria da tabela referenciada
Exclus˜ao de uma linha da rela¸c˜ao referenciada da chave estrangeira
Deve ser garantido que na coluna chave estrangeira da rela¸c˜ao referenciadora n˜ao apare¸ca o valor que est´a sendo exclu´ıdo da chave prim´aria da tabela referenciada
Altera¸c˜ao do valor da chave prim´aria referenciada pela chave estrangeira
Na chave estrangeira da rela¸c˜ao referenciadora n˜ao pode aparecer o valor antigo da chave prim´aria que est´a sendo alterada
Restri¸c˜
oes impostas por chave estrangeira
Na tabela Aluno posso inserir um aluno com o valor 321 em idCurso?
N˜ao!
Na tabela Aluno posso alterar o valor de idCurso do aluno Juca para 122?
Sim!
Na tabela Curso posso excluir o curso 230?
Sim!
Na tabela Curso posso alterar o valor de idCurso 290 para 207?
N˜ao!
Restri¸c˜
oes impostas por chave estrangeira
Na tabela Aluno posso inserir um aluno com o valor 321 em idCurso? N˜ao!
Na tabela Aluno posso alterar o valor de idCurso do aluno Juca para 122? Sim! Na tabela Curso posso excluir o curso 230? Sim!
Dom´ınios e valores vazios
Dom´ınio do campo ´e o conjunto de valores que s˜ao permitidos na referida coluna em uma tabela
Cadeia de caracteres, inteiro, data, . . .
Ao criar um campo em uma tabela deve-se especificar seu dom´ınio e se a mesma poder´a aceitar valores nulos (NULL)
Colunas obrigat´orias n˜ao permitem valores nulos Colunas opcionais permitem valores nulos
Colunas que comp˜oem chaves prim´arias s˜ao colunas obrigat´orias, por´em tal exigˆencia n˜ao ´e necess´aria para chave estrangeira
Restri¸c˜oes de integridade de dom´ınio
SGBD garantem automaticamente a integridade de dom´ınio, de valores nulos, integridade de chave e integridade referencial . O desenvolvedor de aplica¸c˜ao n˜ao precisa se preocupar em fazer tais verifica¸c˜oes
Dom´ınios e valores vazios
Dom´ınio do campo ´e o conjunto de valores que s˜ao permitidos na referida coluna em uma tabela
Cadeia de caracteres, inteiro, data, . . .
Ao criar um campo em uma tabela deve-se especificar seu dom´ınio e se a mesma poder´a aceitar valores nulos (NULL)
Colunas obrigat´orias n˜ao permitem valores nulos Colunas opcionais permitem valores nulos
Colunas que comp˜oem chaves prim´arias s˜ao colunas obrigat´orias, por´em tal exigˆencia n˜ao ´e necess´aria para chave estrangeira
Restri¸c˜oes de integridade de dom´ınio
SGBD garantem automaticamente a integridade de dom´ınio, de valores nulos, integridade de chave e integridade referencial . O desenvolvedor de aplica¸c˜ao n˜ao precisa se preocupar em fazer tais verifica¸c˜oes
Representa¸c˜
ao do esquema de banco de dados relacional
Diagrama – representa¸c˜ao gr´aficaExistem diferentes tipos de nota¸c˜oes para representa¸c˜ao gr´afica de um esquema de banco de dados (depende da ferramenta)
Representa¸c˜ao acima foi feita com o MySQL Workbench
Nota¸c˜ao UML para relacionamento
Nota¸c˜ao MySQL Workbench simplificada para tabelas
Representa¸c˜
ao do esquema de banco de dados relacional
Representa¸c˜ao textualLinguagem SQL ´e a linguagem padr˜ao
1 CREATE TABLE `Aluno` (
2 `idAluno` INT NOT NULL,
3 `Nome` VARCHAR(45) NULL,
4 `Curso_idCurso` INT NOT NULL,
5 PRIMARY KEY (`idAluno`),
6 CONSTRAINT `fk_Aluno_Curso`
7 FOREIGN KEY (`Curso_idCurso`)
8 REFERENCES `Curso` (`idCurso`));
Representa¸c˜ao resumida
9 Aluno (idAluno, Nome, idCurso) 10 idCurso referencia Curso
11
Linguagem de consulta relacional
Linguagem de consulta permite ao usu´ario solicitar informa¸c˜oes do banco de dados e geralmente est˜ao em um n´ıvel mais alto de abstra¸c˜ao do que as tradicionais linguagens de programa¸c˜ao
´
Algebra relacional
Structured Query Language – SQL
´
Algebra relacional
Conjunto de opera¸c˜oes aplicado sobre um ou mais conjuntos e que produz um novo conjunto como resultado
Semelhantes com opera¸c˜oes alg´ebricas normais, como adi¸c˜ao, subtra¸c˜ao ou multiplica¸c˜ao
´
Algebra relacional
S´ımbolo Nome Exemplo Resultado
σ Sele¸c˜ao σsalario>500(funcionario) Todas tuplas que
satis-fa¸cam o predicado Π Proje¸c˜ao Πnome,salario(funcionario) Os atributos nome e
sal´ario de todas as tu-plas
./ Jun¸c˜ao professor ./ curso Todas pares de tuplas que possuem o mesmo valor para todos atri-butos de mesmo nome × Produto
cartesiano
professor × curso Todas pares de tuplas independente de terem os mesmos valores nos atributos comuns
Exerc´ıcios
Henry F.; Sudarshan Silberschatz, Abraham; Korth.
Sistemas de banco de dados.
6a. Edi¸c˜ao - Editora Campus, 2012
Exerc´ıcios cap´ıtulo 2 (p´agina 34)
Aulas baseadas em
Henry F.; Sudarshan Silberschatz, Abraham; Korth.
Sistemas de banco de dados.
6a. Edi¸c˜ao - Editora Campus, 2012 Heuser, C. A.
Projeto de banco de dados
6a. Edi¸c˜ao - Editora Bookman, 2009 Sullivan, D. G.
Computer Science – Harvard University