Bancos de Dados Abordagens de SGBD Prof. Marcos R. Cardoso.
Transcript of Bancos de Dados Abordagens de SGBD Prof. Marcos R. Cardoso.
Bancos de DadosAbordagens de SGBD
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Hierárquico
Histórico• Não existe documentação original, não há
homologação
• Baseado IMS – Information Management System, mais utilizado ainda hoje
• Utilizado em ambientes corporativos – Mainframe
• Manteve-se, durante anos, à frente do modelo relacional pelas características das implementações
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Hierárquico
Desvantagens• Dificuldade na implementação
• Buscas mais complexas pela necessidade de navegação na estrutura de árvore
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Hierárquico
Características• Dados – representados em registros
• Registros – estrutura com itens de dados (atributo)
• Tipos de relacionamento pai-filho, cardinalidade 1:N, onde:• o registro do lado “1” é chamado de tipo registro
pai
• o(s) registro(s) do lado “N” chamado(s) tipo registro filho
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Hierárquico
Exemplo 1
CD_FUNC NM_FUNC DS_ENDERECO
10 João Rua XV de Novembro
11 Maria Rua Paraíba
12 Cláudio Rua Itajaí
Prof. Marcos R. Cardoso
Funcionário
CD_FILHO NM_FILHO CD_FUNC
1 João Júnior 10
2 Gabriela 10
Filho_Funcionario
Bancos de Dados – AbordagensSGBD Hierárquico
Exemplo 2 (auto-relacionamento)
CD_FUNC NM_FUNC DS_ENDERECO CD_CHEFE
10 João Rua XV de Novembro
11 Maria Rua Paraíba 10
12 Cláudio Rua Itajaí 10
13 Gabriela Rua 7 de setembro 12
14 Márcio Rua São João 12
Prof. Marcos R. Cardoso
Funcionário
Bancos de Dados – AbordagensSGBD Hierárquico
Produtos• IMS
• MUMPS
• DMSII
• FOCUS
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Rede
Histórico• Em 1971, relatório apresentado pelo Database Task
Group cria o CODASYL - Conference on Data Sistems Languages
• Em 1978 e 1981 novos conceitos são incorporados, passa ser conhecido como “Modelo de Rede”
• Linguagem Cobol como anfitriã (host)
• Não teve muito sucesso, pois a IBM decidiu manter o modelo hierárquico até a popularização do modelo relacional
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Rede
Característica• Semelhante à abordagem hierárquica,
mas ao invés de um registro-filho ter somente um único registro-pai, era permitido que o registro-filho tivesse vários registros-pais.
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Rede
Vantagens• Facilidade de implementação
• Agilidade nas consultas
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Rede
Exemplo
Pedro
Márcio
José
Antônia
Prof. Marcos R. Cardoso
Projeto 1
Projeto2
Funcionario Projeto
Bancos de Dados – AbordagensSGBD Rede
Produtos• TurboIMAGE
• IDMS
• RDM Embedded
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Relacional
Em 1970, Codd idealizou o modelo relacional utilizando-se da Álgebra Relacional (teoria dos conjuntos)
Marco na história dos BDAmbiente corporativo
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Relacional
Resistência• Recursos computacionais
• Tempo de resposta elevado, praticamente inaceitáveis
• Mudança no paradigma de programação
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Relacional
Em 1979, a empresa Ashton-Tate apresenta o dBase II
Ocorre um crescimento extraordinário
Borland compra a Ashton-TatedBase seria SGBD?
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD Relacional
Aspecto Estrutural• Tabelas (linhas e colunas)
Prof. Marcos R. Cardoso
CD_DEPTO NM_DEPTO VL_ORCAMENTO
100 Marketing 10.000,00
110 Manutenção 12.000,00
120 Pesquisa 7.000,00
DEPARTAMENTO
Bancos de Dados – AbordagensSGBD Relacional
Restrição de Integridade
CD_DEPTO NM_DEPTO VL_ORCTO
100 Marketing 10.000,00
110 Manutenção 12.000,00
120 Pesquisa 7.000,00
Prof. Marcos R. Cardoso
CD_FUNC NM_FUNC CD_DEPTO
1001 Maria 100
1002 José 100
1003 Paulo 110
DEPARTAMENTO FUNCIONARIO
Bancos de Dados – AbordagensSGBD Relacional
Manipulação dos dados• Restrição (linha)
• Projeção (coluna)
• Junção (mais de uma tabela)
Prof. Marcos R. Cardoso
CD_DEPTO NM_DEPTO VL_ORCTO
100 Marketing 10.000,00
110 Manutenção 12.000,00
120 Pesquisa 7.000,00
CD_FUNC NM_FUNC CD_DEPTO
1001 100 Maria
1002 100 José
1003 110 Paulo
DEPARTAMENTO FUNCIONARIO
Bancos de Dados – AbordagensSGBD Relacional
Exemplos:• DB2
• Oracle
• SQL Server
• MySQL
• Interbase
• SyBASE
• Progress
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OO
Adição de conceitos de OO a linguagens de banco de dados
Utilizar linguagens orientadas a objeto para tratar de bancos de dados que operam com conceitos de objetos persistentes
Os dados são objetos dentro do BD, e não linhas dentro de uma tabela
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OO
Modelo de Dados Estrutura do Objeto
• Variáveis
• Mensagens
• Métodos Classe de Objeto
• Similaridade nos objetos
• Instâncias de objetos Herança
• Similaridade de classes
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OO
Linguagem persistente• Transparência – não há uma conversão
explícita entre a OO e o relacional;
• Operações são realizadas de forma implícita;
• Trabalham com a SQL embutida;
• Exemplos: Smalltalk, C++, Java e C#
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OO
Aplicações• Engenharia
• Aplicações Espaciais
• Telecomunicações
• Biologia Molecular
• Física das Partículas
• Certas áreas de finanças
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OO
Vantagens• Rapidez (uso de ponteiros para navegar),
mas apenas em propósitos específicos
• Alto nível de abstração
Desvantagens• Orientado a aplicações específicas
• Não possui base matemática, como o modelo relacional
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OO
Produtos• Gemstone
• Gbase
• Vbase
• Jasmine
• ObjectStore
• O2
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OR
Características• Novos tipos de dados (complexos)
• Modelo relacional acrescido de orientação a objetos
• Linguagem padrão de acesso as estruturas do metadados
• Linguagem persistente ou extensão para manipulação de objetos
Prof. Marcos R. Cardoso
Bancos de Dados – AbordagensSGBD OR
Query SGBD Relacional
Query SGBD OR
Prof. Marcos R. Cardoso
SELECT C.Sobrenome||', '||C.PrimeiroNomeFROM Clientes C, Enderecos AWHERE A.cdCidade = C.cdCidadeAND A.nmCidade=“São Paulo”
SELECT Formal(C.Nome)FROM Clientes CWHERE C.endereco.nmCidade = “São Paulo”
Bancos de Dados – AbordagensSGBD OR
Exemplo
Prof. Marcos R. Cardoso
Título Autores Data (d,m,a) Palavras Chaves
Meta de vendas {Carlos, Ana} (18, março, 2003) {Estratégia, vendas}
Relatório aos Fornecedores
{Manoel} (23, maio, 2002) {Aquisição, compras}
Documentos
Bancos de Dados – AbordagensSGBD OR
Tipo complexo
Prof. Marcos R. Cardoso
Create type MinhaSequencia char varying;
Create type MinhaData
( dia integer,
mes char(10),
ano integer);
Create type Documento
( nome MinhaSequencia,
lista_autor setof (MinhaSequencia),
lista_palavras_chaves setof (MinhaSequencia),
data MinhaData);
Create table docs of type Documento;
Bancos de Dados – AbordagensSGBD OR
Herança
Prof. Marcos R. Cardoso
Create type Pessoa( nm_pessoa MinhaSequencia,
nr_CPF integer);
Create type Estudante( nm_curso MinhaSequencia) under Pessoa;
Create type Professor( nm_departamento MinhaSequencia) under Pessoa;
Create type AssintenteDeEnsino under Estudante, Professor;
Bancos de Dados – AbordagensSGBD OR
SGBD Oracle
Prof. Marcos R. Cardoso
/* criação do objeto */CREATE OR REPLACE TYPE obj_pessoa AS OBJECT( cd_pessoa NUMBER(3), nm_pessoa VARCHAR2(30), nr_telefone VARCHAR2(12), dt_nascimento DATE, MEMBER FUNCTION obter_idade RETURN NUMBER);
/* criação da tabela */CREATE TABLE clientes OF obj_pessoa;
Bancos de Dados – AbordagensSGBD OR
SGBD Oracle
Prof. Marcos R. Cardoso
/* descrevendo a estrutura */SQL> DESC obj_pessoa;Nome Nulo? Tipo------------------------------ -------- -------------CD_PESSOA NUMBER(3)NM_PESSOA VARCHAR2(30)NR_TELEFONE VARCHAR2(12)DT_NASCIMENTO DATE
METHOD------ MEMBER FUNCTION OBTER_IDADE RETURNS NUMBER
Bancos de Dados – AbordagensSGBD OR
SGBD Oracle
Prof. Marcos R. Cardoso
/* manipulação de dados */
SQL> INSERT INTO clientes VALUES (1, 'Joao Bento Goncalves', '4799999999', '01/02/1982');
1 linha criada.
Bancos de Dados – AbordagensSGBD OR
SGBD Oracle
Prof. Marcos R. Cardoso
/* recuperação dos dados */SQL> SELECT VALUE(c) 2 FROM clientes c;
VALUE(C)(CD_PESSOA, NM_PESSOA, NR_TELEFONE, DT_NASCIMENTO)---------------------------------------------------------------OBJ_PESSOA(1, 'Joao Bento Goncalves', '4799999999', '01/02/82')
SQL> SELECT c.nm_pessoa, c.obter_idade()2 FROM clientes c;
NM_PESSOA C.OBTER_IDADE()------------------------------ ---------------Joao Bento Goncalves 26
Bancos de Dados – AbordagensSGBD OR
SGBD Oracle
Prof. Marcos R. Cardoso
/* Criação do método */CREATE OR REPLACE TYPE BODY obj_pessoa AS MEMBER FUNCTION obter_idade RETURN NUMBER AS idade NUMBER; BEGIN SELECT TO_NUMBER(TRUNC(MONTHS_BETWEEN(SYSDATE,
dt_nascimento)/12),'999') INTO idade FROM clientes; RETURN idade; END;END;
Bancos de Dados – AbordagensSGBD OR
PostgreSQL
Prof. Marcos R. Cardoso
CREATE TABLE Pessoa(nome varchar(50), telefone numeric(12), endereco varchar(100));
CREATE TABLE PessoaFisica(idade numeric(3), cpf numeric(11), estado_civil char) inherits(Pessoa);
CREATE TABLE PessoaJuridica(cnpj numeric(15), insc_est numeric(12)) inherits(Pessoa);
Bancos de Dados – AbordagensSGBD OR
PostgreSQL
Prof. Marcos R. Cardoso
INSERT INTO Pessoa VALUES ('Sou pessoa', 1111111, 'Sem endereco');
INSERT INTO PessoaFisica VALUES ('Maria', 5487777, 'Rua Progresso, 87', 20,
02487555544, 'S');
INSERT INTO PessoaJuridica VALUES('Confeitaria BomBom', 2235874, 'Av Brasil 1500', 111111111111111, 0);
Bancos de Dados – AbordagensSGBD OR
PostgreSQL
Prof. Marcos R. Cardoso
SELECT nome FROM PessoaFisica;
SELECT nome FROM PessoaJuridica;
SELECT nome FROM Pessoa;
SELECT nome FROM ONLY Pessoa;
Bancos de Dados – SGBDFuncionamento
Produtos• PostgreSQL
• Illustra
• Omniscience / Oracle Lite
• UniSQL
• Valentina
• Versões recentes de DB2, Oracle e SQL Server
Prof. Marcos R. Cardoso