Temas Específicos para La Preparación de La Oposición Al Cuerpo Superior de Sistemas y Tecnologías de La Información de La Administración Del Estado
Temas Específicos para La Preparación de La Oposición Al Cuerpo Superior de Sistemas y Tecnologías de La Información de La Administración Del Estado
Fecha: 2007
II. Tecnología Básica.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 1
II. Tecnología Básica.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 2
II. Tecnología Básica.
El modelo de datos relacional fue presentado por Codd en 1970, en un artículo de ACM titulado “ Un
modelo de datos relacional para grandes bancos de datos compartidos”, constituyó un hito en la historia
de las bases de datos. En la actualidad los sistemas de base de datos relacionales dominan el mercado.
Por esa razón las metodologías de desarrollo de bases de datos en el diseño lógico se centran en el
modelo relacional.
Cuando el DR E.F. Codd propone un nuevo modelo de datos, los SGBD dominantes en el mercado, tipo
Codasyl y Jerárquico, no habían logrado superar la dependencia de las aplicaciones con respecto de los
datos.
A diferencia de estos modelos basados en punteros físicos por los que tenía que navegar el programador.
El modelo relacional propone como objetivo principal aislar al usuario de las estructuras físicas de los
datos, consiguiendo la independencia de las aplicaciones respeto de los datos.
Una Base de Datos Relacional es un conjunto de informaciones relacionadas que sustentan a la
información de una organización y se caracterizan por:
- Sencillez y uniformidad: los usuarios ven la base de datos relacional como una colección de
tablas, y al ser la tabla la estructura fundamental del modelo, este goza de gran uniformidad, lo
que unido a unos lenguajes no navegacionales y orientados al usuario final da como resultado la
sencillez que los sistemas relacionales.
- Sólida fundamentación teórica: Al estar definido con rigor matemático, el diseño y la evaluación
del mismo pueden realizarse por métodos sistemáticos basados en abstracciones.
- Independencia de la interfaz de usuario: Los lenguajes relacionales, al manipular conjuntos de
registros, proporciona una gran independencia respecto a la forma en que los datos están
almacenados.
- Exhaustivas: aporta la cantidad y calidad de información exigible.
- No redundantes: es equivalente en BDR a una redundancia controlada (debido al intercambio de
claves tenemos algún tipo de redundancia).
- Estructuradas en tablas o relaciones. Cualidades:
o No pueden tener atributos multievaluados.
o El orden de filas o columnas es intrascendente.
2. MODELO RELACIONAL
2.1. Características
El documento elaborado por Codd presenta de un modelo de datos basado en la teoría de las relaciones,
donde los datos se estructuran lógicamente en forma de relaciones o tablas, se apoya sobre el Álgebra y
Cálculo Relacional. El objetivo fundamental del modelo es mantener la independencia de esta estructura
lógica respecto al modo de almacenamiento y a otras características de tipo físico.
Codd definió 13 reglas que definen el modelo relacional.
La estructura básica y única del modelo relacional es la relación también llamada tabla, que sirve para
presentar tanto las entidades como las relaciones entre ellas.
Las tablas están formadas por:
o Columnas: atributos de la entidad, son las propiedades de las relaciones, y se definen sobre
dominios.
o Filas: diferentes valores de esos atributos de entidad.
o Dominio: Conjunto nominado, finito y homogéneo de valores atómicos que puede tomar una
columna. Cada dominio puede especificarse por extensión o por enumeración. Tiene existencia
propia con independencia de las relaciones.
o Universo de una tabla: Universo descrito definido por la unión de los dominios de las columnas.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 3
II. Tecnología Básica.
Restricciones
• Inherentes
Son las derivadas de la misma estructura del modelo, que no tienen que ser definidas por el
usuarios e imponen limitaciones a la hora de modelar el mundo real.
El modelo impone limitaciones debidas a la existencia de la relación como único constructor.
Otras restricciones provienen de la definición matemática de relación al ser un conjunto no se
permite la existencia de tuplas duplicadas. Y de hay la obligatoriedad de clave primaria o
identificador, conjunto mínimo de atributos que identifican de forma univoca las tuplas de una
relación
Integridad de la Entidad: Es una relación inherente, debido a la necesidad de que todas las
tuplas sena distintas, lo que establece que “Ningún atributo de la tabla puede tomar valores
nulos”.
• Semánticas
Son facilidades proporcionadas por el modelo a fin de poder recoger en el esquema de la
relación la semántica del universo de discurso que estamos modelando. Son restricciones que
tiene que definir el diseñador a fin de que el esquema sea un reflejo lo mas fiel posible del
mundo real; de ahí la importancia de las restricciones en el diseño de la base de datos.
Un SGBDR debe incluir facilidades que permitan:
o En la fase de definición
Describir las relaciones con precisión y sencillez.
Indicar las acciones ante una posible violación de una restricción.
Verificar la consistencia de las restricciones entre sí mismas.
o En la fase de manipulación:
Comprobar que las actualizaciones cumplen las restricciones de integridad.
Ponen en marcha las acciones indicadas en el caso de que las restricciones no
se cumplan.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 4
II. Tecnología Básica.
Integridad referencial: Si una relación R2 tiene como descriptor CA que es clave ajena que
referencia la Clave primaria CP de una relación R1 tome valor de CA debe coincidir con el valor
CP o se nulo:
R2.CA=R2.CP
Grado: nº de columnas
En 1984 Codd publicó las reglas que un verdadero sistema relacional debería de cumplir. En la práctica
algunas de ellas son difíciles de realizar. Un sistema podrá considerarse "más relacional" cuanto más siga
estas reglas. Para que un gestor pueda considerarse un Gestor Relacional tiene que cumplir 6 reglas al
menos:
REGLA 0
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 5
II. Tecnología Básica.
Para que un sistema se denomine sistema de gestión de bases de datos relacionales, este sistema debe
usar (exclusivamente) sus capacidades relacionales para gestionar la base de datos.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 6
II. Tecnología Básica.
El problema es determinar cuáles son las vistas teóricamente actualizables, ya que no está muy claro.
Cada sistema puede hacer unas suposiciones particulares sobre las vistas que son actualizables.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 7
II. Tecnología Básica.
La normalización es una técnica para diseñar la estructura lógica de los datos de un sistema de
información en el modelo relacional, desarrollada por E. F. Codd en 1972. Es una estrategia de diseño de
abajo a arriba: se parte de los atributos y éstos se van agrupando en relaciones (tablas) según su
afinidad. Aquí no se utilizará la normalización como una técnica de diseño de bases de datos, sino como
una etapa posterior a la correspondencia entre el esquema conceptual y el esquema lógico, que elimine
las dependencias entre atributos no deseadas. Las ventajas de la normalización son las siguientes:
La dependencia funcional es una noción semántica. Si hay o no dependencias funcionales entre atributos
no lo determina una serie abstracta de reglas, sino, más bien, los modelos mentales del usuario y las
reglas de negocio de la organización o empresa para la que se desarrolla el sistema de información. Cada
dependencia funcional es una clase especial de regla de integridad y representa una relación de uno a
muchos.
En el proceso de normalización se debe ir comprobando que cada relación (tabla) cumple una serie de
reglas que se basan en la clave primaria y las dependencias funcionales. Cada regla que se cumple
aumenta el grado de normalización. Si una regla no se cumple, la relación se debe descomponer en varias
relaciones que sí la cumplan.
La normalización se lleva a cabo en una serie pasos. Cada paso corresponde a una forma normal que tiene
unas propiedades. Conforme se va avanzando en la normalización, las relaciones tienen un formato más
estricto (más fuerte) y, por lo tanto, son menos vulnerables a las anomalías de actualización. El modelo
relacional sólo requiere un conjunto de relaciones en primera forma normal. Las restantes formas
normales son opcionales. Sin embargo, para evitar las anomalías de actualización, es recomendable llegar
al menos a la tercera forma normal.
Para que una solución sea relacional tiene que cumplir la teoría de normalización.
La metodología METRICA 3considera suficiente que se cumplan con las 3 primeras formas normales.
(1FN, 2FN, 3FN).
Vamos a continuación a definir las formas normales, las tres primeras y la de Boyce y Codd, son las que se
apoyan en las dependencias funcionales.
Una relación está en primera forma normal si, y sólo si, todos los dominios de la misma contienen valores
atómicos, es decir, no hay grupos repetitivos. Si se ve la relación gráficamente como una tabla, estará en
1FN si tiene un solo valor en la intersección de cada fila con cada columna.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 8
II. Tecnología Básica.
Si una relación no está en 1FN, hay que eliminar de ella los grupos repetitivos. Un grupo repetitivo será el
atributo o grupo de atributos que tiene múltiples valores para cada tupla de la relación. Hay dos formas de
eliminar los grupos repetitivos. En la primera, se repiten los atributos con un solo valor para cada valor del
grupo repetitivo. De este modo, se introducen redundancias ya que se duplican valores, pero estas
redundancias se eliminarán después mediante las restantes formas normales. La segunda forma de
eliminar los grupos repetitivos consiste en poner cada uno de ellos en una relación aparte, heredando la
clave primaria de la relación en la que se encontraban.
La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o más atributos. Si una
relación está en 1FN y su clave primaria es simple (tiene un solo atributo), entonces también está en 2FN.
Las relaciones que no están en 2FN pueden sufrir anomalías cuando se realizan actualizaciones.
Para pasar una relación en 1FN a 2FN hay que eliminar las dependencias parciales de la clave primaria.
Para ello, se eliminan los atributos que son funcionalmente dependientes y se ponen en una nueva
relación con una copia de su determinante (los atributos de la clave primaria de los que dependen).
Aunque las relaciones en 2FN tienen menos redundancias que las relaciones en 1FN, todavía pueden sufrir
anomalías frente a las actualizaciones. Para pasar una relación de 2FN a 3FN hay que eliminar las
dependencias transitivas. Para ello, se eliminan los atributos que dependen transitivamente y se ponen en
una nueva relación con una copia de su determinante (el atributo o atributos no clave de los que
dependen).
Una relación está en la forma normal de Boyce-Codd si, y sólo si, todo determinante es una clave
candidata.
La 2FN y la 3FN eliminan las dependencias parciales y las dependencias transitivas de la clave primaria.
Pero este tipo de dependencias todavía pueden existir sobre otras claves candidatas, si éstas existen. La
BCFN es más fuerte que la 3FN, por lo tanto, toda relación en BCFN está en 3FN.
La violación de la BCFN es poco frecuente ya que se da bajo ciertas condiciones que raramente se
presentan. Se debe comprobar si una relación viola la BCFN si tiene dos o más claves candidatas
compuestas que tienen al menos un atributo en común. No siempre es posible llegar a la FNBC sin perdida
de dependencias funcionales
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos. 9
II. Tecnología Básica.
Decimos que una relación estás en 5FN si, y sólo si, está en todas las anteriores formas normales y toda
dependencia de combinación está implicada por la clave candidata. Un esquema de relaciones R está en
5FN con respecto a un conjunto D de dependencias funcionales, de valores múltiples y de producto, si
para todas las dependencias de productos en D se cumple por lo menos una de estas condiciones:
Otra definición mas sencilla es que una relación está en 5FN si y solo si toda dependencia funcional
multivaluada o de combinación no trivial es consecuencia de las claves candidatas.
2.5.1. Operadores
Operadores básicos: Son operacionalmente completos ,permiten expresar cualquier consulta a una BDR
y son los siguientes:
• UNION: R U S
La unión de dos relaciones R y S, es otra relación que contiene las tuplas que están en R, o en
S, o en ambas, eliminándose las tuplas duplicadas. R y S deben ser unión-compatible, es decir,
definidas sobre el mismo conjunto de atributos
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
10
II. Tecnología Básica.
• DIFERENCIA: R - S
La diferencia de dos relaciones R y S, es otra relación que contiene las tuplas que están en la
relación R, pero no están en S.
R y S deben ser unión-compatible
• PRODUCTO CARTESIANO.: R x S
El producto cartesiano (RxS) es una relación de grado m+n constituida por todas las tuplas, en
las que los m primeros elementos son una tupla de R y los n últimos una de S.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
11
II. Tecnología Básica.
Operadores derivados:
• INTERSECCIÓN. R ∩ S
Define una relación que contiene el conjunto de todas las filas que están tanto en la
relación R como
en S.
R y S deben ser unión-compatible
Equivalencia con operadores básicos
R ∩ S = R – (R – S)
• DIVISIÓN.R / S
Define una relación sobre el conjunto de atributos C, incluido en larelación R, y que contiene el
conjunto de valores de C, que en las tuplas de R están combinadas con cada una de las tuplas de
S. Condiciones:
grado(R) > grado (S)
conjunto atributos de S Ì conjunto de atributos de R
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
12
II. Tecnología Básica.
• ASOCIACIÓN. R * F S
Define una relación que contiene las tuplas que satisfacen el predicado F en el producto
cartesiano de R y S.
El predicado F es de la forma R.ai θ S.bi donde q representa un operador de comparación
(<, £, >, ³, =, ¹)
El predicado no tiene por que definirse sobre atributos comunes.
Equivalencia con operadores básicos
R F S = σ F(R C S)
Equijoin
Si el predicado F contiene únicamente el operador de igualdad
o Se define la asociación como el conjunto de tuplas pertenecintes al producto cartesiano
de R1 y R2, que cumplen la condición de que la columna i-ésima de R1 está relacionada
con la columna j-esima de R2, según el operador teta.
o JOIN. R * S
El resultado es una relación con los atributos de ambas relaciones y se obtiene combinando
las tuplas de ambas relaciones que tengan el mismo valor en los atributos comunes.
Normalmente la operación de join se realiza entre los atributos comunes de dos tablas que
corresponden a la clave primaria de una tabla y la clave foránea correspondiente de la otra
tabla.
Método
o Se realiza el producto cartesiano R x S
o Se seleccionan aquellas filas del producto cartesiano para las que los atributos
comunes tengan el mismo valor.
o Se elimina del resultado una ocurrencia (columna) de cada uno de los atributos
comunes
o Equivalencia con operadores básicos
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
13
II. Tecnología Básica.
o R* F S = sF(R X S)
Outer Join
Es una variante del Join en la que se intenta mantener toda la información de los
operandos, incluso para aquellas filas que no participan en el Join.
Se “rellenan con nulos” las tuplas que no tienen correspondencia en el Join.
Tres variantes
Left: se tienen en cuenta todas las filas del primer operando
Right: se tienen en cuenta todas las filas del segundo operando
Full:se tienen en cuenta todas las filas de ambos operandos
3. EL LENGUAJE SQL
3.1. Generalidades
SQL (STRUCTURES QUERY LANGUAJE, lenguaje estructurado de consultas) es un lenguaje de consulta
utilizado para manipular bases de datos relacionales. De los distintos lenguajes que presentaban los
primeros SGBDR (Sistemas de Gestión de Bases de Datos Relacionales), ha acabado imponiéndose como
estándar, tanto de iure como de facto, el SQL, lenguaje que actualmente ofrecen, aunque con variaciones,
la mayor parte de los productos comerciales y que viene siendo objeto, desde hace varios años, de un
intenso proceso de normalización.
Fue desarrollado a mediado de los años 70 por IBM. Por esos años se llamaba SEQUEL (Structured English
QUEry Language) y servía como interfaz para un sistema experimental de base de datos llamado SYSTEM
R. Fue introducido por Oracle por primera vez en una base de datos comercial en el año 1979.
El lenguaje se utiliza para definir, consultar y actualizar la base de datos, y es el más popular de su estilo.
La estructura básica para consultas en SQL es el SELECT-FROM-WERE.
Conceptualmente, SQL es un lenguaje de definición de datos (LDD), un lenguaje de definiciones de vistas
(LDV) y un lenguaje de manipulación de datos (LMD), que posee también capacidad para especificar
restricciones y evolución de esquemas.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
14
II. Tecnología Básica.
3.1.1. Normalización
Debido a la importancia de los lenguajes de bases de datos, existen numerosos organismos que se ocupan
de su estandarización.
En el comité conjunto JTC1, establecido por los organismos ISO e IEC para las Tecnologías de la
Información, existe el subcomité 21 que engloba al WG3 que se dedica a las bases de datos.
En Estados Unidos, además del grupo H2 de ANSI, también el NIST (National Institute of Standards and
Technology) se ocupa de la estandarización del SQL.
Por otra parte, hay que destacar el denominado SQL Access Group, un consorcio formado por varias
decenas de fabricantes de productos con el fin de “definir especificaciones técnicas que permitan a
distintos SGBDR y herramientas de aplicación trabajar conjuntamente"; para ello se propone acelerar los
esfuerzos de estandarización del lenguaje SQL aportando propuestas a los grupos RDA y SQL.
La Unión Europea, siguiendo las recomendaciones del proyecto EWOS (European Workshop on Open
Systems), ha creado en abril de 1991 el EG DBE (Expert Group on Database Enquiry), en el que también
desempeña un papel muy relevante el SQL.
Además existen otras asociaciones como X/OPEN, la OSF (Open Software Foundation) o la Asociación
Europea de Fabricantes de Ordenadores, que han adoptado extensiones del lenguaje.
Por último, cabe destacar que existen distintos vendedores que han definido sus propios estándares
basándose en los aprobados por ANSI e ISO.
El modelo relacional surge a finales de los años sesenta como resultado de las investigaciones de E.F.
Codd en los laboratorios de IBM en San José (California); los trabajos de Codd dieron lugar a una serie de
estudios teóricos y prototipos que se extienden a partir de 1970.
El lenguaje SQL surge originariamente con el nombre de SEQUEL (Structured English QUEry Language)
implementado en un prototipo de IBM, el SEQUEL-XRM, durante los años 1974-75. Este prototipo
evolucionó durante los años 1976-77, pasándose a denominar su lenguaje SEQUEL/2, y cambiando
posteriormente este nombre por SQL, debido a motivos legales. Poco después, el SISTEMA R de IBM
implementó un subconjunto de este lenguaje.
En 1979 aparece el primer SGBDR comercial basado en SQL -ORACLE, posteriormente van surgiendo otros
productos basados en SQL como son el SQL/DS, DB2, DG/SQL, SYBASE, INTERBASE, INFORMIX, UNIFY,
etc. E incluso otros productos que no poseían el SQL como lenguaje base. INGRES, DATACOM, ADABAS,
SUPRA, IDMS/R- ofrecen interfaces SQL; por lo que este lenguaje se convierte en un estándar de facto,
aunque con múltiples variantes según los distintos fabricantes.
En 1982 el Comité de bases de datos X3H2 de ANSI presenta un lenguaje relacional estándar basado
principalmente en el SQL propio de los productos IBM; en 1986 este organismo aprueba el lenguaje como
norma pasando a denominarse SQL/ANS,(SQL-86 o SQL1)que también es aprobado, al año siguiente,
como norma ISO -ISO (l987). En esta norma se especifican dos niveles (I y II) a cumplir, siendo el nivel I
un subconjunto de las funcionalidades proporcionadas por el nivel II. Este estándar ha recibido numerosas
críticas, ya que resulta ser "una intersección de las instrumentaciones existentes", concebido
primordialmente para proteger los intereses de los fabricantes. Así, por ejemplo, en Codd(1985) se afirma
que ".. desafortunadamente el SQUANS es muy débil, fallando en el soporte de numerosas características
que los usuarios realmente necesitan si quieren aprovechar todas las ventajas del enfoque relacional... El
SQUANS es incluso menos fiel al modelo relacional que el SQL de algunos suministradores...”.
En 1989 se revisa la versión 1 del estándar -ISO(1989)-, revisión conocida como Addendum, que añade
cierta integridad referencial, que se denomina integridad referencial básica, ya que sólo permite definir la
opción de modificación y borrado restringidos y no proporciona cambios en cascada. Por otra parte, ya
que la norma ISO de 1989 no estandariza las definiciones para SQL embebido en lenguajes de
programación -que sólo figuraban en apéndices recomendados-, ANSI define, ese mismo año, un estándar
para el lenguaje SQL embebido -ANS1(1989)-. En este mismo año Apple Computer libera el Data Access
Language (DAL) para sus ordenadores, (DAL es un dialecto del SQL que soporta varios gestores de bases
de datos).
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
15
II. Tecnología Básica.
En junio de 1990, IBM anuncia su estándar DRDA (Distributed Relational Database Access) como parte de
su arquitectura SAA (System Application Architecture).
En abril de 1991 el SAG (SQL Access Group) completa la 1ª Fase de especificaciones técnicas, que define
un estándar para intercambiar mensajes SQL sobre una red OSI, basado en la especialización SQL del RDA
de ISO. En junio de 1991 este grupo realizó una demostración -que constituyó todo un éxito- con más de
veinte SGBDR que se intercambiaban datos y consultas. En el mes de noviembre de este mismo año
Microsoft anunció ODBC (Open Database Connectivity) basado en el estándar del SAG.
En 1992 este grupo completó su segunda fase, que especificaba un IPA (Interfaz para la Programación de
Aplicaciones) CLI (Call Level Interface) y que ampliaba el estándar a más instalaciones cliente/servidor, en
la que además de las especificaciones OSI se incluye otros protocolos de red como, por ejemplo, TCP/IP.
En noviembre de ese año Borland relanzó el estándar ODAPI (Open Database Application Programming
Interface) como IDAPI (Integrated Database Application Programming Interface), con el patrocinio de
IBM, Novell y WordPerfect.
En 1992 también se aprueba como norma internacional una nueva versión del SQL, conocida como SQL2
o SQL-92 -ISO(1992)-, en la que se incrementa substancialmente la capacidad semántica del esquema
relacional, se añaden nuevos operadores, se mejora el tratamiento de errores y se incluyen normas para
el SQL embebido. En esta nueva norma se definen tres niveles de conformidad distintos:
Entry SQL, Intermediate SQL y Full SQL, siendo este último -como su nombre indica- el que ofrece
mayores funcionalidades, mientras que el primer nivel es un subconjunto del segundo y éste, a su vez, del
tercero.
Este estándar ha sido complementado recientemente con dos nuevas partes que abordan la interfaz de
nivel de llamadas (Call-Level Interface), ISO (1995) y la definición de módulos almacenados persistentes
(Persistent Stored Modules) ISO (1996). Esta última norma internacional convierte al SQL en un lenguaje
computacionalmente completo añadiéndole estructuras de control, manejo de excepciones, etc.
En 1999 aparecen nuevas propuestas para extender el SQL, dotándolo de una mayor capacidad
semántica, de ciertos principios del paradigma de la orientación al objeto es el llamado SQL3 con la
publicación en Noviembre de 1999 de ISO/IEC 9075-1:1999 SQL3 Framework. Actualmente existen hasta
13 partes de la norma: la última ISO/IEC 9075-13:2002: Rutinas y Tipos SQL usando lenguaje de
programación Java. De hecho la importancia que tiene hoy en día el OQL del ODMG (Object Database
Management Group es un grupo de fabricantes, proveedores, desarrolladores y usuarios que elaboran
estándares para los Sistemas Gestores de Bases de Datos Orientados a Objetos) ya no tiene tanta fuerza
debido a que SQL3 incluye bases para el trabajo con estructuras orientadas a objetos.
Se trabaja también sobre una extensión del SQL3 para soportar bases de datos multimedia, conocida
como SQL/MM, SQL Multimediay paquetes aplicación (incluyendo extensiones a SQL para minería de
datos. Parte 1 de la norma: ISO/IEC 13249-1:2002 SQL/MM Framework 2nd Edition).
Debido al tamaño que posee el SQL3 se comienza el SQL4, en el que se incluyen aquellas características
del lenguaje que no se encuentran todavía definidas completamente o que necesitan una mayor
profundización. Se trata del primer estandar SQL/XML (2003), se publicó por la International Organization
for Standardization (ISO) como la parte 14 del estándar SQL: ISO/IEC 9075-14:2003. SQL/XML es un
estandard ANSI, ISO que incorpora XML dentro del lenguaje SQL de bases de datos objeto-relacionales.
SQL:2003 es el estándar para acceder y manejar datos de bases de datos objeto-relacionales. Las
empresas y los usuarios necesitan integrar sus datos XML en sus bases de datos objeto-relacionales,
aprovechando las ventajosas facilidades de SQL.
SQL/XML permite almacenar sus documentos XML en sus bases de datos objeto-relacionales, para
consultar dichos documentosmediante “Xpath” y “Xquery” y para “ publicar” sus datos SQL en un formato
de documentos XML.
Debido a esta normalización la mayor parte de los creadores de sistemas de bases de datos relacionales
integran SQL en sus productos :DB2, ORACLE, SQLSERVER....
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
16
II. Tecnología Básica.
Los datos, consultas y aplicaciones pueden por tanto portarse fácilmente de una base de datos a otra.
Año Nombre Alias Comentarios
1986 SQL-86 Sql-87 Pimera publicación hecha por ANSI confirmada por ISO en
1987
1989 SQL-89 Revisión menor
1992 SQL-92 SQL2 Revisión mayor
1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas
(para relaciones jerárquicas), triggers y algunas características
orientadas a objetos.
2003 Sql:2003 Introduce algunas características de XML, cambios en las
funciones, estandarización del objeto sequence y de las
columnas autonumericas
2006 SQL:2006 ISO/IEC 9075-14:2006 Define las maneras en las cuales el
SQL se puede utilizar conjuntamente con XML. Define maneras
importar y guardar datos XML en una base de datos SQL,
manipulándolos dentro de la base de datos y publicando el
XML y los datos SQL convencionales en forma XML. Además,
proporciona facilidades que permiten a las aplicaciones
integrar dentro de su código SQL el uso de XQuery, lenguaje
de consulta XML publicado por el W3C (World Wide Web
Consortium) para acceso concurrente a datos ordinarios SQL y
documentos XML
Un entorno SQL puede contener cero o varios catálogos y, a su vez, un catálogo uno o varios esquemas.
En cada catálogo existe un DEFINITION_SCHEMA que contiene las tablas base sobre las que se define un
conjunto de vistas denominado INFORMATION_SCHEMA, esquemas que son autodescriptivos. Las tablas
base definidas en el estándar son las siguientes:
Los nombres de estas tablas son autoexplicativos y se parecen a las presentes en los catálogos de los
productos existentes.
El lenguaje introduce también el concepto de agrupamiento (cluster), que sirve para referenciar el
conjunto de catálogos a los que se puede acceder en un momento dado.
Por otra parte, merece la pena destacar que en el esquema SQL se puede encontrar, además de tablas,
dominios, aserciones, vistas o la concesión y revocación de privilegios, la definición de conjuntos de
caracteres (Character Set), así como, secuencias de ordenación (Collation) y traducción (Translation) para
estos conjuntos de caracteres. Esto permite soportar lenguajes como el japonés, coreano o chino, que
superan los 256 caracteres y que pueden obtenerse con una extensión de 8 bits del código ASCII.
• Restricciones de integridad.
• El conjunto de índices que se debe mantener para cada relación.
• Información de seguridad y autorización para cada relación.
• La estructura de almacenamiento físico de cada relación en disco.
Sentencias de definición:
• Utilizaremos una extensión de la Forma Normal de Backus (BNF) para
• especificar las cláusulas del lenguaje donde:
• < > representa los símbolos no terminales del lenguaje
• ::= es el operador de definición
• [] indica elementos opcionales
• {} agrupa elementos en una fórmula
• | indica una alternativa
• ... indica repetición
De los distintos elementos que puede contener un esquema relacional en SQL2, estudiaremos los
dominios, aserciones y tablas; tenemos que advertir que presentaremos las opciones y posibilidades que
resultan, a nuestro juicio, más interesantes, remitiendo al lector a las referencias bibliográficas para un
estudio más exhaustivo de los distintos elementos del lenguaje.
3.2.2.1 Esquemas
<definición de esquemas>::=
CREATE SCHEMA <cláusula de nombre del esquema>
[<especificación del conjunto de caracteres del esquema>]
[<elemento de esquema> ... ]
<cláusula de nombre del esquema>::= <nombre del esquema>
| AUTHORIZATION <id. autorización del esquema>
| <nombre del esquema> AUTHORIZATION <id. autorización del
esquema>
donde la opción por defecto puede ser un literal, una función de valor tiempo o
fecha, o bien USER, SYSTEM USER o NULL; mientras que se define
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
18
II. Tecnología Básica.
Así, por ejemplo, se podría definir el siguiente dominio, en el que se quiere especificar, por intensión, que
los tipos de documentos válidos en una biblioteca son artículos o libros:
Por lo que respecta a los atributos de restricción, sirven para indicar si la restricción es diferida o
inmediata:
Así, si el modo de verificación es inmediato, la restricción se verificará al finalizar cada sentencia, mientras
que si es diferido, se verificará al finalizar la transacción.
3.2.2.1.2 Tablas
Hay que recordar que existe una diferencia fundamental entre una tabla en SQL y una relación del modelo
relacional, ya que mientras que ésta se define como un conjunto de tuplas, una tabla es en realidad un
multiconjunto de filas, por lo que admite filas repetidas.
En el SQL92 se pueden definir tablas persistentes -que, como su nombre indica, se almacenan en memoria
secundaria y permanecen allí cuando termina la sesión en la que fueron creadas- o tablas temporales -que
sólo se materializan y tienen existencia en tanto dura la sesión-, tal como indica la definición siguiente:
Los elementos de tabla pueden ser tanto definiciones de columnas como definiciones de restricciones de
tabla. Una columna debe definirse sobre un dominio o bien directamente con un tipo de datos, pudiendo
presentar además valores por defecto y restricciones de columna:
Las definiciones de restricción, tanto de columnas como de tablas, presentan, al igual que en el caso de
los dominios, la posibilidad de nominar dichas restricciones y de indicar si son inmediatas o diferidas
mediante los atributos de restricción:
Las restricciones de columna pueden indicar la obligatoriedad de un valor -escribiendo NOT NULL-, si una
columna es clave primaria de la tabla –mediante PRIMARY KEY-, si es clave alternativa, esto es, que sus
valores no pueden repetirse en toda la tabla -especificando UNIQUE-, o cualquier otra condición. En caso
de que la clave primaria o las claves alternativas estuviesen compuestas por varios atributos, habría que
establecer restricciones de tabla de forma análoga a las de columna anteriormente descritas. En general,
podemos considerar las restricciones de columnas como un caso especial de restricciones de tablas, con lo
que, por ejemplo, la definición de clave primaria -cuando está compuesta sólo por un atributo- puede
realizarse tanto al lado de la columna correspondiente como al finalizar la descripción de atributos.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
19
II. Tecnología Básica.
Un ejemplo de tabla puede ser el siguiente, en la que se definen las editoriales, con una serie de
atributos:
CREATE TABLE Editorial
(Código_E Códigos,
Nombre_E Nombres NOT NULL,
Dirección Dirs NOT NULL,
Ciudad Lugares NOT NULL,
PRIMARY KEY (Código_E),
UNIQUE (Nombre_E));
Como hemos comentado, en el lenguaje SQL-92 no se cumple la restricción inherente al modelo relacional
teórico -CODD (1970)- de que en una tabla no existan dos filas iguales, ya que es opcional la definición de
clave primaria, debido a motivos de compatibilidad con versiones anteriores; esta característica es causa
de numerosas críticas [véase, por ejemplo, CODD (1990)].
Por otro lado, el SQL92 sí soporta la regla de integridad de entidad, ya que se asume la definición NOT
NULL para las columnas que forman parte de la clave primaria. En cuanto a la integridad referencial, el
SQL92 permite definir claves ajenas, especificando, ya sea a nivel de columna o de tabla, la siguiente
restricción:
Es importante destacar que si se especifica sólo el nombre de la tabla referenciada, las columnas
referenciadas serán aquellas que componen la clave primaria de dicha tabla -que en este caso tiene,
obligatoriamente, que tener definida una clave primaria-. Pero es interesante observar que el SQL92
permite referenciar una columna o grupo de columnas, sin que sean necesariamente la clave primaria, y
sólo se exige que estén definidas como UNIQUE. De esta forma se pueden definir dependencias de
inclusión más amplias que las recogidas por la integridad referencial, tal como la propone Codd al
presentar el modelo relacional.
La cláusula MATCH permite precisar si se admiten valores nulos en la clave ajena cuando ya existen otros
valores no nulos en dicha clave.
Por lo que respecta a la acción a tomar en caso de borrado o modificación de los valores de las columnas
referenciadas, el SQL92 admite cuatro posibilidades: operación restringida (en caso de no especificar la
acción referencial disparada o poner NOACTION), operación con transmisión en cascada (CASCADE),
operación con puesta a nulos (SET NULL), operación con puesta a valor por defecto (SET DEFAULT), tal
como se indica a continuación:
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
20
II. Tecnología Básica.
Otra posibilidad para definir restricciones que afecten a varias tablas la constituyen las aserciones:
Por ejemplo, si suponemos que no puede haber editoriales cuya sede se encuentre en Madrid que editen
libros en francés o en alemán, deberíamos construir la siguiente aserción:
que permite eliminar una restricción del dominio (lo que también es aplicable a tablas).
que eliminaría la tabla del esquema (evidentemente, junto con todas las filas que tuviera).
ALTER TABLE EDITORIAL
ADD COLUMN Director VARCHAR (30);
que añadiría una columna a la tabla Editorial que permite especificar quién es su director.
ALTER TABLE Editorial
ALTER COLUMN Ciudad SET DEFAULT 'Madrid';
que fija un valor por defecto para la columna Ciudad.
ALTER TABLE Editorial
DROP COLUMN Dir;
que borra la columna Dir.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
21
II. Tecnología Básica.
3.2.2.1.5 Vistas
Como ya hemos señalado, una vista consta de una expresión de consulta sobre otras vistas y/o tablas:
<definición de vista>::=
CREATE VIEW <nombre de tabla> [<parent. izq.>
<lista de columna> <parent. dcho.>]
AS <expresión de consulta>
[WITH CHECK OPTION]
Así podríamos definir sobre la tabla Documento una vista que sólo contuviese los libros de la siguiente
manera:
La cláusula WITH CHECK OPTION permite controlar que sólo se admiten operaciones de inserción y
modificación que no atenten contra la expresión de consulta que define la vista. Así, por ejemplo, si en el
caso anterior hubiésemos utilizado esta cláusula, no se permitiría cambiar el valor del atributo tipo. Otro
aspecto a tener en cuenta es que, en la actualidad, sólo son actualizables las vistas que proceden de una
única tabla (en cuya definición no aparezcan las cláusulas GROUP BY o HAVING).
En este apartado presentaremos las principales sentencias de manipulación que permiten actuar de forma
interactiva, mientras que en el siguiente resumiremos las características del SQL embebido. En cuanto a la
aproximación por módulos, que se proponía ya en el estándar de 1986, no ha tenido mucha repercusión
en el mercado, siendo muy pocos los fabricantes que la soportan.
Para llevar a cabo consultas sobre una base de datos relacional, el lenguaje SQL propone la sentencia
SELECT, que consta de las siguientes cláusulas:
<especificación de consulta>::=
SELECT [<cuantificador de conjunto>] <lista de selección>
<expresión de tabla>
| <calificador><punto><asterisco>
<columna derivada> ::=
<expresión de valor> [<cláusula as>]
<cláusula as> ::= [AS]<nombre de columna>
Una expresión de valor en SQL se refiere a expresiones de valor numéricas, de tira de caracteres, de
fecha/tiempo o de intervalo. En todas ellas se pueden combinar referencias a columnas con distintos
operadores y funciones que ofrece el lenguaje. Se pueden seleccionar, por tanto, todas las columnas
(mediante el asterisco) o alguna de ellas, o bien derivar nuevas columnas a partir de las existentes
aplicando diversas funciones u operadores (por ejemplo, sumando el valor de dos columnas).
Por otra parte, las cláusulas fundamentales de la sentencia SELECT se encuentran en la expresión de
tabla:
Así, en el caso más sencillo podríamos recuperar todas las filas de la tabla Documento con la siguiente
sentencia:
El caso de una tabla derivada se trata de una subconsulta, que puede ser:
<subconsulta> ::=
<parent.izq.><expresión de consulta><parent. dcho.>
<expresión de consulta> ::=
<expresión de consulta de no combinación>
| <expresión de consulta de combinación>
Las consultas que no son combinaciones de tablas incluyen, además de tablas simples, la unión (UNION),
intersección (INTERSECT) y diferencia (EXCEPT) de tablas. Así, por ejemplo, podríamos consultar por
aquellas editoriales que no son librerías mediante la sentencia siguiente:
Como indicamos en el capítulo anterior, este tipo de operaciones requiere que las tablas sean compatibles
en dominio. En caso de que sólo algunas columnas de las tablas coincidan en dominio, se puede aplicar
una:
En caso de tener una tabla Proyectos se podría unir con la tabla documento mediante la siguiente
sentencia:
SELECT *
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
23
II. Tecnología Básica.
FROM Proyecto
UNION CORRESPONDING (titulo, idioma, año)
SELECT *
FROM Documento;
Por lo que respecta a la combinación de tablas, el lenguaje SQL permite todas las opciones que hemos
discutido en el capítulo anterior; así, se define:
donde
Donde
Así, por ejemplo, podemos realizar la combinación natural de las tablas Documento y Editorial de la
siguiente manera:
SELECT *
FROM Documento NATURAL JOIN Editorial
ON Documento.Nombre_E = Editorial. Nombre;
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
24
II. Tecnología Básica.
Cabe destacar que si las dos columnas que representan nombre de editorial (Documento.Nombre_E y
Editorial.Nombre) se llamaran igual, podríamos haber usado la siguiente sentencia:
Cuando se emplea NATURAL JOIN sin la cláusula ON, se combinan las tablas igualando todas las columnas
que tienen el mismo nombre en las tablas; si sólo se quiere utilizar algunas de ellas se emplea la cláusula
USING.
Las sentencias SQL se van intercalando con las sentencias del lenguaje anfitrión, precedidas normalmente
de la partícula EXEC SQL para que puedan ser distinguidas por los precompiladores. La declaración de
variables se introduce en una sección que empieza con la sentencia EXEC SQL BEGIN DECLARE SECTION
y finaliza con otra sentencia EXEC SQL END DECLARE SECTION.
Las sentencias de manipulación, como se observa en la figura, sufren algunas variaciones, ya que pueden
referenciar a variables anfitrión, como podría ser el caso de:
que rellenaría la variable :Año con el valor del año que figure en la base de datos para el documento cuyo
ISBN fuera igual al de la variable anfitrión.
Las variables anfitrión deben tener un tipo adecuado al de la base de datos, y en el estándar se definen
las correspondencias para distintos lenguajes. También se introduce la función CAST que permite la
conversión explícita de tipos de datos, facilitando la correspondencia entre los tipos del lenguaje SQL y los
de lenguajes de programación en los que el SQL pueda actuar de forma huésped.
También es importante destacar que las sentencias SQL deberían ser seguidas por una comprobación de
que han devuelto un valor correcto, para lo que se puede utilizar la variable SQLCODE, que se introdujo
en el SQL de 1986 y puede tomar los valores siguientes:
Sin embargo, como podemos observar, esta variable no es demasiado precisa en la indicación de los
errores, lo que ha llevado a que cada fabricante defina sus propios códigos de error adicionales, lo que
dificulta enormemente la portabilidad de las aplicaciones. En el SQL-92 se define un nuevo parámetro
denominado SQLSTATE que consta de 5 caracteres -los dos primeros indican la clase de error y los 3
últimos la subclase-, existiendo una tabla de códigos que contemplan los distintos tipos de errores que
pueden producirse. También se facilita una nueva sentencia GET DIAGNOSTICS que permite a las
aplicaciones recuperar información adicional sobre los errores.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
25
II. Tecnología Básica.
Por otro lado, hay que tener en cuenta que si bien hay sentencias SQL que implican una sola fila (por
ejemplo, una selección por la clave primaria o una inserción), la mayor parte de las sentencias SQL
manejará un conjunto de filas, mientras que el lenguaje anfitrión sólo podrá manejarlas de una en una.
Para resolver esta discordancia (denominada impedance mismatch), el SQL soporta el mecanism de
cursores, ofreciendo mandatos para declararlos (DECLARE CURSOR FOR), abrirlos (OPEN), cerrarlos
(CLOSE) y leer los (FETCH).
Por motivos de espacio no podemos analizar todas estas sentencias, a modo de ejemplo presentamos la
definición de un cursor, que se lleva a cabo utilizando la sentencia:
<declaración de cursor>::=
DECLARE <nombre del cursor> [INSENSITIVE][SCROLL] CURSOR
FOR <sentencia>
La cláusula ORDER BY (que también puede utilizarse en el SQL interactivo) permite ordenar los valores
ascendentemente (por defecto) o descendentemente.
Si el cursor se declara insensible (INSENSITIVE) no podrá ver los efectos de otras sentencias en la misma
transacción mientras permanezca abierto, en caso contrario no queda determinado cuál sería el efecto. Se
introducen también cursores de desplazamiento (scroll cursors), que permiten realizar un FETCH de
diversas formas: NEXT, PRIOR, FIRST, LAST, ABSOLUTE n o RELATIVE n, siendo “n” el resultado de
evaluar una expresión escalar.
Otro avance del SQL92 lo constituye la posibilidad de utilizar sentencias SQL dinámicas, esto es, de
ejecutar sentencias SQL cuyo contenido se conoce sólo en tiempo de ejecución, como por ejemplo:
donde mediante el símbolo “?” se indica el parámetro que habrá de pasarse a la sentencia durante su
ejecución.
Esta opción resulta muy útil cuando no se conocen todos los elementos de una sentencia SQL en el
momento de escribirla, por ejemplo, cuando el usuario va a introducir algunos datos, o en caso de que se
esté utilizando alguna facilidad de usuario (hoja de cálculo) que genera sentencias SQL.
3.2.3.4.1 Confidencialidad
En el modelo de confidencialidad del SQL el creador de un objeto es siempre el propietario del mismo, y
tiene todos los privilegios sobre el objeto (salvo que sea una vista, en cuyo caso se limitan los privilegios
sobre la vista a los que tenía sobre las tablas subyacentes). A la hora de crear un esquema SQL se puede
asignar un identificador de autorización por medio de la cláusula de nombre del esquema. Para conceder
privilegios se emplea la:
<sentencia de concesión>::=
GRANT <privilegios> ON <nombre de objeto>
TO <concedido> [<coma><concedido> ... ]
[WITH GRANT OPTION]
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
26
II. Tecnología Básica.
en la que
<privilegios>::-
ALL PRIVILEGES
| <lista de acción>
los privilegios pueden ser para consultar o actualizar (borrar, insertar y modificar) tablas, así como para
referenciarlas (utilizado en restricciones como la integridad referencial), o para "usar" dominios (Domain),
conjuntos de caracteres (Character-Set), ordenaciones (Collation) y traducciones (Translation). Por lo que:
<lista de acción>::=
SELECT
| DELETE
| INSERT [<parent. izq.><lista de columnas><parent. dcho.>]
| UPDATE [<parent. izq.><lista de columnas><parent. dcho.>]
| REFERENCES [<parent. izq.><lista de columnas><parent. dcho.>]
| USAGE
Un ejemplo de esta sentencia sería la concesión del privilegio de borrar filas de la tabla Empleados al
usuario Juan:
GRANT DELETE
ON Empleados
TO Juan;
en la que si usamos el comportamiento restringido (RESTRICT) no dejará revocar privilegios que hayan
sido concedidos a otros usuarios, mientras que si empleamos la
opción en cascada, se borrarán todos los privilegios. Un ejemplo de sentencia de revocación sería:
Hay que tener cuidado, ya que a pesar de revocar los privilegios a un usuario, éste puede mantenerlos a
través de otro usuario (que les haya concedido los mismos privilegios).
Por otro lado, cualquier borrado de un objeto (tabla, dominio, vista, etc.) causa, como es lógico, la
revocación de todos los privilegios sobre el objeto a todos los usuarios.
Otro mecanismo que representa un papel muy importante en la confidencialidad del SQL lo constituyen las
vistas, que permiten ocultar información a los usuarios; y, así, conceder privilegios sólo sobre
subconjuntos de las tablas.
3.2.3.5 Disponibilidad
El SQL soporta las transacciones clásicas mediante las sentencias COMMIT y ROLLBACK. Las transacciones
se inician al empezar los programas, o bien al ejecutar sentencias de definición o manipulación.
En el próximo apartado examinaremos algunas características de las transacciones, que afectan más a la
integridad (control de concurrencia) que a la disponibilidad.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
27
II. Tecnología Básica.
3.2.3.6 Integridad
3.2.3.6.1 SEM ÁN TI CA
Además de la clave primaria, unicidad, no nulos e integridad referencial, las restricciones de verificación
(CHECK), los dominios9 (CREATE DOMAIN) y las aserciones (CREATE ASSERTION); sentencias que se
incluyen en la definición de los elementos del esquema.
Las restricciones en SQL 92 presentan otra característica que afecta en gran medida a la integridad
semántica: la posibilidad de ser diferidas, esto es, de verificarse al final de la transacción en lugar de
hacerlo después de la ejecución de cada sentencia de manipulación, como hemos visto para el caso de la
integridad referencial. Si la transacción se ha definido como diferible se puede cambiar dinámicamente el
momento de su comprobación mediante la sentencia:
Esto permite definir restricciones que los anteriores estándares no soportaban. Por
ejemplo, si se definen dos tablas Empleados y Departamentos, como las siguientes:
en las que JEFE es una clave ajena que referencia a Empleados y se define como no nula, y N_DEPT es
una clave ajena que referencia a Departamentos y también se considera no nula. Supongamos que se
quiere insertar un nuevo departamento con su jefe correspondiente en un SGBDR con SQL-89. Si se
intenta introducir el nuevo departamento, el sistema no lo permitirá al no existir el empleado (que es el
jefe) al que referencia; lo mismo sucederá si se quiere ontroducir en primer lugar el jefe, ya que no existe
el departamento correspondiente. Este problema (la “pescadilla que se muerde la cola”) se resuelve
definiendo las restricciones como diferidas, e incluyendo las dos inserciones dentro de una misma
transacción; ya que se comprobará la consistencia al final de la transacción permitiéndose ambas
inserciones, ya que son (en conjunto) semánticamente consistentes. Sin embargo, como señala DATE
(1992c), la posibilidad de desactivar dinámicamente las restricciones, limita seriamente el potencial de
optimización semántica.
6.3.2. OPERACIONAL
El estándar SQL no proporciona, a diferencia de los productos relacionales, ninguna sentencia para
bloquear datos, sino que deja este aspecto a los implementadores (se podría implementar incluso un
sistema que soportara completamente el SQL 92 y que utilizara un mecanismo diferente al de los
bloqueos).
siendo la opción por defecto esta última (en la que se obliga a la serialidad de las transacciones). Estos
niveles de aislamiento se definen en base a tres problemas de concurrencia:
• Lectura "sucia": consiste en que una transacción lleva a cabo una actualización sobre un dato, que es
leído entonces por otra transacción. Si la primera transacción se deshace, la segunda ha leído un valor que
nunca debería haber existido.
• Lectura no reproducible: una transacción que quiere leer un dato dos veces se encuentra con que
ese dato varía (si en medio de las dos lecturas otra transacción ha actualizado ese dato), sin que en la
primera transacción se hubiera realizado ninguna actualización.
• Lectura "fantasma": si una transacción recupera todos los datos que satisfacen una condición y
después otra transacción incorpora nuevos datos que satisfacen dicha condición, si la primera transacción
repite su consulta aparecen nuevos datos ('Tantasinas").
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
28
II. Tecnología Básica.
Hay que advertir, sin embargo, de acuerdo con BERENSON et al. (1995), que los problemas que define el
estándar son ambiguos e incompletos, pudiendo dar lugar a muchas anomalías. Estos expertos proponen
que se considere obligatorio para todos los niveles evitar el fenómeno de:
Escritura "sucia": si una transacción modifica un dato y otra transacción modifica también ese mismo dato
antes de que la primera se grabe o deshaga, si cualquiera de las dos se deshace no queda claro cuál es el
valor correcto.
Se pueden mejorar los niveles de aislamiento del estándar (introduciendo, por ejemplo, el nivel de
estabilidad para cursores, que extiende el de lectura grabada para cursores SQL) en función de otros
fenómenos como el de actualización perdida.
Mediante la sentencia:
READ ONLY
| READ WRITE
<tamaño del área de diagnóstico> ::=
DIAGNOSTICS SIZE <especificación de valor simple>
los administradores pueden fijar, como podemos observar, las características de las transacciones. Por
defecto, éstas puede ejecutar tanto operaciones de lectura como de escritura, se aíslan lo más posible de
otras (nivel serializable) y utilizan un área de diagnóstico de un tamaño por defecto. El tamaño de esta
área indica el número de condiciones que se almacena para cada sentencia SQL que se ejecuta.
Un ejemplo de esta sentencia sería:
SET TRANSACTION
READ ONLY
ISOLATION LEVEL READ UNCOMMITTED
DIAGNOSTICS SIZE 4;
3.3.1. Obtención del Modelo Conceptual de Datos mediante la técnica del Modelo E/R
Extendido
El Modelo Conceptual permite establecer una visión global de los datos de una organización o de un
sistema de información en un nivel de abstracción próximo al usuario pero aislando la representación de la
información de los requerimientos de las exigencias de cada usuario particular e independiente de las
características del equipos donde después se vaya a instrumentar el sistema, es único para cada SI y se
representará mediante el Modelo E/R de Chen.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
29
II. Tecnología Básica.
3.3.2. Transformación del Modelo Conceptual a un Modelo Lógico Relacional Normalizado. Para
su representación se utilizará la notación del Diagrama de Estructura de Datos.
En el diseño lógico, se transforma el esquema conceptual en un esquema lógico que utilizará las
estructuras de datos del modelo de base de datos en el que se basa el SGBD que se vaya a utilizar, como
puede ser el modelo relacional, el modelo de red, el modelo jerárquico o el modelo orientado a objetos.
El diseño lógico depende del tipo de SGBD que se vaya a utilizar, no depende del producto concreto.
Se obtendrá mediante una transformación del esquema conceptual aplicando las reglas y convenciones
propias del modelo lógico convencional que estemos considerando (Jerárquico, Relacional o en Red). El
esquema lógico corresponderá al nivel lógico global o externo de A.N.S.I. dando lugar a los esquemas
externos que fueran necesarios en función de las vistas parciales de la base de datos que se muestren a
los usuarios.
Tanto el diseño conceptual, como el diseño lógico, son procesos iterativos, tienen un punto de inicio y se
van refinando continuamente. Ambos se deben ver como un proceso de aprendizaje en el que el
diseñador va comprendiendo el funcionamiento de la empresa y el significado de los datos que maneja. El
diseño conceptual y el diseño lógico son etapas clave para conseguir un sistema que funcione
correctamente. Si el esquema no es una representación fiel de la empresa, será difícil, sino imposible,
definir todas las vistas de usuario (esquemas externos), o mantener la integridad de la base de datos.
También puede ser difícil definir la implementación física o el mantener unas prestaciones aceptables del
sistema. Además, hay que tener en cuenta que la capacidad de ajustarse a futuros cambios es un sello
que identifica a los buenos diseños de bases de datos. Por todo esto, es fundamental dedicar el tiempo y
las energías necesarias para producir el mejor esquema que sea posible.
- Toda entidad representada en el Modelo E/R se convierte en una tabla o relación que toma el nombre
de la entidad. Los atributos de la entidad son las columnas de la tabla y el atributo identificador
principal es la clave primaria. Cada uno de los identificadores de la entidad será una clave candidata.
De entre las claves candidatas hay que escoger la clave primaria; el resto serán claves alternativas.
Para escoger la clave primaria entre las claves candidatas se pueden seguir estas indicaciones:
• Escoger la clave candidata que tenga menos atributos.
• Escoger la clave candidata cuyos valores no tengan probabilidad de cambiar en el futuro.
• Escoger la clave candidata cuyos valores no tengan probabilidad de perder la unicidad
en el futuro.
• Escoger la clave candidata con el mínimo número de caracteres (si es de tipo texto).
Clave candidata: conjunto no vacío de atributos que identifica univoca y mínimamente a cada
tupla de una tabla. Clave primaria: clave candidata que elige el usuario
- Entidades débiles. Crear una relación para cada entidad débil incluyendo todos sus atributos
simples. De los atributos compuestos incluir sólo sus componentes. Para ello, se incluye la clave
primaria de la relación que representa a la entidad padre en la nueva relación creada para la
entidad débil. A continuación, determinar la clave primaria de la nueva relación. Ejemplo:
1:1
TIENE
DISCOS PELÍCULAS
Es-un
BANDA SONORA
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
30
II. Tecnología Básica.
- Eliminar las relaciones de muchos a muchos, sustituyendo cada una de ellas por una nueva entidad
intermedia y dos relaciones de uno a muchos de esta nueva entidad con las entidades originales. La
nueva entidad será débil, ya que sus ocurrencias dependen de la existencia de ocurrencias en las
entidades originales. Las interrelaciones M.N del Modelo E/R se transforman en una tabla cuya clave
primaria estará compuesta por las claves de las entidades que asocia.
DISCOS
N:N
CANTAN
INTÉRPRETES
- Eliminar las relaciones entre tres o más entidades, sustituyendo cada una de ellas por una nueva
entidad (débil) intermedia que se relaciona con cada una de las entidades originales. La cardinalidad
(nº de ocurrencias de una relación) de estas nuevas relaciones binarias dependerá de su
significado.
- Eliminar las relaciones con atributos, sustituyendo cada una de ellas por una nueva entidad (débil) y
las relaciones binarias correspondientes de esta nueva entidad con las entidades originales. La
cardinalidad de estas relaciones dependerá del tipo de la relación original y de su significado.
Nº EJEMPLARES DISCOS
PEDIDOS
N:N
CONTIENE
- Eliminar los atributos multievaluados, sustituyendo cada uno de ellos por una nueva entidad (débil)
y una relación binaria de uno a muchos con la entidad original.
El tratamiento que reciben los atributos multievaluados (no contemplados en la técnica del
Modelo E/R descrita en Métrica v.3) es consecuencia directa de las restricciones inherentes al
Modelo Relacional, que forman parte integral de la estructura del modelo (la tabla es plana, en el
cruce de un atributo con una tupla, o lo que es lo mismo, en el de una columna con una fila, sólo
puede haber un valor que además debe estar dentro de la columna correspondiente). Las ciudades
donde se rueda una película podría ser un atributo multievaluado.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
31
II. Tecnología Básica.
- Eliminar las relaciones redundantes. Una relación es redundante cuando se puede obtener la misma
información que ella aporta mediante otras relaciones. El hecho de que haya dos caminos diferentes
entre dos entidades no implica que uno de los caminos corresponda a una relación redundante, eso
dependerá del significado de cada relación.
- Relaciones binarias de uno a uno: se transforman propagando la clave y los demás atributos en uno
de los dos sentidos. El identificador de la entidad con mayor cardinalidad mínima pasa a ser atributo
de la otra. Otra posibilidad para transformar las interrelaciones 1:1 consiste en crear una nueva
tabla que recoja los identificadores de las entidades participantes más los propios de la relación si
las tuviera. Esta solución se adopta cuando ambas entidades participan por igual en la interrelación
Un empleado dirige 0:1 proyectos y un 1 proyecto es dirigido por 1:1 empleados. Se pasa DNI del
- Relaciones binarias de uno a muchos: las interrelaciones 1:N del Modelo E/R se transforman
propagando el atributo identificador principal de la entidad que tiene cardinalidad máxima1 (entidad
maestra) a la que tienen cardinalidad máxima N (entidad de detalle). El atributo propagado es una
clave ajena que referencia a la tabla con cardinalidad máxima 1. Si la participación de una entidad
es 0:1 entonces se crea una nueva tabla que recoge los identificadores de ambas entidades
participantes más los propios de la relación si los tuviera.
Un empleado utiliza 1:N vehículos y un vehículo es utilizado por 0:1 empleados. Atributo de la relación
“utiliza”: fecha. Se crea una tabla intermedia (entidad débil) con campos: DNI, MATRÍCULA Y FECHA.
Transformación de la herencia
A) Consiste en crear una tabla para el supertipo que tenga de clave primaria el identificador y una tabla
para cada uno de los subtipo que tenga el identificador del supertipo como clave ajena. Esta solución es
apropiada cuando los subtipos tienen muchos atributos distintos y se quieren conservar los atributos
comunes en una tabla. También se deben implantar las restricciones y aserciones adecuadas. Es la
solución que mejor conserva la semántica.
B)Se crea una tabla para cada subtipo, los atributos de comunes aparecen en todos los subtipos y la
clave primaria para cada tabla es el identificador del supertipo.
Esta opción mejora la eficiencia en los accesos a todos los atributos de un subtipo, sean los comunes al
supertipo o los específicos.
C) Agrupar en una tabla todos los atributos de la entidad supertipo y de los subtipos. La clave primaria
de esta tabla es el identificador d e la entidad. Se añade el atributo que indique a qué subtipo pertenece
cada ocurrencia (el atributo discriminante de la jerarquía). Esta solución puede aplicarse cuando los
subtipos se diferencian en pocos atributos y las relaciones entre los subtipos y otras entidades sean las
mismas. Para el caso de que la jerarquía sea total, el atributo discriminante no podrá tomar valor nulo
(ya que toda ocurrencia pertenece a alguna de las entidades subtipo)
El diseño físico parte del esquema lógico y da como resultado un esquema físico. Un esquema físico es
una descripción de la implementación de una base de datos en memoria secundaria: las estructuras de
almacenamiento y los métodos utilizados para tener un acceso eficiente a los datos. Por ello, el diseño
físico depende del SGBD concreto y el esquema físico se expresa mediante su lenguaje de definición de
datos. Para llevar a cabo esta etapa, se debe haber decidido cuál es el SGBD que se va a utilizar, ya que el
esquema físico se adapta a él. Entre el diseño físico y el diseño lógico hay una realimentación, ya que
algunas de las decisiones que se tomen durante el diseño físico para mejorar las prestaciones, pueden
afectar a la estructura del esquema lógico.
Una vez implementado el esquema físico de la base de datos, se debe poner en marcha para observar sus
prestaciones. Si éstas no son las deseadas, el esquema deberá cambiar para intentar satisfacerlas. Una
vez afinado el esquema, no permanecerá estático, ya que tendrá que ir cambiando conforme lo requieran
los nuevos requisitos de los usuarios. Los SGBD proporcionan herramientas para monitorizar el sistema
mientras está en funcionamiento.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
32
II. Tecnología Básica.
El capítulo anterior se ha centrado en las sentencias de la versión SQL92, Mas tarde aparece el nuevo
estánar SQL3 , que fue adquierndo un volumen considerable y se descompone en variasp parteas para
facilitar su aprobación y su implemetanción en productos comerciales. El estándar ha quedado
estructurado en las siguientes partes:
Debido a obvias limitaciones de espacio sólo presentaremos dos aspectos que destacan por su interés, al
encontrarse presentes en la mayor parte de los productos relacionales: los papeles o roles y los
disparadores (triggers).
Roles en SOL3
Entre los aspectos más destacables en cuanto a la confidencialidad, se encuentra la inclusión de los
papeles o "roles" de seguridad, ya presentes en muchos productos, que se definen de la siguiente
manera:
<definición de rol> ::= CREATE ROLE <nombre de rol>
asignando los usuarios a los roles mediante la:
<sentencia de concesión de rol> ::=
GRANT <rol concedido> [ { <coma><rol concedido>
TO <concedido> [ { <coma>< concedido>
para eliminar a un usuario de un rol se utiliza la:
<sentencia de revocación de rol> ::=
REVOKE <rol concedido> [ { <coma><rol concedido>
TO <concedido> [ { <coma>< concedido>
mientras que para eliminar un rol, empleamos:
<sentencia de borrado de rol> ::=
DROP ROLE <nombre de rol>
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
33
II. Tecnología Básica.
Disparadores en SQL3
<tiempo de acción>
AFTER
| BEFORE
| INSTEAD OF11
<evento disparador>
INSERT
| DELETE
| UPDATE [ OF <lista columnas disparador> ]
La lista de alias para los valores antiguos y nuevos es una lista formada por:
<acción disparada>
[ FOR EACH { ROW | STATEMENT } ]
[ WHEN <p.izdo> <condición búsqueda> <p. dcho> ]
<sentencia SQL disparada>
<sentencia SQL disparada> ::=
<sentencia de procedimiento SQL>
| BEGIN ATOMIC
<sentencia de procedimiento SQL><pto y coma> ..
END
La sentencia SQL disparada es una sentencia de procedimiento SQL que puede ser de borrado (DELETE),
modificación (UPDATE) o inserción (INSERT), de control o de diagnóstico.
Por otra parte, el INFORMATION_SCHEMA del SQL3 define las siguientes vistas que describen los
disparadores:
• TRIGGERS, identifica los disparadores de un usuario.
• TRIGGERED_ACTIONS, identifica las acciones disparadas en un catálogo que posee un usuario.
• TRIGGERED_COLUMNS, por cada esquema de un usuario, identifica las vistas que
dependen de columnas que se describen en un disparador.
SQL:2003
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
34
II. Tecnología Básica.
SQL:2003 hace una revisión del SQL:1999(SQL3) hace mejora importantes en áreas claves:
En las características orientadas a objetos
En características de Bussiness Intelligent.
En características de SQL/XML.
En concreto añade una nueva parte, es la parte Parte 14: SQL/XML (especificaciones relativas al XML). Se
reorganizan otras partes como crear una parte especifica para le Esquema de datos (parte 11) y se
elimina la parte 5 SQL/Bindings, que se une con SQL/foundacion. Incluye:
• Nuevos tipos de datos.
• Extensiones de la sentencia Create Table.
• Nuevas sentencia Merce,
• nuevo esquema de objetos
• etc
SQL:2003 contiene todos los tipos de datos qu existían en sQL:1999. a excencip de BIT y BIT VARYING.
Que se elimina por no tener soporte en los motores de la bases de datos SQL.
Se introducen nuevos tipos como: BIGINT, MULTISET y XML.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
35
II. Tecnología Básica.
4.4. ADO.N ET
En el framework de programación .NET de Microsoft está presente una versión evolucionada de ADO
denominada ADO.NET. A pesar de la semejanza en el nombre y finalidad, su estructura de objetos es
bastante diferente a la de ADO, de hecho se podría considerar como un producto totalmente nuevo.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
36
II. Tecnología Básica.
Puente
Puente
Driver
Driver ODBC
ODBC
JDBC-ODBC
JDBC-ODBC
Código
Código JAVA
JAVA
API
API ODBC
ODBC
Base de Datos
2. Tipo 2: Driver escrito parte en Java que hace llamadas a la API nativa del SGBDR. Al estar
escritos solo parcialmente en Java comparten los problemas de portabilidad e instalación del
puente JDBC/ODBC.
Es un driver que usa
protocolos de acceso a
datos optimizados por el
fabricante
Protocolo específico
del Proveedor
Driver
Driver
Código
Código JAVA
JAVA
JDBC
JDBC
Base de Datos Código Java y Nativo
Driver
Driver JDBC
JDBC Driver
Driver
Tipo
Tipo 11 óó 22 (Java
(Java puro)
puro)
Código
Código JAVA
JAVA
Servidor
Servidor de
de
Base de Datos Acceso
Acceso aa DB
DB
4. Tipo 4: Driver nativo escrito completamente en Java, específico de cada SGBD. Están escritos
totalmente en Java, y convierten todas las llamadas JDBC a llamadas nativas del gestor de base
de datos correspondiente. Java puro, el más efciente, No requiere de ninguna librería adicional
ni de la instalación de un middleware, con lo cual es de deployment más simple, La mayoría de
los fabricantes de BD proveen drivers JDBC de tipo 4 para sus BD.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
37
II. Tecnología Básica.
Protocolo específico
del Proveedor DriverJDBC
Código
Código JAVA
JAVA
(Java Puro)
Base de Datos
5.1.1. Oracle
Oracle es el sistema de gestión de bases de datos relacionados más conocido del mercado y es el principal
dominador del mercado dentro del mundo empresarial, a pesar de su alto precio.
Es considerado como uno de los sistemas de bases de datos más completos, destacando su:
• Soporte de transacciones
• Estabilidad
• Escalabilidad
• Es multiplataforma
La primera versión de Oracle, conocida como Relational Database, data de finales de 1979, y la última
versión que están comercializando es Oracle 11g de Septiembre de 2007.
Con sus distintas versiones, Oracle ha sido pionera en la introducción de nuevas tecnologías: desde la
primera base de datos en ofrecer arquitectura cliente-servidor, PL/SQL, soporte de arquitectura de 64 bits,
soporte XML, hasta capacidades Enterprise Grid Computing, etc
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
38
II. Tecnología Básica.
Además Oracle distribuye desde el año 2005 una versión reducida y gratuita de su SGBD orientada a
desarrolladores, distribuidores, dba’s, instituciones y estudiantes denominada Oracle XE -Express Edition-.
5.1.2. DB2
El sistema de gestión de bases de datos relacionales que comercializa IBM se conoce como DB2. Al igual
que Oracle, el origen de la misma es bastante antiguo, de hecho fue el primer gestor de bases de datos
en utilizar el lenguaje SQL. En 1983 para MVS Versión 1 nació DB2. Se utilizó este nombre para indicar el
cambio de las bases de datos jerárquicas hacia las bases de datos relacionales. El desarrollo de DB2
continúo tanto en plataforma mainframe como en plataformas distribuidas.
La última versión, DB2 versión 9, se basa un motor de base de datos relacional que integra XML de
manera nativa, lo que IBM ha llamado pureXML, que permite almacenar documentos completos dentro del
tipo de datos xml para realizar operaciones y búsquedas de manera jerárquica dentro de éste, e integrarlo
con búsquedas relacionales.
Además DB2 tiene una versión gratuita denominada Express-C, orientada a pequeñas y medianas
empresas que no necesiten de sus funcionalidades avanzadas.
5.1.3. SQLServer
SQLServer pretende ser la alternativa de Microsoft a Oracle y DB2 en el mercado de los sistemas gestores
de bases de datos relacionales. La primera versión, en comparación con sus rivales llegó casi 10 años más
tarde, en 1988, y fue una versión desarrollada para OS/2 junto a Sybase. A partir de ahí, Microsoft se
centró en su desarrollo en arquitectura NT, de la que es totalmente dependiente. Una particularidad de
este SGBDR es que utiliza una variación del lenguaje SQL denominado Transact SQL una implementación
de SQL-92 (el estándar ISO para SQL certificado en 1992) con bastantes extensiones. Proporciona sintaxis
adicional en procedimientos almacenados, y además también afecta a la sintaxis de la funcionalidad
transaccional.
La última versión, SQL Server 2005, proporciona funcionalidad para el Framework .NET, pudiéndose por
ejemplo utilizar cualquiera de los lenguajes de .NET para escribir procedimientos almacenados.
También Microsoft proporciona una versión gratuita con funcionalidad limitada de su SGBD denominada
SQL Server 2005 Express.
5.1.4. PostgreSQL
PostgreSQL es un Sistema Gestor de Base de Datos Relacional-Orientada a Objetos open-source. Se
distribuye bajo licencia BSD y su desarrollo no es manejado por una sola compañía, sino que es dirigido
por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo,
denominada PGDG, PostgreSQL Global Development Group)
El origen de su desarrollo fue la realización de un nuevo proyecto en la Universidad de Berkley sobre la
experiencia del desarrollo de un Sistema Gestor de Bases de Datos Relacional denominado Ingres. El
mismo se denominó Post-Ingres o Postgres.
Después del que el proyecto terminara, dos graduados de la misma universidad Andrew Yu and Jolly
Chen, y debido a que Postgres estaba licenciado bajo licencia BSD, comenzaron a trabajar sobre su código
para añadirle soporte al lenguaje SQL, dado que antes contaba con su propio lenguaje de consultas. De
ahí nació Postgres 95, el cuál en el año 96 se pasó a denominar PostgreSQL.
Con cerca de una década de desarrollo tras ella, PostgreSQL es la base de datos de código abierto más
avanzada hoy día disponible, ofreciendo control de concurrencia multi-versión, soporta casi toda la sintaxis
SQL (incluyendo subconsultas, transacciones, y tipos y funciones definidas por el usuario), contando
también con un amplio conjunto de enlaces con lenguajes de programación (incluyendo C, C++, Java,
perl, tcl y python).
5.1.5. MySQL
MSQL es el gestor de bases de datos relacionales, probablemente, más usado en el mundo del software
libre, debido a su gran rapidez y facilidad de uso. Se distribuye bajo licencia GPL de GNU de la compañía
sueca MySQL AB, que mantiene el copyright del código fuente del servidor SQL, así como también de la
marca. Aunque MySQL es software libre, la compañía también distribuye una versión comercial de MySQL,
que no se diferencia de la versión libre más que en el soporte técnico que se ofrece, y la posibilidad de
integrar este gestor en un software propietario, ya que de no ser así, se vulneraría la licencia GPL.
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
39
II. Tecnología Básica.
MySQL surgió como un intento de conectar el gestor mSQL (mini SQL, cliente/servidor lígero de bases de
datos) a las tablas propias de MySQL AB, usando sus propias rutinas a bajo nivel. Tras unas primeras
pruebas, vieron que mSQL no era lo bastante flexible para lo que necesitaban, por lo que tuvieron que
desarrollar nuevas funciones. Esto resultó en una interfaz SQL a su base de datos, con una interfaz
totalmente compatible a mSQL.
DB2 Si No Si No Si Si
SQL Server Si No No No No No
MySQL Si Si Si Si Si Quizás
Oracle Si Si Si No Si Si
PostgreSQL Si Si Si Si Si No
DB2 Si Si Si Si
SQL Server Si Si Si Si
MySQL Si Si Si Si
Oracle Si Si Si Si
PostgreSQL Si Si Si Si
5.2.3. Límites
De BD De Tabla De Fila De De De De
columnas Blob/Clob CHAR NUMBER
por fila
on type inline
DB2 Si Si
SQL Server Si Si
MySQL Si No
Oracle Si Si
PostgreSQL Si No
5.2.5. Capacidades
R-/R+ Hash Expressio Partial Reverse Bitmap GiST GIN
tree n
DB2 No No No Si Si No No
SQL Server Non/Clus Si Si Si No No No
ter & fill
factor
MySQL MyISA MEMORY No No No No No No
M , Cluster
tables (NDB),
only InnoDB,1
7 tables
only
Oracle EE Cluster Si Si Si Si No No
editio Tables
n only
PostgreSQL Si Si Si Si Si Si Si Si
058. El modelo relacional. El lenguaje SQL. Normas y estándares para la interoperabilidad entre gestores
de bases de datos.
41