BCD29008 Banco de dados 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 21 de fevereiro de 2018 1/24
Apresentação da disciplina Objetivo da disciplina Introduzir conceitos fundamentais sobre sistemas de banco de dados, modelagem e o uso de banco de dados em aplicações Carga horária: 36h teóricas + 18h práticas 15:40 17:30 - terça-feira (quinzenal) 13:30 15:20 - quarta-feira Local Lab. Info / sala 13 Notas de aulas e interação SIGAA: https://sigaa.ifsc.edu.br 2/24
Avaliação 01 Avaliação escrita (AE) (individual e sem consulta) Peso: 50% Recuperação: Avaliação escrita substitutiva no final do semestre abrangendo todo o conteúdo da disciplina 03 Lista de exercícios (LE) (individual) Peso: 15% Recuperação: Dedução de 10% do valor total da nota para cada dia de atraso após o prazo de entrega 01 Projeto Final (PF) (grupo com até 2 pessoas) Peso: 35% Recuperação: Dedução de 10% do valor total da nota para cada dia de atraso após o prazo de entrega Conceito final (CF) CF = AE 0, 5 + 3 i=1 LE i 0, 05 + PF 0, 35, CF N. Critérios para aprovação na disciplina Mínimo 75% de presença e CF 6 3/24
Apresentação da disciplina Relação com outras unidades curriculares Laboratórios envolverão MySQL e linguagem Java 4/24
Apresentação da disciplina Conteúdo programático 1 Conceitos sobre sistemas de bancos de dados 2 Diagrama Entidade-Relacionamento (ER) 3 Bancos de dados relacionais 4 Linguagem SQL 5 Mapeamento do modelo ER para relacional 6 Formas normais 7 Projeto e desenvolvimento de aplicações 5/24
Bibliografia HENRY F.; SILBERSCHATZ, Abraham; KORTH Sistema de banco de dados HEUSER, Carlos A. Projeto de banco de dados 6/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 7/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 1 Quais dados precisariam ser armazenados? 2 Que formato poderia ser usado para persistir dados? 3 Onde os dados poderiam ser armazenados? 4 Como recuperar, alterar ou remover os dados? 5 Quem poderia ter acesso aos dados? 7/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 1 Quais dados precisariam ser armazenados? fabricante? modelo? cor? BTU? ano?... 2 Que formato poderia ser usado para persistir dados? 3 Onde os dados poderiam ser armazenados? 4 Como recuperar, alterar ou remover os dados? 5 Quem poderia ter acesso aos dados? 7/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 1 Quais dados precisariam ser armazenados? 2 Que formato poderia ser usado para persistir dados? arquivo txt? arquivo binário? um ou vários arquivos?... 3 Onde os dados poderiam ser armazenados? 4 Como recuperar, alterar ou remover os dados? 5 Quem poderia ter acesso aos dados? 7/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 1 Quais dados precisariam ser armazenados? 2 Que formato poderia ser usado para persistir dados? 3 Onde os dados poderiam ser armazenados? centralizado? distribuído?... 4 Como recuperar, alterar ou remover os dados? 5 Quem poderia ter acesso aos dados? 7/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 1 Quais dados precisariam ser armazenados? 2 Que formato poderia ser usado para persistir dados? 3 Onde os dados poderiam ser armazenados? 4 Como recuperar, alterar ou remover os dados? aplicativos padrões do S.O.? API própria?... 5 Quem poderia ter acesso aos dados? 7/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 1 Quais dados precisariam ser armazenados? 2 Que formato poderia ser usado para persistir dados? 3 Onde os dados poderiam ser armazenados? 4 Como recuperar, alterar ou remover os dados? 5 Quem poderia ter acesso aos dados? todos? alguns? leitura para alguns e escrita para outras?... 7/24
Sistema centralizado de controle de condicionadores de ar Exercício Projete um banco de dados para guardar informações sobre o funcionamento dos aparelhos de ar condicionado do campus 1 Quais dados precisariam ser armazenados? fabricante? modelo? cor? BTU? ano?... 2 Que formato poderia ser usado para persistir dados? arquivo txt? arquivo binário? um ou vários arquivos?... 3 Onde os dados poderiam ser armazenados? centralizado? distribuído?... 4 Como recuperar, alterar ou remover os dados? aplicativos padrões do S.O.? API própria?... 5 Quem poderia ter acesso aos dados? todos? alguns? leitura para alguns e escrita para outras?... 7/24
Seria possível usar somente sistema de arquivos? Redundância de dados e inconsistência Diversos arquivos espalhados por diferentes locais Mesma informação espalhada por diferentes arquivos Dificuldade para acessar os dados Desenvolver programas específicos para necessidades distintas Problemas de integridade Ex: Como garantir que o saldo de uma conta não possa ficar negativo? Colocar isso no aplicativo gera dificuldade de manutenção e evolução 8/24
Seria possível usar somente sistema de arquivos? Atomicidade das atualizações Ex: transferência de valores entre duas contas Acesso concorrente por múltiplos usuários Ex: uma pessoa debitando e outra depositando valores em uma conta Controle de acesso Como garantir que somente parte dos dados esteja disponível para determinados usuários? 9/24
Conceitos 10/24
Conceitos Banco de dados é uma coleção de dados inter-relacionados e um conjunto de programas que permitem aos usuários acessar e modificar esses dados sistema de gerenciamento de banco de dados (SGBD) Dicionário de dados contém metadados (dados sobre dados) Estrutura dos dados, referencial de integridade, restrições, autorização, etc 10/24
Níveis de abstração e independência de dados Nível de visão Cada esquema externo descreve a parte do banco de dados que um grupo de usuários pode ver Nível lógico Descreve quais dados são armazenados e que relações existem entre eles Nível físico Descreve como os dados são armazenados em baixo nível 11/24
Modelo de dados Modelo de dados é coleção de ferramentas para descrever os dados, seus relacionamentos, semântica e restrições de consistência Modelo relacional Entidade-relacionamento (ER) Baseado em objetos Semi-estruturado (XML) Coleção de tabelas para representar dados e os relacionamentos entre eles Cada tabela contém registros de um mesmo tipo Cada registro define um número fixo de campos ou atributos Modelo mais usado atualmente 12/24
Modelo de dados Modelo de dados é coleção de ferramentas para descrever os dados, seus relacionamentos, semântica e restrições de consistência Modelo relacional Entidade-relacionamento (ER) Baseado em objetos Semi-estruturado (XML) Baseado na percepção do mundo real que consiste em uma coleção de objetos (entidades) e os relacionamentos entre esses objetos 12/24
Modelo de dados Modelo de dados é coleção de ferramentas para descrever os dados, seus relacionamentos, semântica e restrições de consistência Modelo relacional Entidade-relacionamento (ER) Baseado em objetos Semi-estruturado (XML) Pode ser visto como uma extensão do modelo ER com noções de encapsulamento e identidade do objeto 12/24
Modelo de dados Modelo de dados é coleção de ferramentas para descrever os dados, seus relacionamentos, semântica e restrições de consistência Modelo relacional Entidade-relacionamento (ER) Baseado em objetos Semi-estruturado (XML) Permite que registros do mesmo tipo possuam diferentes atributos oposto daquilo que existe nos outros modelos 12/24
Exemplo de banco de dados relacional Tabelas e relacionamentos 13/24
Linguagem de definição de dados Data Definition Language DDL Linguagem para especificação do esquema ou estrutura do banco de dados Compilador DDL gera um conjunto de tabelas em um conjunto de arquivos denominado dicionário de dados 1 CREATE TABLE Alunos( 2 Id INT AUTO_INCREMENT, 3 Nome VARCHAR(60) not null, 4 Curso VARCHAR(60) null, 5 PRIMARY KEY(Id) 6 ); 14/24
Linguagem de manipulação de dados Data Manipulation Language DML Permite acessar ou manipular dados no banco de dados Recuperação, Inserção, Exclusão ou Modificação SQL (Structured Query Language) é a linguagem de consulta mais utilizada atualmente 7 SELECT Nome 8 FROM Alunos 9 WHERE Alunos.Id = '123'; 10 SELECT Alunos.Nome, Alunos.Curso, Cursos.Campus 11 FROM Alunos, Cursos 12 WHERE Alunos.Curso = Cursos.Curso 13 AND Cursos.Curso = "Telecomunicacoes"; 15/24
Projeto de banco de dados Algum problema com esse projeto? 16/24
Projeto de banco de dados Algum problema com esse projeto? Normalização Criar um conjunto de esquemas de relação que permita armazenar informações sem redundância desnecessária 16/24
Diagramas E-R (notação baseada na UML) Figura: Diagrama E-R Figura: Diagrama E-R gerado pela ferramentas MySQL Workbench 17/24
Gerenciamento de transação Transação consiste de uma sequência de operações que devem ser tratadas como se fosse uma única operação lógica 14 read saldocontaorigem 15 write (saldocontaorigem - 500) 16 read saldocontadestino 17 write (saldocontadestino + 500) 18/24
Gerenciamento de transação Transação consiste de uma sequência de operações que devem ser tratadas como se fosse uma única operação lógica 13 read saldocontaorigem 14 write (saldocontaorigem - 500) 15 read saldocontadestino 16 write (saldocontadestino + 500) 17 FALHA NO SISTEMA 18/24
Gerenciamento de transação Transação consiste de uma sequência de operações que devem ser tratadas como se fosse uma única operação lógica 18 read saldocontaorigem 19 write (saldocontaorigem - 500) 20 21 FALHA NO SISTEMA 22 23 read saldocontadestino 24 write (saldocontadestino + 500) 18/24
Propriedades de transações em banco de dados relacionais ACID Atomicidade Todas operações em uma transação são executadas com sucesso ou tudo é desfeito Consistência Escrita no banco respeita regras, restrições, etc Execução de uma transação leva o banco de um estado consistente para outro estado consistente Isolamento Execução de transações concorrentes sem interferências Durabilidade Assim que transação for finalizada todas as modificações geradas por essa serão persistentes 19/24
Alguns SGBDs relacionais 20/24
Big Data & NoSQL Big data Grande volume de dados, gerados em grande velocidade e com grande variedade que exigem novas formas de processamento para ajudar nas tomadas de decisão (alguns ainda citam veracidade e valor) Fundamentado sobre tecnologias de análise (Hadoop / MapReduce) e infraestrutura de armazenamento e processamento (bancos de dados NoSQL) 21/24
NoSQL Banco de dados NoSQL não seguem o tradicional modelo de dados dos bancos relacionais, uma vez que esse modelo não seria adequado para armazenar a vasta quantidade de dados de maneira efetiva e com baixo custo Baseado em computação distribuída Fundamentadas sobre as propriedades BASE e não sobre as propriedades ACID Basic Availability não garante disponibilidade Soft-state estado alterado ao longo do tempo Eventual consistency se tornará consistente ao longo do tempo Categorias de bancos NoSQL Column-oriented / Big table Key-value Documents Graph 22/24
Alguns bancos de dados NoSQL 23/24
Aulas baseadas em Henry F.; Sudarshan Silberschatz, Abraham; Korth. Sistemas de banco de dados. 6a. Edição - Editora Campus, 2012 24/24