Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Oracle 12c es un potente sistema de gestión de bases de datos relacionales (RDBMS) que proporciona, además de un
motor de base de datos, numerosas herramientas para el usuario, el desarrollador y el administrador.
Estas herramientas emplean un lenguaje común: el SQL.
Oracle permite gestionar los datos de una aplicación basándose en una lógica que se ha convertido en un estándar:
el modelo relacional. Los fundamentos de este modelo se establecieron a principios de los años 70 por E.F. Codd y
constituyen una referencia para la gestión de datos.
La lógica de extracción de los datos de una base de datos estructurada de acuerdo con el modelo relacional
constituye el álgebra relacional. Proporciona a los usuarios un método independiente del sistema físico para llegar a
obtener un resultado.
El SQL es un lenguaje de consulta descriptivo, que se ha adoptado como estándar en todas las bases de datos que
siguen el modelo relacional. Este lenguaje permite realizar todo tipo de operaciones sobre los datos en cualquier
situación en la que se emplee la base de datos.
Con Oracle, se puede asociar al SQL un lenguaje procedimental, el PL/SQL, que añade numerosas posibilidades para
la manipulación de los datos.
Desde la versión 8i, el sistema de gestión de bases de datos de Oracle propone un nuevo método de gestión de la
información en la empresa a través de la implementación del modelo objetorelacional. El objetivo de este método es
simplificar el modelado de los datos permitiendo el almacenamiento y la manipulación de nuevos tipos de datos. Estos
objetos reutilizables, propios de cada sector de actividad o de cada empresa, deben permitir un modelado más
eficiente.
La implantación de este modelo a través de las extensiones del lenguaje SQL permite una migración flexible entre el
modelo relacional puro de las versiones anteriores y este nuevo modelo objetorelacional. Este libro está dedicado al
método relacional clásico.
En primer lugar, este libro presenta los conceptos, definiciones y reglas del modelo relacional (capítulo Modelo
relacional) y, a continuación, detalla su uso en el marco del lenguaje SQL (capítulo SQL). Después de presentar las
herramientas ofrecidas de manera estándar con Oracle Database 12c, SQL*Plus y Oracle SQL Developer (capítulo
SQL*Plus y SQL Developer), el libro aborda el lenguaje PL/SQL (capítulos PL/SQL y PL/SQL en objetos de la base de
datos), además del uso de Java y de XML en la base de datos (capítulos Java y El analizador de XML). Para terminar,
este libro presenta el entorno de desarrollo de aplicación Web Oracle Application Express (capítulo Application
Express).
1. Generalidades sobre los archivos
Un archivo informático es un conjunto de datos de la misma naturaleza (texto, código ejecutable, datos...), que se
identifica mediante un nombre y se guarda en un soporte físico (disco duro, disquete, cinta, CDROM...).
Un archivo puede tener diferentes funciones:
l archivo de programa: contiene código que puede ser ejecutado por el sistema operativo.
l archivo de texto: contiene caracteres ASCII.
l biblioteca de funciones: contiene código ejecutable que puede ser utilizado por un programa.
l archivo de periférico: permite el direccionamiento de los periféricos (UNIX).
l archivo de datos: permite almacenar información generada por una aplicación, etc.
Los archivos de datos se distinguen según su utilidad en el seno de la aplicación, marcando el tipo de archivo. Este
tipo permitirá seleccionar a la vez el soporte físico del archivo y su organización.
Tipos de archivos de datos
Los archivos permanentes contienen los datos básicos de la aplicación. Generalmente, sus registros están formados
por numerosos campos y su tamaño es grande. El tiempo de vida de estos archivos suele ser largo. Algunos
ejemplos de archivos permanentes son los archivos de clientes, los catálogos de productos y las fichas de
empleados.
Los archivos de operación contienen datos que hacen referencia a los archivos permanentes, aportando
información complementaria, en general de carácter puntual. Los registros están compuestos principalmente por
códigos que identifican los registros de los archivos básicos. El número de registros de estos archivos suele ser
elevado, aunque su tiempo de vida es corto. Dentro de este tipo de archivo se puede citar, por ejemplo, el archivo
de pedidos de un departamento comercial, que almacena los pedidos de un cliente, o las fichas horarias de una
aplicación de gestión de personal, que almacenan el número de horas trabajadas por un empleado en un
determinado puesto de trabajo.
Los archivos de trabajo los crean, generalmente, las aplicaciones. Contienen toda la información de los archivos
permanentes y de los archivos de operación reagrupada en registros compuestos. Su tiempo de vida es el mismo
que el dedicado a su tratamiento. Por regla general, estos archivos ocupan mucho espacio. En este tipo de archivo
se incluyen, por ejemplo, los archivos de edición o los resultados de las consultas.
Los archivos históricos contienen los datos archivados de forma definitiva. Estos archivos proceden, después del
cálculo o la depuración, de los archivos permanentes y de los archivos de operación, quedando como registros
inactivos o para la realización de estadísticas.
2. Organizaciones típicas de los archivos
Las opciones principales para la organización de archivos son la organización secuencial, la organización secuencial
indexada, las bases de datos navegables y, evidentemente, las bases de datos relacionales.
Organización secuencial
El principio de este tipo de organización consiste en generar los registros como series de bytes estructuradas
(mediante caracteres delimitadores o tamaños fijos).
La ventaja de este tipo de organización reside en la simplicidad de uso, la estandarización de las estructuras y la
optimización del espacio de almacenamiento.
Sin embargo, los archivos no guardan entre sí ningún tipo de relación dentro de la aplicación y sólo se pueden leer
secuencialmente (un byte a continuación del otro).
Organización secuencial indexada
Este tipo de organización es una mejora de la organización secuencial que añade un archivo de claves (o de índice)
vinculado al archivo secuencial.
Este archivo de índice contiene criterios de búsqueda seleccionados (índice) y la dirección del dato correspondiente
dentro del archivo secuencial.
Además de las ventajas del sistema secuencial (simplicidad y estandarización), permite encontrar rápidamente un
registro en función de la clave.
El principal inconveniente sigue siendo que los archivos no están relacionados entre sí dentro de la aplicación, por lo
que es necesaria una gran cantidad de programación para garantizar la integridad de los datos. Asimismo, hay que
destacar el despilfarro de espacio debido a la redundancia de los datos (especialmente las claves).
Bases de datos navegables
Son colecciones de archivos relacionados de forma lógica entre sí. Estas bases se crean sobre sistemas propietarios
con el fin de compensar los inconvenientes de los tipos de organización anteriores, en lo que se refiere a la
traducción del diccionario de datos resultante del análisis.
Las ventajas de estas bases de datos son numerosas, destacando los mecanismos de seguridad para el acceso de
los usuarios a la base de datos mediante contraseña, la garantía estructural de la integridad de los datos o las
nuevas posibilidades de lectura de datos gracias a los vínculos directos entre registros de archivos diferentes
(lecturas encadenadas).
Estos sistemas también presentan importantes inconvenientes, entre los que se pueden destacar la complejidad de
mantenimiento y de uso, los requisitos elevados de espacio en disco, memoria y tiempo de procesador y, por último,
la dependencia de estas bases de datos con respecto al sistema operativo.
Los sistemas de gestión de bases de datos relacionales (RDBMS, Relational Database Management System) administran
de forma independiente el nivel lógico (objetos o entidades) y el nivel físico (archivos).
El éxito de los sistemas RDBMS procede fundamentalmente de esta característica. Con estos sistemas, el usuario
solamente gestiona el nivel lógico, lo que proporciona una gran simplicidad a la gestión de los datos, incluso en el
caso de usuarios con pocos conocimientos informáticos.
1. Conceptos y definiciones
El modelo relacional se basa en conceptos básicos sencillos (dominio, relación, atributo) a los que se aplican reglas
precisas.
La implementación de la base de datos se facilita mediante un lenguaje declarativo (no procedimental) sencillo,
basado en la lógica de conjuntos.
a. Dominio
Es un conjunto de valores caracterizado por un nombre.
Cardinalidad
Es el número de elementos de un dominio.
Ejemplo
El diccionario de datos del análisis de una aplicación de gestión comercial puede incluir, entre otras cosas, especificaciones
sobre la gestión de los estados de los pedidos o los números de orden que se deseen visualizar. El modelo relacional traducirá
estas especificaciones del siguiente modo:
b. Producto cartesiano
El producto cartesiano P entre varios dominios D1, D2, ..., Dn se expresa como P = D1 X D2 X ... X Dn y es el
conjunto de las n tuplas (d1, d2, ..., dn) donde cada "di" es un elemento del dominio Di.
Ejemplo
Si se desean generar dos dominios (códigos e impuestos), se pueden obtener parejas formadas por un código y un impuesto.
Codigos = {1,2,3,4}
IVA = {0,4,16}
Codigos X IVA ={(1,0),(1,4),(1,16),
(2,0),(2,4),(2,16),(3,0),(3,4),(3,16),
c. Relación
Una relación definida sobre los dominios D1, D2, ..., Dn es un subconjunto del producto cartesiano de estos
dominios, caracterizado por un nombre.
Atributo
Es una columna de una relación, caracterizada por un nombre.
Grado
Es el número de atributos de una relación.
Ejemplo
Para asociar un único tipo de impuesto a cada código, sólo deben considerarse tres parejas.
Representación
Se realiza en forma de tabla, enumerando los elementos:
O de forma declarativa:
o
2. Principales reglas
Por tanto, el objeto principal gestionado por el modelo relacional es la relación, que está asociada a los conceptos
de dominio y de atributo.
A esta relación se le aplican reglas con el fin de satisfacer las restricciones identificadas en el análisis.
Algunas de estas reglas son:
Coherencia
Unicidad
Todos los elementos de una relación deben ser diferentes.
Identificador
Atributo o conjunto de atributos que permiten caracterizar de forma unívoca cada elemento de la relación.
Clave primaria
Identificador mínimo de una relación.
Claves secundarias
Otros identificadores de la relación.
Integridad referencial
Esta regla impone que un atributo o conjunto de atributos de una relación aparezca como clave primaria en otra
relación.
Clave externa
Atributo o conjunto de atributos que verifica la regla de integridad referencial.
Ejemplo
El análisis de una aplicación de gestión comercial requiere gestionar una serie de clientes que tienen unas determinadas
características (nombre y dirección) y los pedidos que realicen dichos clientes.
Puede emplearse el siguiente modelo:
CLIENTES (NUMEROCLI,NOMBRECLI,DIRECCLI)
PEDIDOS (NUMEROPED,FECHAPED,NUMEROCLI,ESTADOPED)
Valor nulo
En el modelo relacional, el concepto de valor nulo es perfectamente admisible. Se trata de un valor que representa
un dato desconocido o inaplicable en una columna.
Se denota mediante _ , ˆ o NULL.
Restricción de entidad
Cualquier valor que forme parte de una clave primaria debe ser diferente a NULL.
Ejemplo
En la relación de artículos se admite que el precio o el código de IVA sean desconocidos, pero la referencia del artículo (clave
primaria) debe especificarse.
Se trata de un método de extracción de datos que permite manipular tablas y columnas. Su principio se basa en la
creación de tablas nuevas (tablas de resultados) a partir de las tablas existentes; estas tablas nuevas serán objetos
que podrán emplearse de forma inmediata.
Los operadores del álgebra relacional que permiten crear tablas de resultados se basan en la teoría de conjuntos.
1. Operadores
a. Unión
La unión entre dos relaciones con la misma estructura (grado y dominios) proporciona una tabla resultante con la
misma estructura y cuyos elementos son el conjunto de los elementos diferentes de las dos relaciones iniciales.
Notación : Rx = R1 R2
Ejemplos
Sean las tablas CLIOESTE y CLICENTRO:
Clientes de las dos regiones:
CLIENTES=CLIOESTE CLICENTRO
b. Intersección
La intersección entre dos relaciones de la misma estructura (grado y dominios) proporciona una tabla resultante
de la misma estructura y cuyos elementos son el conjunto de los elementos comunes a ambas relaciones iniciales.
Notación: Rx = R1 R2
Ejemplo
CLICOMUN=CLIOESTE CLICENTRO
c. Diferencia
La diferencia entre dos relaciones con la misma estructura (grado y dominios) proporciona una tabla resultante con
la misma estructura y cuyos elementos son el conjunto de los elementos de la primera relación que no se
encuentran en la segunda relación.
Notación: Rx = R1 R2
Ejemplo
Los clientes que solo pertenecen a la región OESTE son:
CLIOESTESOLO=CLIOESTE - CLICENTRO
d. Restricción
La restricción de acuerdo con una condición produce, a partir de una relación, otra relación con el mismo esquema
y que solo contiene los elementos de la relación inicial que cumplen la condición.
Notación: Rx = σ (condición) R1
La condición se expresa como sigue:
operador un operador de comparación: =, <>, >, <, >=, <=
valor una constante u otro atributo.
Ejemplos
Clientes de ORENSE:
CLIORENSE=σ(DIRECCION="ORENSE")CLIOESTE
ART1=σ(REFART>="AB" AND REFART<"AC")ARTICULOS
Alfombras "baratas":
ART2=σ(PRECIO<=1000)ART1
e. Proyección
La proyección de una relación sobre un grupo de atributos da lugar a una relación resultante que tiene como
esquema solamente dichos atributos y como elementos las distintas ntuplas compuestas por los valores
asociados a dichos atributos.
Notación: Rx = π R (A1, A2, ..., An).
Ejemplos
Pedidos y estado de los pedidos:
PED= π PEDIDOS(NUMEROPED,NUMEROCLI,ESTADOPED)
Clientes que han realizado pedidos:
CLIPED1= π PEDIDOS(NUMEROCLI)
Clientes y estado de los pedidos:
f. Producto cartesiano
El producto cartesiano de dos relaciones da como resultado una relación que tiene como esquema todos los
atributos de las dos relaciones existentes y como elementos la asociación de cada línea de la primera tabla con
cada línea de la segunda tabla.
Notación: Rx = S1 X S2
Ejemplo
Sean las tablas:
INVENTARIO = DEPOSITO X ART2
g. Combinaciones
La combinación entre dos relaciones de acuerdo a una condición se obtiene aplicando una restricción al producto
cartesiano.
Notación: Rx = S1 JOIN (condición) S2
Ejemplo
Sean las tablas:
Combinacióntheta
La condición es una comparación entre dos atributos.
Equicombinación
La condición es una igualdad entre dos atributos.
Combinación natural
Es una combinación de igualdad entre atributos con el mismo nombre.
h. Campos calculados elementales
Proyección sobre una relación asociada a un cálculo que se realiza sobre cada línea para crear uno o varios
atributos nuevos.
Notación: Rx = π S (A1, ..., N1 = expresión calculada...)
La expresión calculada puede ser:
l una operación aritmética,
l una función matemática,
l una función de cadena.
Ejemplo
LINEAPEDIMP = π LINEAPED(NUMPED,NUMLIN,REFART,
IMPLINEA=CANTPED*PRECSINIVA)
i. Cálculos de valores agregados
Proyección sobre una relación asociada con uno o varios valores agregados que se calculan sobre un atributo para
todos los elementos de la relación o de la agrupación vinculada a la proyección, con el fin de crear uno o varios
atributos nuevos.
Notación: Rx = π S (A1, ..., N1= función estadística (Ax), ...)
Las funciones estadísticas son:
COUNT (*) número de líneas.
COUNT (atributo) número de valores no nulos (NULL).
SUM (atributo) suma de valores no nulos.
AVG (atributo) media de valores no nulos.
MAX (atributo) valor máximo (no nulo).
MIN (atributo) valor mínimo (no nulo).
Ejemplos
Número total de clientes que hay en la tabla.
NUMCLIENTES=π CLIENTES(N=COUNT(*))
Total de los importes de línea por pedido:
PEDVALOR=π LINEAPEDIMP(NUMPED,TOTPED=SUM(IMPLINEA))
STATART=π ARTICULOS(CATEGORIA,MASCARO=MAX(PRECIO), MASBARATO=MIN(PRECIO),MEDIO=AVG(PRECIO))
2. Etapas para la resolución de problemas
En una base de datos conocida (esquemas, dominios, relaciones, elementos), la resolución de un problema se
realiza en tres etapas.
a. Análisis de las necesidades
l Expresar las necesidades expuestas por el cliente en forma de relación.
l Determinar los atributos y las relaciones que se van a utilizar.
l Especificar los campos calculados elementales y agregados para crear los atributos no existentes.
b. Definición de la vista
La vista es una relación intermedia que contiene todos los atributos que permiten realizar la extracción de datos,
con sus relaciones de origen, sus clases de atributos y las operaciones que hay que aplicar.
Clases de atributos
Clase a: atributo que interviene en la relación resultante.
Clase b: atributo que interviene en un cálculo.
Clase c: atributo que interviene en una restricción.
Clase d: atributo que interviene en una combinación.
c. Orden y especificación de las operaciones
En general, y salvo excepciones, el orden de las operaciones puede ser el siguiente:
1 Relaciones implicadas.
2 Restricciones (para eliminar las filas que no son útiles).
3 Combinaciones, Productos cartesianos, Uniones, Intersecciones, Diferencias (para asociar las filas restantes).
4 Campos calculados elementales (para crear nuevas columnas).
5 Campos agregados (para las columnas de totalización).
6 Combinación entre la tabla obtenida en el punto 5 y la tabla inicial del punto 4 (para añadir las columnas
agregadas a las restantes).
8 Restricciones relacionadas con los atributos calculados.
9 Proyecciones para eliminar valores duplicados.
10 Proyección final para eliminar los atributos inútiles en la tabla resultante.
Ejemplo
Sea la base de datos compuesta por las tablas siguientes:
CLIENTES (NUMCLI,NOMCLI,DIRECCION)
ARTICULOS (REFART,DESCRIPCION,PRECSINIVA)
PEDIDOS (NUMPED,NUMCLI,FECHAPED,ESTADOPED)
LINEASPED (NUMPED,NUMLIN,REFART,CANTPED)
Se desea obtener el formulario de confirmación del pedido N°1301.
Plantilla del documento:
A partir del análisis de la plantilla y de las tablas iniciales, se deduce que:
fecha actual: información que puede especificarse durante la
generación del formulario.
N° de pedido = NUMPED de PEDIDOS
Fecha del pedido = FECHAPED
Nombre del cliente = NOMCLI de CLIENTES
Dirección del cliente = DIRECCION de CLIENTES
Referencia = REFART de LINEASPED
Descripción = DESCRIPCION de ARTICULOS
Cantidad pedida = CANTPED de LINEASPED
Precio sin IVA = PRECSINIVA de ARTICULOS
Importe sin IVA= campo que hay que calcular
Total sin IVA = campo que hay que calcular
Para definir el documento, será necesaria por tanto la siguiente tabla:
siendo IMPSINIVA = PRECSINIVA*CANTPED en cada línea del pedido y TOTSINIVA = SUM(IMPSINIVA) el precio total del
pedido.
Vista
Operaciones
Restricción sobre el número de pedido:
T1=σ(NUMPED=1301) PEDIDOS
T2=σ(NUMPED=1301) LINEASPED
Combinación natural de PEDIDOS y LINEASPED:
T3=T1 JOIN (T1.NUMPED=T2.NUMPED) T2
Combinación natural de PEDIDOS y CLIENTES:
Combinación natural de LINEASPED y ARTICULOS:
T5=T4 JOIN (T4.REFART=ARTICULOS.REFART) ARTICULOS
Proyección del campo calculado elemental IMPSINIVA y eliminación de las columnas no útiles:
T6=π T5(NUMPED,FECHAPED,NOMCLI,DIRECCION,REFART,
DESCRIPCION,PRECSINIVA,CANTPED,IMPSINIVA=PRECSINIVA*CANTPED)
Proyección del valor agregado para TOTSINIVA:
T7=πT6(NUMPED,TOTSINIVA=SUM(IMPSINIVA))
Combinación para disponer de todas las columnas en la tabla resultante:
CONFCDE=T6 JOIN (T7.NUMPED=T6.NUMPED) T7