Introdução ao Banco de Dados. Banco de Dados

Documentos relacionados
Introdução a Bancos de Dados

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Modelo Entidade-Relacionamento (E-R)

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

BCD29008 Banco de dados

Introdução a Bancos de Dados. - Conceitos - Modelos lógicos e relacional - Álgebra relacional -SQL - Projeto Lógico

ANÁLISE E PROJETO DE BANCO DE DADOS

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Comandos de Manipulação

mod._1_teoria_sistemas de bancos de dados.doc

Rápida revisão do Modelo Relacional

SQL (Tópicos) Structured Query Language

Introdução ao PostgreSQL

IMPLEMENTAÇÃO DE BANCO DE DADOS

MySql. Introdução a MySQL. Andréa Garcia Trindade

SQL. Prof. Roger Cristhian Gomes

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Bancos (Bases) de Dados

BANCO DE DADOS GERENCIAL 1 A U L A 2

BCD29008 Banco de dados

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

Banco de Dados. Professora: Luciana Faria

Revisão Banco de Dados

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

BCD29008 Banco de dados

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

BANCO DE DADOS PARA NINJAS

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Álgebra Relacional e SQL

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 17. Escola Politécnica da Universidade de São Paulo

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

Marcelo Henrique dos Santos

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

Revisão de Bancos de Dados

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Utilizando o Postgres - comandos SQL para a manipulação de dados

DDL). O resultado da compilação dos parâmetros DDLs é

Banco de Dados I. Aula 14 - Prof. Bruno Moreno 11/10/2011

Objetos Persistentes. Objetos Persistentes: são objetos que requerem armazenamento persistente.

Banco de Dados I Introdução SQL

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

A linguagem SQL

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

Banco de Dados Modelo Relacional, Algebra Relacional, SQL

Ordenação de tuplos order by

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Banco de Dados. Prof. Dr. Joel da Silva SQL - Introdução

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

Informática I. Aula 8. Aula 8-25/09/2006 1

Introdução a B anco de Dados. INE5206 Introdução à Informática INE/CTC/UFSC Prof. Roberto Willrich

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Capítulo 1 INTRODUÇÃO A BANCO DE DADOS

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

SQL Básica. Andre Noel

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Banco de Dados. Linguagem SQL

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Álgebra Relacional e SQL operações de interesse

TABELA ENTIDADE LINHA OCORRÊNCIA DA ENTIDADE COLUNA ATRIBUTO DA ENTIDADE

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

SQL Linguagem de Definição de Dados

- SQL Linguagem de Manipulação de Dados

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

Banco de dados na Web

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Manipulação de Dados com SQL

SQL-99: Esquema de BD EMPRESA

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Banco de Dados I. Aula 17 - Prof. Bruno Moreno 08/11/2011

SQL DML. Frederico D. Bortoloti

Fundamentos de Banco de Dados Postgre com Sql

Linguagem de Consulta Estruturada (SQL)

Aula 06 Sistemas Embarcados LT38C


Unidade 5 05/11/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

Transcrição:

Introdução ao Banco de Dados Prof. Tiago Garcia de Senna Carneiro UFOP Prof. Técnicas de Programação II 2006 PARTE 1: Conceitos Básicos Banco de Dados SGDB: Sistema Gerenciador de Banco de Dados Definição: Coleção de dados inter-relacionados e procedimentos para se acessar estes dados. Objetivo: Uso eficiente para armazenamento e recuperação de grande quantidade de dados. 1

Sistemas de Arquivos Convencionais Características: vários arquivos, diferentes programas para recuperar informações. Desvantagens: redundância e possível inconsistência de dados dificuldade para se acessar informação (programa pode não estar disponível) atomicidade: transação deve acontecer por inteira inconsistência devido a acesso de multi-usuários problemas de segurança Visão Abstratas dos Dados em BD Nível físico: nível mais baixo de abstração descreve como os dados estão armazenados Nível lógico: descreve dados e relacionamentos entre os mesmos Nível de usuário: diferentes visões dos dados (não todos os atributos) 2

Níveis de Abstração dos Dados em BD Nível de usuário Visão 1 Visão 2... Visão n Nível lógico Nível físico Nível do Usuário: Esquema conceitual do Banco de Dados Diagramas entidade-relacionamentos (ER) coleção de entidades e relacionamentos (retângulo=entidade, losango=relacionamento, elipse=atributo) cpf End. número saldo pessoa Acessa Conta corrente 3

