Universidade Federal da Paraíba UFPB Centro de Energias Alternativas e Renováveis - CEAR Departamento de Eng. Elétrica DEE BANCO DE DADOS CONCEITOS BÁSICOS Isaac Maia Pessoa
Introdução O que é um BD? Operações Acrescentar novos dados Inserir dados Buscar dados Alterar dados Remover dado
Histórico Antes (década de 70) Processamento de Arquivos no S.O Hoje Inconsistência Redundância Pouco Escalável Sistemas computacionais especializados em armazenar e buscar informação
Banco de Dados: Definição Coleção de dados relacionados e organizados de forma estruturada
Definição Coleção de dados relacionados e organizados de forma estruturada Como estruturar os dados e suas relações de forma simples para o ser humano? Qual a relação entre os elementos do mundo real e como transformá-las em uma descrição computacional
Definição Coleção de dados relacionados e organizados de forma estruturada Como estruturar os dados e suas relações de forma simples para o ser humano? Qual a relação entre os elementos do mundo real e como transformá-las em uma descrição computacional? Arquitetura Modelagem
Aplicações Sistemas de Informação Bancos, Universidades, Aviação, Vendas, Processos de Fabricação, Recursos Humanos, Sistemas Supervisórios, Sistemas Embarcados, etc.
Definições SGBD Sistema Gerenciador de Banco de Dados DBMS (Database Management System) Meta Dados Definições das Estruturas dos Dados(Esquemas) Abstrações que representam os dados e suas relações Banco de Dados Envolve o SGBD, a representação dos dados(meta dados) e os dados em si
Tipos de BD Propósito Geral Oracle, MySQL Embarcado SQLite, CSQL, FireBird Tempo Real CSQL Distribuído Oracle, MySQL Usuários Individuais MS Access Informações Geográficas (GIS)
Sistema de Banco de Dados Aplicações Usuários SGBD Manipulação Controle dos Dados Definições dos Dados (Meta-Dados) Banco de Dados
SGBD: Características 11 Independência entre dados e aplicações Definição dos dados são independentes das aplicações que os manipulam Flexibilidade Não é necessário modificar as aplicações em eventuais modificações nas definições dos dados
SGBD: Características 12 Multiusuários Vários usuários podem acessar os dados ao mesmo tempo Isolamento Permite acesso concorrente e simultâneo aos dados sem comprometer a consistência
SGBD: Características 13 Múltiplas visualizações sobre os dados Privilégios de acesso aos dados Professor Estudante Chefe de departamento Funcionário da secretaria Diretor do centro Controle de Acesso Usuários com privilégios ou restrições de acesso aos dados
SGBD: Características 14 Controle de Redundância Previne que o mesmo dado seja armazenado em vários lugares de forma inconsistente Normalização Forma de minimizar definições redundantes e dependência entre os dados Representação de relações entre os dados
SGBD: Características 15 Impor restrições de integridade sobre os dados Forma de garantir que exista coerência nos dados Ex: Nome de uma pessoa com no máximo cinquenta caracteres Idade de uma pessoa é um inteiro sem sinal Integridade Referencial Um certo aluno deve ser representado de forma única para todos os lugares onde ele existe: Departamento de Engenharia Elétrica Curso de Engenharia Elétrica UFPB
Atores Administradores dos SGBDs DBA - Database Administrator Responsáveis pelo gerenciamento dos SGBDs Criação de usuários no SGBD Atribuição de permissões aos usuários aos Bancos de Dados Backups Garantia de estabilidade Criação de novos Banco de Dados
Atores Analistas ou Projetistas de Banco de Dados Identificação dos requisitos do BD Definição das estruturas dos dados e suas relações Usuários do BD Usam o BD em suas atividades Normalmente acessam o BD com um PC usando uma aplicação de acesso ao BD: Funcionários do Banco do Brasil Correntistas do Banco do Brasil Usuários do Google Usuários do Facebook
Propriedades dos SGBDs Atomicidade Qualquer operação deve ser indivisível. Garante acesso simultâneo e concorrente Consistência Sempre sair de um estado consistente para outro Isolamento Operações devem ser executadas como se fossem únicas e sequenciais Durabilidade As operações devem ser persistentes e mantidas após
Transações Os SGBDs usam transações para garantir: Atomicidade, Consistência, Isolamento e Durabilidade Acesso concorrente aos dados Sem Inconsistência Recuperação à falhas Operações Indivisíveis (Atômicas)
Arquitetura Usuários Aplicações Nível Externo Nível Conceitual Nível Interno
Arquitetura Usuários Aplicações Nível Externo Nível Conceitual S.O, Sistema de Arquivos, Buffers, acesso ao disco, transações Nível Interno
Arquitetura Usuários Aplicações Nível Externo Tabelas e estruturas dos bancos de dados, esquemas de representação lógica, funções de consulta Nível Conceitual Nível Interno Banco de Dados 1 Banco de Dados 2
Arquitetura Usuários Aplicações Visualizações do BD(views), Controle de acesso Nível Externo Nível Conceitual Nível Interno
Arquitetura Cliente-Servidor Cliente Usuários Rede de Comunicação Servidor Aplicações BD
Modelagem Como representar elementos e relações do mundo real em uma linguagem computacional? Como manipular os elementos?
Modelagem Como representar elementos e relações do mundo real em uma linguagem computacional? Modelo Relacional Modelo Entidade Relacionamento (ER) Implementação do BD Projeto e Modelagem do BD
Modelagem 27 Não Confundir Descrição do Banco de Dados Esquemas (Tabelas) Dados no Banco de Dados (Estado do BD) As informações concretas que correspondem aos esquemas
Modelo Relacional Tabela: Professor Atributos (Colunas) num nome departamento salario 01 Luíz Gonzaga Música 6000 02 César Lattes Física 3000 03 Ampère Elétrica 1299 04 René Descartes Matemática 876 Tuplas (Linhas) Relação (Tabela)
Modelo Relacional Atributos: A1,A2,, Na Esquema Relacional: R = (A1,A2,,An) Ex: Professor = (ID, nome, nome_dept, salario) Os valores ou instâncias de uma relação formam uma tabela Banco de Dados Múltiplas relações Modelagem quebrada em partes Professor, Departamento, Aluno, Curso
Modelo Relacional Chaves Primárias Representa um atributo(coluna) em uma relação usado para identificação única de uma tupla(linha) Exemplo: Matrícula é um bom candidato para chave da relação Aluno
Modelo Relacional (Exemplo) Professor id nome dept salario Departamento id nome sigla bloco receita Disciplina id nome nome_dept nome_prof Estudante matricula nome nome_dept
id nome sigla bloco receita 001 Dep. de Engenharia Elétrica DEE CTJ 30000.00 002 Dep. de Matemática DM CTX 25000.00 Tabela Departamento Id nome dept salario 647634 Josilalva DEE 8000.00 344563 Distoneclis DM 5000.00 Tabela Professor matricula nome nome_dept 20132563 Rosa da Silva Dep. Engenharia Elétrica 20132562 Tião Pereira Dep. Matemática Tabela Estudante id nome dept nome_prof 20132563 Eletrônica DEE Josilalva 20132562 Cálculo I DM Distoneclis Tabela Disciplina
Modelo Relacional Representado com Álgebra Relacional Operações Relacionais Seleção Seleciona linhas de uma relação que satisfaça um dado predicado Projeção Seleciona colunas de uma relação União União entre tuplas de duas relações
Modelo Relacional Modelo Relacional Forma matemática de representar as relações SQL (Structured Query Language) Linguagem usada para descrever banco de dados relacionais Descendente direto do modelo relacional Data Definition Language(DDL) Padrão ISO/IEC 9075-1:2008
SQL Structured Query Language Linguagem de Modelagem de Dados (DML) Linguagem de Definição de Dados (DDL) É descendente do modelo relacional IBM iniciou o projeto de SQL Padrão ANSI e ISO SQL-86, SQL-89 SQL:2008 A maior parte das ferramentas é compatível com um subconjunto do padrão
SQL Comandos Básicos Definição de Dados - Data Definition Language (DML) Comando CREATE ALTER DROP Descrição Cria uma nova tabela no BD Modifica um tabela existente Remove um tabela do BD Manipulação - Data Manipulation Language (DML) Comando INSERT UPDATE DELETE Descrição Cria um registro em uma tabela Modifica um registro Remove um registro
SQL Comandos Básicos Controle de Acesso Comando GRANT REVOKE Descrição Atribui privilégios aos usuários Remove privilégios dos usuários Consulta Comando SELECT Descrição Busca de um registro
SQL 38 Coluna Professor Id nome dept salario 647634 Josilalva DEE 8000.00 344563 Distoneclis DM 5000.00 Registro
SQL 39 Algumas Restrições de Integridade Restrições NOT NULL DEFAULT UNIQUE PRIMARY KEY FOREIGN KEY Descrição Assegura que uma certa coluna não pode ter o valor null Define valor padrão na coluna quando nada é fornecido Assegura que todos os valores da culuna são diferentes Identificação única de um registro em uma tabela Identificação única de um registro de outra tabela
SQL : Tipos Básicos Tipo VARCHAR(n) CHARACTER(n) BOOLEAN INTEGER(p) Descrição string de tamanho variável string de tamanho fixo n Booleano Inteiro de precisão p INTEGER Inteiro de precisão 10 SMALLINT Inteiro de precisão 5 BIGINT Inteiro de precisão 19 DECIMAL(p,s) REAL Mantissa = 7 DATA TIME Decimal(5,2) = decimal com 3 dígitos antes da vírgula e 2 depois Dia, mês e ano Hora, minuto e segundo
SQL: Exemplo Professor id nome dept salario Departamento id nome sigla bloco receita Disciplina id nome nome_dept nome_prof Estudante matricula nome nome_dept
SQL: Criação de Tabelas 42 Forma Geral CREATE TABLE nome_da_tabela( coluna1 tipo, coluna2 tipo, coluna3 tipo,... colunan tipo, PRIMARY KEY( uma ou mais colunas ) );
SQL: Criação de Tabelas 43 CREATE TABLE departamento ( id INT NOT NULL, nome VARCHAR (100) NOT NULL, sigla VARCHAR (10) NOT NULL, bloco VARCHAR (15) NOT NULL, receita DECIMAL(20,2), PRIMARY KEY (id) ); Chave primária Chave secundária CREATE TABLE professor ( id INT NOT NULL, nome VARCHAR (100) NOT NULL, dept VARCHAR (100) REFERENCES departamento(nome), salario DECIMAL(20,2), PRIMARY KEY (id) );
SQL: Criação de Tabelas 44 CREATE TABLE disciplina( id INT NOT NULL, nome VARCHAR (100) NOT NULL, nome_dept VARCHAR (100) REFERENCES departamento(nome), nome_prof VARCHAR (100) REFERENCES professor(nome), creditos INT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE estudante( matricula CHAR(12) NOT NULL, nome VARCHAR (100) NOT NULL, nome_dept VARCHAR (100) REFERENCES departamento(nome), PRIMARY KEY (matricula) );
SQL: Povoamento 45 INSERT INTO departamento (id,nome,sigla,bloco,receita) VALUES( 001, 'Departamento de Engenharia Elétrica', 'DEE', 'CTJ', 30000.00); INSERT INTO professor (id,nome,dept,salario) VALUES( 647634, 'Josilalva', 'Departamento de Engenharia Elétrica', 8000.00 );
SQL: Consultas 46 Forma Geral SELECT coluna1, coluna2, colunan FROM nome_da_tabela WHERE [condição]
SQL: Consultas 47 SELECT id,nome,dept FROM professor WHERE salario > 2000.00; Resultado da Consulta: +--------+----------+--------------------------------------+ ID NOME DEPT +--------+----------+--------------------------------------+ 647634 Josilalva Departamento de Engenharia Elétrica +--------+----------+--------------------------------------+