Вы находитесь на странице: 1из 21

Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Mdulo VII: Sistemas de Informacin


Geogrfica y Teledeteccin

SISTEMAS DE GESTIN DE
BASES DE DATOS
AUTOR: LUIS QUINTAS RIPOLL

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

ndice
BASES DE DATOS Y SISTEMAS DE GESTIN DE BASES DE DATOS 3
BASES DE DATOS 3
Bases de datos y sistemas de gestin de bases de datos (SGBD) 3
Ventajas e inconvenientes de un SGBD 5
Tipos de sistemas de gestin de bases de datos 5
Bases de datos jerrquicas 6
Bases de datos en red 6
Bases de datos orientadas a objetos 7
Bases de datos relacionales 7
DISEO DE BASES DE DATOS RELACIONALES 7
Definiciones y caractersticas 7
Normalizacin de una base de datos relacional 9
Integridad referencial 12
Modelos Entidad Relacin (E-R) 12
EL LENGUAJE CONCEPTUAL DE GESTIN DE BASES DE DATOS RELACIONALES SQL 13
Caractersticas 13
Instrucciones de manipulacin de tablas 14
SELECT 14
DELETE, INSERT Y UPDATE 16
Instrucciones de creacin y administracin de la base de datos 16
SQL embebido en lenguajes de programacin 18
REFERENCIAS BIBLIOGRFICAS 21

Pgina 2 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

SISTEMAS GESTORES DE BASES SE DATOS

BASES DE DATOS Y SISTEMAS DE GESTIN DE BASES DE DATOS

BASES DE DATOS
Se entiende por base de datos un conjunto de datos no redundantes, almacenados en un soporte infor-
mtico, organizados de forma independiente de su utilizacin y accesibles simultneamente por distin-
tos usuarios y aplicaciones.

Las bases de datos deben cumplir pues tres requisitos bsicos:

No redundancia: Los datos se almacenan una sola vez, aunque se utilicen para varias aplicacio-
nes.
Independencia: Los datos se organizan de una manera estructurada independientemente de la
aplicacin que se vaya a utilizar para tratarlos.
Concurrencia: varios usuarios pueden acceder simultneamente a los datos sin interferirse.

Bases de datos y sistemas de gestin de bases de


datos (SGBD)
Tradicionalmente, para manipular grandes cantidades de datos aparecieron en primer lugar las bases de
datos o "bancos de datos", cumpliendo de manera aproximada con la definicin presentada en el
apartado anterior. Se trataba de almacenar ordenadamente datos en un juego de ficheros, y, mediante
unas aplicaciones informticas y un sistema de ndices, gestionarlas adecuadamente (Figura 1).

Al aumentar la complejidad de estos bancos de datos (elevado nmero de ficheros y usuarios, acceso
mltiple y simultneo a los ficheros, aumento del nmero de registros, etc.) se producen problemas cada
vez ms graves para asegurar la consistencia, la integridad y la accesibilidad de los datos, produciendo
problemas de eficiencia en el tratamiento de los datos.

Para resolver estos problemas aparecen en el mercado los Sistemas de Gestin de Bases de Datos
(SGBD), que convierten el acceso a los datos y su gestin en una aplicacin cerrada ("caja negra"),
interponindose entre los usuarios y los ficheros, y hacindose cargo de todos los problemas de
explotacin, mantenimiento y comprobacin de los datos (Figura 2). De esta manera el usuario pierde
de vista todos los detalles relativos al almacenamiento fsico de los de los datos tratando con ellos slo
a travs de un lenguaje conceptual sencillo.

Pgina 3 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

APLICACION USUARIO

FICHERO
FICHERO APLICACION USUARIO

APLICACION USUARIO

Figura 1. Banco de datos

SGBD USUARIO

FICHERO
USUARIO
FICHERO

USUARIO

Figura 2. Sistemas de Gestin de Bases de Datos


De acuerdo con los estudios de un grupo de trabajo de ANSI (TSICHRITZIS, Dennis & KLUG,
Anthony C., 1978) los sistemas de gestin de bases de datos se organizan en tres niveles:

