BCD29008 Banco de dados Modelo ER & Modelo Relacional Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 18 de agosto de 2017 1/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente 2/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente Pessoa Compra Produto João João, Água Água Ana Ana, Água Salgado Pedro Pedro, Salgado Pedro, Água 2/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente Pessoa Compra Produto João João, Água Água Ana Ana, Água Salgado Pedro Pedro, Salgado Pedro, Água A modelagem acima atenderia os casos abaixo? Amanhã João gostaria de comprar um salgado Amanhã João gostaria de comprar uma água 2/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente Pessoa Compra Produto João João, Água Água Ana Ana, Água Salgado Pedro Pedro, Salgado Pedro, Água A modelagem acima atenderia os casos abaixo? Não! Amanhã João gostaria de comprar um salgado Amanhã João gostaria de comprar uma água 2/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente Amanhã João gostaria de comprar um salgado Amanhã João gostaria de comprar uma água João Água 2017-07-14 Ana Água 2017-07-14 Pedro Salgado 2017-07-14 João Salgado 2017-07-15 João Água 2017-07-15 3/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente João tomou sua água e gostaria de comprar outra A modelagem atual permitiria João fazer duas compras distintas de um mesmo produto em um mesmo dia? João Água 2017-07-14 Ana Água 2017-07-14 Pedro Salgado 2017-07-14 João Salgado 2017-07-15 João Água 2017-07-15 3/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente João tomou sua água e gostaria de comprar outra A modelagem atual permitiria João fazer duas compras distintas de um mesmo produto em um mesmo dia? Não! João Água 2017-07-14 Ana Água 2017-07-14 Pedro Salgado 2017-07-14 João Salgado 2017-07-15 João Água 2017-07-15 3/21
Modelagem: criar uma entidade ou relacionamento? Faça um ER para registrar os produtos comprados por cada cliente João tomou sua água e gostaria de comprar outra A modelagem atual permitiria João fazer duas compras distintas de um mesmo produto em um mesmo dia? Nota Algumas abordagens ER não permitem usar atributos identificadores em relacionamentos n:n 3/21
Modelagem: criar uma entidade ou relacionamento? Faça 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ão idágua 2 2017-07-14 idjoão idágua 3 2017-07-14 idjoão idsalgado 4 2017-07-14 idpedro idsalgado 4/21
Diferentes modelos ER podem ser equivalentes Podem gerar o mesmo esquema de banco de dados Todo 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 5/21
Modelagem: atributo versus entidade relacionada Se não houver qualquer objeto relacionado com a Cor, então essa poderia ser modelada como atributo Se fosse necessário registrar o fabricante da tinta da referida cor, datas de início e fim de uso da cor, etc. então optaria por modelar como entidade 6/21
Modelagem: atributo versus entidade relacionada Se não houver qualquer objeto relacionado com a Cor, então essa poderia ser modelada como atributo Se fosse necessário registrar o fabricante da tinta da referida cor, datas de início e fim de uso da cor, etc. então 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? 6/21
Modelagem: atributo versus especialização A especialização deve ser usada quando sabe-se que os objetos possuem propriedades particulares 7/21
Modelagem: atributo versus especialização A especialização deve ser usada quando sabe-se que os objetos possuem propriedades particulares É necessário representar o fato que os funcionários são divididos entre homens e mulheres. Qual abordagem usar? 7/21
Leitura recomendada Heuser, C. A. Projeto de banco de dados 6a. Edição - Editora Bookman, 2009 Leia as seguintes seções do capítulo 3 (página 72) 3.1, 3.2 e 3.3 8/21
Modelo relacional 9/21
Esquema e instância de banco de dados Esquema de banco de dados Projeto lógico do banco de dados Fazendo analogia com a linguagem Java, o esquema seria equivalente a declaração de uma classe Instância de banco de dados Situação dos dados em um banco de dados em um determinado instante no tempo Fazendo analogia com a linguagem Java, a instância seria equivalente a um objeto, que nada mais que é uma instância da classe 9/21
Tabela ou Relação Em um banco de dados relacional os dados estão organizados na forma de tabelas, também chamadas de relações Tabela é um conjunto não ordenado de linhas (tuplas). Cada linha é composta por uma série de campos (colunas ou atributos) 10/21
Chaves Chave em um banco de dados relacional tem por objetivo identificar linhas e estabelecer relações entre linhas de diferentes tabelas Não trata-se de um índice para tornar o acesso mais rápido. Trata-se apenas de uma restrição de integridade Chave primária (primary key PK) Coluna ou combinação de colunas cujos valores distinguem uma linha das demais dentro de uma relação Chave estrangeira (foreign key FK) Coluna ou combinação de colunas cujo valores aparecerem necessariamente na chave primária de uma outra tabela O mecanismo que permite a implementação de relacionamentos em banco de dados relacionais 11/21
Chaves 11/21
Chave estrangeira Uma relação r 1 pode incluir entre seus atributos a chave primária de uma outra relação, por exemplo, r 2 Esse atributo é então chamado de chave estrangeira de r 1, referenciando r 2 r 1 é chamada de relação referenciadora da dependência da chave estrangeira r 2 é chamada de relação referenciada da chave estrangeira Restrição de integridade referencial Em qualquer instância de banco de dados, dada qualquer tupla t a de r 1, deverá haver alguma tupla t b em r 2, tal que o valor do atributo da chave estrangeira de t a seja o mesmo valor da chave primária de t b 12/21
Restrições impostas por chave estrangeira Inclusão de linha na tabela que contém chave estrangeira O valor a ser colocado na chave estrangeira deve obrigatoriamente aparecer na coluna chave primária da tabela referenciada Alteração do valor da chave estrangeira O novo valor deve obrigatoriamente aparecer na coluna chave primária da tabela referenciada Exclusão de uma linha da relação referenciada da chave estrangeira Deve ser garantido que na coluna chave estrangeira da relação referenciadora não apareça o valor que está sendo excluído da chave primária da tabela referenciada Alteração do valor da chave primária referenciada pela chave estrangeira Na chave estrangeira da relação referenciadora não pode aparecer o valor antigo da chave primária que está sendo alterada 13/21
Restrições impostas por chave estrangeira Na tabela Aluno posso inserir um aluno com o valor 321 em idcurso? Na tabela Aluno posso alterar o valor de idcurso do aluno Juca para 122? Na tabela Curso posso excluir o curso 230? Na tabela Curso posso alterar o valor de idcurso 290 para 207? 14/21
Restrições impostas por chave estrangeira Na tabela Aluno posso inserir um aluno com o valor 321 em idcurso? Não! 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ão! 14/21
Domínios e valores vazios Domínio do campo é o conjunto de valores que são 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á aceitar valores nulos (NULL) Colunas obrigatórias não permitem valores nulos Colunas opcionais permitem valores nulos Colunas que compõem chaves primárias são colunas obrigatórias, porém tal exigência não é necessária para chave estrangeira 15/21
Domínios e valores vazios Domínio do campo é o conjunto de valores que são 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á aceitar valores nulos (NULL) Colunas obrigatórias não permitem valores nulos Colunas opcionais permitem valores nulos Colunas que compõem chaves primárias são colunas obrigatórias, porém tal exigência não é necessária para chave estrangeira Restrições 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ção não precisa se preocupar em fazer tais verificações 15/21
Representação do esquema de banco de dados relacional Diagrama representação gráfica Existem diferentes tipos de notações para representação gráfica de um esquema de banco de dados (depende da ferramenta) Representação acima foi feita com o MySQL Workbench Notação UML para relacionamento Notação MySQL Workbench simplificada para tabelas 16/21
Representação do esquema de banco de dados relacional Representação textual Linguagem SQL é a linguagem padrão 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ção resumida 9 Aluno (idaluno, Nome, idcurso) 10 idcurso referencia Curso 11 12 Curso (idcurso, Nome) 17/21
Linguagem de consulta relacional Linguagem de consulta permite ao usuário solicitar informações do banco de dados e geralmente estão em um nível mais alto de abstração do que as tradicionais linguagens de programação Álgebra relacional Structured Query Language SQL 18/21
Álgebra relacional Conjunto de operações aplicado sobre um ou mais conjuntos e que produz um novo conjunto como resultado Semelhantes com operações algébricas normais, como adição, subtração ou multiplicação 19/21
Álgebra relacional Símbolo Nome Exemplo Resultado σ Seleção σ salario>500 (funcionario) Todas tuplas que satisfaçam o predicado Π Projeção Π nome,salario (funcionario) Os atributos nome e salário de todas as tuplas Junção professor curso Todas pares de tuplas que possuem o mesmo valor para todos atributos de mesmo nome Produto cartesiano professor curso Todas pares de tuplas independente de terem os mesmos valores nos atributos comuns 19/21
Exercícios Henry F.; Sudarshan Silberschatz, Abraham; Korth. Sistemas de banco de dados. 6a. Edição - Editora Campus, 2012 Exercícios capítulo 2 (página 34) Exercícios: 2.1, 2.2, 2.3, 2.4, 2.9, 2.10, 2.11 e 2.14 20/21
Aulas baseadas em Henry F.; Sudarshan Silberschatz, Abraham; Korth. Sistemas de banco de dados. 6a. Edição - Editora Campus, 2012 Heuser, C. A. Projeto de banco de dados 6a. Edição - Editora Bookman, 2009 Sullivan, D. G. Computer Science Harvard University 21/21