SQL 3
1. ¿Qué es SQL3?
El SQL3 es una extensión del estándar de
bases de datos SQL92 que incluye soporte
para la administración de bases de datos
orientadas a objetos.
SQL3 es un estándar para productos y no un
producto en sí.
El SQL3 está fuera de la tradición de administración de Bases de datos, pero
está dentro de la de pensamiento de objetos. La meta de los comités que
trabajan en el SQL3 ha sido describir un estándar que logre la compatibilidad
con el SQL92. Esto significa que todas las características y funciones del
SQL92 también funcionan con el SQL3.
El SQL3 es una facilidad de base de datos relacional con características de
objetos agregadas, en comparación con una nueva facilidad de bases de datos
orientadas a objetos.
En el SQL3 se incorporan tres (3) grupos de nuevas ideas, para que sea completo
desde el punto de vista computacional:
1.1.- Soporte para tipos de datos abstractos (ADT).
Es una estructura que define el usuario, la cual es equivalente a un
objeto OOP.
1.2.- Mejoras a las definiciones de las tablas.
El SQL3 amplía la definición de las tablas de muchas maneras:
Las tablas SLQ3 tiene un identificador de renglones, el cual es un
identificador único de cada renglón de una tabla. Éste es igual a una llave
sustituta.
Definición de tres tipos de tablas: CONJUNTO (no tiene renglones
duplicados), MULTICONJUNTO (puede tener renglones duplicados) y
LISTA (tiene un orden definido por una o más columnas).
1.3.- Extensiones a las construcciones de lenguaje.
Se añaden instrucciones de lenguaje que hacen posible desarrollar una
lógica de un renglón a la vez dentro del mismo SQL, lo que lo hace cada
vez más parecido a un lenguaje de programación tradicional.
Características del SQL3
Tipos Base Extended
Tipos ROW.
Tipos definidos por el usuario.
Rutinas definidas por el usuario.
Subtipos y supertipos.
Subtablas y supertablas.
Tipos de referencia y la identidad del objeto.
Tipos Colección.
Tipos base extended
Video
Imágenes
AudioTexto
Espacial
Temporal
Geográfica
Página web
Nuevos Tipos de Datos
Boolean
CLOB (Objeto Caracter Grande)
BLOB (Objeto Binario Grande)
Existe una declaración CREATE TYPE que les permite a los usuarios crear sus
propios tipos con su correspondiente instrucción DROP TYPE.
A su vez SQL 3 introduce dos nuevos operadores de agregado:
EVERY - not ALL
ANY
Nuevo predicado:
SIMILAR
SELECT ALL FROM TABLE WHERE NAME SIMILAR TO ’(SQL-(86|89|92|99))|
(SQL(1|2|3))’
Tipos Collection
List: Colección ordenada. Permite Duplicados.
Array: Una dimensión única.
Conjunto: Colección desordenada, sin duplicados.
Multiset: Colección desordenada, permite duplicados.
Entre otras características se pueden mencionar:
Consultas recursivas (recursión lineal).
Mejora de la seguridad: roles.
Disparadores como reglas activas: inserción, borrado y actualización
Facilidades para BBDD distribuidas.
Estructuras de control.
2. Ejemplos de sentencias y tipos de datos en SQL3.
2.1.- Ejemplos con el uso de campos Boolean.
2.2- Ejemplos con el uso de campos CLOB y BLOB.
2.3- Ejemplos con el uso de campos ARRAY.
2.4- Ejemplos con el uso de campos ROW.
2.5- Ejemplos con el uso de campos UDT.
2.6.-Ejemplo del uso de Triggers.
2.1- Ejemplos con el uso de campos Boolean.
En esta imagen podemos ver, que en SQL2, se trataba de emular este tipo de
campos, los diseñadores de BD, se las ingeniaban con campos enteros a los
cuales les asignaban 0 ó 1 , o con campos de texto, en donde se le asignaban
valores como "Sí" ó "No", entre otros.
Con la llegada del SQL3, ya se pueden usar los campos booleanos directamente,
sin ningún tipo artimaña para su manipulación.
Con este Create podemos observar cómo se
crea una tabla de inventario, con una serie
de campos y entre ellos definimos el campo
nacional como boolean.
Con este Select podemos observar
como se condiciona la selección de
los registros al colocarle que el
campo nacional = TRUE, con lo cual estaríamos seleccionado solo los productos
nacionales.
2.2- Ejemplos con el uso de campos CLOB y BLOB.
En esta imagen podemos ver, que como en SQL2, NO existían este tipo de
campos, los diseñadores de BD, se las ingeniaban con campos de texto, en donde
se le asignaban valores como la ruta en donde se encuentra la imagen y el nombre
de la misma, ó simplemente el nombre de la imagen y se destinaba un sitio
especifico para el almacenamiento de estas.
Con la llegada del SQL3, llegan los campos CLOB y BLOB, con los cuales podemos
almacenar extensas cadenas de textos e imágenes dentro de la base de datos.
Eso si, esto a acarreado una gran discusión entre los DBA, ya que algunos
prefieren seguir usando la metodología anterior, debido a: 1. Lo complicado de
manejar este tipo de campos. 2. Por lo que el almacenar las imágenes hace crecer
el tamaño de la base de datos.
Y los que si quieren usarlos, alegando, que de esta manera se mantiene la
integridad de los datos de la base de datos, ya que al tener la imagen almacenada
dentro, evita que si alguien elimina alguna imagen del disco, la integridad de los
datos se perdería.
Con este Create podemos observar cómo se crea
una tabla de documentales, con una serie de campos
y entre ellos definimos los campos resumen y
texto_doc como CLOB y el campo video_doc como
BLOB. En los dos primeros almacenaríamos el resumen del documental y en el
segundo, toda la información acerca del mismo, así como en el campo BLOB,
almacenaríamos el video del documental.
Con este Select podemos observar cómo,
con simplemente escribir un comando
conocido, podemos acceder a la
información almacenada.
2.3- Ejemplos con el uso de campos ARRAY.
En esta imagen podemos ver, que como en SQL2, NO existían este tipo de
campos, cuando un diseñador necesitaba almacenar la cantidad de piezas que se
vendían mensualmente de algún producto, creaba un campo para cada valor de
mes, tal como se observa en la imagen anterior.
Con la llegada del SQL3, llega el campo
Array, en el cual se puede almacenar varios
valores dentro de sí mismo, tal cual como si
se tratara de una variable tipo arreglo, en
la imagen podemos observar como en SQL3 solo se requiere de un solo campo
para reproducir lo deseado en el ejemplo con [Link] el ejemplo
anterior, tendríamos:Con este Create podemos ver cómo se crea una tabla de
documentales, además de los campos mencionados anteriormente, ahora le
agregamos el campo autores que es un arreglo de 10, en el cual podríamos
almacenar hasta 10 autores de cada [Link] este Insert podemos
observar cómo haríamos para ingresar los valores dentro del campo Array.
Con este Select podemos ver cómo haríamos
para seleccionar el primer valor del campo Array.
2.4- Ejemplos con el uso de campos Row.
En esta imagen podemos ver, que en SQL2, para almacenar los nombres y apellidos
por separado de una persona, se creaba un campo para cada uno y luego se hacia
referencia al que se necesitara.
Con la llegada del SQL3, llegan los campos ROW, con los cuales podemos crear
campos estructurados, y como podemos observar en la imagen, solo creamos un
campo, el cual contendra de manera separada cada uno de los datos de la persona.
Con este Create
podemos observar
como se crea una
tabla de clientes, en
donde tenemos el
campo nombre como ROW. Allí vemos como luego se tiene eldesglose de los nombres
y apellidos del cliente.
Con este Select podemos
observar como luego hacemos refrencia a una parte del campo nombre, en este caso
al primer apellido del cliente.
2.5- Ejemplos con el uso de campos UDT.
Con este Create Type podemos observar como
se crea una typo definido por el usuario.
Con este Create podemos observar como
se crea una tabla de clientes en donde su
campo nombre es del tipo del que acabamos de crear con [Link] este
Insert podemos observar como se almacenan los valores dentro de la tabla que posee
un campo definido por el
usuario.
7.6- Ejemplo del uso de Triggers.
Con esta imagen podemos observar como se crea un trigger en la tabla empleados,
de tal manera de que cada vez que alguien intente insertar o actualizar el salario de
una persona y dicho salario sea menor que el salario mínimo establecido, el trigger
establecerá que se cambie al mínimo.