nivel interno: manipulacin fsica de los datos. El usuario pierde de vista totalmente cmo y
dnde se almacenan los datos, ocupndose el motor del sistema de gestin de todas estas tareas
nivel externo: visin del usuario: manipulacin lgica de los datos. El usuario maneja la base de
datos a travs de un entorno organizado mediante mens o aplicaciones informticas que le
guan sin necesidad de conocimientos de la estructura de la base de datos
nivel intermedio: descripcin de la base de datos mediante un lenguaje conceptual que permiten
una visin abstracta del sistema. Se entiende por lenguaje conceptual un lenguaje formado por
palabras (comandos) de fcil memorizacin que permiten efectuar todas las tareas de acceso y
manipulacin de los datos, as como las tareas de mantenimiento de todo el sistema de gestin.

El lenguaje conceptual del sistema de gestin permite abordar de manera todas las tareas para el
mantenimiento y explotacin del sistema de gestin. Pueden agruparse en tres clases:

Funciones de definicin:

o creacin, modificacin o eliminacin de tablas, registros, campos, ndices, etc.


o creacin de relaciones,
o validacin de campos, valores, etc.
o funciones de manipulacin:

Pgina 4 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

o acceso a los datos mediante operaciones de bsqueda condicionada con uso de operadores
lgicos ( = , <>, <, >, and, or, etc.) para la presentacin, modificacin o eliminacin de
registros.

Funciones de administracin:

o figura del administrador de la base de datos, con privilegios para otorgar los permisos de
acceso y uso.
o organizacin del sistema de permisos de acceso a las tablas, registros, campos ,etc. En los
sistemas de gestin de bases de datos aparece la figura del administrador de la base de
datos, usuario especial, propietario del sistema, que decide quin conecta a la base de
datos, quin accede a las diferentes tablas y qu puede hacer en ellas (slo leer, insertar,
modificar o borrar registros, campos, ndices, tablas, etc.). Esta figura es de una enorme
importancia para la preservacin de la integridad de los datos.
o realizacin de copias de seguridad y recuperacin del sistema en caso de desastre.
o migracin del sistema a nuevas versiones o incluso a diferentes sistemas de gestin.
o comunicacin con otros sistemas de gestin externos (remotos o en la misma mquina).
o preprocesadores para la inclusin del lenguaje conceptual en el cdigo fuente de programas
de ordenador como FORTRAN, C, etc. para la programacin de tareas sofisticadas.
o lenguaje de 4 generacin para la creacin de interfaces grficas de usuario (mens)

Hoy en da hay una preponderancia del lenguaje SQL (Structured Query Language).
(CHAMBERLAIN & BOICE, 1974), materialmente presente en todos los sistemas de ges-
tin de gran difusin. La explicacin de esta preponderancia se encuentra en la gran sencillez
y potencia de este lenguaje, que se describir ms adelante.

Ventajas e inconvenientes de un SGBD


Las ventajas del uso de un SGBD cuando han de manipularse grandes cantidades de datos son enor-
mes:

Se eliminan las inconsistencias en los datos debido al fuerte control que se establece.
Se comparten los datos entre diferentes aplicaciones sin complicaciones, permitiendo una rpida
adaptacin a nuevas aplicaciones.
Se ahorra espacio de almacenamiento.
Se accede a los datos con extraordinaria rapidez.
Se asegura la proteccin de los datos frente a malos usos o desastres.
Permiten la creacin de entornos personalizados de alta disponibilidad.

Tienen sin embargo algunas desventajas:

La puesta en funcionamiento es larga, ya que se necesita una planificacin muy detallada de la


estructura de datos.
Se necesita personal especializado para su administracin y mantenimiento.

Tipos de sistemas de gestin de bases de datos


Existen fundamentalmente 4 tipos de sistemas de gestin, que se diferencian por la estructura de datos
que ofrecen: SGBD jerrquicos, en red, relacionales y orientados a objetos.

Pgina 5 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Bases de datos jerrquicas


Las bases de datos jerrquicas organizan la informacin en forma de rbol. Los datos dependen todos
de una entidad raz, padre. Los datos dependientes del raz son hijos suyos. A su vez estos hijos
tienen hijos y as sucesivamente (figura 3). La relacin entre padre e hijos es siempre de uno a mu-
chos, de manera que un hijo siempre tienen un solo padre, pero un padre puede tener varios hijos. Para
acceder a una entidad, se parte siempre del raz y se recorren los hijos segn un orden preestablecido.
Cuando se elimina un padre, se eliminan todos sus hijos tambin.

Estas bases de datos son muy apropiadas para datos que se prestan bien a una estructura ramificada.
Se utilizan en buscadores de INTERNET, donde son muy eficientes.

Figura 3. Estructura de una base de datos jerrquica


