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
Top Related