Your SlideShare is downloading. ×
Objeto relacional bases datos 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Objeto relacional bases datos 2

4,062
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,062
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
84
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Modelo Lógico Objeto-Relacional
  • 2. object-relational database management system (ORDBMS)
    Sistema de gestión de bases de datos (DBMS), similar a una base de datos relacional, pero con un modelo de base de datos orientada a objetos.
    Objetos, clases y herencia están soportados directamente en los esquemas de bases de datos y en el lenguaje de consulta.
  • 3. El objetivo básico de la base de datos objeto-relacional es cerrar la brecha entre bases de datos relacionales y las técnicas de modelado orientado a objetos utilizados en los lenguajes de programación como Java, C + +, Visual Basic. NET o C #.
  • 4. ¿cómo asignar los datos relacionales en objetos?
    Una primera idea podría ser mapear atributos de objetos a los campos en una tabla.
    Desafortunadamente, este enfoque no crea el mapa perfecto por varias razones.
    Los objetos no sólo almacenan datos simples en sus atributos. Pueden almacenar colecciones o relaciones con otros objetos.
    La mayoría de bases de datos relacionales - MySQL y mSQL entre otras- no tienen forma de modelar herencia.
  • 5. Reglas generales para el modelado objeto/relacional
    Cada clase persistente tiene una tabla de base de datos correspondiente.
    Campos de objetos con tipos de datos primitivos (enteros, caracteres, cadenas, etc) se asignan a columnas en la tabla de base de datos asociada.
    Cada fila de una tabla de base de datos corresponde a una instancia de su clase persistente asociada.
    Cada relación de objeto de muchos a muchos requiere una tabla de join al igual que las entidades de base de datos con muchos-a-muchos requieren tabla de joins.
    La herencia es modelada a través de una relación uno-a-uno entre las dos tablas que corresponden a la clase y subclase.
  • 6. El modelo de datos para una aplicación simple de libreta de direcciones
    direccion
    persona
    idDireccion(PK)
    Linea1
    Linea1
    Linea3
    Ciudad
    Provincia
    idPersona(PK)
    idDireccion(FK)
    Nombre
    Apellido
    titulo
    SELECT P.Apellido,P.Nombre, D.ciudad
    FROM persona P JOIN direccion D ON D.idDireccion=P.idDireccion
    WHERE D.ciudad=“Guayaquil"
  • 7. El modelo de objetos para una aplicación sencilla de libreta de direcciones
    direccion
    persona
    Linea1:String
    Linea1:String
    Linea3:String
    Ciudad:String
    Provincia:String
    Nombre: String
    Apellido: String
    Titulo: String
    cambiarDirecc()
    El modelo objeto-relacional ofrece una ventaja
    Puede hacer uso de las relaciones entre los datos para obtener fácilmente los registros relacionados.
    SELECT P.Nombre
    FROM Persona P
    WHERE P.direccion.ciudad=“Guayaquil"
    la relación es "comprendida" por el ORDB
  • 8. ObjectTypes
    Un tipo de objeto es una especie de tipo de datos.
    Se puede usar de la misma manera que los tipos de datos más conocidos, como NUMBER o VARCHAR2.
    Por ejemplo, puede especificar un tipo de objeto como el tipo de datos de una columna de una tabla relacional, y se pueden declarar variables de un tipo de objeto.
    Puede utilizar una variable de un tipo de objeto que contiene un valor de ese tipo de objeto. Un valor de un tipo de objeto es una instancia de ese tipo. Una instancia de objeto se llama también un objeto.
  • 9. CREATE TYPE tipo_persona AS OBJECT ( id NUMBER, nombre VARCHAR2(30), telefono VARCHAR2(20), MAP MEMBER FUNCTION get_id RETURN NUMBER );
    CREATE TYPE BODY tipo_persona AS MAP MEMBER FUNCTION get_id RETURN NUMBER IS BEGIN
    RETURN id;
    END;
    END;
  • 10. Tipos de Objeto Vs. datos nativos de una base de datos relacional:
    Un conjunto de tipos de objetos no viene ya con la base de datos
    Tipos de objetos están compuestos de partes, llamadas atributos y métodos.
    Atributos contienen los datos sobre las características de un objeto de interés.
    Por ejemplo, un tipo de objeto estudiante puede tener atributos como nombre, carrera y fecha de graduación.
    Los métodos son procedimientos o funciones previstas para permitir realizar a las aplicaciones operaciones útiles sobre los atributos del tipo de objeto.
    Los métodos son un elemento opcional de un tipo de objeto. Ellos definen el comportamiento de los objetos de ese tipo y determinan lo que el tipo de objeto puede hacer.
  • 11. Objetos
    Cuando se crea una variable de un tipo de objeto, se crea una instancia del tipo y el resultado es un objeto.
    Un objeto tiene los atributos y los métodos definidos para su tipo.
    Debido a que una instancia de objeto es algo concreto, se pueden asignar valores a sus atributos y llamar a sus métodos.
  • 12. Por ejemplo, podría definir una tabla relacional para realizar un seguimiento de sus contactos:
    CREATE TABLE contactos ( contacto tipo_persona, fecha_contacto DATE );
    INSERT INTO contactos VALUES ( tipo_persona (65, 'Luis Gomez', '2234544'), '24 Jun 2011' );
  • 13. Métodos de Objeto
    Los métodos son funciones o procedimientos que se pueden declarar en una definición de tipo de objeto para implementar un comportamiento que desea que los objetos de ese tipo lleven a cabo.
    El tipo general de los métodos que se pueden declarar en una definición de tipo son los siguientes:
    Miembro
    Estático
    constructor
    Uno de los usos principales de los métodos es proporcionar acceso a los datos de un objeto.
    Por ejemplo, la siguiente sentencia SQL utiliza el método get_id () para mostrar el número de identificación de las personas en la tabla de contactos:
    SELECT c.contacto.get_id() FROM contactos c;
  • 14. SQLJ
    SQLJ es un estándard ISO (ISO/IEC 9075-10) para embeber sentencias SQL en programas de Lenguaje de programación Java.
    Al contrario que JDBC, SQLJ no es un API sino una extensión del lenguaje. Así, los programas SQLJ deben ejecutarse a través de un preprocesador (el traductor SQLJ) antes de que puedan ser compilados.
  • 15. Ventajas de SQLJ sobre JDBC:
    Los programas SQLJ son más fáciles de escribir y de mantener. Además tienden a ser más cortos que los programas JDBC equivalentes.
    Es más eficiente que JDBC dado que las sentencias SQL son analizadas y los caminos de acceso son optimizados en tiempo de compilación en lugar de en tiempo de ejecución.
    Suministra mejor control de autorización: La Autorización puede ser concedida a los programas en lugar de a los usuarios.
    Los problemas de rendimiento potenciales, tales como las consultas ineficientes debido a un mal camino de acceso, pueden ser identificados en tiempo de desarrollo.
  • 16. Desventajas
    SQLJ requiere un paso de preprocesamiento.
    Muchos IDEs no proporcionan soporte SQLJ.
    No hay soporte de SQLJ para la mayoría de frameworks de persistencia comunes, tales como Hibernate.
  • 17. Insert
    JDBC
    SQLJ
    stmt = conn.prepareStatement(
    "INSERT INTO DSN8710.EMP " + "(EMPNO, FIRSTNME, MIDINIT, LASTNAME, HIREDATE, SALARY) " + "VALUES (?, ?, ?, ?, CURRENT DATE, ?)"); stmt.setString(1, empno); stmt.setString(2, firstname); stmt.setString(3, midinit); stmt.setString(4, lastname); stmt.setBigDecimal(5, salary); stmt.executeUpdate();
    stmt.close();
    #sql [ctx] { INSERT INTO DSN8710.EMP (EMPNO, FIRSTNME, MIDINIT, LASTNAME, HIREDATE, SALARY) VALUES (:empno,:firstname,:midinit,:lastname, CURRENT DATE,:salary) };
  • 18. Consulta de una fila
    JDBC
    SQLJ
    PreparedStatementstmt = conn.prepareStatement( "SELECT MAX(SALARY), AVG(SALARY)" + " FROM DSN8710.EMP"); rs = statement.executeQuery(); if (!rs.next()) { // Error -- no se encontraron filas } maxSalary = rs.getBigDecimal(1); avgSalary = rs.getBigDecimal(2);
    if (rs.next()) { // Error -- más de una fila encontrada }
    rs.close();
    stmt.close();
    #sql [ctx] { SELECT MAX(SALARY), AVG(SALARY) INTO:maxSalary,:avgSalary FROM DSN8710.EMP };
  • 19. Consulta de varias filas
    JDBC
    SQLJ
    PreparedStatementstmt = conn.prepareStatement( "SELECT LASTNAME" + ", FIRSTNME" + ", SALARY" + " FROM DSN8710.EMP" + " WHERE SALARY BETWEEN ? AND ?"); stmt.setBigDecimal(1, min); stmt.setBigDecimal(2, max); ResultSetrs = stmt.executeQuery(); while (rs.next()) { lastname = rs.getString(1); firstname = rs.getString(2); salary = rs.getBigDecimal(3); // Imprimir fila... } rs.close();
    stmt.close();
    #sql private static iteratorEmployeeIterator(String, String, BigDecimal);
    EmployeeIteratoriter; #sql [ctx] iter = { SELECT LASTNAME , FIRSTNME , SALARY FROM DSN8710.EMP WHERE SALARY BETWEEN:minAND:max }; while (true) { #sql { FETCH:iterINTO:lastname,:firstname,:salary }; if (iter.endFetch()) break; // Imprimir fila... } iter.close();
  • 20. SQLX
    SQLX o SQL/XML es un estándar ANSI / ISO que brinda soporte para el uso del lenguaje XML en el contexto de una base de datos SQL.
    Las empresas y usuarios desean tener la habilidad de integrar sus datos XML a sus datos relacionales, a través de las facilidades del lenguaje SQL.
    SQLX hace posible almacenar documentos XML en una base de datos SQL, consultar dichos documentos usando XPath y XQuery, y "publicar" sus datos SQL existentes en la forma de documentos XML.
  • 21. SQLX
    XmlElement() Crea un elemento XML.
    XMLFOREST ()Crea un fragmento de XML a partir de pasado-en los componentes.
    XMLColAttVal ()Crea un fragmento de XML y luego se expande el XML resultante de manera que cada fragmento de XML tiene el nombre de "columna" con el atributo "nombre"
    ExtractValue () Toma como argumentos una instancia XMLType y una expresión XPath y devuelve un valor escalar del nodo resultante.
    XMLTransform () Toma como argumentos una instancia XMLType y una hoja de estilo XSL, que a su vez es una forma de instancia XMLType. Se aplica la hoja de estilo a la instancia y devuelve un XMLType.
    XMLSequence () Toma de entrada y devuelve un VARRAY de los nodos de nivel superior en la XMLType, o un tipo de XMLSequence un documento XML para cada fila del cursor.
    XMLCONCAT () Toma como entrada una serie de casos XMLType, concatena una serie de elementos de cada fila, y devuelve la serie concatenada.
    UpdateXML () Toma como argumentos una instancia XMLType y un par de XPath de valor, y devuelve una instancia XMLType con el valor actualizado.
  • 22. XMLELEMENT( elementname IN VARCHAR2, [XMLATTRIBUTES(),] value_expr, ...) RETURN XMLType
    XMLATTRIBUTES( value_expr [AS identifier], ...) RETURN XMLType
    SELECT XMLElement("Date", hire_date)
    FROM hr.employees
    WHERE employee_id = 203;
    XMLELEMENT("DATE",HIRE_DATE)
    ----------------------------
    <Date>1994-06-07</Date>