Bases de datos en red
El gran problema de las bases de datos jerrquicas es cuando es necesario definir una relacin entre
entidades de muchos a muchos. Para casos de este tipo se crearon las base de datos en red o
CODASYL, nombre de la agrupacin que present las normas para su desarrollo. Es una extensin
de la base de datos jerrquica, en que un hijo puede tener varios padres, denominndose estos propie-
tarios y aquellos miembros.

Figura 4. Base de datos en red

Pgina 6 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Bases de datos orientadas a objetos


Las bases de datos orientadas a objetos son las ms modernas y siguen hoy en da en desarrollo. La
estructura de datos se basa en los conceptos de la orientacin a objetos: objetos encapsulados pertene-
cientes a clases que heredan sus propiedades unas de otras.
Bases de datos relacionales
Por su sencillez y su potencia, son hoy en da las bases de datos ms extendidas. Casi todos los siste-
mas de gestin de bases de datos comerciales de gran difusin tienen estructura relacional (ORACLE,
INFORMIX, MSSQLSERVER, MSACCESS, etc.). Por ello se tratan a continuacin con detalle.

DISEO DE BASES DE
DATOS RELACIONALES
Definiciones y caractersticas
La base de datos relacional supuso un gran avance frente a las base de datos jerrquicas y en red por-
que, as como en estas las relaciones estn fijadas en la estructura de los datos, en el enfoque relacio-
nal las relaciones se establecen de una manera mucho ms libre. El esquema relacional fue pensado
por Codd a finales de los aos sesenta a partir de la teora de conjuntos.

Los datos que han de almacenarse en una base de datos pueden agruparse en conjuntos de datos de la
misma naturaleza. El conjunto de todos los datos de un mismo tipo se denomina dominio. Los do-
minios son conjuntos finitos de datos.

Dado unos dominios D1, D2,....Dn, se define una relacin o entidad como cualquier conjunto de
datos d1, d2,....dn, tales que d1 D1, d2 D2, .... dn Dn. Este conjunto de datos se define como una
tupla. Cada uno de los componentes de la relacin pertenecientes a los dominios se denominan atri-
butos de la relacin. Se define como grado de la relacin el nmero de atributos (n). La relacin
estar formada por un cierto nmero de tuplas, que se define como cardinalidad de la relacin.

Este lenguaje terico puede sustituirse por otro ms matemtico:

Una relacin o entidad es una tabla rectangular formada por filas y columnas, donde cada columna
contiene un tipo de dato. Cada fila o registro es una tupla, y cada columna o campo es un atributo. El
nmero de columnas es el grado y el nmero de registros es la cardinalidad (figura 5).

Pgina 7 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

TABLA (ENTIDAD)

REGISTRO
(TUPLA)

CAMPO
(ATRIBUTO)

Figura 5. Tablas de un sistema de gestin de base de datos relacional


Para que una tabla pueda considerarse relacin de una base de datos relacional tiene que cumplir una
serie de requisitos:

debe haber un nico valor en cada elemento de las filas (interseccin fila columna)
los valores de todos los elementos de una columna deben ser del mismo tipo (deben pertenecer al
mismo dominio)
no puede haber dos filas con todos los elementos iguales
el nombre de cada columna (atributo) debe ser distinto dentro de la tabla
el valor de los elementos dentro de cada columna debe ser independiente del orden de las colum-
nas
el valor de los elementos de las filas debe ser independiente del orden de las filas

Como todas las filas de una tabla tienen que ser distintas, cualquiera de ellas puede identificarse siem-
pre por el valor de uno o varios campos. A este conjunto de campos se le llama clave primaria, que
puede ser simple, si la constituye un solo campo, o compuesta, si la constituyen varios . Ha de inten-
tarse que este grupo sea mnimo por motivos de eficiencia. Los campos que no pertenecen a la clave
primaria se llaman campos pertenecientes a clave ajena, o campos no clave. Obviamente una clave
primaria nunca puede tener un valor nulo.

Dentro de una relacin o tabla se pueden hacer algunas operaciones bsicas:

Proyeccin. Se realiza una proyeccin cuando se extrae un cierto nmero de columnas de una
tabla
Seleccin. Se realiza una seleccin cuando se extrae un cierto nmero de filas de una tabla.
Entre tablas, tambin se pueden efectuar operaciones algebricas:
Unin. Se pueden unir dos tablas con el mismo grado (nmero de columnas) y mismos atributos:
el resultado es una tabla nica con los registros de ambas.
Diferencia. Se obtiene una tabla con los registros que no coinciden en ambas.
Interseccin. Se obtiene una tabla con los registros comunes.
Producto. Se puede realizar con dos tablas con los mismos atributos Se obtiene una tabla con el
producto cartesiano de los atributos.

