M2 - Bases de dades / Apunts UF4 : BDOR1

De wikiserver
Dreceres ràpides: navegació, cerca

Características de las bases de datos objeto-relacionales

  • Las bases de datos objeto-relacionales son aquellas que han evolucionado desde el modelo relacional tradicional a un modelo híbrido que utiliza además la tecnología orientada a objetos.
  • Las clases, objetos, y herencia son directamente soportados en los esquemas de la base de datos y el lenguaje de consulta y manipulación de datos.
  • La base de datos de Oracle implementa el modelo orientado a objetos como una extensión del modelo relacional, siguiendo soportando la funcionalidad estándar de las bases de datos relacionales.
  • El modelo objeto-relacional ofrece las ventajas de las técnicas orientadas a objetos en cuanto a mejorar la reutilización y el uso intuitivo de los objetos, a la vez que se mantiene la alta capacidad de concurrencia y el rendimiento de las bases de datos relacionales.
  • Los tipos de objetos, así como las características orientadas a objeto, proporcionan un mecanismo para organizar los datos y acceder a ellos a alto nivel. Por debajo de la capa de objetos, los datos seguirán estando almacenados en columnas y tablas.
  • La reutilización de objetos permite desarrollar aplicaciones de bases de datos más rápidamente y de manera más eficiente. Al ofrecer la base de datos de Oracle soporte nativo para los tipos de objetos, permite a los desarrolladores de aplicaciones con lenguajes orientados a objetos, acceder directamente a las mismas estructuras de datos creadas en la base de datos.
  • Las tablas de bases de datos relacionales sólo contienen datos. En cambio, los objetos pueden incluir la posibilidad de realizar determinadas acciones sobre los datos.

Tipos de datos objeto

  • Un tipo de dato objeto es un tipo de dato compuesto definido por el usuario. Representa una estructura de datos así como funciones y procedimientos para manipular datos.
  • Las variables que formen la estructura de datos de un tipo de dato objeto reciben el nombre de atributos (que se corresponde con sus propiedades). Las funciones y procedimientos del tipo de dato objeto se denominan métodos(que se corresponde con sus acciones).
  • Aunque los atributos son públicos, es decir, visibles desde otros programas cliente, los programas deberían manipular los datos únicamente a través de los métodos (funciones y procedimientos) que se hayan declarado en el tipo objeto, en vez de asignar u obtener sus valores directamente. Esto es debido a que los métodos pueden hacer un chequeo de los datos de manera que se mantenga un estado apropiado en los mismos.
  • Durante la ejecución, la aplicación creará instancias de un tipo objeto, es decir, referencias a objetos reales con valores asignados en sus atributos.

Definición de tipos de objeto

  • La estructura de la definición o declaración de un tipo de objeto está dividida en una especificación y un cuerpo. La especificación define el interfaz de programación, donde se declaran los atributos así como las operaciones (métodos) para manipular los datos. En el cuerpo se implementa el código fuente de los métodos.
  • En la especificación de un tipo de objeto, todos los atributos se deben declarar antes que los métodos. Si la especificación de un tipo de objeto sólo declara atributos, no es necesario que declarar el cuerpo.No se pueden declarar atributos en el cuerpo.
  • Todas las declaraciones realizadas en la especificación del tipo de objeto son públicas, es decir, visibles fuera del tipo de objeto.
  • No se pueden declarar en la especificación constantes (CONSTANTS), excepciones (EXCEPTIONS), cursores (CURSORS) o tipos (TYPES).
  • Para definir un objeto en Oracle debes utilizar la sentencia CREATE TYPE que tiene el siguiente formato:
CREATE TYPE nombre_tipo AS OBJECT (
  Declaración_atributos
  Declaración_métodos);
  • Para reemplazar un objeto existente:
CREATE OR REPLACE TYPE nombre_tipo AS OBJECT
  • Eliminar el tip de objeto:
DROP TYPE nombre_tipo;

Ejemplo:

DROP TYPE Usuario;

Declaración de atributos

  • El tipo de dato que puede almacenar un determinado atributo puede ser cualquiera de los tipos de Oracle excepto los siguientes:
