Departament d Informàtica BASES DE DATOS OBJETO-RELACIONALES. Wladimiro Díaz Villanueva

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Departament d Informàtica BASES DE DATOS OBJETO-RELACIONALES. Wladimiro Díaz Villanueva"

Transcripción

1 Departament d Informàtica BASES DE DATOS OBJETO-RELACIONALES Wladimiro Díaz Villanueva Curso

2 Índice General 1 Introducción 3 2 Tipos de objetos Estructura de un tipo de objeto Componentes de un tipo de objeto Atributos Métodos El parámetro SELF Sobrecarga Métodos MAP y ORDER Constructores Pragma RESTRIC_REFERENCES 9 3 Declaración e inicialización de objetos Declaración de objetos Inicialización de objetos Objetos sin inicializar en PLSQL Acceso a los atributos Invocación de constructores y métodos Paso de parámetros a un constructor Invocación de métodos 13 5 Compartición de objetos Utilización de referencias Limitaciones en la definición de tipos Manipulación de objetos Selección de objetos El operador VALUE El operador REF Referencias colgadas (dangling refs) El operador DEREF Inserción de objetos Actualización de objetos Borrado de objetos

3 Bases de Datos Objeto-Relacionales 1 Introducción El término base de datos objeto-relacional se usa para describir una base de datos que ha evolucionado desde el modelo relacional hasta una base de datos híbrida, que contiene ambas tecnologías: relacional y de objetos. Durante muchos años ha habido debates sobre si la siguiente generación de la tecnología de bases de datos de uso común sería una base de datos orientada a objetos o una base de datos basada en SQL con extensiones orientadas a objetos. Los partidarios de esta segunda opción esgrimen varias razones para demostrar que el modelo objeto relacional dominará: Las bases de datos objeto-relacionales tales como Oracle8i son compatibles en sentido ascendente con las bases de datos relacionales actuales familiares a los usuarios, por lo que estos pueden pasar sus aplicaciones actuales y bases de datos relaciones al nuevo modelo sin tener que reescribirlas y posteriormente ir adaptando sus aplicaciones y bases de datos para que utilicen las funciones orientadas a objetos. Las primeras bases de datos orientadas a objetos puras no admitían las capacidades estándar de consulta ad hoc de las bases de datos SQL: esto puede ser un problema importante cuando surgen necesidades que no se han previsto en el diseño original. También resulta problemático realizar la interfaz entre las herramientas SQL estándar y las bases de datos orientadas a objetos puras. En realidad, una de las razones principales por las cuales las empresas adoptaron las bases de datos relacionales tan rápidamente fue su capacidad para crear consultas ad hoc. Para ilustrar la tecnología objeto-relacional utilizaremos como ejemplo el modelo que implementa la base de datos Oracle8. Una de las ventajas que presenta este modelo es que la integración en Oracle8 de las representaciones relacional y orientada a objetos es semánticamente limpia y considerablemente más potente que la adoptada por otros fabricantes. Esto facilita el diseño de bases de datos eficientes y compactas. 2 Tipos de objetos El modelo relacional está diseñado para representar los datos como una serie de tablas con columnas y atributos. Oracle8 es una base de datos objeto-relacional; es decir, incorpora tecnologías orientadas a objetos. En este sentido, permite construir tipos de objetos complejos, entendidos como: Capacidad para definir objetos dentro de objetos. Cierta capacidad para encapsular o asociar métodos con dichos objetos. 3