Se dice que dos campos A y B tienen dependencia funcional cuando el valor del campo A es determi-
nado de manera nica por el valor de B. Se dice que dos campos A y C tienen dependencia transitiva
cuando el valor de B tiene dependencia funcional de A y C dependencia funcional de B.

Pgina 8 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Una de las caractersticas ms sobresalientes de las bases de datos relacionales es que se pueden esta-
blecer interrelaciones entre tablas. No se debe confundir el concepto de interrelacin con el de rela-
cin (la confusin proviene de los trminos ingleses relationship y relation). Para poder interrelacionar
tablas basta con que compartan algn campo clave. La interrelacin se produce siempre entre un cam-
po clave en una tabla el mismo campo, pero no clave, en otra tabla (figura 6)

TABLA DE ESTACIONES DE AFORO TABLA DE RIOS


INDROEA LUGAR CDR1 CDR1 NOMBRE

03082 ORUSCO 03011809

03011809 TAJUNA

Figura 6. Interrelacin entre tablas en un sistema relacional

Esta propiedad permite obtener tablas virtuales, llamadas vistas, en las que se forma una
nueva tabla con atributos de varias tablas interrelacionadas.

Figura 7. Vista en una base de datos relacional

Normalizacin de una base de datos relacional


Para asegurar la perfecta coherencia de los datos, un sistema de gestin relacional debe estar norma-
lizado. La normalizacin de una base de datos relacional (CODD, E. F., 1971) es fundamental para
un buen diseo de una base de datos relacional.

Las ventajas de la normalizacin son:

se evitan las dependencias entre modificaciones en tablas distintas relacionadas entre s


se mejora la independencia de los datos entre s, permitiendo un mejor crecimiento
evita la aparicin de restricciones artificiales en la estructura de los datos
se evita la redundancia de los datos

Pgina 9 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

La normalizacin se efecta en tres fases, de manera que para normalizar una base de datos se ha
pasar de una a otra completndose las anteriores. Segn se completan estas fases de normalizacin se
dice que el sistema cumple sucesivamente la Primera Forma Normal, la Segunda y finalmente la Ter-
cera Forma Normal.

Una relacin o tabla cumple la Primera Forma Normal cuando sus dominios no tienen elementos que
a su vez sean conjuntos. Esto quiere decir en esencia que no existen repeticiones en los campos de la
tabla y que todos los atributos pertenecen a dominios distintos. El cumplimiento slo de la Primera
Forma Normal plantea problemas a la hora de insertar, modificar o borrar valores en los campos.

Por ello se debe cumplir la Segunda Forma Normal. Para ello debe cumplirse la Primera Forma Nor-
mal y adems que todos los campos que no son clave dependen funcionalmente de la clave completa
y no de parte. Esto es aplicable slo a tablas con claves compuestas (combinaciones de varios cam-
pos), de manera que una tabla con un campo clave nico siempre cumple la Segunda Forma Normal.
La Segunda Formal Normal resuelve gran parte de los problemas de la Primera.

La Tercera Forma Normal es una extensin de la Segunda, eliminando las dependencias respecto a las
claves parciales. Se dice que una tabla cumple la Tercera Forma Normal si, adems de cumplir la
Segunda Forma Normal, se cumple que ninguno de sus campos que no son claves tiene dependencias
transitivas. Como se defini anteriormente, se entiende que dos campos A y C tienen dependencia
transitiva cuando A depende de B y B depende de C.

Para explicar mejor la normalizacin de una base de datos relacional, veamos un ejemplo sencillo:
Supongamos que tenemos un negocio de material informtico. En el almacn se dispone de una serie
de productos informticos suministrados por unos proveedores. De tiempo en tiempo hay que efectuar
un pedido a los proveedores para pedir nuevas partidas de material. El formato de un pedido cualquie-
ra es el siguiente:

Se pretende informatizar todos los pedidos existentes, que son muy numerosos, en una base de datos.
Para ello se han codificado, es decir, se les ha otorgado una clave numrica, los distintos elementos:
los pedidos, los proveedores y los productos.
Una persona sin experiencia carga todos los datos en una sola tabla:

Pgina 10 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