Nível Lógico: Bancos de Dados Relacionais Coleção de tabelas representando dados e relacionamento entre estes dados ENTIDADE : FUNCIONARIOS REGISTRO NOME IDADE SALARIO DEPTO 98752 JOÃO DA SILVA 32 2000.00 1 97345 HENRIQUE CARDOSO 28 1700.00 2 89234 JOSÉ DE SOUZA 34 3500.00 3 ENTIDADE: DEPARTAMENTO DEPTO NOME CIDADE ESTADO 1 DPI SJCAMPOS SP 2 DSR NATAL RN 3 DME CUIABA MT Funcionário trabalha Departamento Passos na Modelagem de BD Requisitos: identificação dos dados Modelagem conceitual: mapear visão do usuário em um conjunto de dados descreve entidades, atributos e relacionamentos Implementação: esquema de banco de dados Projeto físico: estruturas de dados, métodos de acesso, segurança Identificação de Requisitos Modelo Conceitual Implementação Projeto Físico 4

Passos na Modelagem de BD Análise de Requisitos Definir abrangência do banco de dados suportar tudo : complexo e ineficiente implementação particionada Identificar tipos de dados necessidades do usuário definir metadados Captar visão dos usuários Descrever visão do usuário em dicionário de dados Identificar recursos operacionais PARTE 2: Nível do Usuário Projeto Conceitual do BD Diagramas Entidade-Relacionamento (E-R) Cardinalidade: expressa o número de entidades que a outra entidade pode ser associada 1:1, 1:n, n:1, n:n Data cpf End. número saldo pessoa 1 Acessar 1-n Conta corrente 5

Chaves de uma Relação Conceito de atributo chave: valor que não se repete dentro de uma relação pode ser um único atributo ou a combinação de mais atributos chave: CPF chave: Rua + Bairro + Cidade Nome Endereço CPF Rua Bairro Cidade Conversão E-R Modelo Relacional Entidades com atributos chaves bem definidos geram uma relação (tabela). Relacionamentos geram uma relação adicionando-se os atributos chaves das entidades relacionadas. Entidades com atributos chaves não bem definidos geram uma relação adicionando-se a chave da relação que dependem 6

Conversão E-R Modelo Relacional Data cpf End. número saldo pessoa Acessar Conta corrente pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo) PARTE 3: Nível Lógico Projeto Lógico do BD Normalização Projeto Lógico de BD análise das dependências funcionais entre os atributos objetivo: reduzir complexidade da visão do usuário Passos na normalização visão do usuário relações não normalizadas 1 a forma normal (remove grupos repetidos) 2 a forma normal (remove dependências parciais) 3 a forma normal (remove dependências transitivas) 7

Passos na Modelagem de BD Visão do Usuário Elemento de dado Nome: Relatório de Notas -Informação#: 3 Descrição: Emitido todo semestre -Descrição: especialização Usuário: estudantes -Fonte: histórico escolar Localização: n/a -Especificação: Telefone: n/a alfanumérico Elementos de dados 30 caracteres 1: estudante# -Utilização: 2 vezes semestre 2: estudante_nome 3: especialidade 4: curso# 5: curso_nome Relação não normalizada: Normalização relação que contém um ou mais grupos repetidos atributo simples não serve como chave candidata RELATÓRIO_NOTAS Nome Est# Área Curso Aula Prof. Pf.Loc Nota João 1 CA CA10 Banco K BD300 A de Dados João 1 CA MA5 Mat. C M250 B 8

Normalização 1 a forma normal: remove grupos repetidos Nome Est# Área Curso Aula Prof. Pf.Loc Nota João 1 CA CA10 Banco K BD300 A de Dados João 1 CA MA5 Mat. C M250 B ESTUDANTE_CURSO (1FN) Est# Curso Aula Prof. Pf.Loc Nota ESTUDANTE (3FN) Est# Nome Area Normalização 1 a forma normal - problemas redundância de dados anomalias de inserção (novo curso) anomalias de atualização (alterar nome de curso) anomalias de remoção (perda de informação) ESTUDANTE_CURSO (1FN) Est# Curso Aula Prof. Pf.Loc Nota 9

