Abordagem g de SGBD Abordagem = tipo de modelo lógico Históricas hierárquica rede Atuais relacional l i l orientada a objeto Abordagens clássicas/1 Tipos de modelos lógicos de SGBD Desde o fim da década de 60 diversos SGBD comerciais foram construídos. Alguns tipos básicos de SGBD estabeleceram-se na prática. Abordagem hierárquica p IBM teve IMS,, largamente g utilizado durante a década de 70 e Importância: início da década de 80. Abordagem em rede Grande G a de família a a de SG SGBDss baseada e em u um pad padrão ão ANSI S Originário do IDMS (BF Goodrich, depois Culinane) Exemplos: IDMS, IDS/2, RDBMS (Digital), … Abordagem relacional Base: trabalhos teóricos de Codd (IBM) procurando um modelo lógico independente de detalhes de implementação Década de 70: pesquisa e construção de diversos protótipos. protótipos Mais importantes são: System R (IBM), precursor do DB2 INGRES (Stonebraker, (Stonebraker Universidade da Califórnia) Califórnia), precursor do produto comercial de mesmo nome Abordagens clássicas/2 Comparação entre abordagens Aspectos Comparação da estrutura de dados Construções que compõe uma base de dados na abordagem Comparação das instruções de acesso a dados DML fictícia mínima destinada apenas a comparar as abordagens DML opera registro-a-registro registro a registro (não há operações que tratam conjuntos de dados) Comparação das instruções de alteração Será verificado como alterações são implementadas em cada modelo lógico Comparação da independência de dados Abordagens clássicas/3 Exemplo p usado Informações armazenadas: Para cada peça: código, nome, cor, peso e cidade em que se encontra Para cada fornecedor: código, nome, status e cidade Para cada P d embarque: b f fornecedor d que ffez o embarque, b peça embarcada, b d quantidade embarcada Operações consideradas: Buscar os nomes dos produtos embarcados por um fornecedor de código dado. Buscar os nomes dos fornecedores que embarcaram um produto de código dado. Incluir um produto e um fornecedor Excluir um produto e um fornecedor Alterar os nome de um produto e o nome de um fornecedor Abordagens clássicas/4 Abordagem g hierárquica q Importância: IBM teve IMS (DL/1), largamente utilizado durante a década de 70 e início da década de 80 Próprio P ó i IMS estendeu t d o modelo d l hi hierárquico á i ainda i d na dé década d d de 70 Poucos produtos além de IMS Ainda aparece em sistemas legados Abordagens clássicas/5 Abordagem g hierárquica q - estrutura de dados Um BD hierárquico é uma floresta composta de árvores de registros Há dois tipos básicos de construção registro (chamado segmento em IMS) ligação pai-filho entre os registros Restrição: um determinado registro somente pode possuir um registro pai Abordagens clássicas/6 Esquema q gráfico g de um BD hierárquico q Peça CodPeça NomePeça CorPeça PesoPeça CidadePeça definição de tipo de relação “pai-filho” p Fornec CodFornec NomeFornec StatusFornec CidadeFornec QtdeEmbarc definição de tipo de registro Abordagens clássicas/7 Um estado da base de dados IMS Peça P1 Eixo Cinza 10 Um possível conteúdo da base de dados IMS de produtos e fornecedores (instância, ocorrência da base de dados) dados). PoA Fornec F3 F2 Álvares 5 Souza F1 Sil Silva 10 5 São Paulo 200 Rio 400 Sã P São Paulo l 300 Peça P2 Rolamento Preto 16 Rio Fornec F4 Tavares F1 Silva 8 5 Rio São Paulo 350 300 Peça P3 Mancal Verde 30 SãoPaulo Abordagens clássicas/8 Exemplo p de esquema q IMS (BD ( acadêmico)) Um registro pai pode possuir filhos de tipos diferentes A hierarquia pode estender-se por diversos níveis Curso Cód Nome Aluno C dAl CodAl Disciplina N NomeAl Al D t I DataIngr CodDisc NomeDisc ObrOpcDisc Histórico CodDisc NomeDisc CredDisc Conceito AnoSem Abordagens clássicas/9 Instruções ç de acesso a dados g get next <record name> [ [where <select criteria>] ] Esta instrução busca um registro raíz que obedece a determinado critério com base em valores de seus campos get next <record name> under this [where <select criteria>] Esta instrução busca um registro que 1 - é filho do registro corrente 2 - obedece a determinado critério Abordagens clássicas/10 Exemplos p de acessos a dados Consulta 1 Buscar os nomes dos fornecedores que embarcaram o código P2 get t next t Peça P where h C dP CodPeça='P2'; 'P2' produto de do until no more Fornec under this; get next Fornec under this; g print NomeFornec; end; Abordagens clássicas/11 Exemplos p de acessos a dados Consulta 2 Buscar os nomes das peças embarcadas pelo fornecedor F1: do until no more Peça; get next Peça; get next Fornec under this where CodFornec = 'F1'; if found then print NomePeça; end; Abordagens clássicas/12 Assimetria na abordagem g IMS O problema das peças e fornecedores é simétrico. A abordagem g IMS força ç uma assimetria inexistente na realidade modelada. O modelador tem que escolher um tipo de registro pai com base em considerações de performance. Consultas simétricas são resolvidas de forma diferente S Somente t problemas bl hi hierárquicos á i são ã modelados d l d adequadamente d d t na abordagem hierárquica Abordagens clássicas/13 Operações p ç de modificação ç da base de dados - Inclusão Incluir um novo fornecedor (sem embarques) criar um registro “fantasma” de peça Anomalia de inclusão Uma operação que do ponto de vista da realidade modelada inclui um ú i único objeto bj t é implementada i l t d na base b d dados de d d pela l inclusão i l ã de d múltiplos objetos É conseqüência da redundância de dados Abordagens clássicas/14 Operações p ç de modificação ç da base de dados - Exclusão A exclusão do último embarque de um fornecedor implica na exclusão de seus dados A exclusão da única peça fornecida por um fornecedor implica na exclusão de seus dados Para resolver o problema, fornecedores sem embarques teriam que ser movidos para baixo de um registro fantasma Anomalia de exclusão Abordagens clássicas/15 Operações p ç de modificação ç da base de dados - Alteração ç A alteração de um campo de um fornecedor implica em busca em toda base de dados Anomalia de alteração Abordagens clássicas/16 Análise da abordagem g hierárquica q Adequada somente para problemas hierárquicos Em caso de problemas não hierárquicos cria: Redundância de dados Assimetrias indesejáveis na representação de dados e na programação Anomalias nas instruções de modificação da base de dados Porque abordagem hierárquica foi f usada? ? Performance Modelava a idéia de armazenar contiguamente um registro pai e seus vários filhos IBM fez cedo uma reforma introduzindo o conceito de pai-filho lógico Permitia P iti estabelecer t b l relações l õ entre t dif diferentes t á árvores e d de ffato t implementar o modelo em rede (ver adiante) Abordagens clássicas/17 Abordagem g em rede Grande família de SGBDs baseada em um padrão estabelecido na década de 70 Padrão CODASYL/DBTG Precursores forma sistemas de gerência de arquivos e ponteiros como TOTAL Originário do IDMS (BF Goodrich, Goodrich depois Culinane) Depois adotado por muitos fornecedores de Hardware Abordagens clássicas/18 Abordagem g em rede: estrutura de dados BD em rede é um grafo nós = registros arcos = ligações entre registros Há dois tipos básicos de construção registro (“record type”) ligação pai-filho entre os registros (“set type”) Não há a restrição da abordagem hierárquica: um determinado registro pode possuir diversos registros pai. A única restrição é que, em um tipo de ligação, um registro somente pode participar uma vez Abordagens clássicas/19 Esquema q gráfico g de um BD em rede - Exemplo p dos fornecedores e peças p ç Peça CodPeça NomePeça CorPeça PesoPeça CidadePeça definição de tipo de relação “pai-filho” Peça Embarq Peça-Embarq Embarq QtdeEmbarc Fornec-Embarq Fornec Embarq definição de tipo de g registro Fornec CodFornec NomeFornec StatusFornec CidadeFornec Abordagens clássicas/20 Conteúdo da base de dados em rede ((Peças ç e Fornecedores)) Peça P1 Peça Eixo Cinza 10 PoA Peça P2 Rolamento Preto 16 Rio P3 Mancal Verde 30 SãoPaulo Peça-Embarq Embarq 400 300 200 300 350 Fornec-Embarq Fornec F1 Silva Fornec 5 São Paulo F2 Souza 10 Rio Fornec F3 Álvares 5 São Paulo Fornec F4 Tavares 8 Rio Abordagens clássicas/21 Exemplo de esquema em rede do BD acadêmico Curso Cód Nome CurAl Ingr CurCurric DataIngr Curric ObrOpcDisc AlIngr g Aluno CodAl NomeAl DiscCurric Disciplina AlHist CodDisc Histórico Conceito AnoSem NomeDisc CredDisc DiscHist Abordagens clássicas/22 Instruções ç de acesso a dados - abordagem g em rede (1) ( ) Na abordagem de rede são necessárias duas instruções de acesso a dados semelhantes às da abordagem hierárquica: get next <record name> where <select criteria> Esta instrução busca um registro de um tipo (<record name>) que obedece a determinado critério (<select criteria>) com base em valores de seus campos Não está restrita a registros raiz get next <record name> under this in <set name> where <select criteria> Esta instrução busca um registro de um tipo (<record name>) que obedece a determinado critério (<select criteria>) e que é filho do registro corrente dentro da ligação (<set name>) indicada. indicada Abordagens clássicas/23 Instruções ç de acesso a dados - abordagem g em rede (2) ( ) Adicionalmente, aparece uma instrução própria da abordagem em rede para buscar um registro pai (<record name>1) de um filho em uma cadeia dada (<set name>) get <record name>1 over this in <set name> Abordagens clássicas/24 Exemplos p de acessos a dados -abordagem g em rede Consulta 1 Buscar os nomes dos fornecedores que embarcaram o código P2 produto de get next Peça where CodPeça='P2'; do until no more Embarq under this in Peça Peça-Embarq; Embarq; get next Embarq under this in Peça-Embarq; get Fornec over this in Fornec-Embarq; print NomeFornec; end; Abordagens clássicas/25 Exemplos p de acessos a dados - abordagem g em rede Consulta 2 Buscar os nomes das peças embarcadas pelo fornecedor F1 get next Fornec where CodFornec='F1'; do until no more Embarq under this in Fornec-Embarq; get next Embarq under this in Fornec Fornec-Embarq; Embarq; get Peça over this in Peça-Embarq; print NomePeça; end; end Abordagens clássicas/26 Simetria na abordagem g em rede O problema das peças e fornecedores que é simétrico do ponto de vista da realidade implementada Õ tratado de forma simétrica na abordagem em rede A abordagem em rede modela o problema e as consultas simetricamente. Abordagens clássicas/27 Operações p ç de modificação ç da base de dados - abordagem g em rede Na abordagem em rede, não aparecem as anomalias de alteração que podem aparecer na abordagem hierárquica Para incluir um novo fornecedor (sem embarques) é necessário criar apenas um registro de fornecedor A exclusão do último embarque de um fornecedor não implica na exclusão de seu registro A exclusão l ã d de uma peça não ã iimplica li na exclusão l ã d de seus ffornecedores d (apenas de seus embarques) A alteração ç de um campo p de um fornecedor implica p em alteração ç de um registro somente Abordagens clássicas/28 Análise da abordagem g em rede Não está restrita a problemas hierárquicos. O programador tem que conhecer as ligações existentes na base de dados (navegação explícita) Õ Independência de dados fica prejudicada, pois a criação/eliminação de ligações implica em alterações dos programas Abordagens clássicas/29 Abordagem g relacional: estrutura de dados Um BD relacional é composto por um único tipo de construção: Tabela: T b l composta t por linhas li h (tuplas) (t l ) e colunas l ( t ib t ) (atributos). As ligações entre linhas de diferentes tabelas são feitas através do uso de valores de atributos. atributo ou coluna Tabela Dept p CódigoDepto NomeDepto D1 Marketing D2 Engenharia D3 Financeiro Tabela Emp Código Nome CódigoDepto CategFuncional E5 Souza D1 C5 E3 Santos D2 C5 E2 Silva D1 C2 E1 Soares D1 C6 linha ou tupla chave estrangeira ou importada da tabela Dept chave primária Abordagens clássicas/30 Esquema gráfico de um BD relacional Exemplo dos fornecedores e peças Peça ç CodPeça NomePeça CorPeça PesoPeça CidadePeça representa o fato deCodPeça em Embarq ser chave estrangeiraem relação aCodPeça em Peça (não é uma ligação explícita) Embarq CodPeça CodFornec QtdeEmbarc definição de tabela Fornec CodFornec NomeFornec StatusFornec CidadeFornec Atributos sublinhados indicam a chave primária da tabela Abordagens clássicas/31 Conteúdo da base de dados relacional ((Peças ç e Fornecedores)) Peça CodPeça P1 P2 P3 NomePeça Eixo Rolamento Mancal CorPeça Cinza Preto Verde Embarq CodPeça P1 P1 P1 P2 P2 PesoPeça 10 16 30 CidadePeça PoA Rio SãoPaulo CodFornec F1 F2 F3 F1 F4 QtdeEmbarc 300 400 200 300 350 Fornec CodFornec F1 F2 F3 F4 NomeFornec Silva Souza Álvares Tavares StatusFornec 5 10 5 8 CidadeFornec SãoPaulo Rio SãoPaulo Rio Abordagens clássicas/32 Exemplo p de esquema q relacional do BD acadêmico Curso CódCur NomeCur Ingr CódCur CodAl DataIngr Curric CódCur CodDisc ObrOpcDisc Aluno CodAl NomeAl Disciplina Histórico CodDisc NomeDisc CredDisc CodAl CodDisc AnoSem Conceito Abordagens clássicas/33 Instruções ç de acesso a dados - abordagem g relacional Como na abordagem relacional há somente um tipo de construção (a tabela), apenas uma instrução de acesso a dados é necessária: get next <table name> where <select criteria> Esta instrução busca uma linha (tupla) da tabela (<table name>) que obedece a determinado critério (<select criteria>) com base em valores de seus atributos Abordagens clássicas/34 Exemplos p de acessos a dados - abordagem g relacional Consulta 1 Buscar os nomes dos fornecedores que embarcaram o código P2 produto de do until no more Embarq; get t next t Embarq E b where h C dP CodPeça='P2'; 'P2' get next Fornec where Fornec.CodFornec=Embarq.CodFornec; print NomeFornec; end; Abordagens clássicas/35 Exemplos p de acessos a dados - abordagem g relacional Consulta 2 Buscar os nomes das peças embarcadas pelo fornecedor F1 do until no more Embarq; get next Embarq where CodFornec='F1'; get next Peça where Peça.CodPeça Embarq.CodPeça; Peça.CodPeça=Embarq.CodPeça; print NomePeça; end; Abordagens clássicas/36 Simetria na abordagem g relacional O problema das peças e fornecedores é simétrico. A abordagem relacional modela o problema e as consultas simetricamente. Abordagens clássicas/37 Operações p ç de modificação ç da base de dados - abordagem g relacional Na abordagem relacional não aparecem as anomalias de alteração que podem d aparecer na abordagem b d hi hierárquica á i Para incluir um novo fornecedor (sem embarques) é necessário criar apenas uma linha na tabela de fornecedores. A exclusão do último embarque de um fornecedor não implica na exclusão de sua linha da tabela de fornecedores. A exclusão de uma peça não implica na exclusão de seus fornecedores (apenas de seus embarques). A alteração de um campo de um fornecedor implica em alteração de uma linha somente. Abordagens clássicas/38 Análise da abordagem g relacional Não Nã está tá restrita t it a problemas bl hi hierárquicos. á i Não há ligações e explícitas. plícitas Independência de dados aumenta aumenta, pois programas não são influenciados pela existência ou não de caminhos de acesso. Abordagens clássicas/39