N PEDIDO FECHA N PROV NOMBRE PROV. N PROD 1 NOM PROD 1PRECIO 1 CANT 1TOT PROD 1N PROD 2 NOM PROD 2PRECIO 2CANT 2TOT PROD 2 TOTAL PEDIDO
1 01/10/2005 3 IBM 27 PC 1.200 10 12000 12000
2 20/10/2005 5 BASF 5 DVD 1,5 200 300 7 CDROM 0.7 1000 700 1000
3 20/10/2005 5 BASF S.A. 5 CDROM 0,7 600 420 420

El campo clave es el nmero de pedido.


Cumple con las formas normales?
La primera forma normal dice que no pueden existir conjuntos de dominios pertenecientes al mismo
dominio (realmente la definicin de relacin indica que cada campo pertenece a un dominio distinto).
En este caso, los campos n prod1 y n prod2 pertenecen al dominio de los nmeros de producto.
Igualmente nom_prod1 y nom_prod2 pertenecen al dominio de los nombres de producto, etc. Deben
eliminarse y colocarse en tabla aparte:

De esta manera se elimina la restriccin de que slo se puedan informatizar pedidos con un mximo
de dos pedidos (ahora no hay lmite) y se obtiene una estructura ms eficiente (no existen tantos cam-
pos vacos, en los casos en que slo hay un producto en el pedido).
Esta nueva tabla tiene una clave compuesta por dos campos, el n de pedido y el n de producto.
La segunda forma normal dice que se cumple si se cumple la primera y si todos los campos no clave
dependen de la clave completa. Slo se aplica a tablas con claves compuestas, como la que se acaba
de crear. Si se revisa de qu dependen los campos no clave de esta tabla, se comprueba que el nombre
del producto, as como su precio, slo dependen del n de producto, y no del pedido (no cambian para
cada pedido del mismo producto), no as la cantidad y el coste total, que dependen del n de producto
y del pedido. Esta forma nos obliga a crear una tabla de productos.

De esta manera se eliminan redundancias con los nombre de los pedidos y eliminamos la restriccin
de que para entrar un producto en la base de datos forzosamente tena que haber un pedido suyo.
Finalmente la tercera forma normal se cumple si se cumple la segunda y si ninguno de los campos no
clave tienen dependencias transitivas. Si observamos la tabla de pedidos, vemos que el nombre del
proveedor depende del n de proveedor, que a su vez depende del n de pedido. Se debe pues crea una
tabla de proveedores:

Pgina 11 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Con este esquema, todos los datos estn informatizados, sin redundancias ni limitaciones.

Integridad referencial
Un concepto de una gran importancia es la integridad referencial de la base de datos. Una base de
datos mantiene su integridad referencial cuando, si se modifica o elimina un valor de un campo clave,
se modifican o eliminan todas las apariciones de ese valor en las otras tablas. Es decir, no puede apa-
recer un valor en una clave ajena de una tabla que no coincida con el mismo valor en una tabla como
clave primaria.

Modelos Entidad Relacin (E-R)


Los modelos Entidad-Relacin son una herramienta til para el diseo de bases de datos relacionales.
Permiten poner de manifiesto la estructura conceptual de la base de datos.

Simplificando mucho, se puede decir que se utilizan slo un reducido grupo de conceptos semnticos
bsicos:

Entidad: cualquier objeto distinguible relevante


Propiedades: informacin que describe a las entidades de alguna manera. Si representa un campo
clave, se subrraya
Relacin: relacin entre entidades

Para representar estos elementos se utilizan unos elementos grficos dentro de un diagrama:

Entidad: rectngulo
Propiedad: valo
Relacin: rombo

El tipo de relacin, que puede ser de uno a uno, de uno a muchos o de muchos a muchos, se representa
con un 1 o una M.

Cualquier estructura de base de datos relacionales puede representarse con un diagrama de este tipo
(figura 8). La diferencia con un organigrama es que el diagrama E-R no tiene principio ni final, ya que
representa un estado y no un proceso.

Pgina 12 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Figura 8. Ejemplo de modelo E-R

EL LENGUAJE
CONCEPTUAL DE GESTIN
DE BASES DE DATOS
RELACIONALES SQL
Caractersticas
Hasta que no aparecieron los lenguajes conceptuales, para interrogar a una base de datos haba que ser
programador. En el ao 1971 Codd define para IBM el lenguaje SQL (Structured Query Language)
(CODD, 1971), llamado inicialmente SEQUEL (Structured English Query Language). En 1986 ANSI
normaliza el lenguaje, de manera que actualmente es el universalmente utilizado e incorporado en
todos los grandes sistemas de gestin de bases de datos relacionales: ORACLE, INFORMIX,
SYBASE, MS-SQLSERVER, etc.