Normalização 1 a forma normal - razões para anomalias atributos não chaves são parcialmente dependentes da chave primária (Est#,Curso) Est# Curso Aula Prof. Pf.Loc Nota Normalização 2 a forma normal: remover dependências parciais cria duas novas relações uma com atributos totalmente dependentes da chave primária outra com atributos parcialmente dependentes da chave primária ESTUDANTE_CURSO (1FN) Est# Curso Aula Prof. Pf.Loc Nota REGISTRO (3FN) CURSO_INSTRUTOR (2FN) Est# Curso Nota Curso Aula Prof. Pf.Loc 10

Normalização 2 a forma normal: problemas devido a dependência transitiva entre atributos não chaves (PfLoc depende do Prof) anomalia de inserção (novo professor) anomalia de atualização (dados do professor) anomalia de remoção (perda de dados do professor com remoção de um curso) CURSO_INSTRUTOR (2FN) Curso Aula Prof. Pf.Loc Normalização 3 a forma normal: atributos não chave são totalmente dependentes da chave primária ALUNO (3FN) Est# Nome Área 1 João CA CURSO (3FN) Curso Aula Prof. CA10 Banco K Dados MA5 Mat. C INSTRUTOR (3FN) Prof. K C NOTAS (3FN) Pf.Loc BD300 M250 Est# Curso Nota 1 CA10 A 1 MA5 B 11

EMPREGADO Dicionário de Dados REGISTRO NOME IDADE SALARIO DEPTO 98752 JOÃO DA SILVA 32 2000.00 1 97345 HENRIQUE CARDOSO 28 1700.00 2 89234 JOSÉ DE SOUZA 34 3500.00 3 Atributo Descrição Domínio registro... inteiro positivo nome... conjunto de caracteres idade... inteiro positivo salário... real positivo depto... inteiro positivo PARTE 4: Usando um BD Linguagens de Banco de Dados Linguagem de definição de dados (DDL) gera tabelas no diretório ou dicionário de dados dicionário de dados contém metadados Linguagem de manipulação de dados (DML) recuperação, inserção, remoção e atualização DML procedurais: requer que o usuário especifique que dados necessita e como recuperá-los DML não-procedurais: requer que o usuário especifique apenas que dados necessita 12

SQL - Structured Query Language Linguagem de banco de dados relacional linguagem de definição de dados (DDL) linguagem de manipulação de dados (DML) definição de vistas integridade controle de transação SQL - Structured Query Language Linguagem de definição de dados (DDL) esquema para cada relação domínio de valores associados a cada atributo restrições de integridade índices para cada relação segurança e autorização de acesso para cada relação estrutura de dados em disco para cada relação 13

SQL - Structured Query Language Tipos dos atributos: char (n) : conjunto de caracteres de tamanho definido varchar (n) : conjunto de caracteres de tamanho variável (máximo tamanho é n) int : inteiro smallint : inteiro numeric (p,d) : real com precisão definida numeric (3,1) : 44.5 real : real com precisão dupla float (n) : real com precisão de pelo menos n dígitos date : data com 4 dígitos para ano, e 2 dígitos para mês e dia time : hora do dia em horas, minutos e segundos SQL - Structured Query Language Definição de esquema: comando create table -cria uma nova tabela create table r (A 1 D 1, A 2 D 2,..., A n D n, <restrição de integridade 1 >,..., <restrição de integridade k >) Restrições de integridade: primary key (A j1, A j2,..., A jm ) - define chave check (P) - verifica predicado 14

SQL - Structured Query Language create table cliente (nome char(20) not null, endereço char(30), cidade char(30), primarykey (nome)) create table contacorrente (número char(10) not null, banco char(30), saldo integer, primarykey (número), check (saldo >= 0)) SQL - Structured Query Language Definição de esquema: comando drop table -elimina tabela do banco drop table cliente comando delete from -elimina todos os registros delete from cliente comando alter table -altera tabela do banco alter table cliente add A D : adiciona atributo A com domínio D alter table cliente drop A : elimina atributo A 15

SQL - Structured Query Language Consulta básica: - select : corresponde ao operador projeção da álgebra relacional - from : corresponde ao operador produto cartesiano da álgebra relacional - where : corresponde ao predicado de seleção da álgebra relacional select A 1, A 2,..., A n from r 1, r 2,..., r m where P Π A1, A2,..., An (σ P (r 1 r 2... r m )) SQL - Structured Query Language Cláusula select : seleciona o atributo banco_nome da relação empréstimo select banco_nome from empréstimo elimina registros duplicados select distinct banco_nome from empréstimo seleciona todos os atributos select * from empréstimo 16

SQL - Structured Query Language Cláusula where : seleciona empréstimos no Brasil com saldo > 1200 select emp_numero from empréstimo where banco_nome = Brasil and saldo > 1200 seleciona empréstimos com saldo entre 500 e 1000 select emp_numero from empréstimo where saldo between 500 and 1000 SQL - Structured Query Language Cláusula from : define o produto cartesiano entre relações para todos os clientes que possuem empréstimo, encontre seu nome e número do empréstimo select distinct nome, emprestimo.numero from cliente, emprestimo where cliente.emp_numero = emprestimo.numero 17

SQL - Structured Query Language Renomear relações e atributos: old_name as new_name pode aparecer nas cláusulas select e from select distinct nome, emprestimo.numero as emp_id from cliente, emprestimo where cliente.emp_numero = emprestimo.numero select distinct nome, T.numero from cliente as S, emprestimo as T where S.emp_numero = T.numero SQL - Structured Query Language Operações em conjunto de caracteres ( strings ) : O caracter % representa qualquer sub-string O caracter _ representa qualquer caracter O termo like é utilizado para comparar padrões Carl% : qualquer nome que comece com Carl %ulo% : qualquer nome que possui ulo _ : qualquer nome com 3 caracteres select nome from cliente where endereco like %Ademar% 18

SQL - Structured Query Language Ordenação de tuplas: cláusula order by - asc -ordem ascendente (assume esta se não definido) - desc - ordem descendente select distinct nome from cliente, emprestimo where cliente.emp_numero = emprestimo.numero order by nome select * from emprestimo order by saldo desc, numero asc SQL - Structured Query Language Operações em conjuntos união interseção Encontre todos os clientes com conta e empréstimo ou ambos (select nome from cliente) union (select nome from empréstimo) Mantendo registros repetidos (select nome from cliente) union all (select nome from empréstimo) 19

SQL - Structured Query Language Interseção Todos os cliente que possuem conta e empréstimo (select distinct nome from cliente) intersect (select distinct nome from empréstimo) (select nome from cliente) intersect all (select nome from empréstimo) SQL - Structured Query Language Funções de agregação Média: avg select avg (saldo) from conta_corrente where banco_nome = Brasil Cláusula group by : junta as tuplas com atributos em group by de mesmo valor select banco_nome, avg (saldo) from conta_corrente group by banco_nome 20

SQL - Structured Query Language Funções de agregação Contador : count recupere o número de tuplas ou registros na relação cliente select count (*) from cliente Mínimo : min select min (saldo) from contacorrente Máximo : max Soma : sum SQL - Structured Query Language Uso to termo in compara se um atributo está contido em outra relação Encontre todos os clientes que tem empréstimo e possuem conta no banco select distinct nome from empréstimo where nome in (select nome from banco) 21

Vistas em Banco de Dados Vista ( View ) qualquer relação que não é parte do modelo lógico, mas é visível ao usuário. criada através de expressões da álgebra relacional sobre relações existentes create view v as <expressão de consulta> create view todos_clientes as Π nome,banco (cliente conta) Π nome,banco (cliente empréstimo) Vistas em Banco de Dados Vistas Geralmente são relações virtuais mas podem ser salvas. Alterações nas relações bases fazem com que a vista sejam automáticamente atualizada. Úteis em processos de consulta mais frequentes. Alterações feitas diretamente na vista, devem ser traduzidas em alterações nas relações básicas, e podem acarretar problemas: banco_emp é uma vista definida a partir de empréstimo empréstimo (banco,número,data) Exemplo: Adicionar um novo registro banco_emp banco_emp {( Real, E-10)} 22

SQL - Structured Query Language Vistas : criação: create view r as <expressão de consulta> create view todos_clientes as (select banco_nome, cliente_nome from banco, conta_corrente where banco.conta_numero = conta_corrente.numero) union (select banco_nome, cliente_nome from cliente, emprestimo where cliente.emp_numero = emprestimo.numero) SQL - Structured Query Language Modificação do banco de dados: remoção : delete from r where P inserção : insert into conta_corrente values ( Paulo, CC1000,1200) atualização : update conta_corrente set saldo = saldo * 1.05 23

SQL - Structured Query Language Junção natural : ( inner join ) empréstimo (banco,numero,saldo) cliente (nome,emp_numero) { Centro, L-170, 3000 } { João, L-170 } { Satelite, L-230, 4000 } { Sandra, L-230 } { Inpe, L-260, 300 } { Paulo, L-155 } select * from emprestimo inner join cliente on emprestimo.numero = cliente.emp_numero { Centro, L-170, 3000, João, L-170} { Satelite, L-230, 4000, Sandra, L-230 } SQL - Structured Query Language Junção externa : ( outer join ) empréstimo (banco,numero,saldo) cliente (nome,emp_numero) { Centro, L-170, 3000 } { João, L-170 } { Satelite, L-230, 4000 } { Sandra, L-230 } { Inpe, L-260, 300 } { Paulo, L-155 } select * from emprestimo left outer join cliente on emprestimo.numero = cliente.emp_numero { Centro, L-170, 3000, João, L-170} { Satelite, L-230, 4000, Sandra, L-230 } { Inpe, L-260, 1700, null, null, } 24

SQL - Structured Query Language Criação de índices: Permitir recuperação mais eficiente dos dados ao se realizar uma consulta create index <nome_indice> on <tabela>(<coluna>) create index empidx on empregado (cpf) Remover índices: drop index <nome_indice> Gerenciamento de Transações Transação: coleção de operações que realizam uma função lógica (Ex: transferência entre contas correntes) Operação deve ser completada por inteiro - atomicidade Consistência deve ser preservada Durabilidade dos dados Programador tem a responsabilidade de definir as etapas que correspondem a uma transação Banco de dados deve garantir atomicidade e durabilidade 25