- LONG y LONG RAW .
- ROWID y UROWID .
- Los tipos específicos PL/SQL BINARY_INTEGER (y sus subtipos), BOOLEAN, PLS_INTEGER, RECORD, REF, CURSOR , %TYPE , y %ROWTYPE.
- Los tipos definidos dentro de un paquete PL/SQL.
  • No se pueden inicializar los atributos usando el operador de asignación, ni la cláusula DEFAULT , ni asignar la restricción NOT NULL.
  • El tipo de dato de un atributo puede ser otro tipo de objeto, por lo que la estructura de datos puede ser tan complicada como sea necesario.

Ejemplo:

CREATE OR REPLACE TYPE Usuario AS OBJECT (
   login VARCHAR2(10),
   nombre VARCHAR2(30),
   f_ingreso DATE,
   credito NUMBER
);
/
  • Se pueden modificar los atributos de un tipo de objeto utilizando la sentencia ALTER TYPE . Si se desean añadir nuevos atributos se añadirá la cláusula ADD ATTRIBUTE seguida de la lista de nuevos atributos con sus correspondientes tipos de dato. Utilizando MODIFY ATTRIBUTE se podrán modificar los atributos existentes, y para eliminar atributos se dispone de manera similar de DROP ATTRIBUTE .

Ejemplos

ALTER TYPE Usuario DROP ATTRIBUTE f_ingreso;

ALTER TYPE Usuario ADD ATTRIBUTE (apellidos VARCHAR2(40), localidad VARCHAR2(50));

ALTER TYPE Usuario
ADD ATTRIBUTE cp VARCHAR2(5),
MODIFY ATTRIBUTE nombre VARCHAR2(35);

Definición de métodos

  • Un método es un subprograma que declaras en la especificación de un tipo de objeto usando las

palabras clave MEMBER o STATIC .

  • El nombre no puede ser el mismo que el de tipo de objeto ni el de ninguno de sus atributos.
  • Los métodos tienen dos partes: una especificación y un cuerpo.
  • En la especificación o declaración se debe encontrar el nombre del método, una lista opcional de parámetros, y, en el caso de las funciones, un tipo de dato de retorno.

Ejemplo:

CREATE OR REPLACE TYPE Usuario AS OBJECT (
   login VARCHAR2(10),
   nombre VARCHAR2(30),
   f_ingreso DATE,
   credito NUMBER,
   MEMBER PROCEDURE incrementoCredito(inc NUMBER)
);
/
  • En el cuerpo se debe indicar el código que se debe ejecutar para realizar una determinada tarea cuando el método es invocado.

Ejemplo:

CREATE OR REPLACE TYPE BODY Usuario AS
   MEMBER PROCEDURE incrementoCredito(inc NUMBER) IS
   BEGIN
     credito := credito + inc;
   END incrementoCredito;
END;
/
  • Por cada especificación de método que se indique en el bloque de especificación del tipo de objeto, debe existir su correspondiente cuerpo del método, o bien, el método debe declararse como NOT INSTANTIABLE , para indicar que el cuerpo del método se encontrará en un subtipo de ese tipo de objeto. Además, debes tener en cuenta que las cabeceras de los métodos deben coincidir exactamente en la especificación y en el cuerpo.
  • El tipo de dato de un parámetro no puede tener restricciones de tamaño. El tipo de datos puede ser cualquiera de los empleados por Oracle salvo los indicados anteriormente para los atributos. Las mismas restricciones se aplican para los tipos de retorno de las funciones.
  • El código fuente de los métodos no sólo puede escribirse en el lenguaje PL/SQL. También con otros lenguajes de programación como Java o C.
  • Puedes usar la sentencia ALTER TYPE para añadir, modificar o eliminar métodos de un tipo de objeto

existente, de manera similar a la utilizada para modificar los atributos de un tipo de objeto.


Ejemplo:

Parámetro SELF

Sobrecarga

Métodos Constructores

Utilización de objetos

Declaración de objetos

Inicialización de objetos

Acceso a los atributos de objetos

Llamada a los métodos de los objetos

Herencia