SQL es un lenguaje conceptual, no procedural, de manera que indica qu se hace, pero no cmo se
hace. El SQL se expresa con instrucciones en ingls simplificado para ser fcilmente memorizable. Se
escribe indistintamente en maysculas o minsculas y los blancos no son significativos. Dispone de
instrucciones para manipular los registros y sus valores e instrucciones para construir y administrar la
base de datos.

Pgina 13 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Instrucciones de manipulacin de tablas


Las instrucciones para manipulacin de los registros de las tablas y los valores de sus campos se redu-
cen a cuatro: SELECT, DELETE, INSERT y UPDATE.

SELECT

Esta instruccin permite seleccionar los registros de una tabla con todos o parte de sus campos.
La forma general es:

SELECT * FROM tabla

selecciona todos los campos de todos los registros de la tabla tabla

SELECT campo1, campo2, ..... FROM tabla

selecciona los campos campo1 campo2 ... de todos los registros de la tabla tabla

Pueden ponerse condiciones a la seleccin:

SELECT campo1, campo2, ..... FROM tabla WHERE condicin

Selecciona los campos campo1 campo2 ... de la tabla tabla que cumplan la condicin condi-
cin.

Las condiciones pueden ser muy variadas:

WHERE campo1 = valor

buscar aquellos registros en que campo1 = valor

Se pueden utilizar todos los operadores matemticos habituales:

= igual
< menor
> mayor
<= menor o igual
>= mayor o igual
<> distinto

Tambin se pueden utilizar los operadores lgicos:

WHERE campo1 = valor1 AND campo2 = valor2


OR
NOT

Existe el operador BETWEEN (entre):

WHERE campo1 BETWEEN valor1 AND valor2


NOT BETWEEN

Pgina 14 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Tambin se puede comparar con una lista de valores:

WHERE campo1 IN (valor1, valor2, ...valorn)

O que no est en la lista:

WHERE campo1 NOT IN (valor1, valor2, ...valorn)

Se puede exigir que sea el valor nulo o no nulo:

WHERE campo1 IS NULL

WHERE campo1 IS NOT NULL

Si el campo es alfanumrico se pueden buscar subgrupos de caracteres:

WHERE campo1 LIKE expresin%


NOT LIKE

Donde % significa cualquier cosa (comodn)

Se pueden efectuar selecciones encadenadas:

WHERE campo1 = ( SELECT campo2 FROM tabla2 WHERE condicin)

O seleccionar slo si existe otra seleccin:

WHERE EXISTS (SELECT campo2 FROM tabla2 WHERE condicin)

O seleccionar si est en otra seleccin:

WHERE campo1 IN ( SELECT campo2 FROM tabla2 WHERE condicin)


NOT IN
Se pueden seleccionar registros con campos con valore siempre distintos:

SELECT DISTINCT campo FROM tabla WHERE condicin

Se pueden hacer selecciones compuestas de varias tablas:

SELECT tabla1.campo1, tabla2.campo3 ... FROM tabla1, tabla2


WHERE tabla1.campo1 condicin AND tabla2.campo3 condicin

Se pueden unir dos selecciones siempre que los campos unidos sean del mismo tipo:

SELECT campo1 FROM tabla1 WHERE condicin


UNION SELECT campo3 FROM tabla2 WHERE condicin

Tambin existen INTERSECT (busca slo los comunes) y EXCEPT (se queda slo con los no comu-
nes).

Existen una serie de funciones agregadas:

o COUNT(campo) nmero de registros con un campo


o SUM(campo) suma de los valores del campo
Pgina 15 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

o MAX(campo) valor mximo de un campo


o MIN(campo) valor mnimo de un campo
o AVG(campo) valor medio de un campo

Como es lgico debe definirse el criterio para agrupar los registros con los que se va a efec-
tuar la operacin: es la clusula GROUP BY:

SELECT SUM(campo1) FROM tabla WHERE condicion GROUP BY campo2

Todava se le puede imponer condiciones a la seleccin con la clusula HAVING:

SELECT SUM(campo1) FROM tabla WHERE condicion GROUP BY campo1


HAVING campo1 condicin

DELETE, INSERT Y UPDATE

DELETE

La clusula DELETE permite borrar registros. La forma general es:

DELETE FROM tabla WHERE condicin

