Modelo de Dados Objeto-Relacional - PowerPoint PPT Presentation

modelo de dados objeto relacional l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Modelo de Dados Objeto-Relacional PowerPoint Presentation
Download Presentation
Modelo de Dados Objeto-Relacional

play fullscreen
1 / 144
Modelo de Dados Objeto-Relacional
204 Views
Download Presentation
osmond
Download Presentation

Modelo de Dados Objeto-Relacional

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Modelo de Dados Objeto-Relacional Banco de Dados II – 2009.2 Bacharelado em Ciência da Computação UFCG Prof. Cláudio de Souza Baptista, Ph.D.

  2. Conteúdo Bancos de Dados Objeto-Relacional Modelo de Dados Objeto-Relacional Linguagem de Consultas Objeto Relacional Visão geral dos conceitos de orientação a objetos disponíveis no ORACLE 11g Extensões para criar Objetos Complexos O impacto da orientação a objetos em consultas SQL Integração OO-Relacional através de Visões de Objeto

  3. Banco de Dados Objeto-Relacional SGBDs Objeto-Relacional combinam os benefícios do modelo Relacional com a capacidade de modelagem do modelo OO Fornecem suporte para consultas complexas sobre dados complexos Atendem aos requisitos das novas aplicações e da nova geração de aplicações de negócios

  4. Banco de Dados Objeto-RelacionalModelos e Linguagens O modelo de dados OR é uma extensão do modelo Relacional As extensões incluem mecanismos para permitir aos usuários estender o banco de dados com tipos e funções específicas da aplicação A linguagem de consulta OR é uma extensão da linguagem SQL para suportar o modelo de objetos As extensões incluem consultas envolvendo objetos, atributos multivalorados, TADs, métodos e funções como predicados de busca em uma consulta

  5. Modelo de Dados Objeto-Relacional Permite especificar e utilizar tipos abstratos de dados(TADs) da mesma forma que os tipos de dados pré-definidos TADs são tipos de dados definidos pelo usuário que encapsulam comportamento e estrutura interna (atributos) A tabela convencional é estendida para permitir a referência de objetos (referência de tipos), TADs e valores alfanuméricos como domínio de colunas

  6. Modelo de DadosObjeto-Relacional Utiliza referências para representar conexões inter-objetos tornando as consultas baseadas em caminhos de referência mais compactas do que as consultas feitas com junção Herança é implementada organizando todos os tipos em hierarquias Utiliza os construtores set, list, multiset ou array para organizar coleções de objetos

  7. Benefícios do Modelo de Dados Objeto-Relacional Nova Funcionalidade Aumenta indefinidamente o conjunto de tipos e funções fornecidas pelo SGBD Desenvolvimento de aplicações simplificado Reuso de código Consistência Permite a definição de padrões, código reusável por todas as aplicações

  8. Linguagem de Consultas paraBancos de Dados Objeto-Relacional O resultado de uma consulta ainda consiste de tabelas Um SGBD Objeto-Relacional ainda é relacional pois suporta dados armazenados em tabelas formadas por linhas e colunas A linguagem de consultas para BDOR é uma extensão da linguagem SQL, utilizada para definição e manipulação de dados e consultas

  9. SQL:1999 (SQL-3) É a base para muitos SGBDs OR (Oracle11g, Informix Universal Server, IBM’s DB2 Universal Database, entre outros) Também está sendo chamada de SQL:1999 e tem sido caracterizada como “SQL Orientada a Objetos” SQL:1999 é muito mais do que SQL-92 incrementada com a tecnologia de OO. Envolve características adicionais que podem ser classificadas em: Relacionais: novos tipos de dados, novos predicados Orientadas a Objetos:tipos de dados definidos pelo usuário, definição de métodos, uso de referências

  10. O que tem no SQL:1999? • Multi-part standard — ISO/IEC 9075-n:1999 • Part 1: SQL/Framework • Part 2: SQL/Foundation • Part 3: SQL/CLI • Part 4: SQL/PSM • Part 5: SQL/Bindings

  11. Part 1: SQL/Framework • Definições comuns e conceitos • Estrutura do padrão multi-parte • Estrutura para conformidade básica • Possui cerca de 75 páginas

  12. Part 2: SQL/Foundation • O cerne do padrão • Omite host language bindings, dynamic SQL, call interface, e questões semelhantes • SQL tradicional e • SQL orientando a objetos! • Cerca de 1100 páginas

  13. Part 3: CLI • Call-Level Interface • Melhor implementação: ODBC • Alinhado com SQL:1999 features e ODBC 3.0 features • Cerca de 400 páginas

  14. Part 4: SQL/PSM • PSM-96 especificou: • functions & procedures • SQL-server modules • computational completeness • PSM-99 specifica: • SQL-server modules • computational completeness • Análogo a PL/SQL, Transact-SQL, etc. • Cerca de 160 páginas

  15. Part 5: SQL/Bindings • Embedded SQL (SQL embutido) • Dynamic SQL • “Direct Invocation” • Cerca de 250 páginas • Tendência: ser incorporado na Part 2!!!!

  16. Novas partes do SQL • Part 7: SQL/Temporal • Part 9: SQL/MED (Management of External Data) • Part 10: SQL/OLB (Object Linking Binding) • JDBC e SQLJ • SQL/OLAP • SQL/MM: Spatial, Text, Image

  17. Part 2: SQL/Foundation • Estamos interessados neste curso na parte do padrão que trata de Orientação a Objetos: • Tipos de dados definidos pelo usuário • Atributos & comportamento • Encapsulamento: funções & métodos • Observers & mutators • Hierarquias de tipos (herança simples) • User-defined CAST, ordenação • Tabelas tipadas & tipos referência

  18. Tipos de Dados Definidos pelo Usuário • UDT – User Defined Types • Evolução dos tiposem SQL: • Semprehouveostiposembutidos (built-in) como: INTEGER, SMALLINT, CHAR, VARCHAR, DATE, TIME e TIMESTAMP • Algunstiposproprietários: Oracle NUMBER e RAW; Sybase SMALLMONEY e IMAGE • Apósalgunsanos, surgiram BLOB e CLOB com semânticalimitada! • Houvealgumastentativas de DBMS vendors de proporsoluçõesparacertostipos de dados específicos: texto, GIS, imagens e time series

  19. UDT • Entretanto, o que se queria era uma solução mais genérica que pudesse estender o SGBD com tipos específicos: • Solução: UDT!!!! • Obs.: o termo User em UDT não quer dizer usuário final!

  20. UDT • Definição: Um UDT é um tipo que não é embutido em um SGBD ou linguagem de programação, mas que pode ser definido como parte de um desenvolvimento de uma ou mais aplicações, com possível comportamento definido em sua criação. (adaptada de Jim Melton: Advanced SQL:1999, Morgan Kauffman, 2003)

  21. Tipos definidos pelo usuário • Três tipos de UDT: • Distinct types • Structured types • Reference types

  22. Distinct Types • Baseados em tipos embutidos • CREATE TYPE QI AS INT FINAL • Não pode misturar o tipo fonte e o tipo distinto e m expressões • DECLARE VARIABLE X INTEGER; • DECLARE VARIABLE Y QI; • ...X+Y --INVALID EXPR! • ...X+CAST(Y AS INTEGER) --OK

  23. Distinct Types CREATE TYPE TAMBLUSA AS INT FINAL; CREATE TYPE NUMSAPATO AS INT FINAL; CREATE TABLE pessoas ( nome VARCHAR (30), calca NUMSAPATO, veste TAMBLUSA, );

  24. Distinct Types Uso incorreto: SELECT nome FROM Pessoas WHERE calca > veste;

  25. Distinct Types Uso correto: SELECT nome FROM Pessoas WHERE CAST(calca TO INTEGER) > CAST(veste TO INTEGER);

  26. Distinct Types Uso incorreto: SELECT nome, calca + 20 FROM Pessoas WHERE veste > 7;

  27. Distinct Types Uso correto: SELECT nome, CAST (calca TO INTEGER) + 20 FROM Pessoas WHERE CAST(Veste TO INTEGER) > 7;

  28. Structured Types • Também conhecidos como “abstract data types” (Tipos Abstratos de Dados) • Pode conter uma estrutura arbitrariamente complexa • Análogo a struct na linguagem C • Stored data => state => attributes • Behavior => semantics => methods & functions & procedures

  29. Atributos • • “Stored data” • Cada atributo pode ser: • Tipo embutido, incluindo coleção • Tipo definido pelo usuário • O sistema gera uma função “get” (observer) e uma função “set” (mutator) para cada atributo — not overloadable

  30. Encapsulamento • Esconde implementação dos usuários • Permite que a implementação mude sem afetar as aplicações — desde que a interface provida permaneça constante • Aplicações acessam tudo através da interface funcional, incluindo os atributos usando as funções observer e mutator

  31. Procedures, Funções, Métodos • Conceito genérico: rotina => procedure, function, method — normalmente “stored” • Procedure: parâmetros de input & output invocada usando o comando “CALL” • Função: apenas parâmetro de input (output retornado como valor da função); invocado usando a notação funcional • Métodos: caso especial de funções

  32. Procedures, Funções, Métodos • Procedures • Pode ser overloaded: mesmo nome, com números diferentes de parâmetros • Tipos de dados dos argumentos não utilizados para overloading • Em qualquer esquema, não ligado a um tipo estruturado.

  33. Procedures, Functions, Methods • Functions: • Podem ser overloaded • Funções múltiplas com o mesmo nome, mesmo número de parâmetros • Distintos pelos tipos de dados dos argumentos • Mas…usado apenas em tempo de compilação não em tempo de execução • Em qualquer esquema, não ligado a um tipo estruturado

  34. Procedures, Functions, Methods • Métodos • Podem ser overloaded • Fortemente acoplado a um único tipo estruturado • Deve estar no mesmo esquema da definição do tipo • First argument implicit, distinguished — • Tipo do argumento é associado ao tipo estruturado • Todos argumentos, exceto o primeiro usado o tipo declarado para resolução, o primeiro argumento usa o tipo mais específico do runtime

  35. Notação: ponto (.) vs funcional • Notação de ponto: a.b.c • Notação funcional: c(b(a)) • Funções DEVEM usar a notação funcional • Métodos DEVEM usar a notação de ponto • Observer: SELECT EMP.AGE FROM... • Mutator: SET EMP.AGE = 10

  36. Diferenças Funções e Métodos

  37. Tipos de métodos • Há dois tipos de métodos: • Static methods: opera no tipo de dados propriamente dito • Instance methods: opera na instância de um tipo.

  38. Declaração de Métodos • Há dois lugares para definição de métodos • Declaração: os métodos são declarados (suas assinaturas) na definição do tipo de dados • Implementação: a implementação dos métodos ficam em outro lugar, utilizando-se de um comando SQL específico para tal fim. O código pode ser escrito em SQL ou em outra linguagem de programação como Java e C++

  39. Exemplo: Método CREATE TYPE Filme AS ( título varchar (100), descricao varchar (500), duracaoMinutos int) NOT FINAL METHOD duracaoEmHoras() RETURNS INTERVAL HOUR(2) TO MINUTE

  40. Exemplo: Método CREATE INSTANCE METHOD duracaoEmHoras ( ) RETURNS INTERVAL HOUR(2) TO MINUTE FOR Filme RETURN CAST (CAST (SELF.duracao AS INTERVAL MINUTE(4)) AS INTERVAL HOUR(2) TO MINUTE)

  41. Chamada a Métodos • Ex.: CREATE TABLE tb_Filme ( cod int, info filme, aluguel DECIMAL(5,2))

  42. Chamada a Método Recupere a duração em horas e minutos do filme ‘Ghost’ SELECT mt.info.duracaoEmHoras( ) FROM tb_Filme AS mt WHERE mt.info.titulo = ‘Ghost’

  43. Encapsulamento • Considere: • CREATE TYPE rational AS ( numerator INTEGER, denominator INTEGER ) • Funções implícitas: • CREATE FUNCTION numerator (rational) RETURNS INTEGER • CREATE FUNCTION numerator (rational, INTEGER) RETURNS rational

  44. Construtores • Nenhum “new object” é criado, ao invés usa-se da seguinte forma: DECLARE VARIABLE ratvar rational; SET ratvar = rational(5,7); INSERT INTO table1 (ratcol) VALUES (rational(13,131));

  45. Construtores • Construtor default gerado pelo sistema: CREATE FUNCTION rational() RETURNS rational • Overloadable: qualquer número de construtores definidos pelo usuário: • CREATE FUNCTION rational(numer,denom) RETURNS rational • CREATE FUNCTION rational(denom) RETURNS rational

  46. Exemplo // Ponto em coordenadas polares que pode retornar coordenadas cartesianas CREATE TYPE ponto AS ( rho REAL, theta REAL, … ) NOT FINAL METHOD x_coord ( ) RETURNS REAL METHOD y_coord ( ) RETURNS REAL CREATE INSTANCE METHOD x_coord ( ) RETUNRS REAL FOR ponto RETURN cos(SELF*theta)*SELF*rho CREATE INSTANCE METHOD y_coord( ) RETURNS REAL FOR ponto RETURN sin(SELF.theta)*SELF.rho

  47. Sintaxe Tipo estruturado CREATE TYPE name [ UNDER supertype-name ] AS ( attrib-name type,... ) [ [ NOT ] INSTANTIABLE ] [ NOT ] FINAL [ REF ref-options ] [ method-spec,... ]

  48. Sintaxe Tipo estruturado • REF ref-options => • User-defined: REF USING predefined-type [ ref-cast-option ] • Derived: REF ( attrib-name, ... ) • System-generated: REF IS SYSTEM GENERATED

  49. Sintaxe Tipo estruturado • method-spec => • Método original: [ INSTANCE | STATIC ] METHOD name ( param-name type,... ) RETURNS type • Método sobrescrito: OVERRIDING original-method

  50. Remoção de um UDT DROP TYPE nome <CASCADE|RESCRICT>