4 2.1 Estructura de un tipo de objeto Un tipo de objeto consta de dos partes: especificación y cuerpo. La especificación constituye la interface a las aplicaciones; aquí se declaran las estructuras de datos (conjunto de atributos) y las operaciones (métodos) necesarios para manipular los datos. El cuerpo define los métodos, es decir, implementa la especificación. En la figura 1 se representa gráficamente la estructura de un tipo de objeto. Especificación Declaración de atributos Especificación de métodos Interface pública Cuerpo Implementación privada Cuerpo de los métodos Figura 1: Estructura de un tipo de objeto. Toda la información que un cliente necesita para utilizar los métodos se encuentra en la especificación. Es adecuado pensar en la especificiación como en la interface operacional y en el cuerpo como en una caja negra. Es posible depurar, mejorar o reemplazar el cuerpo sin necesidad de modificar la especificación y sin afectar, por tanto, a las aplicaciones cliente. En una especificación de tipo de objeto los atributos deben declararse antes que cualquiera de los métodos. Por tanto, si una especificación de tipo sólo declara atributos, el cuerpo es innecesario. Tampoco es posible declarar atributos en el cuerpo del tipo de objeto. Todas las declaraciones en la especificación del tipo son públicas, es decir, visibles fuera del tipo de objeto. Sin embargo, el cuerpo puede contener declaraciones privadas, que definen métodos necesarios para el funcionamiento interno del tipo de objeto. El ámbito de las declaraciones privadas es local al cuerpo del objeto. Para entender mejor esta estructura utilizaremos el siguiente ejemplo, en el que se define un tipo de objeto para manipular números complejos. En este ejemplo, un número complejo se representa mediante dos números reales (parte real y parte imaginaria respectivamente) y una serie de operaciones asociadas: CREATE TYPE Complex AS OBJECT ( r p a r t REAL, i p a r t REAL, MEMBER FUNCTION p l u s ( x Complex ) RETURN Complex, MEMBER FUNCTION l e s s ( x Complex ) RETURN Complex, MEMBER FUNCTION t i m e s ( x Complex ) RETURN Complex, MEMBER FUNCTION d i v b y ( x Complex ) RETURN Complex CREATE TYPE BODY Complex AS 4

5 MEMBER FUNCTION p l u s ( x Complex ) RETURN Complex I S RETURN Complex ( r p a r t + x. r p a r t, i p a r t + x. i p a r t END p l u s ; MEMBER FUNCTION l e s s ( x Complex ) RETURN Complex I S RETURN Complex ( r p a r t x. r p a r t, i p a r t x. i p a r t END l e s s ; MEMBER FUNCTION t i m e s ( x Complex ) RETURN Complex I S RETURN Complex ( r p a r t x. r p a r t i p a r t x. i p a r t, r p a r t x. i p a r t + i p a r t x. r p a r t END t i m e s ; MEMBER FUNCTION d i v b y ( x Complex ) RETURN Complex I S z REAL : = x. r p a r t 2 + x. i p a r t 2; RETURN Complex ( ( r p a r t x. r p a r t + i p a r t x. i p a r t ) z, ( i p a r t x. r p a r t r p a r t x. i p a r t ) z END divby ; 2.2 Componentes de un tipo de objeto Un tipo de objeto encapsula datos y operaciones, por lo que en la especificación sólo se pueden declarar atributos y métodos, pero no constantes, excepciones, cursores o tipos. Al menos un atributo es requerido y los métodos son opcionales Atributos Como las variables, un atributo se declara mediante un nombre y un tipo. El nombre debe ser único dento del tipo de objeto (aunque puede reutilizarse en otros objetos) y el tipo puede ser cualquier tipo de Oracle excepto: LONG y LONG RAW. NCHAR, NCLOB y NVARCHAR2. MLSLABEL y ROWID. Los tipos específicos de PLSQL: BINARY_INTEGER (y cualquiera de sus subtipos), BOO- LEAN, PLS_INTEGER, RECORD, REF CURSOR, %TYPE y %ROWTYPE. Los tipos definidos en los paquetes PLSQL. Tampoco se puede inicializar un atributo en la declaración empleando el operador de asignación o la claúsula DEFAULT, del mismo modo que no se puede imponer la restricción NOT NULL. Sin embargo, los objetos se pueden almancenar en tablas de la base de datos en las que sí es posible imponer restricciones. 5

6 Las estructuras de datos pueden llegar a ser muy complejas. Por ejemplo, el tipo de un atributo puede ser otro tipo de objeto (denominado entonces tipo de objeto anidado). Esto permite construir tipos de objeto complejos a partir de objetos simples. Algunos objetos, tales como colas, listas y árboles son dinámicos (pueden crecer a medida que se utilizan). También es posible definir modelos de datos sofisticados utilizando tipos de objeto recursivos, que contienen referencias directas o indirectas a ellos mismos Métodos En general, un método es un subprograma declarado en una especificación de tipo mediante la palabra clave MEMBER. El método no puede tener el mismo nombre que el tipo de objeto ni el de ninguno de sus atributos. Muchos métodos constan de dos partes: especificación y cuerpo. La especificación consiste en el nombre del método, una lista opcional de parámetros y en el caso de funciones un tipo de retorno. El cuerpo es el código que se ejecuta para llevar a cabo una operación específica. Para cada especificación de método en una especificación de tipo debe existir el correspondiente cuerpo del método. El PLSQL compara la especificación del método y el cuerpo token a token, por lo que las cabeceras deben coincidir palabra a palabra. En un tipo de objeto, los métodos pueden hacer referencia a los atributos y a los otros métodos sin cualificador, como se muestra en el siguiente ejemplo: CREATE TYPE S t a c k AS OBJECT ( t o p INTEGER, MEMBER FUNCTION f u l l RETURN BOOLEAN, MEMBER FUNCTION push ( n IN INTEGER ), CREATE TYPE BODY S t a c k AS MEMBER FUNCTION push ( n IN INTEGER ) I S IF NOT f u l l THEN t o p : = t o p + 1 ; END push ; El parámetro SELF Todos los métodos de un tipo de objeto aceptan como primer parámetro una instancia predefinida del mismo tipo denominada SELF. Independientemente de que se declare implicita o explícitamente, SELF es siempre el primer parámetro pasado a un método. Por ejemplo, el método transform declara SELF como un parámetro IN OUT: CREATE TYPE Complex AS OBJECT ( MEMBER FUNCTION t r a n s f o r m ( SELF IN OUT Complex ) El modo de acceso por omisión de SELF, es decir, cuando no se declara explícitamente es: 6

7 En funciones miembro el acceso de SELF es IN. En procedimientos, si SELF no se declara, su modo por omisión es IN OUT. En el cuerpo de un método, SELF denota al objeto a partir del cual se invocó el método. Como muestra el siguiente ejemplo, los métodos pueden hacer referencia a los atributos de SELF sin necesidad de utilizar un cualificador: CREATE FUNCTION gcd ( x INTEGER, y INTEGER ) RETURN INTEGER AS E n c u e n t r a e l maximo comun d i v i s o r de x e y ans INTEGER ; IF x < y THEN ans : = gcd ( x, y ELSE ans : = gcd ( y, x MOD y ENDIF ; RETURN ans ; CREATE TYPE R a t i o n a l AS num INTEGER, den INTEGER, MEMBER PROCEDURE n o r m a l i z e, CREATE TYPE BODY R a t i o n a l AS MEMBER PROCEDURE n o r m a l i z e IS g INTEGER ; E s t a s dos s e n t e n c i a s son e q u i v a l e n t e s g : = gcd ( SELF. num, SELF. den g : = gcd ( num, den num : = num g ; den : = den g ; END n o r m a l i z e ; Sobrecarga Los métodos del mismo tipo (funciones y procedimientos) se pueden sobrecargar, esto es, es posible utilizar el mismo nombre para métodos distintos si sus parámetros formales difieren en número, orden o tipo de datos. Cuando se invoca uno de los métodos, el PLSQL encuentra el cuerpo adecuado comparando la lista de parámetros actuales con cada una de las listas de parámetros formales. La operación de sobrecarga no es posible en las siguientes circunstancias: Si los parámetros formales difieren sólo en el modo. Si las funciones sólo difieren en el tipo de retorno. 7

8 2.2.5 Métodos MAP y ORDER Los valores de un tipo escalar, como CHAR o REAL, tienen un orden predefinido que permite compararlos. Sin embargo, las instancias de un objeto carecen de un orden predefinido. Para ordenarlas, el PLSQL invoca a un método de MAP definido por el usuario. En el siguiente ejemplo, la palabra clave MAP indica que el método convert ordena los objetos Rational proyectándolos como números reales: CREATE TYPE R a t i o n a l AS OBJECT ( num INTEGER, den INTEGER, MAP MEMBER FUNCTION c o n v e r t RETURN REAL, CREATE TYPE BODY R a t i o n a l AS MAP MEMBER FUNCTION c o n v e r t RETURN REAL IS C o n v i e r t e un numero r a c i o n a l en un r e a l RETURN num den ; END c o n v e r t ; El PLSQL usa esta función para evaluar expesiones booleanas como x > y y para las comparaciones implícitas que requieren las claúsulas DISTINCT, GROUP BY y ORDER BY. Un tipo de objeto puede contener sólo una función de MAP, que necesariamente debe carecer de parámetros y debe devolver uno de los siguientes tipos escalares: DATE, NUMBER, VARCHAR2 y cualquiera de los tipos ANSI SQL (como CHARACTER o REAL). Alternativamente, es posible definir un método de ordenación (ORDER). Un método ORDER utiliza dos parámetros: el parámetro predefinido SELF y otro objeto del mismo tipo. En el siguiente ejemplo, la palabra clave ORDER indica que el método match compara dos objetos. Supongamos que c1 y c2 son objetos del tipo Customer. Una comparación del tipo c1 > c2 invoca al método match automáticamente. El método devuelve un número negativo, cero o positivo que indica que SELF es respectivamente menor, igual o mayor que el otro parámetro: CREATE TYPE Customer AS OBJECT ( i d NUMBER, name VARCHAR2( 2 0 ), addr VARCHAR2( 3 0 ), ORDER MEMBER FUNCTION match ( c CREATE TYPE BODY Customer AS ORDER MEMBER FUNCTION match ( c IF Customer ) RETURN INTEGER Customer ) RETURN INTEGER I S i d < c. i d THEN RETURN 1 ; C u a l q u i e r numero n e g a t i v o v a l e. ELSEIF i d > c. i d THEN RETURN 1 ; C u a l q u i e r numero p o s i t i v o v a l e. 8

9 ELSE RETURN 0 ; END IF ; Un tipo de objeto puede contener un único método ORDER, que es una función que devuelve un resultado numérico. Es importante tener en cuenta los siguientes puntos: Un método MAP proyecta el valor de los objetos en valores escalares (que son más fáciles de comparar). Un método ORDER simplemente compara el valor de un objeto con otro. Se puede declarar un método MAP o un método ORDER, pero no ambos. Si se declara uno de los dos métodos, es posible comparar objetos en SQL o en un procedimiento. Sin embargo, si no se declara ninguno, sólo se pueden comparar la igualdad o desigualdad de dos objetos y sólo en SQL. Dos objeto son iguales sólo son iguales si los valores de sus atributos son iguales. Cuando es necesario ordenar un número grande de objetos es mejor utilizar un método MAP (ya que una llamada por objeto proporciona una proyección escalar que es más fácil de ordenar). Un método ORDER es menos eficiente: debe invocarse repetidamente ya que compara sólo dos objetos cada vez Constructores Cada tipo de objeto tiene un constructor que es una función definida por el sistema con el mismo nombre que el objeto. El constructor se utiliza para inicializar y devolver una instancia de ese tipo de objeto. Oracle genera un constructor por omisión para cada tipo de objeto. Los parámetros del constructor coinciden con los atributos del tipo de objeto, esto es, los parámetros y los atributos se declaran en el mismo orden y tienen el mismo nombre y tipo. PLSQL nunca invoca al constructor implícitamente, por lo que el usuario debe invocarlo explícitamente. 2.3 Pragma RESTRIC_REFERENCES Para ejecutar una sentencia SQL que invoca a una función miembro, Oracle debe conocer el nivel de pureza de la función, es decir, la medida en que la función está libre de efectos colaterales. Los efectos colaterales pueden impedir la paralelización de una consulta, dar lugar a resultados dependientes del orden (y por tanto indeterminados) o requerir que un módulo mantenga un cierto estado entre diferentes sesiones de usuario. Por tanto, una función miembro debe cumplir las siguientes características: No puede insertar, actualizar o borrar las tablas de la base de datos. No se puede ejecutar en paralelo o remotamente si lee o escribe los valores de una variable en un módulo. 9

10 No puede escribir una variable de un módulo excepto si se invoca desde una claúsula SELECT, VALUES o SET. No puede invocar a otro método o subprograma que rompa una de las reglas anteriores. Tampoco puede hacer referencias a una vista que imcumpla estas reglas. Es posible utilizar la directiva de compilación PRAGMA_REFERENCES para forzar estas reglas. La sentencia PRAGMA indica al compilador PLSQL que debe denegar a la función miembro el acceso a las tablas de la base de datos, variables de un paquete o ambos. La sentencia pragma se codifica después del método sobre el que actúa en la especificación del tipo de objeto. La sintaxis es la siguiente: PRAGMA RESTRICT_REFERENCES ( { DEFAULT nombre_ metodo }, {RNDS WNDS RNPS WNPS} [, { RNDS WNDS RNPS WNPS } ] Por ejemplo, la siguiente sentencia pragma impide al método de MAP convert leer el estado de la base de datos (Read No Database State), modificar el estado de la base de datos (Write No Database State), leer el estado de un paquete o módulo (Read No Package State) y modificar el estado de un paquete (Write No Package State): CREATE TYPE R a t i o n a l AS OBJECT ( num INTEGER, den INTEGER, MAP MEMBER FUNCTION c o n v e r t RETURN REAL, PRAGMA RESTRICT_REFERENCES ( c o n v e r t, RNDS, WNDS, RPNS, WNPS) Un método sólo se puede invocar en consultas paralelas si se indican las cuatro limitaciones anteriores. Si se utiliza la palabra clave DEFAULT en lugar del nombre del método, la sentencia pragma se aplica a todas las funciones miembro incluído el constructor definido por el sistema. Por ejemplo, la siguiente sentencia pragma limita a todas las funciones miembro la modificación del estado de la base de datos o de los paquetes: PRAGMA RESTRICT_REFERENCES ( DEFAULT, WNDS, WNPS) Es posible declarar un pragma para cada función miembro, que predomina sobre cualquier pragma por omisión definido para el objeto. 3 Declaración e inicialización de objetos Una vez que se ha definido un tipo de objeto y se ha instalado en el esquema de la base de datos, es posible usarlo en cualquier bloque PLSQL. Las instancias de los objetos se crean en tiempo de ejecución. Estos objetos siguen las reglas normales de ámbito y de instanciación. En un bloque o subprograma, los objetos locales son instanciados cuando se entra en el bloque o subproprograma y dejan de existir cuando se sale. En un paquete, los objetos se instancian cuando se referencia por primera vez al paquete y dejan de existir cuando finaliza la sesión. 10

11 3.1 Declaración de objetos Los tipos de objetos se declaran del mismo modo que cualquier tipo interno. Por ejemplo, en el bloque que sigue se declara un objeto r de tipo Racional y se invoca al constructor para asignar su valor. La llamada asigna los valores 6 y 8 a los atributos num y den respectivamente: r R a c i o n a l ; r : = R a c i o n a l ( 6, 8 DBMS_OUTPUT. PUT_LINE ( r. num m u e s t r a 6 También es posible declarar objetos como parámetros formales de funciones y procedimientos, de modo que es posible pasar objetos a los subprogramas almacenados y de un subprograma a otro. En el siguiente ejemplo, se emplea un objeto de tipo Account para especificar el tipo de dato de un parámetro formal: PROCEDURE o p e n _ a c c t ( new_acct IN OUT Account ) IS y en el siguiente ejemplo se declara una función que devuelve un objeto de tipo Account: FUNCTION g e t _ a c c t ( a c c t _ i d IN INTEGER ) RETURN Account IS 3.2 Inicialización de objetos Hasta que se inicializa un objeto, invocando al constructor para ese tipo de objeto, el objeto se dice que es Atómicamente nulo. Esto es, el objeto es nulo, no sólo sus atributos. Un objeto nulo siempre es diferente a cualquier otro objeto. De hecho, la comparación de un objeto nulo con otro objeto siempre resulta NULL. Del mismo modo, si se asigna un objeto con otro objeto atómicamente nulo, el primero se convierte a su vez en un objeto atómicamente nulo (y para poder utilizarlo debe ser reinicializado). En resumen, si asignamos el no-valor NULL a un objeto, éste se convierte en atómicamente nulo, como se ilustra en el siguiente ejemplo: r R a c i o n a l ; r R a c i o n a l : = R a c i o n a l ( 1, 2 r = 1 2 r : = NULL; r atomicamente nulo IF r IS NULL THEN l a c o n d i c i o n r e s u l t a TRUE Una buena práctica de programación consiste en inicializar los objetos en su declaración, como se muestra en el siguiente ejemplo: r R a c i o n a l : = R a c i o n a l ( 2, 3 r = Objetos sin inicializar en PLSQL PLSQL se comporta del siguiente modo cuando accede a objetos sin inicializar: Los atributos de un objeto no inicializado se evalúan en cualquier expresión como NULL. Intentar asignar valores a los atributos de un objeto sin inicializar provoca la excepción predefinida ACCESS_INTO_NULL. 11

12 La operación de comparación IS NULL siempre produce TRUE cuando se aplica a un objeto no inicializado o a cualquiera de sus atributos. Existe por tanto, una sutil diferencia entre objetos nulos y objetos con atributos nulos. El siguiente ejemplo intenta ilustrar esa diferencia: r R e l a c i o n a l ; r es atomicamente nulo IF r IS NULL THEN TRUE IF r. num IS NULL THEN TRUE r : = R a c i o n a l (NULL, NULL I n i c i a l i z a r r. num = 4 ; E x i t o : r ya no es atomicamente nulo aunque s u s a t r i b u t o s son n u l o s r : = NULL; r es de nuevo atomicamente nulo r. num : = 4 ; Provoca l a e x c e p c i o n ACCESS_INTO_NULL EXCEPTION WHEN ACCESS_INTO_NULL THEN La invocación de los métodos de un objeto no inicializado está permitida, pero en este caso: SELF toma el valor NULL. Cuando los atributos de un objeto no inicializado se pasan como parámetros IN, se evalúan como NULL. Cuando los atributos de un objeto no inicializado se pasan como parámetros OUT o IN OUT, se produce una excepción si se intenta asignarles un valor. 3.4 Acceso a los atributos Para acceder o cambiar los valores de un atributo se emplea la notación punto (. ). El siguiente ejemplo ilustra esa notación: r R a c i o n a l : = R a c i o n a l (NULL, NULL numerador INTEGER ; denominador INTEGER ; denominador : = r. den ; r. num = numerador ; Los nombres de los atributos pueden encadenarse, lo que permite acceder a los atributos de un tipo de objeto anidado. Por ejemplo, supongamos que definimos los tipos de objeto Address y Student como sigue: CREATE TYPE Address AS OBJECT ( s t r e e t VARCHAR2( 3 0 ), c i t y VARCHAR2( 2 0 ), s t a t e CHAR( 2 ), z i p _ c o d e VARCHAR2( 5 ) CREATE TYPE S t u d e n t AS OBJECT ( 12

13 name VARCHAR2( 2 0 ), home_address Address, phone_number VARCHAR2( 1 0 ), s t a t u s VARCHAR2( 1 0 ), advisor_name VARCHAR2( 2 0 ), Observe que zip_code es un atributo de tipo Address y que Address es el tipo de dato del atributo home_address del tipo de objeto Student. Si s es un objeto Student, para acceder al valor de su zip_code se emplea la siguiente notación: s. home_address. z i p _ c o d e 4 Invocación de constructores y métodos La invocación de un constructor está permitida en cualquier punto en donde se puede invocar una función. Como las funciones, un constructor se invoca como parte de una expresión, como se muestra en el siguiente ejemplo: r1 R a c i o n a l : = R a c i o n a l ( 2, 3 FUNCTION a v e r a g e ( x R a c i o n a l, y R a c i o n a l ) RETURN R a c i o n a l IS r1 : = a v e r a g e ( R a c i o n a l ( 3, 4 ), R a c i o n a l ( 7, 1 1 ) IF ( R a c i o n a l ( 5, 8 ) > r1 ) THEN END IF ; 4.1 Paso de parámetros a un constructor Cuando se pasan parámetros a un constructor la invocación asigna valores iniciales a los atributos del objeto que se está instanciando. Es necesario suministrar parámetros para cada uno de los atributos ya que, a diferencia de las constantes y variables, los atributos carecen de la claúsula DEFAULT. También es posible invocar al constructor utilizando la notación con nombre en lugar de la notación posicional, como se muestra en el siguiente ejemplo: r : = R a c i o n a l ( den = > 6, num = > 5 a s i g n a num = 5 y den = Invocación de métodos Como el los subprogramas de un paquete, los métodos se invocan usando la notación punto. En el ejemplo siguiente se invoca al método normaliza que divide los atributos num y den por el mayor común divisor: r R a c i o n a l ; 13

14 r : = R a c i o n a l ( 6, 8 r. n o r m a l i z a ; DBMS_OUTPUT. PUT_LINE ( r. num m u e s t r a 3 Es posible encadenar las llamadas a los métodos, como se indica a continuación: r R a c i o n a l : = R a c i o n a l ( 6, 8 r. r e c i p r o c o ( ). n o r m a l i z a ; DBMS_OUTPUT. PUT_LINE ( r. num m u e s t r a 4 La ejecución se realiza de izquierda a derecha: primero se invoca la función reciproco y después la función normaliza. En las sentencias SQL la invocación de un métodos sin parámetros requiere la lista vacia de parámetros: (). En sentencias de procedimiento, la lista vacia de parámetros es opcional, excepto cuando se encadenan llamadas, en cuyo caso es obligatoria para todas las llamadas excepto la última. No es posible encadenar invocaciones a métodos adicionales a la derecha de la invocación de un procedimiento, ya que los procedimientos no se invocan como parte de una expresión. Por ejemplo, la siguiente sentencia es ilegal: r. n o r m a l i z a ( ). r e c i p r o c o ; i l e g a l Del mismo modo, cuando se encadenan dos llamadas a función, el resultado de la primera función debe ser un objeto que puede ser pasado a la segunda función. 5 Compartición de objetos La mayoría de los objetos del mundo real son considerablemente más grandes y complejos que el tipo Relacional. Por ejemplo, consideremos los siguientes tipos de objeto: CREATE TYPE Address AS OBJECT ( s t r e e t _ a d d r e s s VARCHAR2( 3 5 ), c i t y VARCHAR2( 1 5 ), s t a t e CHAR( 2 ), z i p _ c o d e INTEGER CREATE TYPE Person AS OBJECT ( f i r s t _ n a m e VARCHAR2( 1 5 ), l a s t _ n a m e VARCHAR2( 1 5 ), b i r t h d a y DATE, home_address Address, Objeto a n i d a d o phone_number VARCHAR2( 1 5 ), ss_number INTEGER Los objetos de tipo Address tienen más del doble de atributos que los del tipo Relacional y los objetos de tipo Person todavía tienen más atributos, incluyendo uno de tipo Address. Cuando se utilizan objetos grandes, resulta ineficiente pasar copias de él entre subprogramas. En estas circunstancias tiene más sentido compartir el objeto. Esto se puede hacer si el objeto cuenta con un identificador de objeto. Para compartir objetos se utilizan referencias (refs de forma abreviada). Una ref es un puntero al objeto. 14

15 La compartición de objetos proporciona dos ventajas importantes: La información no se duplican innecesariamente. Cuando se actualiza un objeto compartido, el cambio se produce sólo en un lugar y cualquier referencia al objeto puede recuperar los valores actualizados inmediatamente. En el ejemplo siguiente, obtenemos las ventajas de la compartición definiendo el tipo de objeto Home y creando una tabla que almacena las instancias de ese tipo: CREATE TYPE Home AS OBJECT ( a d d r e s s VARCHAR2( 3 5 ), owner VARCHAR2( 2 5 ), age INTEGER, s t y l e VARCHAR( 1 5 ), f l o o r _ p l a n BLOB, p r i c e REAL ( 9, 2 ), CREATE TABLE homes OF Home ; 5.1 Utilización de referencias Revisando el objeto de tipo Person de la sección 5, observamos que podemos diseñar una comunidad que puede compartir la misma casa (Home). Para ello podemos utilizar el modificador de tipo REF que declara una referencia (almacena un puntero al objeto): CREATE TYPE Person AS OBJECT ( f i r s t _ n a m e VARCHAR2( 1 5 ), l a s t _ n a m e VARCHAR2( 1 5 ), b i r t h d a y DATE, home_address REF Home, Compartido con l a f a m i l i a phone_number VARCHAR2( 1 5 ), ss_number INTEGER mother REF Person, Miembros de l a f a m i l i a f a t h e r REF Person, Es importante destacar cómo las referencias entre personas y Homes y entre personas entre sí definen relaciones que se dan en el mundo real. Es posible declarar referencias como variables, parámetros, campos o atributos. Además, se pueden utilizar referencias como parámetros IN y OUT en funciones y procedimientos. Sin embargo, no es posible navegar a través de referencias. En el ejemplo siguiente se muestra un intento ilegal de navegar a través de una referencia a un objeto: p _ r e f REF Person ; phone_no VARCHAR2( 1 5 phone_no = p _ r e f. phone_number; I l e g a l! 15

16 Para llevar a cabo esta operación es necesario utilizar el operador DEREF, a través del cual se puede acceder al objeto (ver apartado 6.4). 5.2 Limitaciones en la definición de tipos En la creación de un tipo sólo se puede hacer referencia a objetos que ya existan en el esquema de objetos. En el ejemplo que sigue, la primera sentencia CREATE TYPE es ilegal ya que hace referencia al objeto de tipo Departament que todavía no existe: CREATE TYPE Employee AS OBJECT ( name VARCHAR2( 2 0 ), d e p t REF Departament, I l e g a l! CREATE TYPE Departament AS OBJECT ( number INTEGER, manager REF Employee, En el ejemplo anterior, cambiar el orden de las sentencias CREATE TYPE no soluciona el problema, ya que ambos tipos son mutuamente dependientes, esto es, dependen el uno del otro a través de una referencia. Para resolver este problema se utiliza una sentencia CREATE TYPE especial denominada definición previa de tipo, que permite la creación de tipos de objetos mutuamente dependientes. Para resolver el problema anterior, basta con incluir la siguiente sentencia: CREATE TYPE Departament ; D e f i n i c i o n p r e v i a de t i p o En e s t e punto, Departament es un t i p o de o b j e t o i n c o m p l e t o El tipo creado mediante una definición previa de tipo se denomina tipo de objeto incompleto ya que carece de atributos y métodos hasta que se defina en su totalidad. Un tipo incompleto impuro cuenta con atributos, pero compila con errores semántico (no sintácticos) al hacer referencia a un tipo indefinidio. Por ejemplo, la siguiente sentencia CREATE TYPE compila con errores debido a que el tipo de objeto Address todavía no está definido: CREATE TYPE Customer AS OBJECT ( i d NUMBER, name VARCHAR2( 2 0 ), addr Address, t o d a v i a i n d e f i n i d o phone VARCHAR2( 1 5 ) Esto permite retrasar la definición del tipo de objeto Address. Más aún, las referencias al tipo incompleto Customer están disponibles para otras aplicaciones. 6 Manipulación de objetos Es posible utilizar un tipo de objeto en una sentencia CREATE TABLE para especificar el tipo de una columna. Una vez que la tabla se ha creado, se pueden utilizar las sentencias SQL para insertar un objeto, seleccionar sus atributos, invocar los métodos definidos y actualizar su estado. En el siguiente script de SQL*Plus, la sentencia INSERT invoca al constructor del tipo Racional para insertar su valor. La sentencia SELECT recupera el valor del atributo num y la sentencia UPDATE invoca al 16

17 método reciproco, que devuelve un valor Relacional después de invertir los valores de num y den. Observe que se requiere un alias de la tabla cuando se hace referencia a un atributo o método. CREATE TABLE numbers ( rn R a c i o n a l, INSERT INTO numbers ( rn ) VALUES ( R a c i o n a l ( 3, 6 2 ) SELECT n. r n. num INTO my_num FROM numbers n WHERE UPDATE numbers n SET n. rn = n. rn. r e c i p r o c o WHERE Cuando se crea un objeto de este modo, carece de identidad fuera de la tabla de la base de datos. Sin embargo, el tipo de objeto existe independientemente de cualquier tabla y puede utilizarse para crear objetos mediante otros métodos. En el siguiente ejemplo se crea una tabla que almacena en sus filas objetos del tipo Relacional. Este tipo de tablas, cuyas filas contienen un tipo de objetos, se denominan tablas de objetos. Cada columna en una fila se corresponde con un atributo del tipo de objeto: CREATE TABLE r a c i o n a l _ n u m s OF R a c i o n a l ; Cada fila en una tabla de objetos cuenta con un identificador de objeto, que identifica de forma unívoca al objeto almacenado en dicha fila y sirve como una refencia al objeto. 6.1 Selección de objetos Supongamos que ejecutamos el siguiente script de SQL*Plus, que crea un tipo de objeto denominado Person y una tabla de objetos persons junto con algunos valores: CREATE TYPE Person AS OBJECT ( f i r s t _ n a m e VARCHAR2( 1 5 ), l a s t _ n a m e VARCHAR2( 1 5 ), b i r t h d a y DATE, home_address Address, phone_number VARCHAR2( 1 5 ), CREATE TABLE p e r s o n s OF Person ; La siguiente subconsulta produce como resultado un conjunto de filas que contienen sólo atributos de los objetos Person: INSERT INTO employees Otra t a b l a de o b j e t o s de t i p o Person SELECT FROM p e r s o n s p WHERE p. l a s t _ n a m e LIKE % s m i t h ; 6.2 El operador VALUE Como es de esperar, el comando VALUE devuelve el valor de un objeto. VALUE requiere como argumento una variable de correlación (en este contexto, variable de correlación es una fila o alias de tabla asociado a una fila en una tabla de objetos). Por ejemplo, para obtener un conjunto de objetos Person se puede utilizar el comando VALUES del siguiente modo: INSERT INTO employees SELECT VALUE( p ) FROM p e r s o n s p WHERE p. l a s t _ n a m e LIKE % s m i t h En el siguiente ejemplo, se utiliza el operador VALUE para obtener un objeto Person específico: 17

18 p1 PERSON ; p2 PERSON ; SELECT VALUE( p ) INTO p1 FROM p e r s o n s WHERE p. l a s t _ n a m e = K r o l l ; p2 : = p1 ; p Después de ejecutar la consulta SQL, la variable p1 contiene un objeto Person local, que es una copia del objeto almacenado en la tabla persons. Del mismo modo, p2 contiene otra copia local del objeto. Es posible utilizar estas variables para acceder y modificar el objeto que contienen: p1. l a s t _ n a m e : = p1. l a s t _ n a m e J r ; 6.3 El operador REF El operador REF se utiliza para obtener una referencia a un objeto. Como el operador VALUE, toma como argumento una variable de correlación. En el siguiente ejemplo, primero se recuperan una o más referencias a objetos de tipo Person y después se insertan en la tabla person_refs: INSERT INTO p e r s o n _ r e f s SELECT REF ( p ) FROM p e r s o n s p WHERE p. l a s t _ n a m e LIKE % s m i t h ; En el siguiente ejemplo se obtienen simultáneamente una referencia y un atributo: p _ r e f REF Person ; t a x p a y e r _ i d VARCHAR2( 9 SELECT REF ( p ), p. ss_number INTO p _ r e f, t a x p a y e r _ i d FROM p e r s o n s p WHERE p. l a s t _ n a m e = P a r k e r ; ó s l o una f i l a En este último ejemplo, se actualizan los atributos de un objeto Person: p _ r e f REF Person ; my_last_name VARCHAR2( 1 5 SELECT REF ( p ) INTO p _ r e f FROM p e r s o n s p WHERE p. l a s t _ n a m e = my_last_name ; UPDATE p e r s o n s p SET p = Person ( J i l l, Anders, 1 1 NOV 6 7, ) WHERE REF ( p ) = p _ r e f ; 18

19 6.3.1 Referencias colgadas (dangling refs) Si el objeto al cual apunta una referencia es borrado, la referencia queda colgada 1 (apuntando a un objeto inexistente). Para comprobar si se produce esta condición se puede utilizar el predicado SQL IS DANGLING. Por ejemplo, supongamos que la columna manager en la tabla relacional department contiene referencias a objetos Employee almacenados en una tabla de objetos. Para convertir todas las referencias colgadas en nulos, podemos utilizar la siguiente sentencia UPDATE: UPDATE d e p a r t m e n t SET manager = NULL WHERE manager I S DANGLING; 6.4 El operador DEREF No es posible navegar a través de referencias en procedimientos SQL. Para esto es necesario utilizar el operador DEREF (abreviatura del término inglés dereference: derreferenciar un puntero es obtener el valor al cual apunta). DEREF toma como argumento una referencia a un objeto y devuelve el valor de dicho objeto. Si la referencia está colgada, DEREF devuelve el valor NULL. En el ejemplo que sigue se derreferencia una referencia a un objeto Person de la tabla DUAL 2. En estas circunstancias, no es necesario especificar una tabla de objetos ni un criterio de búsqueda ya que cada objeto almacenado en una tabla de objetos cuenta con un identificador de objeto único e inmutable que es parte de cada referencia a un objeto. p1 Person ; p _ r e f REF Person ; name VARCHAR2( 1 5 Supongamos que p _ r e f c o n t i e n e una r e f e r e n c i a v a l i d a a un o b j e t o almacenado en una t a b l a de o b j e t o s SELECT DEREF( p _ r e f ) INTO p1 FROM DUAL; name : = p1. l a s t _ n a m e ; Es posible utilizar el operador DEREF en sentencias SQL sucesivas para derreferencias referencias, como se muestra en el siguiente ejemplo: CREATE TYPE PersonRef AS OBJECT ( p _ r e f REF Person name VARCHAR2( 1 5 p r _ r e f REF PersonRef ; pr PersonRef ; p Person ; Supongamos que p r _ r e f c o n t i e n e una r e f e r e n c i a v a l i d a SELECT DEREF( p r _ r e f ) INTO pr FROM DUAL; SELECT DEREF( pr. p _ r e f ) INTO p FROM DUAL; name : = p. l a s t _ n a m e ; 1 Traducción directa del término inglés dangling 2 DUAL es una tabla estándar de Oracle que contiene exactamente una fila. Esta tabla es útil en aquellas sentencias que requieren una tabla fantasma para garantizar que existe un resultado y en la que los datos son irrelevantes. 19

20 En procedimientos SQL la utilización del operador DEREF es ilegal. En sentencias SQL se puede utilizar la notación punto para navegar a través de referencias. Por ejemplo, la siguiente sentencia es legal: t a b l e _ a l i a s. o b j e c t _ c o l u m n. r e f _ a t t r i b u t e t a b l e _ a l i a s. o b j e c t _ c o l u m n. r e f _ a t t r i b u t e. a t t r i b u t e t a b l e _ a l i a s. ref_column. a t t r i b u t e Supongamos ahora que ejecutamos el siguiente script SQL*Plus que crea los tipos de objeto Address y Person y la tabla de objetos persons: CREATE TYPE Address AS OBJECT ( s t r e e t _ a d d r e s s VARCHAR2( 3 5 ), c i t y VARCHAR2( 1 5 ), s t a t e CHAR( 2 ), z i p _ c o d e INTEGER CREATE TYPE Person AS OBJECT ( f i r s t _ n a m e VARCHAR2( 1 5 ), l a s t _ n a m e VARCHAR2( 1 5 ), b i r t h d a y DATE, home_address Address, phone_number VARCHAR2( 1 5 ), CREATE TABLE p e r s o n s OF Person ; El atributo home_address es una referencia a una columan en la tabla de objetos persons, que a su vez contiene referencias a objetos Address almacenados en otra tabla indeterminada. Tras introducir algunos elementos en la tabla, es posible obtener una dirección particular derreferenciando su referencia, como se muestra en el siguiente ejemplo: addr1 Address, addr2 Address, SELECT DEREF( home_address ) INTO addr1 FROM p e r s o n s WHERE p. l a s t _ n a m e = D e r r i n g e r ; Por último, en el siguiente ejemplo se navega a través de la columna de referencias home_address hasta el atributo street. En este caso se requiere un alias a la tabla: m y _ s t r e e t VARCHAR2( 2 5 ), SELECT p. home_address. s t r e e t INTO m y _ s t r e e t FROM p e r s o n s p WHERE p. l a s t _ n a m e = Lucas ; p 6.5 Inserción de objetos Para añadir objetos a una tabla de objetos se utiliza el comando UPDATE. Por ejemplo, para insertar un objeto Person en la tabla de objetos persons utilizamos la siguiente línea: 20

21 INSERT INTO p e r s o n s VALUES ( J e n i f e r, Lapidus, Alternativamente, es posible utilizar el constructor para el objeto de tipo Person: INSERT INTO p e r s o n s VALUES ( Person ( A l b e r t, Brooker, ) En el siguiente ejemplo, se utiliza la claúsula RETURNING para almacenar una referencia a Person en una variable local. Es importante destacar como esta claúsula simula una sentencia SELECT. La claúsula RETURNING se puede utilizar también en sentencias UPDATE y DELETE. p 1 _ r e f REF Person, p 2 _ r e f REF Person, INSERT INTO p e r s o n s p VALUES ( Person ( Paul, Chang, ) ) RETURNING REF ( p ) INTO p 1 _ r e f ; INSERT INTO p e r s o n s p VALUES ( Person ( Ana, Thorne, ) ) RETURNING REF ( p ) INTO p 2 _ r e f ; Para insertar objetos en una tabla de objetos se puede utilizar una consulta que devuelva un objeto del mismo tipo, como se muestra en el siguiente ejemplo: INSERT INTO p e r s o n s 2 SELECT VALUE( p ) FROM p e r s o n s p WHERE p. l a s t _ n a m e LIKE % J o n e s ; Las filas copiadas a la tabla de objetos persons2 cuentan con identificadores de objeto nuevos, ya que los identificadores de objeto son únicos. El siguiente script crea la tabla relacional department que cuenta con una columna de tipo Person; después inserta una fila en la tabla. Es importante destacar cómo el constructor Person() proporciona un valor para la columna manager: CREATE TABLE d e p a r t m e n t ( dept_name VARCHAR2( 2 0 ), manager Person, l o c a t i o n VARCHAR2( 2 0 ) INSERT INTO d e p a r t m e n t VALUES ( P a y r o l l, Person ( Alan, T s a i, ), Los Angeles El nuevo objeto Persona almacenado en la columna manager no es referenciable, ya que al estar almacenada en una columna (y no en una fila) carece de identificador de objeto. 6.6 Actualización de objetos Para modificar los atributos de un objeto en una tabla de objetos se utiliza la sentencia UPDATE, como se ilustra a continuación: 21

22 UPDATE p e r s o n s p SET p. home_address = Oakdene Ave WHERE p. l a s t _ n a m e = Brody ; UPDATE p e r s o n s p SET p = Person ( Beth, S t e i n b e r g, ) WHERE p. l a s t _ n a m e = Steinway ; 6.7 Borrado de objetos Para eliminar objetos (filas) de una tabla de objetos se utiliza la sentencia DELETE. Para eliminar objetos selectivamente se utiliza la claúsula WHERE como se muestra en el ejemplo: DELETE FROM p e r s o n s p WHERE p. home_address = Palm Dr ; 22

Bases de datos objeto-relacionales

Bases de datos objeto-relacionales Bases de datos objeto-relacionales El término base de datos objeto-relacional se usa para describir una base de datos que ha evolucionado desde el modelo relacional hasta una base de datos híbrida, que

Más detalles

BASES DE DATOS OBJETO-RELACIONALES

BASES DE DATOS OBJETO-RELACIONALES Departament d Informàtica BASES DE DATOS OBJETO-RELACIONALES Un sistema de gestión de pedidos Wladimiro Díaz Villanueva Curso 2001-2002 Índice General 1 Introducción 3 1.1 Entidades y relaciones.................................

Más detalles

1. DML. Las subconsultas

1. DML. Las subconsultas 1.1 Introducción 1. DML. Las subconsultas Una subconsulta es una consulta que aparece dentro de otra consulta o subconsulta en la lista de selección, en la cláusula WHERE o HAVING, originalmente no se

Más detalles

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

Sub consultas avanzadas

Sub consultas avanzadas Sub consultas avanzadas Objetivo Después de completar este capítulo conocerá lo siguiente: Escribir una consulta de múltiples columnas Describir y explicar el comportamiento de las sub consultas cuando

Más detalles

Base de datos Procedimientos Almacenados y Funciones

Base de datos Procedimientos Almacenados y Funciones Base de datos Procedimientos Almacenados y Eduardo Saavedra A. Universidad Nacional Andrés Bello 4 de noviembre de 2008 Contenidos Ventajas 1 Ventajas 2 3 4 5 Conceptos Ejemplo 6 Procedimiento Almacenado

Más detalles

5- Uso de sentencias avanzadas

5- Uso de sentencias avanzadas Objetivos: 5- Uso de sentencias avanzadas Elaborar sentencias de manejo de datos. Recursos: Microsoft SQL Server Management Studio Guías prácticas. Introducción: Después de trabajar con las sentencias

Más detalles

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) APRENDERAPROGRAMAR.COM LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde

Más detalles

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos.

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos. 8. PAQUETES DE BASE DE DATOS Los paquetes nos van a permitir agrupar conceptos PL/SQL como pueden ser tipos, procedimientos y funciones. Por ejemplo: una paquete de Contabilidad podrá contener procedimientos

Más detalles

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL 5.6 MODIFICACIÓN DE LA BASE DE DATOS SQL posee comandos destinados también para modificar la base de datos, entre estos se tienen operaciones de borrado,

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin

Más detalles

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas OPTIMIZACIÓN DE CONSULTAS EN SQL Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas Análisis de Consultas y Transacciones Para elaborar el diseño físico de la base de datos debemos

Más detalles

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en

Más detalles

EDICIÓN Y FORMATO (II)

EDICIÓN Y FORMATO (II) EDICIÓN Y FORMATO (II) 1. INTRODUCCIÓN Writer dispone de una serie de barras de herramientas predeterminadas, en las que se encuentran botones de acceso directo a comandos específicos que se activan con

Más detalles

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A) aprenderaprogramar.com Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A) Sección: Cursos Categoría: Curso Bases de la programación

Más detalles

Base de datos relacional

Base de datos relacional Base de datos relacional Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

Práctica 3. Consultas SQL

Práctica 3. Consultas SQL Práctica 3. Consultas SQL 1. Enunciado En este ejercicio se realizarán consultas SQL que respondan a las preguntas que se plantearán sin utilizar QBE. Dada una base de datos denominada Empresa y definida

Más detalles

Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1. Copyright 2008, Oracle. All rights reserved.

Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1. Copyright 2008, Oracle. All rights reserved. Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1 INTRODUCCIÓN PL/SQL: Lenguaje de programación procedimental estructurado en bloques que amplía el lenguaje estándar SQL. Permite: Manipular

Más detalles

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Procedimientos, Funciones, Trigger y Cursores en ORACLE Procedimientos, Funciones, Trigger y Cursores en ORACLE PROCEDIMIENTOS ALMACENADOS Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre que se

Más detalles

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS Hasta ahora hemos visto consultas que obtienen los datos de una sola tabla,

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

Oracle básico (IV): Programación en PL/SQL

Oracle básico (IV): Programación en PL/SQL Oracle básico (IV): Programación en PL/SQL El lenguaje de programación de Oracle, llamado PL/SQL, es un lenguaje portable, procedural y de transacción muy potente y de fácil manejo, con las siguientes

Más detalles

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN Tipos de datos SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos

Más detalles

Operación de Microsoft Word

Operación de Microsoft Word Trabajar con tablas Las tablas permiten organizar la información y crear atractivos diseños de página con columnas paralelas de texto y gráficos. Las tablas pueden utilizarse para alinear números en columnas

Más detalles

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS GUIA PROGRAMACIÓN ORIENTADA A OBJETOS 1. Por qué la P.O.O? R= A medida que se van desarrollando los lenguajes, se va desarrollando también la posibilidad de resolver problemas más complejos. En la evolución

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ; 7. CONCEPTOS AVANZADOS DE CURSORES EXPLICITOS En este capítulo veremos algunas cosas bastante útiles respecto a los cursores explícitos, como pueden ser los cursores con parámetros (que nos permitirán

Más detalles

Capítulo 6. Asociaciones y Declaraciones.

Capítulo 6. Asociaciones y Declaraciones. Capítulo 6. Asociaciones y Declaraciones. Lenguajes de Programación Carlos Ureña Almagro Curso 2011-12 Contents 1 Asociaciones, entornos y ámbitos 2 2 Declaraciones y definiciones 6 3 Definiciones de valores,

Más detalles

SITRÁN ARAGÓN TRÁMITES Y SERVICIOS EN LÍNEA (WEB GANADEROS) SOLICITUD CERTIFICADOS SANITARIOS

SITRÁN ARAGÓN TRÁMITES Y SERVICIOS EN LÍNEA (WEB GANADEROS) SOLICITUD CERTIFICADOS SANITARIOS SITRÁN ARAGÓN TRÁMITES Y SERVICIOS EN LÍNEA (WEB GANADEROS) SOLICITUD CERTIFICADOS SANITARIOS Servicio de Ordenación y Sanidad Animal Julio 2012 v9 INDICE 1 INTRODUCCIÓN... 3 2 ESQUEMA DE FUNCIONAMIENTO

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

Diseño de bases de datos

Diseño de bases de datos Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes sn. 41012 Sevilla TlfFax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es Diseño

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

Oracle 12c DISEÑO Y PROGRAMACIÓN

Oracle 12c DISEÑO Y PROGRAMACIÓN Oracle 12c Se estudia el servidor de bases de datos empresarial Oracle 12c, centrándose especialmente en el punto de vista de un diseñador o programador de bases de datos, pero explicando también cómo

Más detalles

BASE DE DATOS RELACIONALES

BASE DE DATOS RELACIONALES BASE DE DATOS RELACIONALES Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya

Más detalles

ÍNDICE INTRODUCCIÓN...13

ÍNDICE INTRODUCCIÓN...13 ÍNDICE INTRODUCCIÓN...13 CAPÍTULO 1. EL MODELO RELACIONAL. LENGUAJE SQL...17 1.1 INTRODUCCIÓN AL MODELO RELACIONAL...17 1.2 RELACIONES...19 1.2.1 Definición formal de relación...21 1.2.2 Propiedades y

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases

Más detalles

Sistema de Gestión Académica TESEO. Revisión 1.0. Servicio de Informática Área de Gestión (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES)

Sistema de Gestión Académica TESEO. Revisión 1.0. Servicio de Informática Área de Gestión (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES) Sistema de Gestión Académica TESEO (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES) Revisión 1.0 Servicio de Informática Área de Gestión Mayo de 2004 INDICE INDICE... 1 1 Introducción... 1 2 Procedimiento....

Más detalles

SISTEMAS OPERATIVOS AVANZADOS

SISTEMAS OPERATIVOS AVANZADOS SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3

Más detalles

DIAGRAMA DE CLASES EN UML

DIAGRAMA DE CLASES EN UML DIAGRAMA DE CLASES EN UML Mg. Juan José Flores Cueto jflores@usmp.edu.pe Ing. Carmen Bertolotti Zuñiga cbertolotti@usmp.edu.pe INTRODUCCIÓN UML (Unified Modeling Language) es un lenguaje que permite modelar,

Más detalles

abacformacio@abacformacio.com 1

abacformacio@abacformacio.com 1 Cu Oracle 10gg Estudia el servidor de bases de datos Oracle 10g desde el punto de vista de un diseñador y programador de bases de datos, prestando atención a los objetos que puede crear, como tablas, consultas

Más detalles

- Bases de Datos - - Diseño Físico - Luis D. García

- Bases de Datos - - Diseño Físico - Luis D. García - Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo

Más detalles

3.2 Operaciones aritmético-lógicas en Pascal

3.2 Operaciones aritmético-lógicas en Pascal 3.2 Operaciones aritmético-lógicas en Pascal Operadores Los operadores sirven para combinar los términos de las expresiones. En Pascal, se manejan tres grupos de operadores : 1. ARITMÉTICOS 2. RELACIONALES

Más detalles

Tema 9. Bases de Datos Objeto-Relacionales en Oracle 8. 1. Introducción. 2. Tipos de Datos Definidos por el Usuario

Tema 9. Bases de Datos Objeto-Relacionales en Oracle 8. 1. Introducción. 2. Tipos de Datos Definidos por el Usuario Tema 9 Bases de Datos Objeto-Relacionales en Oracle 8 1. Introducción Debido a los requerimientos de las nuevas aplicaciones, en su octava versión, el sistema gestión de bases de datos relacionales Oracle

Más detalles

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS

LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS Los lenguajes de consulta constituyen una funcionalidad importante de los SGBDOO. El usuario puede recuperar los datos especificando simplemente las condiciones

Más detalles

Bases de Datos 2. Teórico

Bases de Datos 2. Teórico Bases de Datos 2 Teórico Structured Query Language (SQL) Características de SQL Standard Opera sobre conjuntos de tuplas: incluso para las operaciones de inserción, borrado y actualización. No elimina

Más detalles

Ahora después de ver las múltiples herramientas de desarrollo de ABAP, podemos ver los detalles del lenguaje:

Ahora después de ver las múltiples herramientas de desarrollo de ABAP, podemos ver los detalles del lenguaje: Ahora después de ver las múltiples herramientas de desarrollo de ABAP, podemos ver los detalles del lenguaje: El lenguaje ABAP tiene ciertas características generales, que debes conocer: Tiene tipos de

Más detalles

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; TEMA 5. CONTROL DE FLUJO DEL PROGRAMA 5.1 Sentencias Una sentencia es una expresión seguida de un punto y coma. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; El ; es obligatorio

Más detalles

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar / S Q Lenguaje de Consulta Estructurado L Wael Najjar / Wael Stephenson Najjar / Prieto Stephenson Prieto Contenido Parte I El Lenguaje de Consulta Estructurado. Lo que se puede hacer. Lenguaje Estandarizado.

Más detalles

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl Resumen demandas de almacenamiento y procesamiento de datos. Es el conjunto de estas dos capacidades

Más detalles

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases Herencia 3.- Herencia La herencia nos permite definir datos y métodos que son generales (comunes a distintas clases) por separado de las que son particulares a cada clase. Esto se logra definiendo lo que

Más detalles

DIPLOMADO EN BASE DE DATOS ORACLE

DIPLOMADO EN BASE DE DATOS ORACLE DIPLOMADO EN BASE DE DATOS ORACLE Release 10.2.0.2 MODULO 1 - DISEÑO DE BASES DE DATOS RELACIONALES (20 Horas) OBJETIVO Introducir al alumno a los conceptos necesarios para construir sistemas de información

Más detalles

CONSULTAS BASICAS EN SQL SERVER

CONSULTAS BASICAS EN SQL SERVER CONSULTAS BASICAS EN SQL SERVER CONSULTAS DE SELECCION Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta

Más detalles

9. Objetos y clases. 9.1. Clases

9. Objetos y clases. 9.1. Clases Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java

Más detalles

Los números racionales

Los números racionales Los números racionales Los números racionales Los números fraccionarios o fracciones permiten representar aquellas situaciones en las que se obtiene o se debe una parte de un objeto. Todas las fracciones

Más detalles

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II DEPARTAMENTO DE LENGUAJES Y SISTEMAS INFORMÁTICOS ESCUELA SUPERIOR DE TECNOLOGÍA Y CIENCIAS EXPERIMENTALES A.D.E.M. Segundo Curso A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones

Más detalles

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

BASE DE DATOS QUÉ ES UNA BASE DE DATOS? BASE DE DATOS BASE DE DATOS QUÉ ES UNA BASE DE DATOS? Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada. Actualmente la mayoría de

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas. Debido a que el UML es un lenguaje, cuenta con reglas para combinar tales elementos. La finalidad de los

Más detalles

4. Modelo Relacional: Manipulación de los datos.

4. Modelo Relacional: Manipulación de los datos. Modelo Relacional: Manipulación de los datos. 54 4. Modelo Relacional: Manipulación de los datos. 4.1. Lenguaje de procedimiento: álgebra relacional Los lenguajes de procedimientos para consultar bases

Más detalles

3 Consultas y subconsultas

3 Consultas y subconsultas 3 Consultas y subconsultas En SQL, la sentencia SELECT permite escribir una consulta o requerimiento de acceso a datos almacenados en una base de datos relacional. Dichas consultas SQL van desde una operación

Más detalles

Tema 5. Diseño detallado.

Tema 5. Diseño detallado. Ingeniería del Software II 2011 Tema 5. Diseño detallado. Diseño del Software. Los requisitos y el análisis orientado a objetos se centran en aprender a hacer lo correcto: Entender los objetos de nuestro

Más detalles

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Índice Pasos previos a la visualización del programa: Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 Conceptos e información

Más detalles

select nombre from profesores where categoria='aso6';

select nombre from profesores where categoria='aso6'; 1 de 10 17/05/2013 14:00 Lecciones SQL > T11 Conjuntos Operaciones de conjuntos y MySQL Un operador sobre conjuntos combina el resultado de dos sentencias select en un único resultado. Dependiendo del

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

Operación 8 Claves para la ISO 9001-2015

Operación 8 Claves para la ISO 9001-2015 Operación 8Claves para la ISO 9001-2015 BLOQUE 8: Operación A grandes rasgos, se puede decir que este bloque se corresponde con el capítulo 7 de la antigua norma ISO 9001:2008 de Realización del Producto,

Más detalles

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN 3.3 Aplicaciones Definición de Aplicación (Application). Programa informático que permite a un usuario utilizar una computadora con un fin específico. Las

Más detalles

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011 Structured Query Language () Fundamentos de Bases de Datos InCo - Un poco de historia Lenguajes de consulta relacionales: SEQUEL (IBM-1970) QUEL (Ingres-1970) QBE (IBM-1970) es el lenguaje comercial más

Más detalles

Inside. Gestión de Expedientes y Documentos Electrónicos

Inside. Gestión de Expedientes y Documentos Electrónicos Inside Gestión de Expedientes y Documentos Electrónicos Documento de Integración Sistemas Desarrollo Versión 1.0 Fecha de revisión 25/02/2013 Realizado por Sistemas Desarrollo Inside v_1.0 / 1 ÍNDICE 1

Más detalles

Patrones para persistencia (I) Ingeniería del Software II

Patrones para persistencia (I) Ingeniería del Software II Patrones para persistencia (I) Ingeniería del Software II 1 Patrones para la construcción del esquema relacional En todos los ejemplos realizaremos transformaciones del siguiente diagrama de clases: Figura

Más detalles

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL. 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP) MINISTERIO DE ADMINISTRACIÓN PÚBLICA (MAP) Dirección de Tecnología de la Información y Comunicación MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS

Más detalles

FOCO GESTIÓN DE GRUPOS

FOCO GESTIÓN DE GRUPOS FOCO GESTIÓN DE GRUPOS MANUAL DE USUARIO CONVENIO DE PRÁCTICAS ÍNDICE 1. INTRODUCCIÓN... 3 2. BÚSQUEDA DE CONVENIOS... 3 3. ALTA CONVENIO... 5 4. MODIFICACIÓN DEL CONVENIO... 18 5. ELIMINAR CONVENIO...

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

T12 Vistas y tablas temporales

T12 Vistas y tablas temporales 1 de 9 17/05/2013 14:01 Lecciones SQL > T12 Vistas y tablas temporales En esta sesión vamos a mostrar dos tipos de objetos de uso habitual en cualquier SGBD: las vistas y las tablas temporales. Mientras

Más detalles

Curso de Excel Avanzado

Curso de Excel Avanzado Curso de Excel Avanzado J. David Moreno TRABAJANDO CON RANGOS J. David Moreno 1 3 Para programar correctamente en VBA y trabajar con Excel es obligatorio aprender a trabajar con rangos (seleccionar, copiar,

Más detalles

6 - Recuperar algunos registros (where)

6 - Recuperar algunos registros (where) 6 - Recuperar algunos registros (where) Hemos aprendido a seleccionar algunos campos de una tabla. También es posible recuperar algunos registros. Existe una cláusula, "where" con la cual podemos especificar

Más detalles

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Índice 1 Introducción... 5 1.1 Perfil de la aplicación... 5 1.2 Requisitos técnicos... 5 2 Manual de usuario... 7 2.1 Instalación del certificado...

Más detalles

Utilización del programa de Orabench Versión 9.2.0 para Migración. Describir los pasos para la utilización del programa Orabench 9.2.0 de Oracle.

Utilización del programa de Orabench Versión 9.2.0 para Migración. Describir los pasos para la utilización del programa Orabench 9.2.0 de Oracle. Página 1 de 15 1. Objetivo y Alcance Describir los pasos para la utilización del programa Orabench 9.2.0 de Oracle. Comprende la utilización del Programa Orabench de Oracle. 2 Responsable El responsable

Más detalles

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional El Modelo Relacional es un modelo de datos que nos permite describir la estructura de una base de datos a nivel lógico. En 1969, Edgar Frank Ted Codd (1923-2003) introduce el modelo relacional con una

Más detalles

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html 1.INTRODUCCION PL/SQL (Procedural Language ó Programming Language, según distintas fuentes, aunque la oficial es la primera) es el lenguaje utilizado por Oracle como extensión al SQL, y que nos va a permitir

Más detalles

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008 Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008 Contenidos 1. Propósito 3 2. Introducción 4 3. Listados personalizados 5 3.1. Ejemplos prácticos 7 3.2. Consideraciones adicionales

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 9. Reglas de Integridad 1.- Introducción. 2.- Claves Primarias. 3.- Regla de Integridad de Entidades. 4.- Claves Ajenas. 5.- Regla de Integridad

Más detalles

Repaso de Conceptos Básicos de Bases de Datos

Repaso de Conceptos Básicos de Bases de Datos escuela técnica superior de ingeniería informática Repaso de Conceptos Básicos de Bases de Datos Departamento de Lenguajes Grupo de Ingeniería del Software Septiembre 2004 Definición Una base de datos

Más detalles

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus Iniciando con Oracle Índice de contenido Ingresando a Oracle...1 Cambiando Su Contraseña...1 Ingresando un Comando SQL en SQL*Plus...2 Saliendo de SQL*Plus...2 Consiguiendo Ayuda...2 Creación de una Tabla...3

Más detalles

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL) OBJETIVOS: Enseñar al alumno las sentencias que forman el lenguaje de definición de datos de SQL, es decir, el subconjunto de órdenes que nos permitirán crear o editar esquemas de bases de datos. MATERIAL:

Más detalles

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h> Arreglos Introducción. En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en

Más detalles

A.1. Definiciones de datos en SQL

A.1. Definiciones de datos en SQL A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE

Más detalles

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano 24 Unidad II Vectores 2.1 Magnitudes escalares y vectoriales Unidad II. VECTORES Para muchas magnitudes físicas basta con indicar su valor para que estén perfectamente definidas y estas son las denominadas

Más detalles

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta Operaciones en el Modelo Relacional Bases de Datos Ingeniería a Técnica T en Informática de Sistemas El interés de los usuarios de las bases de datos se suele centrar en realizar consultas (contestar a

Más detalles

Instructivo de Microsoft Excel 2003

Instructivo de Microsoft Excel 2003 Instructivo de Microsoft Excel 2003 El presente instructivo corresponde a una guía básica para el manejo del programa y la adquisición de conceptos en relación a este utilitario. Que es Microsoft Excel?

Más detalles