donde condicin incluye todas las posibilidades descritas para la clusula SELECT

Si no se pone condicin, DELETE borra todos los registros de la tabla

INSERT

La clusula INSERT inserta registros nuevos en una tabla:

INSERT INTO tabla (campo1, campo2 , ...campon) VALUES (valor1, valor2, .


..valorn)

Para insertar un valor nulo se utiliza la palabra NULL

UPDATE

Esta clusula modifica valores de registros ya existentes:

UPDATE tabla SET campo1 = valor1, campo2 = valor2, ...campon = valorn


WHERE condicin

donde condicin incluye todas las posibilidades descritas para la clusula SELECT

Instrucciones de creacin y administracin de la base


de datos

El SQL dispone de instrucciones especficas para construir la base de datos y para administrar su
explotacin. A continuacin se exponen las ms importantes:

Pgina 16 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

CREATE

Permite crear tablas, ndices y vistas

CREATE TABLE tabla (campo1 tipo1 (NOT) NULL, campo2 tipo2 (NOT) NULL,
....campon tipon (NOT) NULL)

Los tipos son:


INTEGER entero
SMALLINT entero corto
FLOAT decimal corto
DECIMAL p,q decimal con p dgitos y g decimales
CHAR(n) alfanumrico de n caracteres
VARCHAR(n) alfanumrico de hasta n caracteres
DATE fecha
TIME tiempo
BLOB objetos binarios

Para crear ndices:

CREATE (UNIQUE) INDEX ndice ON tabla (campo1, campo2 ...)

Tambin se pueden crear tablas virtuales (vistas):

CREATE VIEW vista AS seleccin

Donde seleccin es una clusula SELECT completa

DROP

Permite borrar tablas, ndices y vistas:

Borra una tabla:


DROP TABLE tabla

Borra un ndice:

DROP INDEX ndice

Borra una vista:

DROP VIEW vista

ALTER

Modifica tablas:

ALTER TABLE tabla ADD (campo1 tipo1 (NOT) NULL, ....)


ALTER TABLE tabla DROP (campo1, campo2 ...)

GRANT

Esta clusula establece los permisos de acceso a todos los niveles de la base de datos:

Pgina 17 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

Para permitir conectarse a la base de datos a un usuario:

GRANT CONNECT ON base_datos TO usuario

Otros permisos:

GRANT SELECT ON tabla TO usuario


DELETE
INSERT
UPDATE
ALTER
ALL

Permite hacer selecciones, inserciones, borrados o modificaciones en la tabla a un usuario. Pue-


den especificarse campos:

GRANT SELECT campo1,campo2, ... ON tabla TO usuario

REVOKE

Elimina permisos concedidos


:
REVOKE CONNECT ON base_datos FROM usuario

REVOKE SELECT ON tabla FROM usuario


DELETE
INSERT
UPDATE
ALTER
ALL

SQL embebido en lenguajes de programacin


Una interesantsima posibilidad es utilizar SQL embebido en el cdigo fuente de un lenguaje de
programacin. Para ello se necesita disponer del preprocesador correspondiente. A continuacin
se muestran dos listados correspondientes a extractos de programas con SQL embebido en
FORTRAN y en lenguaje C. El paso de valores de campos de la base a variable se efecta con va-
riables precedidas de el smbolo :.

FORTRAN

EXEC SQL BEGIN DECLARE SECTION


CHARACTER*7 indctv
CHARACTER*6 fecha
DOUBLE PRECISION temed
CHARACTER*120 SQLMessage
EXEC SQL END DECLARE SECTION

C (* End Host Variable Declarations *)

n=0
do while (.true.)
read(5,'(a7,a6,f6.1)',end=100)indctv,fecha,temed
n=n+1

EXEC SQL UPDATE root.pluvio


Pgina 18 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

1 SET temed = :temed


2 WHERE indctv = :indctv AND fecha = :fecha

IF (SQLCode .EQ. 100) THEN


CALL Insert(indctv,fecha,temed)
SQLCode = OK
ENDIF
IF (SQLCode .NE. OK) THEN
CALL SQLStatusCheck
CALL RollBackWork
ELSE
CALL CommitWork
ENDIF
end do

100 close(5)
Modificar=.TRUE.
RETURN
END

LENGUAJE C
#include <stdio.h>

#define OK 0
#define Notfound 100
#define Multiple -10002
#define Deadlock -14024
#define True 1
#define False 0

EXEC SQL include sqlca;

EXEC SQL BEGIN DECLARE SECTION;

