Bancos de Dados Abordagens de SGBD Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD 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 – Abordagens SGBD 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 – Abordagens SGBD 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 – Abordagens SGBD Hierárquico Exemplo 1 Funcionário CD_FUNC NM_FUNC DS_ENDERECO 10 João Rua XV de Novembro 11 Maria Rua Paraíba 12 Cláudio Rua Itajaí Filho_Funcionario CD_FILHO NM_FILHO CD_FUNC 1 João Júnior 10 2 Gabriela 10 Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD Hierárquico Exemplo 2 (auto-relacionamento) Funcionário CD_FUNC NM_FUNC DS_ENDERECO 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 CD_CHEFE Bancos de Dados – Abordagens SGBD Hierárquico Produtos • IMS • MUMPS • DMSII • FOCUS Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD 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 – Abordagens SGBD 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 – Abordagens SGBD Rede Vantagens • Facilidade de implementação • Agilidade nas consultas Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD Rede Exemplo Funcionario Projeto Pedro Projeto 1 Márcio Projeto2 José Antônia Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD Rede Produtos • TurboIMAGE • IDMS • RDM Embedded Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD Relacional Em 1970, Codd idealizou o modelo relacional utilizando-se da Álgebra Relacional (teoria dos conjuntos) Marco na história dos BD Ambiente corporativo Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD 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 – Abordagens SGBD Relacional Em 1979, a empresa Ashton-Tate apresenta o dBase II Ocorre um crescimento extraordinário Borland compra a Ashton-Tate dBase seria SGBD? Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD Relacional Aspecto Estrutural • Tabelas (linhas e colunas) DEPARTAMENTO CD_DEPTO NM_DEPTO 100 Marketing 10.000,00 110 Manutenção 12.000,00 120 Pesquisa Prof. Marcos R. Cardoso VL_ORCAMENTO 7.000,00 Bancos de Dados – Abordagens SGBD Relacional Restrição de Integridade DEPARTAMENTO CD_DEPTO NM_DEPTO 100 Marketing 110 Manutenção 120 Pesquisa FUNCIONARIO CD_FUNC NM_FUNC CD_DEPTO 10.000,00 1001 Maria 100 12.000,00 1002 José 100 7.000,00 1003 Paulo 110 VL_ORCTO Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD Relacional Manipulação dos dados • • • Restrição (linha) Projeção (coluna) Junção (mais de uma tabela) DEPARTAMENTO CD_DEPTO NM_DEPTO 100 Marketing 110 Manutenção 120 Pesquisa FUNCIONARIO CD_FUNC NM_FUNC CD_DEPTO 10.000,00 1001 100 Maria 12.000,00 1002 100 José 7.000,00 1003 110 Paulo VL_ORCTO Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD Relacional Exemplos: • DB2 • Oracle • SQL Server • MySQL • Interbase • SyBASE • Progress Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD 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 – Abordagens SGBD 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 – Abordagens SGBD 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 – Abordagens SGBD 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 – Abordagens SGBD 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 – Abordagens SGBD OO Produtos • Gemstone • Gbase • Vbase • Jasmine • ObjectStore • O2 Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD 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 – Abordagens SGBD OR Query SGBD Relacional SELECT C.Sobrenome||', '||C.PrimeiroNome FROM Clientes C, Enderecos A WHERE A.cdCidade = C.cdCidade AND A.nmCidade=“São Paulo” Query SGBD OR SELECT Formal(C.Nome) FROM Clientes C WHERE C.endereco.nmCidade = “São Paulo” Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR Exemplo Documentos 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} Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR Tipo complexo 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; Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR Herança 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; Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR SGBD Oracle /* 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; Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR SGBD Oracle /* descrevendo a estrutura */ SQL> DESC obj_pessoa; Nome Nulo? ------------------------------ -------CD_PESSOA NM_PESSOA NR_TELEFONE DT_NASCIMENTO Tipo ------------NUMBER(3) VARCHAR2(30) VARCHAR2(12) DATE METHOD -----MEMBER FUNCTION OBTER_IDADE RETURNS NUMBER Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR SGBD Oracle /* manipulação de dados */ SQL> INSERT INTO clientes VALUES (1, 'Joao Bento Goncalves', '4799999999', '01/02/1982'); 1 linha criada. Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR SGBD Oracle /* 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 Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR SGBD Oracle /* 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; Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR PostgreSQL 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); Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR PostgreSQL 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); Prof. Marcos R. Cardoso Bancos de Dados – Abordagens SGBD OR PostgreSQL SELECT nome FROM PessoaFisica; SELECT nome FROM PessoaJuridica; SELECT nome FROM Pessoa; SELECT nome FROM ONLY Pessoa; Prof. Marcos R. Cardoso Bancos de Dados – SGBD Funcionamento Produtos • PostgreSQL • Illustra • Omniscience / Oracle Lite • UniSQL • Valentina • Versões recentes de DB2, Oracle e SQL Server Prof. Marcos R. Cardoso