MODELO HIERÁRQUICO Ana Carolina Salgado Fernando Fonseca Valéria Times Modelo Hierárquico de Dados Desenvolvido para modelar os muitos tipos de organizações hierárquicas existentes no mundo real Esquemas de classificação para espécies dos reinos animal e vegetal Classificação de línguas humanas Corporações Hierarquias governamentais Representa organizações hierárquicas de forma direta e natural Modelo Hierárquico de Dados Apresenta problemas quando representa relacionamentos não-hierárquicos Não existe nenhum documento original para descrever o modelo Apareceram sistemas TIME-SHARED DATA MANAGEMENT (TDMS) System Development Corporation MULTI-ACCESS RETRIEVAL SYSTEM (MARS VI) Control Data Corporation Modelo Hierárquico de Dados INFORMATION (IMS) IBM MANAGEMENT SYSTEMS Estruturas de Banco de Dados Hierárquicos Conceitos Estruturais Principais Registro Coleção de campos de valores que provêm informação sobre uma entidade ou relacionamento Registros de um mesmo tipo são agrupados em um tipo de registro É dado um nome Sua estrutura é definida por uma coleção de nomes de campos (itens de dados) Cada campo tem um tipo de dado como inteiro, real, etc. Estruturas de Bancos de Dados Hierárquicos Conceitos Estruturais Principais (Cont.) Relacionamento Pai-Filho Relacionamento 1:N entre dois tipos de registros O tipo de registro pai está do lado 1: do relacionamento, enquanto o tipo filho está do lado :N Uma ocorrência do relacionamento ou tipo pai-filho consiste de um registro do tipo pai e um número qualquer (zero ou mais) do tipo filho Esquema de BD Hierárquico Consiste de um dado número de esquemas hierárquicos ou hierarquias Cada hierarquia consiste de um um número de tipos de registros e de relacionamentos paifilho Diagrama Hierárquico Forma visual de mostrar um esquema hierárquico Tipos de registros são mostrados em retângulos Relacionamentos pai-filho são representados por linhas conectando pai e filho Diagrama Hierárquico DEPARTAMENTO DNOME DNÚMERO DGER EMPREGADO NOME NASC CPF PROJETO SAL PNOME PNUMER PLOCAL TIPOS DE REGISTROS (DEP.,EMP., PROJ.) RELACIONAMENTO PAI-FILHO: PAI-FILHO DEPARTAMENTO-PROJETO Esquema Hierárquico Propriedades Um tipo de registro, chamado de raiz não participa de relacionamentos como registro filho Cada tipo de registro, exceto a raiz, participa de exatamente um relacionamento como registro filho Um tipo de registro pode participar de qualquer número de relacionamentos como registro pai Esquema Hierárquico Propriedades (Cont.) Um tipo de registro que não participa de nenhum relacionamento como registro pai, é chamado de folha Se um tipo de registro participa em mais de um relacionamento como registro pai, então seus tipos de registros filhos são ordenados No diagrama hierárquico, por convenção, a ordenação é da esquerda para a direita Esquema Hierárquico Um esquema hierárquico define uma estrutura de dados em árvore Tipos de registros são nós Tipos de relacionamentos são arcos Representação de Relacionamentos M:N Através da duplicação de instâncias do registro filho PROJETO M:N EMPREGADO Esquema Hierárquico PROJETO EMPREGADOS TRAB. NO PROJ. A E1, E3, E5 B E2, E4, E6 C E1, E4 D E2,E3,E4,E5 Relacionamentos Pai-Filho Virtuais Problemas do Modelo Hierárquico M:N Tipos de registros participarem como filhos em mais de um relacionamento Esquema Hierárquico Problemas (Cont.) Relacionamentos com mais de dois tipos de registros Casos 1 e 2 podem ser resolvidos por duplicação Gasto de armazenamento Manter consistência nas cópias de um mesmo registro Caso 3 Tipos de relacionamentos hierárquicos são binários Esquema Hierárquico Solução Utilizar um tipo de registro virtual PONTEIRO Cada um dos seus registros contém um ponteiro para um registro de outro tipo Criar um relacionamento pai-filho entre um dos tipos de registro e o virtual Criar um relacionamento virtual entre o outro tipo de registro (pai virtual) e o registro virtual (filho virtual) Esquema Hierárquico Relacionamento PROJETO Virtual No diagrama, uma seta sairá do filho virtual para o pai virtual Hierarquia 1 Hierarquia 2 PROJETO EMPREGADO EPONTEIRO EMPREGADO Restrições de Integridade Nenhuma ocorrência de registro, exceto raízes, pode existir sem estar relacionada a uma ocorrência de registro pai Um registro filho não pode ser inserido sem estar ligado a um registro pai Um registro filho pode ser removido independentemente de seu registro pai A remoção de um registro pai resulta em todos os seus filhos e descendentes sendo removidos automaticamente Restrições de Integridade Um ponteiro num filho virtual tem que apontar para um registro pai virtual existente A remoção de um registro pai virtual não deve ser permitida enquanto existirem ponteiros de registros filhos virtuais Se um registro filho tiver dois ou mais registros pais de um mesmo tipo de registro, deve ser duplicado para cada registro pai Um registro filho tendo dois ou mais pais de tipos de registros diferentes, deve ter no máximo um pai real e todos os outros virtuais Regras particulares a cada SGBD implementado Um Exemplo Modelo Hierárquico de uma Companhia Departamentos descritos por Nome e Número Locais descritos por um Código e Endereço Projetos descritos por Nome, Número e Local Empregados descritos por Nome, CPF e Salário Dependentes descritos por Nome, Nascimento e Parentesco Um Exemplo Considerar também Cada Departamento está situado em vários locais Cada Projeto é da responsabilidade de um único Departamento Empregados estão alocados a um único Departamento. Eles podem atuar em mais de um Projeto e vice-versa Cada Empregado pode ter vários Dependentes, mas cada um desses só pode estar ligado a um único Empregado Um Exemplo Empregados são supervisionados por um único Empregado. Um Departamento pode ter mais de um gerente e deseja-se guardar a data de início de cada um deles como gerente. Porém, cada Empregado gerencia um único Departamento. DEPARTAMENTO DNOME EMPREGADO DNÚMERO ENOME ECPF ESAL LOCAL PROJETO SUPERVISÃO LCOD END PNOME PNUM PLOC PTS GERENTE TRABALHA INÍCIO PTG PODE ATUAR PTP PTE DEPENDENTE ATUA HORAS PTT HIERARQUIA 1 DPNOME DPNASC DPPAR HIERARQUIA 2 Definição de Dados Linguagem Hierárquica de Definição de Dados HDDL Para definir um Esquema de BD Hierárquico Definir campos de cada tipo de registro Definir tipos de dados de cada campo Definir chaves e restrições Determinar raízes Para cada registro não-raiz determinar o pai Especificar relacionamentos virtuais Definição de Dados Sintaxe schema name = < nome > hierarchies = < hierarchy 1 >, < hierarchy 2 >, ... /*Raiz*/ record name = < nome > type = root of < hierarchy n > data items = < nomes de campo > < tipo > key = < campo(s) > [ order by < campo(s) >] Definição de Dados Sintaxe (Cont.) /*Outros*/ record name = < nome > parent = < registro pai > child number = < número de ordem > data items = < nomes de campo > < tipo > key = < campo(s) > [ order by < campo(s) >] Definição de Dados Sintaxe (Cont.) /*Registro Virtual*/ ... data items = [ < nomes de campo > < tipo > ] < nome do ponteiro > pointer with virtual parent = < pai virtual > Definição de Dados - Exemplo schema name = Companhia hierarchies = Hierachia 1, Hierarchia 2 /*Raiz*/ record name = Empregado type = root of Hierarchia 2 data items = Enome character 15 ECPF character 12 Esalário real key = ECPF order by Enome Definição de Dados - Exemplo /*Outros*/ record name = Dependente parent = Empregado child number = 1 data items = DPnome character 20 DPnasc date Dppar character 10 key = DPnome order by DPnasc Definição de Dados - Exemplo /*Registro Virtual*/ record name = Supervisão parent = Empregado child number = 2 data items = PTS pointer with virtual parent = Empregado Vantagens e Desvantagens Vantagens: Adequação a aplicações com estrutura arborescente Simplicidade sobretudo na implementação Interessante para aplicações cuja utilização é conhecida a priori Comercialização bastante divulgada dos SGBD Desvantagens: Dificuldade de representação dos relacionamentos M:N entre entidades Anomalias para operações de atualização Independência lógica reduzida Ausência de interfaces declarativas