int indroea; /* Indicativo estacin */


short indroeaind;
int fecha; /* Fecha */
int naa; /* No. aos con precipitacin */
short naaind;
int tot_es, tot, tot_esc; /* Total estaciones */
int ano;
short anoind;

EXEC SQL END DECLARE SECTION;

main(argc,argv)

int argc;
char *argv[];

{
int es1; /* Estacin inicial: argv[2] */
int es2; /* Estacin final: argv[3] */
int cont, i, j, n; /* Contador */

EXEC SQL CONNECT TO 'base';

if(sqlca.sqlcode != OK) error();

EXEC SQL BEGIN WORK;

EXEC SQL DECLARE indicursor CURSOR FOR

SELECT indroea
INTO :indroea INDICATOR :indroeaind
FROM estaf;

Pgina 19 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

cont = 0;

EXEC SQL OPEN indicursor;

for(;;) {
EXEC SQL FETCH indicursor;
if(strncmp(SQLSTATE,"02",2) == 0) break;
if(sqlca.sqlcode != OK && sqlca.sqlcode != Notfound) error();

naa = 0;

EXEC SQL SELECT count(ano_hidr)


INTO :naa INDICATOR :naaind
FROM resum_a
WHERE indroea = :indroea
AND ano_hidr NOT BETWEEN 1931 and 1942;

if(sqlca.sqlcode != OK && sqlca.sqlcode != Notfound) error();

printf("%d) estacion: %d naa = %d\n",cont,indroea,naa);

EXEC SQL UPDATE estaf


SET naa = :naa
WHERE indroea = :indroea;
cont++;
}

EXEC SQL CLOSE indicurdor;


EXEC SQL FREE indicursor;

fin();
}

/********* Fin de lecturas en la base de datos ****/

fin()

EXEC SQL COMMIT WORK;

EXEC SQL DISCONNECT CURRENT;

}
/*************** Funcin error SQL ***************************************/

error()

printf("\n%s %d\n","ERROR de INFORMIX SQL No. ",sqlca.sqlcode);

exit();
}

BASIC (ASP)

<html>
<head>
<base href="http:/HIDRO/estmt_coord.asp" fptype="TRUE">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<title>Estaciones meteorolgicas por coordenadas</title>
</head>
Pgina 20 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.
Master en Ingeniera Medioambiental y Gestin del Agua 2007/2008

<body background="../backgrnd.gif">
<h1 align="CENTER">Base de datos HIDRO</h1>
<p>&nbsp;</p>
<h2><%@ LANGUAGE="VBScript" %><!--webbot bot="HTMLMarkup" StartSpan
</div><%Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DSN=hidro"
SQLStmt = "SELECT estmt.indctv,estmt.nap,estmt.nat,estmt.nac, estmt.lugar, muni.munombre
, cdr.corriente, estmt.xutm30, estmt.yutm30 "
SQLStmt = SQLStmt & "FROM hidro:informix.cdr cdr, hidro:informix.muni muni, hidro:
informix.estmt estmt "
SQLStmt = SQLStmt & "WHERE estmt.muni_id=muni.muni_id AND estmt.num_cuenca=cdr.
num_cuenca AND (estmt.xutm30 >= " & xmin & " and estmt.xutm30 <= " & xmax & " and estmt.
yutm30 >= " & ymin & " and estmt.yutm30 <= " & ymax & " ) "
SQLStmt = SQLStmt & "ORDER BY cdr.corriente, estmt.indctv "
Set RS = Connection.Execute(SQLStmt)
</body>
</html

REFERENCIAS
BIBLIOGRFICAS
CHAMBERLAIN, H & BOICE., 1974. Language SEQUEL 2. IBM.
CODD E. F., 1971: Normalized Data Structure: A Brief Tutorial. IBM Research Report RJ 935.
San Jos. California. 1971
CODASYL, 1971. Informe CODASYL DBTG (Data Base Task Group).
TSICHRITZIS, Dennis & KLUG, Anthony C., 1978. The ANSI/X3/SPARC DBMS Framework
Report of the Study Group on Dabatase Management Systems. IS 3(3): 173-191 (1978). Univ.
de Toronto. Canad.

Pgina 21 de 21

: Quedan reservados todos los derechos. (Ley de Propiedad Intelectual del 17 de noviembre de 1987 y Reales Decretos).
Documentacin elaborada por el autor/a para EOI.
Prohibida la reproduccin total o parcial sin autorizacin escrita de EOI.