Sunteți pe pagina 1din 61

BD02_Contenidos

1 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Base de datos relacionales.


Caso prctico
Ada ha asignado un
proyecto a Juan que
contar con Ana para
trabajar en l. De este
modo
Ana
ir
aprendiendo a la vez que
ayuda a Juan en tan
importante tarea.
Se trata de un proyecto
importante y puede suponer muchas ventas, por tanto, una gran expansin para la empresa. As
que Ada supervisar todo el trabajo de Juan para que no haya ningn problema.
El director de una importante empresa se dirigi a BK programacin para pedirles que
desarrollen un sitio web de juegos online, al que se podrn conectar usuarios para jugar
partidas. Se tiene que realizar un diseo de la base de datos que soporte la operativa de este
sitio web.
Una cuestin vital en la aplicacin es el almacenamiento de los datos. Los datos de los usuarios,
el acceso de stos, registro de las distintas partidas y juegos que se crean y el control de las
compras de crdito por parte de los jugadores. Todo deber guardarse en bases de datos, para
su tratamiento y recuperacin las veces que haga falta.
Como en BK programacin trabajan sobre todo con Oracle, desde el primer momento Juan, con
el visto bueno de Ada, tiene claro que van a tener que utilizar bases de datos relacionales y
Oracle.

30/06/2013 14:47

BD02_Contenidos

2 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

1.- Modelo de datos.

Caso prctico
Juan y Ana se han
puesto en marcha con
este nuevo proyecto.
Ambos saben que lo
primero que tienen que
hacer es trabajar con la
informacin que les han
dado. Ya saben las ideas
que el cliente tiene,
ahora
es
necesario
pasarlo a un formato con el que poder trabajar. Una de las primeras cosas que deben hacer es
trazar un borrador donde plasmar lo que ahora mismo est en sus cabezas y en las anotaciones
recogidas mientras hablaban con el cliente.

Segn el DRAE, un modelo es, entre otras definiciones, el esquema terico,


generalmente en forma matemtica, de un sistema o de una realidad compleja.
Podemos decir que es la representacin de cualquier aspecto o tema extrado del
mundo real. Qu sera entonces un modelo de datos? Aqul que nos permite
describir los elementos que intervienen en una realidad o en un problema dado y la
forma en que se relacionan dichos elementos entre s.
En informtica, un modelo de datos es un lenguaje utilizado para la descripcin
de una base de datos. Con este lenguaje vamos a poder describir las estructuras
de los datos (tipos de datos y relaciones entre ellos), las restricciones de
integridad (condiciones que deben cumplir los datos, segn las necesidades de
nuestro modelo basado en la realidad) y las operaciones de manipulacin de los
datos (insertado, borrado, modificacin de datos).
Es importante distinguir entre modelo de datos y esquema.
Segn Dittrich (1994): "La descripcin especfica de un determinado mini-mundo en trminos
de un modelo de datos se denomina esquema (o esquema de datos) del mini-mundo. La
coleccin de datos que representan la informacin acerca del mini-mundo constituye la base
de datos"
De Miguel, Piattini y Marcos (1999): "Representacin de un determinado mundo real (universo
del discurso) en trminos de un modelo de datos".
Para clasificar los modelos debemos pensar en el nivel de
abstraccin, es decir, en lo alejado que est del mundo real:
L o s m o d e l o s d e d a to s c o n c e p tu a l e s s o n a q u e l l o s q u e d e s c ri b e n l a s e s t ru c tu ra s d e d a t o s y r e s tri c c i o n e s d e i n te g ri d a d . Se u ti l i z a n d u r a n te l a e ta p a d e a n l i s i s d e u n p r o b l e m a d a d o , y e s t n o ri e n t a d o s a r e p re s e n t a r l o s e l e m e n to s q u e i n te rv i e n e n y s u s r e l a c i o n e s . E j e m p l o , M o d e l o E n t i d a d -Re l a c i n .

L o s m o d e l o s d e d a to s l g ic o s s e c e n t ra n e n l a s o p e ra c i o n e s y s e i m p l e m e n ta n e n a l g n s i s t e m a g e s t o r d e b a s e d e d a to s . Ej e m p l o , M o d e l o Re l a c i o n a l .

L o s m o d e l o s d e d a to s fs ic o s , s o n e s tru c t u r a s d e d a to s a b a j o n i v e l , i m p l e m e n t a d a s d e n tr o d e l p ro p i o s i s t e m a g e s t o r d e b a s e d e d a to s .

Hemos dicho que un modelo de datos es un lenguaje y por lo


general, presenta dos sublenguajes:
L e n g u a j e d e De fi n i c i n d e Da to s o DDL ( Da ta De f in iti o n L a n g u a g e ) , c u y a fu n c i n e s d e s c ri b i r, d e u n a f o rm a a b s tra c ta , l a s e s t ru c tu ra s d e d a t o s y l a s re s t ri c c i o n e s d e i n te g r i d a d .

L e n g u a j e d e M a n ip u l a c i n d e Da to s o DM L (Da t a M a n ip u la ti o n L a n g u a g e ) , q u e s i r v e n p a ra d e s c r i b i r l a s o p e r a c i o n e s d e m a n i p u l a c i n d e l o s d a to s .

30/06/2013 14:47

BD02_Contenidos

3 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Autoevaluacin
Cules son los modelos que se centran en las operaciones y se implementan en algn
sistema gestor de base de datos?
Modelo de datos conceptuales.
Modelo de datos lgico.
Modelo de datos fsicos.
Efectivamente, un ejemplo sera el modelo relacional.

30/06/2013 14:47

BD02_Contenidos

4 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

2.- Terminologa del modelo relacional.

Caso prctico
Ana se pregunta cul ser el modelo con el que se suele
trabajar. Actualmente, para la mayora de las aplicaciones de
gestin que utilizan bases de datos, el modelo ms
empleado es el modelo relacional, por su gran versatilidad,
potencia y su base matemtica.

Sabes que el modelo relacional te va a permitir representar la informacin del


mundo real de una manera intuitiva? As es, pudiendo introducir conceptos
cotidianos y fciles de entender por cualquiera, aunque no sea experto en
informtica.
El modelo relacional fue propuesto por
Edgar Frank Codd en los laboratorios de
IBM en California. Como hemos visto, se trata de un modelo lgico que
establece una estructura sobre los datos, independientemente del modo en que
luego los almacenemos. Es como si guardamos nuestra coleccin de libros,
dependiendo del nmero de habitaciones que tenga en casa, del tamao y forma
de nuestras estanteras, podremos disponer nuestros libros de un modo u otro para
facilitarnos el acceso y consulta. Los libros sern los mismos pero puedo
disponerlos de distinta forma.
El nombre de modelo relacional viene de la estrecha relacin entre el elemento bsico de este modelo y el
concepto matemtico de relacin. Si tenemos dos conjuntos A y B, una relacin entre estos dos conjuntos
sera un subconjunto del
producto cartesiano AxB.
El producto cartesiano nos dar la relacin de todos los elementos de un conjunto con todos los elementos
de los otros conjuntos de ese producto. Al estar trabajando con conjuntos, no puede haber elementos
repetidos.

Para saber ms
Aqu puedes encontrar un vdeo donde se explica de manera grfica las relaciones matemticas
entre conjuntos. Seguro que te resulta interesante refrescar estos conceptos:
Relaciones.

30/06/2013 14:47

BD02_Contenidos

5 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Resumen textual alternativo

30/06/2013 14:47

BD02_Contenidos

6 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

2.1.- Relacin o tabla. Tuplas. Dominios.


Pero... qu es eso de "relacin"? Hemos dicho que el modelo relacional se basa en el concepto
matemtico de relacin, ya que Codd, que era un experto matemtico, utiliz una terminologa
perteneciente a las matemticas, en concreto a la teora de conjuntos y a la lgica de predicados.

Para saber ms
Aqu tienes unos enlaces sobre teora de conjuntos y lgica de predicados:
Teora de conjuntos.
Lgica de predicados.

A partir de ahora, nosotros veremos una relacin como una tabla con
filas y columnas. Podemos asociar atributos a columna y tuplas a filas.
Atri b u to s : e s e l n o m b re d e c a d a d a t o q u e s e a l m a c e n a e n l a re l a c i n (t a b l a ). Ej e m p l o s s e r a n : DNI, n o m b r e , a p e l l i d o s , e tc .
E l n o m b re d e l a t ri b u t o d e b e d e s c r i b i r e l s i g n i fi c a d o d e l a i n fo r m a c i n q u e r e p re s e n t a . E n l a ta b l a Em p l e a d o s , e l a tr i b u t o Su e l d o a l m a c e n a r e l v a l o r e n e u r o s d e l s u e l d o q u e r e c i b e c a d a e m p l e a d o . A v e c e s e s n e c e s a ri o a a d i r u n a p e q u e a d e s c r i p c i n p a ra a c l a r a r u n p o c o m s e l c o n te n i d o . Po r e j e m p l o , s i e l s u e l d o e s n e to o b r u t o .

T u p la s : S e r e f i e re a c a d a e l e m e n to d e l a re l a c i n . S i u n a ta b l a g u a rd a d a to s d e u n c l i e n te , c o m o s u DNI o No m b re , u n a tu p l a o r e g i s tro s e r a e s e DNI y n o m b re c o n c re t o d e u n c l i e n te .


Ca d a u n a d e l a s fi l a s d e l a t a b l a s e c o r re s p o n d e c o n l a i d e a d e r e g i s tr o y t i e n e q u e c u m p l i r q u e :

Ca d a tu p l a s e d e b e c o r re s p o n d e r c o n u n e l e m e n t o d e l m u n d o re a l .

No p u e d e h a b e r d o s t u p l a s i g u a l e s (c o n to d o s l o s v a l o re s i g u a l e s ).

Est claro que un atributo en una tupla no puede tomar cualquier valor.
No sera lgico que en un atributo Poblacin se guarde "250".
Estaramos cometiendo un error, para evitar este tipo de situaciones
obligaremos a que cada atributo slo pueda tomar los valores
pertenecientes a un conjunto de valores previamente establecidos, es decir, un atributo tiene asociado un
dominio de valores.
A menudo un dominio se define a travs de la declaracin de un tipo para el atributo (por ejemplo, diciendo
que es un nmero entero entre 1 y 16), pero tambin se pueden definir dominios ms complejos y precisos.
Por ejemplo, para el atributo Sexo de mis usuarios, podemos definir un dominio en el que los valores
posibles sean "M" o "F" (masculino o femenino).
Una caracterstica fundamental de los dominios es que sean atmicos, es decir, que los valores contenidos
en los atributos no se pueden separar en valores de dominios ms simples.
Un dominio debe tener: Nombre, Definicin lgica, Tipo de datos y Formato.
Por ejemplo, si consideramos el Sueldo de un empleado, tendremos:
No m b re : S u e l d o .

De fi n i c i n l g ic a : Su e l d o n e t o d e l e m p l e a d o

T i p o d e d a to s : n m e r o e n te ro .

F o rm a to : 9 .9 9 9 .

Autoevaluacin
Cules de las siguientes afirmaciones son ciertas sobre las tuplas y los atributos?
Las tuplas deben corresponderse con un elemento del mundo real.
Seleccin incorrecta.
Podramos tener dos o ms tuplas iguales.
Seleccin correcta.
Un atributo se define en un dominio de valores.
Seleccin incorrecta.

30/06/2013 14:47

BD02_Contenidos

7 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

El nombre de cada dato que se almacena en la relacin se denomina Atributo.


Seleccin incorrecta.
Mostrar Informacin

No puede haber dos tuplas con todos sus valores iguales.

30/06/2013 14:47

BD02_Contenidos

8 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

2.2.- Grado. Cardinalidad.


Ya hemos visto que una relacin es una tabla con filas y columnas.
Pero hasta cuntas columnas puede contener? Cuntos
atributos podemos guardar en una tabla?
Llamaremos grado al tamao de una tabla en base a su nmero
de atributos (columnas). Mientras mayor sea el grado, mayor ser
su complejidad para trabajar con ella.
Y cuntas tuplas (filas o registros) puede tener?
Llamaremos cardinalidad al nmero de tuplas o filas de una relacin o tabla.
Vamos a verlo con un ejemplo. Relacin de grado 3, sobre los dominiosA={Carlos, Mara}, B={Matemticas,
Lengua}, C={Aprobado, Suspenso}.
Las posibles relaciones que obtenemos al realizar el producto cartesiano AxBxC es el siguiente:

Producto Cartesiano AxBxC.


A={Carlos, Mara}

B={Matemticas, Lengua}

C={Aprobado, Suspenso}

CARL OS

M AT EM T ICA S

AP ROBA DO

CARL OS

M AT EM T ICA S

SUSP ENSO

CARL OS

L E NGUA

AP ROBA DO

CARL OS

L E NGUA

SUSP ENSO

CARL OS

INGL S

AP ROBA DO

CARL OS

INGL S

SUSP ENSO

M ARA

M AT EM T ICA S

AP ROBA DO

M ARA

M AT EM T ICA S

SUSP ENSO

M ARA

L E NGUA

AP ROBA DO

M ARA

L E NGUA

SUSP ENSO

M ARA

INGL S

AP ROBA DO

M ARA

INGL S

SUSP ENSO

Si cogemos un subconjunto de sta con 5 filas, tendramos una relacin de cardinalidad 5:

Subconjunto del Producto Cartesiano AxBxC con


cardinalidad 5.
A={Carlos, Mara}

B={Matemticas, Lengua}

C={Aprobado, Suspenso}

CARL OS

M AT EM T ICA S

AP ROBA DO

CARL OS

L E NGUA

AP ROBA DO

CARL OS

INGL S

AP ROBA DO

M ARA

M AT EM T ICA S

AP ROBA DO

M ARA

INGL S

SUSP ENSO

30/06/2013 14:47

BD02_Contenidos

9 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

2.3.- Sinnimos.

Caso prctico
Ana est un poco liada con tantos trminos nuevos. Si Juan
habla de tuplas se est refiriendo a registros? Los registros
eran las filas de las las tablas, no? Ser mejor que
hagamos un resumen.

Los trminos vistos hasta ahora tienen distintos sinnimos segn la nomenclatura
utilizada. Trabajaremos con tres:
E n e l m o d e lo re l a c io n a l: RE L A CIN - T UP L A - AT RIB UT O - GRA DO - CARDI NA L I DA D.

E n t a b la s : T AB L A - F IL A - COL UM NAS - NM ERO COL UM NA S - NM E RO F IL AS .

E n t rm i n o s d e re g is tro s : F ICHE ROS - RE GI ST ROS - CAM P OS - NM ERO CA M P OS - NM E RO REGIS T ROS .

Autoevaluacin
Relaciona cada trmino del modelo relacional con la terminologa de Tablas.

Sinnimos.
Terminologa del modelo relacional.

RE L A CI N

T UPL A

AT RI BUT O

GRADO

CA RDINAL IDAD

Reiniciar

Relacin.

Terminologa en Tablas.
1 . COL UM NA S

2 . NM E RO DE COL UM NA S

3 . NM E RO DE F I L A S

4 . FI L A

5 . TA BL A

Mostrar las respuestas

Tu puntuacin es 0/5.
Debes tener en cuenta que a partir de ahora emplearemos frecuentemente estos trminos.

30/06/2013 14:47

BD02_Contenidos

10 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

3.- Relaciones. Caractersticas de una relacin (tabla).

Caso prctico
Juan, tras su anlisis y varios das de trabajo, ha obtenido
las relaciones con las que trabajar y los atributos que desea
guardar en la base de datos. Junto con Ana va a repasar que
se cumplan todas las propiedades y as asegurarse que el
modelo es el adecuado. Tambin necesitar saber qu
informacin podr consultar el usuario para as crear algunas
tablas de modo temporal.

En un modelo relacional se puede utilizar cualquier relacin? Es vlida cualquier tabla o se deben cumplir
algunas propiedades?
Debes saber que:
Ca d a ta b l a t i e n e u n n o m b re d is tin to .

Co m o h e m o s v i s t o a n te s , c a d a a tr i b u t o (c o l u m n a ) d e l a t a b l a to m a u n s o lo v a l o r e n c a d a tu p l a (f i l a ).

Ca d a a tr i b u t o (c o l u m n a ) t i e n e u n n o m b re d is ti n to e n c a d a t a b l a (p e ro p u e d e s e r e l m i s m o e n ta b l a s d i s ti n ta s ) .

No p u e d e h a b e r d o s t u p l a s (fi l a s ) c o m p l e t a m e n te i g u a l e s .

E l o rd e n d e l a s t u p l a s (f i l a s ) n o im p o rta .

E l o rd e n d e l o s a tr i b u t o s (c o l u m n a s ) n o im p o rta .

To d o s l o s d a to s d e u n a t ri b u t o (c o l u m n a ) d e b e n s e r d e l m is m o d o m i n i o .

30/06/2013 14:47

BD02_Contenidos

11 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Autoevaluacin
Cul de las siguientes afirmaciones no es cierta en una relacin?
Todos los atributos deben estar en el mismo dominio.
No puede haber dos tuplas completamente iguales.
Cada atributo de la tabla toma un nico valor en cada tupla.
Podemos tener tablas con el mismo nombre en la misma base de datos.
Correcto, s es posible en bases de datos distintas.

30/06/2013 14:47

BD02_Contenidos

12 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

3.1.- Tipos de relaciones (tablas).

Caso prctico
Juan le est contando a Ana que hay que distinguir las
relaciones en funcin del uso que se le vaya a dar. Tal y
como han hablado con el cliente, sabe que unos jugadores
accedern a un tipo de tablas como usuarios, y las personas
que administran la base de datos lo harn a otras. Es obvio
que tenemos que distinguir entre unas y otras.

Existen varios tipos de relaciones y las vamos a clasificar en:


P e rs is te n t e s : S l o p u e d e n s e r b o r ra d a s p o r l o s u s u a ri o s .

Ba s e : In d e p e n d i e n te s , s e c re a n i n d i c a n d o s u e s tru c t u r a y s u s e j e m p l a r e s (c o n j u n t o d e t u p l a s o f i l a s ).

Vi s t a s : s o n t a b l a s q u e s l o a l m a c e n a n u n a d e f i n i c i n d e c o n s u l ta , re s u l ta d o d e l a c u a l s e p ro d u c e u n a ta b l a c u y o s d a to s p r o c e d e n d e l a s b a s e s o d e o tra s v i s t a s e i n s t a n t n e a s . Si l o s d a to s d e l a s ta b l a s b a s e c a m b i a n , l o s d e l a v i s ta q u e u t i l i z a n e s o s d a t o s t a m b i n c a m b i a r n .

In s t a n t n e a s : s o n v i s t a s (s e c r e a n d e l a m i s m a fo rm a ) q u e s a l m a c e n a n l o s d a to s q u e m u e s tra n , a d e m s d e l a c o n s u l ta q u e l a c re . S o l o m o d i fi c a n s u re s u l t a d o c u a n d o e l s i s te m a s e re fr e s c a c a d a c i e r to ti e m p o . Es c o m o u n a fo to g r a f a d e l a re l a c i n , q u e s l o e s v l i d a d u r a n te u n p e ri o d o d e ti e m p o c o n c re to .

T e m p o ra le s : S o n t a b l a s q u e s o n e l i m i n a d a s a u to m t i c a m e n te p o r e l s i s te m a .

Autoevaluacin
Las relaciones que se crean indicando su estructura y sus ejemplares se denominan:
Instantneas.
Vistas.
Base.
Correcto, sigue as.

30/06/2013 14:47

BD02_Contenidos

13 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

4.- Tipos de datos.

Caso prctico
Juan le ha pedido a Ana que repase cada una de las
relaciones y en funcin de los datos que contenga cada
atributo, elegir el tipo de datos ms adecuado. Ms adelante
habr que restringir esos valores para que al introducir datos
no se produzcan errores. Los tipos de datos ocupan espacio
en el disco duro del
servidor donde se guarde y eso
significa un gasto para la empresa, as que hay que
optimizar.
Adems, Ana todava recuerda aquella vez que tuvo que
entregar una prctica en la facultad sobre base de datos. Guard el telfono con un formato de
nmero y cuando fue a imprimir un informe... no quiere ni acordarse! Le salieron unos nmeros
de telfonos que nada tenan que ver con los datos introducidos.

Qu es un DNI? Con qu datos lo representamos? DNI es una informacin que es susceptible de ser
guardada. Normalmente el DNI est formado por dgitos y una letra al final. Si tuviramos que clasificarlo
diramos que es un conjunto de caracteres alfanumricos. Y si pensamos en Sueldo? Aqu lo tenemos un
poco ms claro, evidentemente es un nmero entero o con decimales.
Hasta ahora hemos visto que vamos a guardar informacin relacionada en forma de filas y columnas. Las
columnas son los atributos o informacin que nos interesa incluir del mundo real que estamos modelando.
Hemos visto que esos atributos se mueven dentro de un dominio, que formalmente es un conjunto de
valores. Pues bien, en trminos de sistemas de base de datos, se habla ms de tipos de datos que de
dominios. Al crear la relacin (tabla) decidimos qu conjunto de datos deber ser almacenado en las filas de
los atributos que hemos considerado. Tenemos que asignar un tipo de dato a cada atributo.
Con la asignacin de tipos de datos, tambin habremos seleccionado un dominio para un atributo.
Cada campo:
d e b e p o s e e r u n No m b re (r e l a c i o n a d o c o n l o s d a t o s q u e v a a c o n te n e r) y

d e b e te n e r a s o c i a d o u n T ip o d e d a to .

Existen distintas formas de nombrar los tipos de datos dependiendo del lenguaje que utilicemos (
Java, PHP, MySQL, SQL,
Pascal, etc.).

C,

Veamos cuales son los tipos de datos ms


comunes con los que nos encontraremos
generalmente:
T e x to : a l m a c e n a c a d e n a s d e c a ra c te r e s ( n m e ro s c o n l o s q u e n o v a m o s a r e a l i z a r o p e ra c i o n e s m a te m ti c a s , l e tr a s o s m b o l o s ).

Nu m ric o : a l m a c e n a n m e r o s c o n l o s q u e v a m o s a re a l i z a r o p e ra c i o n e s m a t e m t i c a s .

F e c h a /h o ra : a l m a c e n a fe c h a s y h o r a s .

S / No : a l m a c e n a d a t o s q u e s o l o t i e n e n d o s p o s i b i l i d a d e s ( v e rd a d e r o / fa l s o ).

Au t o n u m ric o : v a l o r n u m r i c o s e c u e n c i a l q u e e l S GB D i n c r e m e n ta d e m o d o a u t o m ti c o a l a a d i r u n re g i s t ro (f i l a ).

M e m o : a l m a c e n a t e x to l a rg o (m a y o r q u e u n ti p o te x t o ) .

M o n e d a : s e p u e d e c o n s i d e ra r u n s u b t i p o d e Nu m r i c o y a q u e a l m a c e n a n m e ro s , p e r o c o n u n a c a ra c t e r s t i c a e s p e c i a l , y e s q u e l o s v a l o re s r e p re s e n t a n c a n ti d a d e s d e d i n e ro .

Ob j e t o OL E: a l m a c e n a g r fi c o s , i m g e n e s o te x t o s c re a d o s p o r o t ra s a p l i c a c i o n e s .

Para saber ms

30/06/2013 14:47

BD02_Contenidos

14 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Si quieres saber un poco ms sobre los tipos de datos puedes ver este enlace de Wikipedia:
Tipo de datos.

30/06/2013 14:47

BD02_Contenidos

15 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

5.- Claves.

Caso prctico
Juan est revisando la relacin Usuarios. En esta tabla va a
guardar los siguientes atributos: Login del jugador que ser
nuestro usuario, Password o Contrasea, Nombre y
Apellidos, Direccin, Cdigo Postal, Localidad, Provincia,
Pas, Fecha de nacimiento para comprobar que no es menor
de edad, Fecha de ingreso en la web, Correo electrnico,
Sexo y por ltimo los Crditos (dinero "ficticio") que tenga.

Cmo diferenciamos unos usuarios de otros? Cmo sabemos que no


estamos recogiendo la misma informacin? Cmo vamos a distinguir
unas tuplas de otras? Lo haremos mediante los valores de sus
atributos. Para ello, buscaremos un atributo o un conjunto de atributos
que identifiquen de modo nico las tuplas (filas) de una relacin (tabla).
A ese atributo o conjunto de atributos lo llamaremos superclaves.
Hemos visto que una caracterstica de las tablas era que no puede
haber dos tuplas (filas) completamente iguales, con lo que podemos
decir que toda la fila como conjunto sera una superclave.
Por ejemplo, en la tabla Usuarios tenemos las siguientes superclaves:
{No m b re , A p e l l i d o s , l o g i n , e _ m a i l , F _ n a c i m i e n to }

{No m b re , A p e l l i d o s , l o g i n , e _ m a i l }

{l o g i n , e _ m a i l }

{l o g i n }

Tendramos que elegir alguna de las superclaves para diferenciar las tuplas. En el modelo relacional
trabajamos con tres tipos de claves:
Cl a v e s c a n d id a ta s .

Cl a v e s p ri m a ri a s .

Cl a v e s a lt e rn a tiv a s .

Cl a v e s a je n a s .

A continuacin veremos cada una de ellas.

Para saber ms
En este enlace tienes ms informacin sobre las superclaves:
Superclaves.

30/06/2013 14:47

BD02_Contenidos

16 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

5.1.- Clave candidata. Clave primaria. Clave alternativa.


Si puedo elegir entre tantas claves, con cul me quedo? Tendremos que
elegir entre las claves "candidatas" la que mejor se adapte a mis necesidades.
Y cules son stas? Las claves candidatas sern aquel conjunto de atributos
que identifiquen de manera nica cada tupla (fila) de la relacin (tabla). Es
decir, las columnas cuyos valores no se repiten en ninguna otra fila de la tabla.
Por tanto, cada tabla debe tener al menos una clave candidata aunque
puede haber ms de una.
Siguiendo con nuestro ejemplo, podramos considerar los atributos Login o
E_mail como claves candidatas, ya que sabemos que el Login debe ser nico
para cada usuario, a E_mail le sucede lo mismo. Pero tambin cabe la
posibilidad de tomar: Nombre, Apellidos y F_nacimiento, las tres juntas como clave candidata.
Las claves candidatas pueden estar formadas por ms de un atributo, siempre y cuando stos identifiquen
de forma nica a la fila. Cuando una clave candidata est formada por ms de un atributo, se dice que es
una clave compuesta.
Una clave candidata debe cumplir los siguientes requisitos:
Un ic id a d : n o p u e d e h a b e r d o s t u p l a s ( fi l a s ) c o n l o s m i s m o s v a l o r e s p a r a e s o s a tri b u to s .

Irre d u c i b i lid a d : s i s e e l i m i n a a l g u n o d e l o s a tri b u to s d e j a d e s e r n i c a .

Si elegimos como clave candidata Nombre, Apellidos y F_nacimiento, cumple con la unicidad puesto que
es muy difcil encontrarnos con dos personas que tengan el mismo nombre, apellidos y fecha de nacimiento
iguales. Es irreducible puesto que sera posible encontrar dos personas con el mismo nombre y apellidos o
con el mismo nombre y fecha de nacimiento, por lo que son necesarios los tres atributos (campos) para
formar la clave.
Para identificar las claves candidatas de una relacin no nos fijaremos en un momento concreto en el que
vemos una base de datos. Puede ocurrir que en ese momento no haya duplicados para un atributo o
conjunto de atributos, pero esto no garantiza que se puedan producir. El nico modo de identificar las
claves candidatas es conociendo el significado real de los atributos (campos), ya que as podremos saber si
es posible que aparezcan duplicados. Es posible desechar claves como candidatas fijndonos en los
posibles valores que podemos llegar a tener. Por ejemplo, podramos pensar que Nombre y Apellidos
podran ser una clave candidata, pero ya sabemos que cabe la posibilidad de que dos personas puedan
tener el mismo Nombre y Apellidos, as que lo descartamos.
Hasta ahora, seguimos teniendo varias claves con la que identificamos de modo nico nuestra relacin. De
ah el nombre de candidatas. Hemos de quedarnos con una.
La clave primaria de un relacin es aquella clave candidata que se escoge para identificar sus tuplas de
modo nico. Ya que una relacin no tiene tuplas duplicadas, siempre hay una clave candidata y, por lo
tanto, la relacin siempre tiene clave primaria. En el peor caso, la clave primaria estar formada por todos
los atributos de la relacin, pero normalmente habr un pequeo subconjunto de los atributos que haga esta
funcin. En otros casos, podemos crear un campo nico que identifique las tuplas, por ejemplo un cdigo de
usuario, que podran estar constituidos por valores autonumricos.
Las claves candidatas que no son escogidas como clave primaria son denominadas claves
alternativas.
Si en nuestra tabla Usuarios escogemos Login como clave primaria, el E_mail o {Nombre, Apellidos,
F_Nacimiento} sern nuestras claves alternativas.

Autoevaluacin
Rellena los huecos con los conceptos adecuados.
Dentro del conjunto de superclaves, se llaman claves
identifican unvocamente a cada una de las

tuplas

candidatas

a aquellas que

. De entre stas, escogeremos la

30/06/2013 14:47

BD02_Contenidos

17 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

clave

primaria
alternativas

Reiniciar

Aquellas

que

no

escogemos

se

denominarn

claves

Mostrar las respuestas

Tu puntuacin es 0/4.

30/06/2013 14:47

BD02_Contenidos

18 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

5.2.- Clave externa, ajena o secundaria.


Hasta ahora no nos hemos planteado cmo se relacionan unas tablas
con otras dentro de una base de datos. Si tenemos las tablas Usuarios
y Partidas, necesariamente habr una "relacin" entre ellas. Deben
compartir algn dato en comn que las relacione. Una partida es jugada
por un jugador (Usuarios), por lo que en la tabla Partida deberamos
guardar algn dato del usuario-jugador, pero cul?
Una clave ajena, tambin llamada externa o secundaria, es un
atributo o conjunto de atributos de una relacin cuyos valores coinciden
con los valores de la clave primaria de alguna otra relacin (o de la
misma). Las claves ajenas representan relaciones entre datos. Dicho
de otra manera, son los datos de atributos de una tabla cuyos valores estn relacionados con atributos de
otra tabla.
En la tabla Partidas, se recogen datos como Cod_partida, Fecha y Hora de creacin, Nombre de la
partida, etc. Qu campo utilizaremos para relacionarla con la tabla Usuarios? Si nos basamos en la
definicin, deberamos utilizar la clave primaria de la tabla Usuarios. Por tanto, el atributo Login que es la
clave principal en su tabla aparecer en la tabla Partidas como clave ajena, externa o secundaria. El Login
en Partidas hace referencia a cada jugador que juega esa partida. En lugar de guardar todos los datos de
ese jugador en la misma tabla, lo hacemos en otra y lo "referenciamos" por su clave primaria tomndola
como ajena.
Es lgico que las claves ajenas no tengan las mismas propiedades y restricciones que tienen como clave
primaria en su tabla, por tanto, s que pueden repetirse en la tabla. En nuestro ejemplo, un mismo jugador
puede jugar varias partidas.
Las claves ajenas tienen por objetivo establecer una conexin con la clave primaria que referencian. Por lo
tanto, los valores de una clave ajena deben estar presentes en la clave primaria correspondiente, o bien
deben ser valores nulos. En caso contrario, la clave ajena representara una referencia o conexin
incorrecta.
No podemos tener una partida de un jugador que previamente no se ha registrado. Pero s podemos tener
los datos de una partida y desconocer el jugador de sta.

Autoevaluacin
Cules de las siguientes afirmaciones sobre las claves ajenas son correctas?
Puede "referenciar" a la clave primaria de la misma tabla donde se encuentra.
Seleccin incorrecta.
Puede "referenciar" a la clave primaria de otra tabla.
Seleccin incorrecta.
Representa relaciones entre datos.
Seleccin incorrecta.
Puede contener valores nulos.
Seleccin incorrecta.
No puede repetirse en la tabla.
Seleccin correcta.
Mostrar Informacin

Recuerda que las claves ajenas son aquellos atributos a travs de los cuales se relacionan
las tablas.

30/06/2013 14:47

BD02_Contenidos

19 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Para saber ms
Interesante artculo sobre las claves ajenas y su importancia:
De las claves ajenas, forneas, externas...
Si necesitas refrescar o simplemente aprender el concepto de clave primaria, en la wikipedia
puedes consultarlo:
Claves primarias.

30/06/2013 14:47

BD02_Contenidos

20 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

6.- ndices. Caractersticas.

Caso prctico
Juan considera que es
beneficioso
crear
un
ndice para la tabla
Usuarios. Podra agilizar
las
bsquedas
de
usuarios registrados. Le
ha contado a Ana que es
conveniente
tenerlo,
aunque tambin le ha
explicado
que
tener
muchos ndices no es bueno. Tendrn que hacer una buena eleccin del nmero de ndices que
van a manejar.

Imagina que ests creando un diccionario de trminos informticos.


Podras elegir la opcin de escribirlo en una nica hoja muy larga (estilo
pergamino) o bien distribuirlo por hojas. Est claro que lo mejor sera
distribuirlo por pginas. Y si buscamos el trmino "informtica" en
nuestro diccionario, podramos comenzar a buscar en la primera pgina
y continuar una por una hasta llegar a la palabra correspondiente. O
bien crear un ndice al principio, de manera que podamos consultar a
partir de qu pgina podemos localizar las palabras que comienzan por
"i". Esta ltima opcin parece la ms lgica.
Pues bien, en las bases de datos, cada tabla se divide internamente en pginas de datos, y se define el
ndice a travs de un campo (o campos) y es a partir de este campo desde donde de busca.
Un ndice es una estructura de datos que permite acceder a diferentes filas de una misma tabla a travs de
un campo o campos . Esto permite un acceso mucho ms rpido a los datos.
Los ndices son tiles cuando se realizan consultas frecuentes a un rango de filas o una fila de una tabla.
Por ejemplo, si consultamos los usuarios cuya fecha de ingreso es anterior a una fecha concreta.
Los cambios en los datos de las tablas (agregar, actualizar o borrar filas) son incorporados
automticamente a los ndices con transparencia total.
Debes saber que los ndices son independientes, lgica y fsicamente de los datos, es por eso que pueden
ser creados y eliminados en cualquier momento, sin afectar a las tablas ni a otros ndices.
Cundo indexamos? No hay un lmite de columnas a indexar, si quisiramos podramos crear un ndice
para cada columna, pero no sera operativo. Normalmente tiene sentido crear ndices para ciertas columnas
ya que agilizan las operaciones de bsqueda de base de datos grandes. Por ejemplo, si la informacin de
nuestra tabla Usuarios se desea consultar por apellidos, tiene sentido indexar por esa columna.
Al crear ndices, las operaciones de modificar o agregar datos se ralentizan, ya que al realizarlas es
necesario actualizar tanto la tabla como el ndice.
Si se elimina un ndice, el acceso a datos puede ser ms lento a partir de ese momento.

Para saber ms
Si quieres conocer ms sobre los ndices y MySQL puedes leer este artculo:

30/06/2013 14:47

BD02_Contenidos

21 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

ndices

30/06/2013 14:47

BD02_Contenidos

22 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

7.- El valor NULL. Operaciones con este valor.

Caso prctico
Ana tiene un poco ms claro el concepto de relacin y las
caractersticas de los atributos. Sabe que stos se definen
en un dominio. Pero qu ocurre si no conozco algn valor
de un dato? Si en la tabla de usuarios estoy pidiendo que
se guarde el sexo y el jugador no quiere decirlo? Qu
puede ocurrir? Si se permite que ese dato no sea obligatorio
lo que me quedara sera un dato vaco de informacin.
Vamos a ver que eso es posible y que ese valor tiene una
denominacin propia.

Qu sucede si al guardar los datos de los Usuarios hay algn dato que no
tengo o no necesito guardarlo porque no corresponde?
Independientemente del dominio al que pertenezca un campo, ste puede
tomar un valor especial denominado NULO (NULL en ingls) que
designar la ausencia de dato.
Cuando por cualquier motivo se desconoce el valor de un campo, por
ejemplo, desconocemos el telfono del usuario, o bien ese campo carece
de sentido (siguiendo con el mismo ejemplo, puede que el usuario no tenga
telfono), podemos asignar a ese campo el valor especial NULO.
Cuando trabajamos con claves secundarias el valor nulo indica que la tupla o fila no est relacionada con
ninguna otra tupla o fila. Este valor NULO es comn a cualquier dominio.
Pero ten en cuenta una cosa, no es lo mismo valor NULO que ESPACIO EN BLANCO.
Tampoco ser lo mismo valor NULO que el valor CERO.

Un ordenador tomar un espacio en blanco como un carcter como otro cualquiera. Por tanto, si
introducimos el carcter "espacio en blanco" estaramos introduciendo un valor que pertenecera al dominio
texto y sera distinto al concepto "ausencia de valor" que sera no incluir nada (nulo).
Este valor se va a utilizar con frecuencia en las bases de datos y es imprescindible saber cmo acta
cuando se emplean operaciones lgicas sobre ese valor. En la
lgica booleana tenemos los valores
VERDADERO y FALSO, pero un valor NULO no es ni verdadero ni falso.
Cuando necesitemos comparar dos campos, si ambos son nulos no podremos obtener ni verdadero ni falso.
Necesitaremos definir la lgica con este valor. Veamos los operadores lgicos ms comunes y sus
resultados utilizando el valor nulo:
V ERDA DE RO Y ( AND) NUL O d a ra c o m o re s u l t a d o NUL O.

F AL S O Y ( AND) NUL O d a ra c o m o re s u l t a d o F AL SO.

V ERDA DE RO O ( OR) NUL O d a r a c o m o r e s u l ta d o V ERDA DE RO.

F AL S O O NUL O d a r a c o m o r e s u l ta d o NUL O.

NO ( NOT ) NUL O d a r a c o m o r e s u l ta d o NUL O.

En todas las bases de datos relacionales se utiliza un operador llamado ES NULO (IS NULL) que devuelve
VERDADERO si el valor con el que se compara es NULO.

30/06/2013 14:47

BD02_Contenidos

23 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Para saber ms
El uso del valor nulo es un tema que da mucho que hablar, aqu puedes leer sobre ello:
Valores nulos

Autoevaluacin
Cules de las siguientes afirmaciones sobre el valor nulo son ciertas?
Designa ausencia de dato.
Seleccin incorrecta.
Es lo mismo que espacio en blanco.
Seleccin correcta.
Es lo mismo que cero.
Seleccin correcta.
Mostrar Informacin

El valor nulo no se puede confundir con espacio en blanco ni con el valor cero.

30/06/2013 14:47

BD02_Contenidos

24 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

8.- Vistas.

Caso prctico
Ana lleva un buen rato pensando cmo hacer si necesitara
consultar datos de dos tablas distintas, por ejemplo, sera
interesante obtener los nombres de los usuarios que estn
jugando una determinada partida. O quizs consultar otros
datos por el estilo. Cmo lo hace si ya estn definidas las
tablas del modelo? Cmo crear esas tablas? Juan le va a
explicar que esa informacin la puede obtener a travs de
las vistas.

Cuando vimos los distintos tipos de relaciones, aprendimos que, entre otros,
estaban las vistas. Ahora ya tenemos ms conocimientos para comprender mejor
este concepto.
Una vista es una tabla "virtual" cuyas filas y columnas se obtienen a partir de una o
de varias tablas que constituyen nuestro modelo. Lo que se almacena no es la
tabla en s, sino su definicin, por eso decimos que es "virtual". Una vista acta
como filtro de las tablas a las que hace referencia en ella.
La consulta que define la vista puede provenir de una o de varias tablas, o bien de
otras vistas de la base de datos actual u otras bases de datos.
No existe ninguna restriccin a la hora de consultar vistas y muy pocas
restricciones a la hora de modificar los datos de stas.
Podemos dar dos razones por las que queramos crear vistas:
S e g u rid a d , n o s p u e d e i n t e r e s a r q u e l o s u s u a ri o s t e n g a n a c c e s o a u n a p a r te d e l a i n fo r m a c i n q u e h a y e n u n a ta b l a , p e r o n o a to d a l a t a b l a .

Co m o d id a d , c o m o v e r e m o s a l p a s a r n u e s tr a s ta b l a s /r e l a c i o n e s a u n l e n g u a j e d e b a s e d e d a to s , p u e d e q u e t e n g a m o s q u e e s c ri b i r s e n te n c i a s b a s ta n te c o m p l e j a s , l a s v i s ta s n o s o n ta n c o m p l e j a s .

Las vistas no tienen una copia fsica de los datos, son consultas a los datos que hay en las tablas, por lo
que si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la
tabla estos cambios sern visibles desde la vista.
Aunque no siempre podremos actualizar los datos de una vista, depender de la complejidad de la misma
y del gestor de base de datos. No todos los gestores de bases de datos permiten actualizar vistas,
Oracle, por ejemplo, no lo permite, mientras que
SQL Server s.

Autoevaluacin
Una vista puede proceder de:
Una tabla.
Seleccin incorrecta.
Varias tablas.
Seleccin incorrecta.
Otras vistas de la misma base de datos.
Seleccin incorrecta.
Otras vistas de otras bases de datos.
Seleccin incorrecta.
Mostrar Informacin

30/06/2013 14:47

BD02_Contenidos

25 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Recuerda adems que una vista es una consulta y lo que se guarda es su definicin.

30/06/2013 14:47

BD02_Contenidos

26 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

9.- Usuarios. Roles. Privilegios

Caso prctico
Juan debe consultar al cliente qu usuarios van a acceder a
la base de datos y qu privilegios se les va a otorgar. Esta
parte es primordial si queremos salvaguardar el contenido de
la base de datos. Qu ocurrira si cualquiera pudiera ver la
informacin personal de todos los usuarios registrados?
Estaramos cometiendo un fallo de seguridad adems de
incumplir la ley de proteccin de datos.

A la hora de conectarnos a la base de datos es necesario que utilicemos un


modo de acceso, de manera que queden descritos los permisos de que
dispondremos durante nuestra conexin. En funcin del nombre de usuario
tendremos unos permisos u otros.
Un usuario es un conjunto de permisos que se aplican a una conexin de
base de datos. Tiene adems otras funciones como son:
S e r e l p ro p i e ta ri o d e c i e rto s o b j e to s (ta b l a s , v i s ta s , e tc .).

Re a l i z a l a s c o p i a s d e s e g u ri d a d .

De fi n e u n a c u o ta d e a l m a c e n a m i e n t o .

De fi n e e l

ta b l e s p a c e p o r d e fe c t o p a ra l o s o b j e to s d e u n u s u a ri o e n Or a c l e .

Pero no todos los usuarios deberan poder hacer lo mismo cuando acceden a
la base de datos. Por ejemplo, un
administrador debera tener ms
privilegios que un usuario que quiere realizar una simple consulta.
Qu es un privilegio? No es ms que un permiso dado a un usuario para que realice ciertas operaciones,
que pueden ser de dos tipos:
De s is te m a : n e c e s i ta r e l p e r m i s o d e s i s t e m a c o rr e s p o n d i e n t e .

S o b re o b je to : n e c e s i ta r e l p e r m i s o s o b re e l o b j e t o e n c u e s t i n .

Y no sera interesante poder agrupar esos permisos para darlos juntos? Para eso tenemos el rol.
Un rol de base de datos no es ms que una agrupacin de permisos de sistema y de objeto.
Podemos tener a un grupo determinado de usuarios que tengan permiso para consultar los datos de una
tabla concreta y no tener permiso para actualizarlos. Luego un rol permite asignar un grupo de permisos a
un usuario. De este modo, si asignamos un rol con 5 permisos a 200 usuarios y luego queremos aadir un
permiso nuevo al rol, no tendremos que ir aadiendo este nuevo permiso a los 200 usuarios, ya que el rol
se encarga de propagarlo automticamente.

Autoevaluacin
Rellena los huecos con los conceptos adecuados.
Al conjunto de permisos que se aplican a una conexin de base de datos, se le llama

usuario
llama

rol

. Los permisos dados a usuarios para que realicen ciertas operaciones se les

privilegios

. Si tengo una agrupacin de permisos juntos, tenemos un

Reiniciar

Mostrar las respuestas

30/06/2013 14:47

BD02_Contenidos

27 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Tu puntuacin es 0/3.

30/06/2013 14:47

BD02_Contenidos

28 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

10.- SQL.

Caso prctico
Hasta ahora Ana y Juan
no han tenido que utilizar
mucho el ordenador, ya
es hora de ponerse
manos a la obra. El
diseo
est
casi
finalizado y ahora es
necesario pasarlo a un
lenguaje adecuado. Juan
haba acordado con Ada
que usaran Oracle como SGBD. Para trabajar con esta aplicacin es necesario tener
conocimientos del lenguaje que utiliza, en concreto SQL para Oracle, que tiene ciertas
variaciones con el estndar. Ana est deseando comenzar a introducir los datos necesarios.

SQL (Structured Query Language) es el lenguaje fundamental de los SGBD relacionales. Es uno de los
lenguajes ms utilizados en informtica en todos los tiempos. Es un
lenguaje declarativo y por tanto, lo
ms importante es definir qu se desea hacer, y no cmo hacerlo. De esto ltimo ya se encarga el SGBD.
Hablamos por tanto de un lenguaje normalizado que nos permite trabajar con cualquier tipo de lenguaje
ASP o
PHP) en combinacin con cualquier tipo de base de datos (
Access, SQL Server,
(
MySQL, Oracle, etc.).
El hecho de que sea
estndar no quiere decir que sea idntico para cada base de datos. As es,
determinadas bases de datos implementan funciones especficas que no tienen necesariamente que
funcionar en otras.
Aunque SQL est estandarizado, siempre es recomendable revisar la documentacin del SGBD
con el que estemos trabajando para conocer su sintaxis concreta, ya que algn comando, tipo de
dato, etc., puede no seguir el estndar.
SQL posee dos caractersticas muy apreciadas, potencia y
versatilidad,
que contrastan con su facilidad para el aprendizaje, ya que utiliza un lenguaje
bastante natural. Es por esto que las instrucciones son muy parecidas a
rdenes humanas. Por esta caracterstica se le considera un
Lenguaje de
Cuarta Generacin.
Aunque frecuentemente oigas que SQL es un "lenguaje de consulta", ten en
cuenta que no es exactamente cierto ya que contiene muchas otras
capacidades adems de la de consultar la base de datos:
l a d e f i n i c i n d e l a p ro p i a e s tru c t u r a d e l o s d a to s ,

s u m a ni pu la c i n ,

y l a e s p e c i f i c a c i n d e c o n e x i o n e s s e g u ra s .

Por tanto, el lenguaje estructurado de consultas SQL es un lenguaje que permite operar con los datos
almacenados en las bases de datos relacionales.

Para saber ms
Ya hemos llegado a los lenguajes de quinta generacin, en el siguiente enlace puedes ver sus

30/06/2013 14:47

BD02_Contenidos

29 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

caractersticas ms generales:
Generaciones de lenguajes de programacin
En este enlace encontrars de una manera breve, pero interesante, la historia del SQL.
Historia de SQL.

30/06/2013 14:47

BD02_Contenidos

30 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

10.1.- Elementos del lenguaje. Normas de escritura.


Imagnate que cada programador utilizara sus propias reglas para escribir.
Esto sera un caos. Es muy importante establecer los elementos con los que
vamos a trabajar y unas normas que seguir.
El lenguaje SQL est compuesto por comandos, clusulas, operadores,
funciones y literales . Todos estos elementos se combinan en las
instrucciones y se utilizan para crear, actualizar y manipular bases de datos.
Estos conceptos son bastante amplios por eso ser mejor que vayamos por
partes.
COM ANDOS: Va n a s e r l a s i n s t ru c c i o n e s q u e s e p u e d e n c r e a r e n S QL . S e p u e d e n d i s ti n g u i r e n tr e s g ru p o s q u e v e re m o s c o n m s d e te n i m i e n to a l o l a r g o d e l a s s i g u i e n te s u n i d a d e s :

De d e fi n i c i n d e d a to s (DDL , Da ta De f i n i ti o n L a n g u a g e ) , q u e p e rm i te n c r e a r y d e fi n i r n u e v a s b a s e s d e d a t o s , t a b l a s , c a m p o s , e tc .

De m a n i p u l a c i n d e d a to s ( DM L , Da t a M a n i p u l a ti o n L a n g u a g e ) , q u e p e rm i te n g e n e ra r c o n s u l ta s p a ra o rd e n a r, fi l tra r y e x tra e r d a t o s d e l a b a s e d e d a to s .

De c o n tr o l y s e g u r i d a d d e d a t o s ( DCL , Da t a Co n tr o l L a n g u a g e ) , q u e a d m i n i s t ra n l o s d e r e c h o s y re s t ri c c i o n e s d e l o s u s u a ri o s .

CL US UL AS : L l a m a d a s t a m b i n c o n d i c i o n e s o c ri te r i o s , s o n p a l a b ra s e s p e c i a l e s q u e p e rm i t e n m o d i f i c a r e l f u n c i o n a m i e n t o d e u n c o m a n d o .

OPE RADORE S: P e r m i te n c re a r e x p re s i o n e s c o m p l e j a s . Pu e d e n s e r a ri t m ti c o s (+ , -, *, /, .. .) o l g i c o s (< , > , , < > , An d , Or, e t c . ).

F UNCI ONES : P a ra c o n s e g u i r v a l o re s c o m p l e j o s . P o r e j e m p l o , l a fu n c i n p ro m e d i o p a ra o b t e n e r l a m e d i a d e u n s a l a r i o .

L IT E RAL ES : L e s p o d e m o s l l a m a r ta m b i n c o n s t a n te s y s e r n v a l o r e s c o n c r e t o s , c o m o p o r e j e m p l o u n n m e ro , u n a f e c h a , u n c o n j u n t o d e c a r a c te re s , e t c .

Y tendremos que seguir unas normas sencillas pero primordiales:


To d a s l a s i n s t ru c c i o n e s te rm in a n c o n u n s ig n o d e p u n t o y c o m a .

No s e d i s t i n g u e e n tre m a y s c u l a s y m i n s c u l a s .

Cu a l q u i e r c o m a n d o p u e d e s e r p a rt i d o c o n s a l to s d e l n e a o e s p a c i o s p a ra fa c i l i ta r s u l e c t u ra y c o m p re n s i n .

L o s c o m e n ta ri o s c o m i e n z a n p o r /* y te rm i n a n c o n */ (e x c e p to e n a l g u n o s S GBD).

Juan le ha dicho a Ana que es hora de ponerse a trabajar con la aplicacin. Para aprender mejor le ha
pedido permiso a Juan para instalar Oracle en su ordenador y as ir probando todo sobre la marcha para no
cometer errores. El SQL estndar y el SQL de Oracle son bastante parecidos, pero con algunas diferencias.

Debes conocer
En el siguiente documento encontraras aquellos comandos, clusulas, operadores y funciones
ms generales con las que vamos a trabajar a lo largo del curso:
Elementos del lenguaje.
Para trabajar con Oracle tendrs que instalar el programa adecuado, aqu tienes el enlace donde
puedes bajarte la aplicacin gratuita:
Oracle XE.
En el siguiente documento puedes encontrar los pasos que debes seguir para la instalacin de la
aplicacin en tu ordenador:
Pasos para la instalacin.

Para saber ms

30/06/2013 14:47

BD02_Contenidos

31 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Otro Sistema Gestor de Base de Datos muy utilizado en algunos entornos como el de desarrollo
web es MySQL. Sera interesante que lo conocieras y supieras instalarlo:
Manual MySQL.
Otra pgina recomendable donde puedes aprender MySQL desde cero es la siguiente:
MySQL con Clase.

30/06/2013 14:47

BD02_Contenidos

32 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.- Lenguaje de descripcin de datos (DDL).

Caso prctico
Ana
y
Juan
han
realizado
concienzudamente
el
diseo de las tablas
necesarias para la base
de datos de la aplicacin
en
la
que
estn
trabajando.
Tambin
se
han
decantado por el sistema gestor de bases de datos a utilizar. Emplearn un sistema gestor de
bases de datos relacional. Una vez instalado el sistema gestor, tendrn que programar los
accesos a la base de datos para guardar los datos, recuperarlos, realizar las consultas para los
informes y documentos que sean necesarios, etc.
Ana est creando la primeras tablas de la base de datos. Una de las principales es USUARIO,
aunque tambin tendr que crear la de PARTIDAS y JUEGOS.

La primera fase del trabajo con cualquier base de datos comienza con sentencias DDL,
puesto que antes de poder almacenar y recuperar informacin debemos definir las
estructuras donde almacenar la informacin. Las estructuras bsicas con las que
trabaja SQL son las tablas.
Conocer el Lenguaje de Definicin de Datos (DDL) es imprescindible para crear,
modificar y eliminar objetos de la base de datos (es decir, los metadatos). En el
mercado hay suficientes aplicaciones y asistentes que nos facilitan esta labor, a travs
de una interfaz visual que nos oculta el lenguaje SQL y en los cuales nos limitamos a
poner nombres a los campos, elegir el tipo de datos y activar una serie de propiedades.
Es cierto que estas herramientas nos facilitan el trabajo, pero resulta imprescindible
comprender y conocer en profundidad el lenguaje, ya que nos veremos en muchas
situaciones donde necesitaremos crear un objeto, modificarlo o eliminarlo sin depender
de esas herramientas visuales.
En Oracle, cada usuario de una base de datos tiene un esquema, que tendr el mismo nombre que el
usuario con el que se ha accedido y sirve para almacenar los objetos que posea ese usuario.
De qu objetos estamos hablando? stos podrn ser tablas, vistas, ndices u otros objetos relacionados
con la definicin de la base de datos. Y quin puede crear y manipularlos? En principio el usuario
propietario (el que los cre) y los administradores de la base de datos. Ms adelante veremos que podemos
modificar los privilegios de los objetos para permitir el acceso a otros usuarios.

Las instrucciones DDL generan acciones que no se pueden deshacer, por eso es conveniente
usarlas con precaucin y tener copias de seguridad cuando manipulamos la base de datos.

Para saber ms
Si quieres saber un poco ms sobre el Lenguaje de Definicin de Datos, puedes visitar la

30/06/2013 14:47

BD02_Contenidos

33 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Wikipedia, aqu tienes el enlace:


Lenguaje de Definicin de Datos

30/06/2013 14:47

BD02_Contenidos

34 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.1.- Creacin de bases de datos. Objetos de la base de datos.


Bsicamente, la creacin de la base de datos consiste en crear las
tablas que la componen. Aunque antes de sto tendramos que definir
un espacio de nombres separado para cada conjunto de tablas. Es lo
que antes hemos llamado esquemas o usuarios.
Crear una base de datos implica indicar los archivos y ubicaciones que
se van a utilizar adems de otras indicaciones tcnicas y
administrativas. Es obvio que todo esto slo lo puede realizar si se tiene
privilegio de Administrador.
Con el estndar de SQL la instruccin a usar sera Create Database, pero cada SGBD tiene un
procedimiento para crear las bases de datos. Crearamos una base de datos con el nombre que se indique
a continuacin.

CREATE DATABASE NombredemiBasedeDatos;

Por ejemplo, a la base de datos que estn creando Juan y Ana se le va a llamar RyMjuegos, entonces nos
quedara:

CREATE DATABASE RyMjuegos;

Hemos estado hablando de objetos de la base de datos, ahora veremos a qu nos referimos.
Segn los estndares, una base de datos es un conjunto de objetos que nos servirn para gestionar
los datos. Estos objetos estn contenidos en esquemas y stos a su vez suelen estar asociados a un
usuario. De ah que antes dijramos que cada base de datos tiene un esquema que est asociado a un
usuario.

Para saber ms
Si quieres aprender a crear bases de datos con MySQL, aqu puedes aprender:
MySQL: creacin de bases de datos.

30/06/2013 14:47

BD02_Contenidos

35 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.2.- Creacin de tablas.


Qu necesitamos para poder guardar los datos? Lo primero ser
definir los objetos donde vamos a agrupar esos datos. Los objetos
bsicos con los que trabaja SQL son las tablas, que como ya
sabemos es un conjunto de filas y columnas cuya interseccin se
llama celda. Es ah donde se almacenarn los elementos de
informacin, los datos que queremos recoger.
Antes de crear la tabla es conveniente planificar algunos detalles:
Qu n o m b re l e v a m o s a d a r a la ta b la .

Qu n o m b re l e v a m o s a d a r a c a d a u n a d e l a s c o lu m n a s .

Qu ti p o y ta m a o d e d a t o s v a m o s a a l m a c e n a r e n c a d a c o l u m n a .

Qu re s t ri c c io n e s te n e m o s s o b r e l o s d a to s .

A l g u n a o tr a in fo rm a c i n a d ic i o n a l q u e n e c e s i t e m o s .

Y debemos tener en cuenta otras reglas que se deben cumplir para los nombres de las tablas:
No p o d e m o s te n e r n o m b re s d e t a b l a s d u p l i c a d o s e n u n m i s m o e s q u e m a ( u s u a ri o ) .

De b e n c o m e n z a r p o r u n c a r c te r a l f a b t i c o .

S u l o n g i tu d m x i m a e s d e 3 0 c a ra c t e r e s .

S o l o s e p e rm i t e n l e tr a s d e l a l fa b e to i n g l s , d g i to s o e l s i g n o d e g u i n b a j o .

No p u e d e c o i n c i d i r c o n l a s p a l a b r a s r e s e r v a d a s d e S QL ( p o r e j e m p l o , n o p o d e m o s l l a m a r a u n a ta b l a W HERE) .

No s e d i s t i n g u e e n tre m a y s c u l a s y m i n s c u l a s .

E n e l c a s o d e q u e e l n o m b r e te n g a e s p a c i o s e n b l a n c o o c a ra c t e r e s n a c i o n a l e s (p e r m i ti d o s l o e n a l g u n a s b a s e s d e d a t o s ), e n to n c e s s e s u e l e e n tr e c o m i l l a r c o n c o m i l l a s d o b l e s . En e l e s t n d a r SQL 9 9 (r e s p e ta d o p o r Or a c l e ) s e p u e d e n u t i l i z a r c o m i l l a s d o b l e s a l p o n e r e l n o m b r e d e l a t a b l a a fi n d e h a c e r l a s e n s i b l e a l a s m a y s c u l a s (s e d i fe r e n c i a r e n tre "US UA RI OS "y "Us u a ri o s ").

La sintaxis bsica del comando que permite crear una tabla es la siguiente:

CREATE TABLE [esquema.] nombredeTabla (


columna1 Tipo_Dato,
columna2 Tipo_Dato,
...
columnaN Tipo_Dato );

donde:
c o l u m n a 1 , c o l u m n a 2 , . .., c o l u m n a N s o n l o s n o m b re s d e l a s c o l u m n a q u e c o n te n d r l a t a b l a .

T i p o _ Da t o i n d i c a e l ti p o d e d a to d e c a d a c o l u m n a .

Ana va a crear la primera tabla llamada USUARIOS con un solo campo de tipo VARCHAR:

CREATE TABLE USUARIOS (Nombre VARCHAR(25));

Recuerda que solo podrs crear tablas si posees los permisos necesarios para ello.

Debes conocer
Durante nuestro aprendizaje vamos a tener que crear muchas tablas, para ello necesitaremos
manejar los tipos de datos que utiliza Oracle. En el siguiente enlace tienes una relacin de estos
tipos y su descripcin.
Tipos de datos en Oracle.

30/06/2013 14:47

BD02_Contenidos

36 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Para saber ms
MySQL trabaja con otros tipos de datos. Si quieres conocerlos puedes entrar en este enlace.
Tipos de datos en MySQL.

Autoevaluacin
Seala cuales de las siguientes afirmaciones sobre los nombres de las tablas son ciertas:
Puede haber nombres de tablas duplicados en la misma base de datos.
Seleccin correcta.
Su longitud mxima es de 30 caracteres.
Seleccin incorrecta.
La tabla JUEGOS es la misma que la tabla Juegos.
Seleccin incorrecta.
No puede coincidir con las palabras reservadas de SQL.
Seleccin incorrecta.
Mostrar Informacin

Si incluimos comillas dobles al nombre de la tabla entonces si diferenciamos entre


maysculas y minsculas.

30/06/2013 14:47

BD02_Contenidos

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.3.- Restricciones.
Hay veces que necesitamos que un dato se incluya en una tabla de manera
obligatoria, otras veces necesitaremos definir uno de los campos como llave
primaria o ajena. Todo esto podremos hacerlo cuando definamos la tabla,
adems de otras opciones.
Una restriccin es una condicin que una o varias columnas deben cumplir
obligatoriamente.
Cada restriccin que creemos llevar un nombre, si no se lo ponemos nosotros
lo har Oracle o el SGBD que estemos utilizando. Es conveniente que le
pongamos un nombre que nos ayude a identificarla y que sea nico para cada
esquema (usuario). Es buena idea incluir de algn modo el nombre de la tabla,
los campos involucrados y el tipo de restriccin en el nombre de la misma. La sintaxis en SQL estndar es
la siguiente:

CREATE TABLE NOMBRETABLA (


Columna1 Tipo_Dato
[CONSTRAINT nombredelarestriccin]
[NOT NULL]
[UNIQUE]
[PRIMARY KEY]
[FOREIGN KEY]
[DEFAULT valor]
[REFERENCES nombreTabla [(columna [, columna ])]
[ON DELETE CASCADE]]
[CHECK condicin],
Columna2 Tipo_Dato
[CONSTRAINT nombredelarestriccin]
[NOT NULL]
[UNIQUE]
[PRIMARY KEY]
[FOREIGN KEY]
[DEFAULT valor]
[REFERENCES nombreTabla [(columna [, columna ])]
[ON DELETE CASCADE]]
[CHECK condicin],...);

Veamos un ejemplo:

CREATE TABLE USUARIOS (


Login VARCHAR(15) CONSTRAINT usu_log_PK PRIMARY KEY,
Password VARCHAR (8) NOT NULL,
Fecha_Ingreso DATE DEFAULT SYSDATE);

Otra opcin es definir las columnas de la tabla y despus especificar las restricciones, de este modo podrs
referir varias columnas en una nica restriccin.

37 de 61

30/06/2013 14:47

BD02_Contenidos

38 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

En los siguientes apartados veremos cada una de las restricciones, su significado y su uso.

Recomendacin
Oracle nos aconseja la siguiente regla a la hora de poner nombre a las restricciones:
T r e s l e tr a s p a r a e l n o m b r e d e l a t a b l a .

Ca r c te r d e s u b r a y a d o .

T r e s l e tr a s c o n l a c o l u m n a a f e c ta d a p o r l a r e s tri c c i n .

Ca r c te r d e s u b r a y a d o .

Do s l e tr a s c o n l a a b re v i a tu ra d e l ti p o d e re s t ri c c i n . L a a b r e v i a tu r a p u e d e s e r:

P K = Pri m a ry K e y .

F K = F o re i g n Ke y .

N N = No t Nu l l .

U K = Un i q u e .

C K = Ch e c k (v a l i d a c i n ).

30/06/2013 14:47

BD02_Contenidos

39 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.3.1.- Restriccin NOT NULL.


Con esta restriccin obligaremos a que esa columna tenga un valor o lo que
es lo mismo, prohbe los valores nulos para una columna en una
determinada tabla.
Podremos ponerlo cuando creamos o modificamos el campo aadiendo la
palabra NOT NULL despus de poner el tipo de dato.
Si en la tabla USUARIOS queremos que el campo "F_Nacimiento" sea
obligatorio ponerlo, nos quedara as:

CREATE TABLE USUARIOS (


F_Nacimiento DATE
CONSTRAINT Usu_Fnac_NN NOT NULL);

o bien, de esta otra forma:

CREATE TABLE USUARIOS (


F_Nacimiento DATE NOT NULL);

Debemos tener cuidado con los valores nulos en las operaciones, ya que 1*NULL es igual a
NULL.

Autoevaluacin
Si queremos que un campo no admita valores nulos, al crear la tabla pondremos despus
del nombre del campo y del tipo de datos:
NULL.
VARCHAR.
NOT NULL.

Estupendo, sigue as.

30/06/2013 14:47

BD02_Contenidos

40 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.3.2.- Restriccin UNIQUE.


Habr ocasiones en la que nos interese que no se puedan repetir valores en la
columna, en estos casos utilizaremos la restriccin UNIQUE. Oracle crea un
ndice automticamente cuando se habilita esta restriccin y lo borra al
deshabilitarla.
Tambin para esta restriccin tenemos dos posibles formas de ponerla,
vemoslo con un ejemplo. Supongamos que el campo Login de nuestra tabla va
a ser nico. Lo incluiremos en la tabla que estamos creando. Nos quedara as:

CREATE TABLE USUARIOS (


Login VARCHAR2 (25)
CONSTRAINT Usu_Log_UK UNIQUE);

Veamos otra forma:

CREATE TABLE USUARIOS (


Login VARCHAR2 (25) UNIQUE);

Tambin podemos poner esta restriccin a varios campos a la vez, por ejemplo, si queremos que Login y
correo electrnico sean nicos podemos ponerlo as:

CREATE TABLE USUARIOS (


Login VARCHAR2 (25),
Correo VARCHAR2 (25),
CONSTRAINT Usuario_UK UNIQUE (Login, Correo));

Si te fijas, detrs del tipo de datos de Correo hay una coma, eso es as porque la restriccin es
independiente de ese campo y comn a varios. Por eso despus de UNIQUE hemos puesto entre parntesis
los nombres de los campos a los que afecta la restriccin.

30/06/2013 14:47

BD02_Contenidos

41 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.3.3.- Restriccin PRIMARY KEY.


En el modelo relacional las tablas deben tener una clave primaria. Es evidente
que cuando creamos la tabla tendremos que indicar a quin corresponde.
Slo puede haber una clave primaria por tabla pero sta puede estar formada
por varios campos. Dicha clave podr ser referenciada como clave ajena en
otras tablas.
La clave primaria hace que los campos que forman sean NOT NULL y que los
valores de los campos sean de tipo UNIQUE.
Veamos como quedara la si la clave fuese el campo Login:
S i l a c l a v e l a fo rm a u n n i c o c a m p o :

CREATE TABLE USUARIOS (


Login VARCHAR2 (25) PRIMARY KEY);

O b i e n p o n i e n d o u n n o m b re a l a re s tri c c i n :

CREATE TABLE USUARIOS (


Login VARCHAR2 (25)
CONSTRAINT Usu_log_PK PRIMARY KEY);

S i l a c l a v e e s t fo rm a d a p o r m s d e u n c a m p o , p o r e j e m p l o No m b re , A p e l l i d o s y F e c h a d e Na c i m i e n to :

CREATE TABLE USUARIOS (


Nombre VARCHAR2 (25),
Apellidos VARCHAR2 (30),
F_Nacimiento DATE,
CONSTRAINT Usu_PK PRIMARY KEY(Nombre, Apellidos, F_Nacimiento));

30/06/2013 14:47

BD02_Contenidos

42 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.3.4.- Restriccin REFERENCES. FOREIGN KEY.


Ya vimos que las claves ajenas, secundarias o forneas eran
campos de una tabla que se relacionaban con la clave primaria (o
incluso con la clave candidata) de otra tabla.
Cuando creemos la tabla tendremos que indicar de alguna forma
quin es clave ajena. Lo haremos "haciendo referencia" a la tabla
y los campos de donde procede.
En nuestra tabla vamos a tener una clave ajena procedente de la tabla PARTIDAS que ser su
Cod_Partida, por tanto tendremos que hacer referencia a ste:

CREATE TABLE USUARIOS (


Cod_Partida NUMBER(8)
CONSTRAINT Cod_Part_FK
REFERENCES PARTIDAS(Cod_Partida));

Si el campo al que hace referencia es clave principal en su tabla no es necesario indicar el nombre del
campo:

CREATE TABLE USUARIOS (


Cod_Partida NUMBER(8)
CONSTRAINT Cod_Part_FK
REFERENCES PARTIDAS);

Si la definicin de la clave ajena se pone al final, tendremos que colocar el texto FOREIGN KEY para
especificar a qu campo se est refiriendo.
Vamos a verlo en el caso en que la clave ajena estuviera formada por Cod_Partida y Fecha de la partida de
la tabla PARTIDAS:

CREATE TABLE USUARIOS (


Cod_Partida NUMBER(8),
F_Partida DATE,
CONSTRAINT Partida_Cod_F_FK FOREIGN KEY (Cod_Partida, F_Partida)
REFERENCES PARTIDAS);

Al relacionar campos necesitamos que el dato del campo que es clave ajena en una tabla (que llamaremos
secundaria) previamente haya sido incluido en su tabla de procedencia donde es clave primaria o
candidata. En nuestro ejemplo, cualquier cdigo de partida que incluyamos en la tabla USUARIO, debera
estar previamente en la tabla de la que procede, es decir, en la tabla PARTIDAS. A esto se le llama
Integridad Referencial.
Esto puede crear algunos errores, pues puede ocurrir lo siguiente:
S i h a c e m o s re fe r e n c i a a u n a ta b l a q u e n o e s t c re a d a : Ora c l e b u s c a r l a ta b l a r e f e r e n c i a d a y a l n o e n c o n tr a r l a d a r f a l l o . E s t o s e s o l u c i o n a c re a n d o e n p ri m e r l u g a r l a s t a b l a s q u e n o te n g a n c l a v e s a j e n a s .

30/06/2013 14:47

BD02_Contenidos

43 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

S i q u e re m o s b o rr a r l a s ta b l a s t e n d r e m o s q u e p ro c e d e r a l c o n tra ri o , b o rr a r e m o s l a s t a b l a s q u e te n g a n c l a v e s a j e n a s a n te s .

Tenemos otras soluciones y es aadir tras la clusula REFERENCE:


O N D E L E T E C A S C A D E : te p e r m i ti r b o rr a r to d o s l o s re g i s tr o s c u y a c l a v e a j e n a s e a i g u a l a l a c l a v e d e l r e g i s tro b o r ra d o .

O N DE LE TE S ET

N U L L : c o l o c a r e l v a l o r N U L L e n to d a s l a s c l a v e s a j e n a s re l a c i o n a d a s c o n l a b o r ra d a .

30/06/2013 14:47

BD02_Contenidos

44 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.3.5.- Restriccin DEFAULT Y VALIDACIN.


A veces es muy tedioso insertar siempre lo mismo en un campo. Imagnate
que casi todos los jugadores fuesen de Espaa y tenemos un campo Pas.
No sera cmodo asignarle un valor por defecto? Eso es lo que hace la
restriccin DEFAULT.
En nuestro ejemplo vamos a aadir a la tabla USUARIOS el campo Pas y le
daremos por defecto el valor "Espaa".

CREATE TABLE USUARIOS (


Pais VARCHAR2(20) DEFAULT ' Espaa ' );

En las especificaciones de DEFAULT vamos a poder aadir distintas expresiones: constantes, funciones SQL
y variables.
Si queremos incluir en un campo la fecha actual, independientemente del da en el que estemos, podremos
utilizar la funcin SYSDATE como valor por defecto:

CREATE TABLE USUARIOS (


Fecha_ingreso DATE DEFAULT SYSDATE);

Tambin vamos a necesitar que se compruebe que los valores que se introducen son adecuados para ese
campo. Para ello utilizaremos CHECK.
Esta restriccin comprueba que se cumpla una condicin determinada al rellenar una columna. Dicha
condicin se puede construir con columnas de esa misma tabla.
Si en la tabla USUARIOS tenemos el campo Crdito y ste slo puede estar entre 0 y 2000, lo
especificaramos as:

CREATE TABLE USUARIOS (


Credito NUMBER(4) CHECK (Crdito BETWEEN 0 AND 2000));

Una misma columna puede tener varios CHECK asociados a ella, para ello ponemos varios CONSTRAINT
seguidos y separados por comas.

Debes conocer
Si queremos obtener una descripcin de una tabla, sinonimo, paquete o funcin, podemos
utilizar el comando DESCRIBE.
DESCRIBE.

30/06/2013 14:47

BD02_Contenidos

45 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Autoevaluacin
Relaciona estos trminos utilizados para las restricciones en la creacin de tablas con su
significado o funcin:

Trminos.

Reiniciar

Relacin.

C H EC K

D E FA UL T

P R IM AR Y KE Y

F O RE IG N KE Y

N O T NU LL

U N IQ UE

Funcin.
1 . Co m p r u e b a q u e l o s v a l o r e s q u e s e i n t ro d u c e n s o n l o s a d e c u a d o s p a ra u n c a m p o .

2 . De s i g n a a u n c a m p o c o m o c l a v e a j e n a .

3 . Im p i d e q u e u n c a m p o p u e d a c o n te n e r v a l o re s n u l o s

4 . Im p i d e q u e s e re p i ta n v a l o re s p a ra u n c a m p o .

5 . De s i g n a a u n c a m p o c o m o c l a v e p ri n c i p a l .

6 . In c l u y e u n v a l o r e n u n c a m p o d e fo rm a p r e d e t e r m i n a d a .

Mostrar las respuestas

Tu puntuacin es 0/6.
Estupendo, ya tienes todas las herramientas para crear una tabla.

30/06/2013 14:47

BD02_Contenidos

46 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.4.- Eliminacin de tablas.


Cuando una tabla ya no es til y no la necesitamos es mejor borrarla, de este
modo no ocupar espacio y podremos utilizar su nombre en otra ocasin.
Para eliminar una tabla utilizaremos el comando DROP TABLE.

DROP TABLE NombreTabla [CASCADE CONSTRAINTS];

Esta instruccin borrar la tabla de la base de datos incluido sus datos (filas). Tambin se borrar toda la
informacin que existiera de esa tabla en el Diccionario de Datos.
La opcin CASCADE CONSTRAINTS se puede incluir para los casos en que alguna de las columnas sea clave
ajena en otra tabla secundaria, lo que impedira su borrado. Al colocar esta opcin las restricciones donde
es clave ajena se borrarn antes y a continuacin se eliminar la tabla en cuestin.
Vamos a eliminar la tabla con la que hemos estado trabajando:

DROP TABLE USUARIOS ;

Ten cuidado al utilizar este comando, el borrado de una tabla es irreversible y no hay una peticin de
confirmacin antes de ejecutarse.

Al borrar una tabla:


De s a p a r e c e n t o d o s s u s d a t o s

Cu a l q u i e r v i s t a a s o c i a d a a e s a ta b l a s e g u i r e x i s ti e n d o p e ro y a n o fu n c i o n a r .

Oracle dispone de la orden TRUNCATE TABLE que te permitir eliminar los datos (filas) de una
tabla sin eliminar su estructura.
Y recuerda que solo podrs borrar aquellas tablas sobre las que tengas permiso de borrado.

30/06/2013 14:47

BD02_Contenidos

47 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.5.- Modificacin de tablas (I).


Es posible que despus de crear una tabla nos demos cuenta que se nos ha
olvidado aadir algn campo o restriccin, quizs alguna de las restricciones
que aadimos ya no es necesaria o tal vez queramos cambiar el nombre de
alguno de los campos. Es posible esto? Ahora veremos que s y en casi
todos los casos utilizaremos el comando ALTER TABLE.
S i q u e re m o s c a m b i a r e l n o m b re d e u n a t a b la :

RENAME NombreViejo TO NombreNuevo;

S i q u e re m o s a a d i r c o l u m n a s a u n a ta b l a : la s c o l u m n a s s e a a d i r n a l fi n a l d e l a ta b l a .

ALTER TABLE NombreTabla ADD


( ColumnaNueva1 Tipo_Datos [Propiedades]
[, ColumnaNueva2 Tipo_Datos [Propiedades]
... );

S i q u e re m o s e lim in a r c o l u m n a s d e u n a t a b la : s e e l i m i n a r l a c o l u m n a i n d i c a d a s i n p o d e r d e s h a c e r e s ta a c c i n . A d e m s d e l a d e fi n i c i n d e l a c o l u m n a , s e e l i m i n a r n to d o s l o s d a to s q u e c o n tu v i e r a . No s e p u e d e e l i m i n a r u n a c o l u m n a s i e s l a n i c a q u e f o r m a l a ta b l a , p a ra e l l o t e n d r e m o s q u e b o r ra r l a ta b l a d i r e c ta m e n te .

ALTER TABLE NombreTabla DROP COLUMN (Columna1 [, Columna2, ...]);

S i q u e re m o s m o d if ic a r c o lu m n a s d e u n a ta b l a : p o d e m o s m o d i fi c a r e l t i p o d e d a t o s y l a s p r o p i e d a d e s d e u n a c o l u m n a . To d o s l o s c a m b i o s s o n p o s i b l e s s i l a ta b l a n o c o n t i e n e d a t o s . En g e n e r a l , s i l a ta b l a n o e s t v a c a p o d re m o s a u m e n ta r l a l o n g i t u d d e u n a c o l u m n a , a u m e n ta r o d i s m i n u i r e n n m e ro d e p o s i c i o n e s d e c i m a l e s e n u n t i p o NUM B ER, re d u c i r l a a n c h u r a s i e m p r e q u e l o s d a t o s n o o c u p e n t o d o e l e s p a c i o re s e rv a d o p a ra e l l o s .

ALTER TABLE NombreTabla MODIFY


(Columna1 TipoDatos [propiedades] [, columna2 TipoDatos [propiedades] ...] );

S i q u e re m o s re n o m b ra r c o lu m n a s d e u n a ta b la :

ALTER TABLE NombreTabla RENAME COLUMN NombreAntiguo TO NombreNuevo;

Tenemos la siguiente tabla creada:

CREATE TABLE USUARIOS (


Credito NUMBER(4) CHECK (Crdito BETWEEN 0 AND 2000));

Nos gustara incluir una nueva columna llamada User que ser tipo texto y clave primaria:

ALTER TABLE USUARIO ADD


(User VARCHAR(10) PRIMARY KEY);

30/06/2013 14:47

BD02_Contenidos

48 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Nos damos cuenta que ese campo se llamaba Login y no User, vamos a cambiarlo:

ALTER TABLE USUARIO RENAME COLUMN User TO Login;

Ejercicio resuelto
Tenemos creada la siguiente tabla:

CREATE TABLE EMPLEADOS (


Cod_Cliente VARCHAR(5) PRIMARY KEY,
Nombre VARCHAR(10),
Apellidos VARCHAR(25),
Sueldo NUMBER(2));

Ahora queremos poner una restriccin a sueldo para que tome valores entre 1000 y 1200,
cmo lo haras?

Solucin:
ALTER TABLE
1200));

EMPLEADOS

MODIFY

(Sueldo

NUMBER(2)

CHECK

(Sueldo

BETWEEN

1000

AND

30/06/2013 14:47

BD02_Contenidos

49 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.5.1.- Modificacin de tablas (II).


Utilizando el comando ALTER TABLE, podemos modificar las restricciones o
bien eliminarlas:
S i q u e re m o s b o rra r re s tri c c io n e s :

ALTER TABLA NombreTabla DROP CONSTRAINT NombreRestriccion


S i q u e re m o s m o d if ic a r e l n o m b re d e la s re s t ri c c io n e s :

ALTER TABLE NombreTabla RENAME CONSTRAINT NombreViejo TO NombreNuevo;


S i q u e re m o s a c ti v a r o d e s a c t iv a r re s t ric c io n e s :
A v e c e s e s c o n v e n i e n t e d e s a c t i v a r te m p o r a l m e n te u n a re s t ri c c i n p a r a h a c e r p r u e b a s o p o rq u e n e c e s i te m o s s a l ta rn o s e s a re g l a . P a ra e l l o u s a r e m o s e s t a s i n t a x i s :

ALTER TABLE NombreTabla DISABLE CONSTRAINT NombreRestriccion [CASCADE];


L a o p c i n

CASCADE

d e s a c t i v a l a s r e s tri c c i o n e s q u e d e p e n d a n d e s ta .

P a ra a c t i v a r d e n u e v o l a re s t ri c c i n :

ALTER TABLE NombreTabla ENABLE CONSTRAINT NombreRestriccion [CASCADE];

Debes conocer
Puede ocurrir que no hayamos puesto nombre a las restricciones o bien que lo hiciramos pero
no lo recordemos. Sera interesante que se pudiera consultar en algn lado.
Nombre de todas las restricciones.

30/06/2013 14:47

BD02_Contenidos

50 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

11.6.- Creacin y eliminacin de ndices


Sabemos que crear ndices ayuda a la localizacin ms rpida de la informacin
contenida en las tablas. Ahora aprenderemos a crearlos y eliminarlos:

CREATE INDEX NombreIndice ON NombreTabla (Columna1 [, Columna2 ...]);

No es aconsejable que utilices campos de tablas pequeas o que se actualicen con


mucha frecuencia. Tampoco es conveniente si esos campos no se usan en
consultas de manera frecuente o en expresiones.
El diseo de indices es un tema bastante complejo para los Administradores de
Bases de Datos, ya que una mala eleccin ocasiona ineficiencia y tiempos de espera elevados. Un uso
excesivo de ellos puede dejar a la Base de Datos colgada simplemente con insertar alguna fila.
Para eliminar un ndice es suficiente con poner la instruccin:

DROP INDEX NombreIndice;

La mayora de los ndices se crean de manera implcita cuando ponemos las restricciones
PRIMARY KEY, FOREIGN KEY o UNIQUE.

Ejercicio resuelto
Tenemos creada la siguiente tabla:

CREATE TABLE EMPLEADOS (


Cod_Cliente VARCHAR(5) PRIMARY KEY,
Nombre VARCHAR(10),
Apellidos VARCHAR(25),
Sueldo NUMBER(2));

Crea un ndice con el campo Apellidos, luego elimnalo.

CREATE INDEX miIndice ON EMPLEADOS (Apellidos);


DROP INDEX miIndice;

30/06/2013 14:47

BD02_Contenidos

51 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

12.- Lenguaje de control de datos (DCL).

Caso prctico
Juan cree que ser necesario conocer quines acceden a la
base de datos para poder crearles sus contraseas y darles
los permisos necesarios, de manera que la administracin de
la base quede en manos de quien corresponde, y el sistema
sea seguro. No quiere ni imaginarse que quedara algn cabo
suelto, y cualquier usuario con algo de conocimientos
pudiera acceder sin consentimiento y con los permisos
suficientes, como para manipular los datos a su antojo.

Ya hemos visto que necesitamos una cuenta de usuario para acceder a los
datos de una base de datos. Las claves de acceso se establecen cuando se
crea el usuario y pueden ser modificados por el Administrador o por el
propietario de dicha clave. La Base de Datos almacena
encriptadas las
claves en una tabla del diccionario llamada DBA_USERS.
Cmo se crean los usuarios? La sintaxis es:

CREATE USER NombreUsuario


IDENTIFIED BY ClaveAcceso
[DEFAULT TABLESPACE tablespace ]
[TEMPORARY TABLESPACE tablespace]
[QUOTA int {K | M} ON tablespace]
[QUOTA UNLIMITED ON tablespace]
[PROFILE perfil];

donde:
C R E A T E U S E R : c r e a u n n o m b re d e u s u a ri o q u e s e r i d e n ti fi c a d o p o r e l s i s t e m a .

I D E N T I F I E D B Y : p e rm i t e d a r u n a c l a v e d e a c c e s o a l u s u a ri o c re a d o .

D E F A U L T T A B L E S P A C E : a s i g n a a u n u s u a r i o e l T a b l e s p a c e p o r d e fe c t o p a ra a l m a c e n a l o s o b j e to s q u e c re e . S i n o s e a s i g n a n i n g u n a , s e r S Y S T E M .

T E M P O R A R Y T A B L E S P A C E : e s p e c i fi c a e l n o m b r e d e l Ta b l e s p a c e p a r a t ra b a j o s te m p o r a l e s . Po r d e f e c to s e r S Y S T E M .

Q U O T A : a s i g n a u n e s p a c i o e n M e g a b y t e s o K i l o b y te s e n e l T a b l e s p a c e a s i g n a d o . Si n o s e e s p e c i f i c a e l u s u a ri o n o te n d r e s p a c i o y n o p o d r c re a r o b j e t o s .

P R O F I L E : a s i g n a u n p e rfi l a l u s u a ri o . Si n o s e e s p e c i f i c a s e a s i g n a e l p e rfi l p o r d e f e c to .

Recuerda que para crear usuarios debes tener una cuenta con privilegios de Administrador.
Para ver todos los usuarios creados utilizamos las vistas ALL_USERS y DBA_USERS. Y para
ver en mi sesin los usuarios que existen pondra: DESC SYS.ALL_USERS;

Practiquemos un poco con este comando. Creemos una cuenta de usuario limitado, que no tenga derecho
ni a guardar datos ni a crear objetos, ms tarde le daremos permisos:

CREATE USER UsuarioLimitado IDENTIFIED BY passworddemiusuariolimitado ;

Podemos modificar usuarios mediante el comando ALTER USER, cuya sintaxis es la siguiente:

30/06/2013 14:47

BD02_Contenidos

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

ALTER USER NombreUsuario


IDENTIFIED BY clave_acceso
[DEFAULT TABLESPACE tablespace ]
[TEMPORARY TABLESPACE tablespace]
[QUOTA int {K | M} ON tablespace]
[QUOTA UNLIMITED ON tablespace]
[PROFILE perfil];

Un usuario sin privilegios de Administrador nicamente podr cambiar su clave de acceso.


Para eliminar o borrar un usuario utilizamos el comando DROP USER con la siguiente sintaxis:

DROP USER NombreUsuario [CASCADE];

La opcin CASCADE borra todos los objetos del usuario antes de borrarlo. Sin esta opcin no nos dejara
eliminar al usuario si ste tuviera tablas creadas.

52 de 61

30/06/2013 14:47

BD02_Contenidos

53 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

12.1.- Permisos (I).


Ningn usuario puede llevar a cabo una operacin si antes no se le ha
concedido el permiso para ello. En el apartado anterior hemos creado un
usuario para iniciar sesin, pero si con l intentramos crear una tabla
veramos que no tenemos permisos suficientes para ello.
Para poder acceder a los objetos de una base de datos necesitas tener
privilegios (permisos). stos se pueden agrupar formando roles, lo que
simplificar la administracin. Los roles pueden activarse, desactivarse o
protegerse con una clave. Mediante los roles podemos gestionar los comandos
que pueden utilizar los usuarios. Un permiso se puede asignar a un usuario o
a un rol.
Un privilegio o permiso se especifica con el comando GRANT (conceder).
Si se dan privilegios sobre los objetos:

GRANT {privilegio_objeto [, privilegio_objeto]...|ALL|[PRIVILEGES]}


ON [usuario.]objeto
FROM {usuario1|rol1|PUBLIC} [,{usuario2|rol2|PUBLIC] ...
[WITH GRANT OPTION];

donde:
O N e s p e c i fi c a e l o b j e to s o b re e l q u e s e c o n c e d e n l o s p ri v i l e g i o s .

T O s e a l a a l o s u s u a ri o s o ro l e s a l o s q u e s e c o n c e d e n p r i v i l e g i o s .

A L L c o n c e d e t o d o s l o s p r i v i l e g i o s s o b re e l o b j e to e s p e c i fi c a d o .

[ W I T H G R A N T O P T I O N ] p e rm i t e q u e e l re c e p t o r d e l p r i v i l e g i o s e l o a s i g n e a o t ro s .

P U B L I C h a c e q u e u n p r i v i l e g i o e s t d i s p o n i b l e p a r a to d o s l o s u s u a ri o s .

En el siguiente ejemplo Juan ha accedido a la base de datos y ejecuta los siguientes comandos:
G RA NT I NS ER T T O Us ua ri os

T O A n a ; (p e r m i ti r a An a i n s e rta r d a to s e n l a t a b l a Us u a r i o s )

G RA NT A LL O N P ar ti da s TO

A n a ; (J u a n c o n c e d e t o d o s l o s p r i v i l e g i o s s o b re l a ta b l a P a r ti d a s a A n a )

Los privilegios de sistema son los que dan derecho a ejecutar comandos SQL o acciones sobre objetos de
un tipo especificado. Existen gran cantidad de privilegios distintos.
La sintaxis para dar este tipo de privilegios la tienes aqu:

GRANT {Privilegio1 | rol1 } [, privilegio2 | rol2}, ...]


TO {usuario1 | rol1| PUBLIC} [, usuario2 | rol2 | PUBLIC} ... ]
[WITH ADMIN OPTION];

Donde
T O s e a l a a l o s u s u a ri o s o ro l e s a l o s q u e s e c o n c e d e n p r i v i l e g i o s .

W I T H A D M I N O P T I O N e s u n a o p c i n q u e p e rm i te a l re c e p t o r d e e s o s p r i v i l e g i o s q u e p u e d a c o n c e d e r e s o s m i s m o s p ri v i l e g i o s a o t ro s u s u a ri o s o ro l e s .

P U B L I C h a c e q u e u n p r i v i l e g i o e s t d i s p o n i b l e p a r a to d o s l o s u s u a ri o s .

Veamos algunos ejemplos:

GRANT CONNECT TO Ana;

Concede a Ana el rol de CONNECT con todos los privilegios que ste tiene asociados.

30/06/2013 14:47

BD02_Contenidos

54 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

GRANT DROP USER TO Ana WITH ADMIN OPTION;

Concede a Ana el privilegio de borrar usuarios y que sta puede conceder el mismo privilegio de borrar
usuarios a otros.

Para saber ms
Si quieres conocer ms sobre permisos y objetos sobre los que se conceden privilegios, visita
este enlace:
Gestin de privilegios y recursos.

30/06/2013 14:47

BD02_Contenidos

55 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

12.1.1.- Permisos (II).


Hasta ahora hemos aprendido a conceder permisos o privilegios. Ser
importante aprender a retirarlos:
Con el comando REVOKE se retiran los privilegios:
S o b re o b je to s :

REVOKE {privilegio_objeto [, privilegio_objeto]...|ALL|[PRIVILEGES]}


ON [usuario.]objeto
FROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC] ...;

De l s i s t e m a o ro le s a u s u a rio s :

REVOKE {privilegio_stma | rol} [, {privilegio_stma | rol}]...|ALL|[PRIVILEGES]}


ON [usuario.]objeto
FROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC] ...;

Juan va a quitar el permiso de seleccionar y de actualizar sobre la tabla Usuarios a Ana:

REVOKE SELECT, UPDATE ON Usuarios FROM Ana;

y va a quitarle el permiso de eliminar usuarios:

REVOKE DROP USER FROM Ana;

Autoevaluacin
Asocia cada comando con su uso.

Usuarios y permisos.
Comando

Reiniciar

Relacin

CR EA TE U SE R

DR OP U SE R

GR AN T

RE VO KE

Funcin
1 . Se u ti l i z a p a ra d a r p e r m i s o s a l o s u s u a ri o s o ro l e s .

2 . Se u ti l i z a p a ra e l i m i n a r u s u a ri o s .

3 . Se u ti l i z a p a ra c re a r u s u a r i o s .

4 . Se u ti l i z a p a ra q u i ta r p e r m i s o s .

Mostrar las respuestas

Tu puntuacin es 0/4.
Estupendo, ya conoces los comandos bsicos para la creacin de usuarios y sus permisos.

30/06/2013 14:47

BD02_Contenidos

56 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Anexo I.- Elementos del lenguaje SQL.


El lenguaje SQL est compuesto por comandos, clusulas, operadores, funciones y literales . Todos estos
elementos se combinan en las instrucciones y se utilizan para crear, actualizar y manipular bases de datos.
COM ANDOS:
Co m a n d o s DDL . L e n g u a j e d e De f i n i c i n d e Da to s :

Com andos DDL. Lenguaj e de Defini ci n de Da tos.


Co m a n d o :

De s c ri p c i n :

CREAT E

Se u ti l i z a p a ra c re a r n u e v a s ta b l a s , c a m p o s e n d i c e s .
Se u ti l i z a p a ra e l i m i n a r t a b l a s e n d i c e s .

DROP

Se u ti l i z a p a ra m o d i f i c a r ta b l a s .

AL T ER
Co m a n d o s DM L . L a n g u a j e d e M a n i p u l a c i n d e Da t o s :

Com andos DM L. Le ngua je de M a ni pula ci n de Da tos .


Co m a n d o :

De s c ri p c i n :

S E L E CT

S e u t i l i z a p a r a c o n s u l ta r f i l a s q u e s a ti s f a g a n u n c ri te ri o d e te r m i n a d o .

INS E RT

S e u t i l i z a p a r a c a rg a r d a to s e n u n a n i c a o p e ra c i n .

UP DAT E

S e u t i l i z a p a r a m o d i fi c a r v a l o r e s d e c a m p o s y f i l a s e s p e c fi c o s .

DE L E T E

S e u t i l i z a p a r a e l i m i n a r fi l a s d e u n a ta b l a .

Co m a n d o s DCL . L e n g u a j e d e Co n tr o l d e Da t o s :

Coma ndos DCL. Le nguaje de Control de Da tos.


Co m a n d o :

De s c ri p c i n :

GRANT

P e rm i te d a r p e rm i s o s a u n o o v a ri o s u s u a r i o s o ro l e s p a r a re a l i z a r ta re a s d e t e rm i n a d a s .
P e rm i te e l i m i n a r p e rm i s o s q u e p re v i a m e n t e s e h a n c o n c e d i d o c o n GRA NT .

REV OKE

CL US UL AS :
L l a m a d a s ta m b i n c o n d i c i o n e s o c r i te ri o s , s o n p a l a b ra s e s p e c i a l e s q u e p e r m i te n m o d i fi c a r e l fu n c i o n a m i e n to d e u n c o m a n d o .

Cl usula s
Cl u s u la s :

De s c rip c i n :
Se u ti l i z a p a ra e s p e c i fi c a r l a ta b l a d e l a q u e s e v a n a s e l e c c i o n a r l a s f i l a s .

F ROM

Se u ti l i z a p a ra e s p e c i fi c a r l a s c o n d i c i o n e s q u e d e b e n r e u n i r l a s f i l a s q u e s e v a n a s e l e c c i o n a r.

W HE RE
GROUP BY

Se u ti l i z a p a ra s e p a ra r l a s fi l a s s e l e c c i o n a d a s e n g r u p o s e s p e c f i c o s .

HAV ING

Se u ti l i z a p a ra e x p re s a r l a c o n d i c i n q u e d e b e s a ti s f a c e r c a d a g r u p o .

ORDER BY

Se u ti l i z a p a ra o r d e n a r l a s fi l a s s e l e c c i o n a d a s d e a c u e rd o a u n o rd e n e s p e c fi c o .

OPE RA DORE S:
P e rm i te n c re a r e x p re s i o n e s c o m p l e j a s . Pu e d e n s e r a ri t m ti c o s (+ , - , *, /, ... ) o l g i c o s ( < , > , , < > , An d , Or, ) .
Op e ra d o re s l g i c o s

Operadores lgi cos.


Op e ra d o re s :
AND
OR
NOT

De s c rip c i n :
E v a l a d o s c o n d i c i o n e s y d e v u e l v e u n v a l o r d e v e rd a d s l o s i a m b a s s o n c i e r ta s .
E v a l a d o s c o n d i c i o n e s y d e v u e l v e u n v a l o r d e v e rd a d s i a l g u n a d e l a s d o s e s c i e rt a .
De v u e l v e e l v a l o r c o n t ra ri o d e l a e x p re s i n .

Op e ra d o re s d e c o m p a ra c i n

Operadores de comparac in.


Op e ra d o re s :

De s c rip c i n :

<

M e no r q u e.

>

M a y o r q u e.

< >

Di s ti n t o d e .

< =

M e no r o i gu al .

> =

M a y o r o i gu al .
Igu al .

=
BE T W E EN
L I KE
IN

S e u t i l i z a p a r a e s p e c i fi c a r u n i n te rv a l o d e v a l o re s .
S e u t i l i z a p a r a c o m p a ra r.
S e u t i l i z a p a r a e s p e c i fi c a r f i l a s d e u n a b a s e d e d a to s .

F UNCI ONES :
P a ra c o n s e g u i r v a l o r e s c o m p l e j o s . Po r e j e m p l o , l a fu n c i n p r o m e d i o p a ra o b te n e r l a m e d i a d e u n s a l a ri o . E x i s te n m u c h a s fu n c i o n e s , a q u t i e n e s l a d e s c ri p c i n d e a l g u n a s .
F u n c i o n e s d e a g re g a d o :

Func ione s de a gregado.


F u n c i n :
AVG
COUNT

De s c ri p c i n :
Ca l c u l a e l p ro m e d i o d e l o s v a l o r e s d e u n c a m p o d e t e r m i n a d o .
De v u e l v e e l n m e r o d e f i l a s d e l a s e l e c c i n .

S UM

De v u e l v e l a s u m a d e t o d o s l o s v a l o re s d e u n c a m p o d e te rm i n a d o .

M AX

De v u e l v e e l v a l o r m s a l to d e u n c a m p o d e t e r m i n a d o .

M IN

De v u e l v e e l v a l o r m n i m o d e u n c a m p o d e te rm i n a d o .

L IT E RAL ES :
L e s p o d e m o s l l a m a r ta m b i n c o n s ta n t e s y s e r n v a l o re s c o n c re to s , c o m o p o r e j e m p l o u n n m e r o , u n a fe c h a , u n c o n j u n to d e c a ra c t e re s , e tc .

Lite ra le s
L ite ra le s :
2 3 / 0 3 /9 7
M a ra
5

De s c rip c i n :
L i t e r a l fe c h a .
L i t e r a l c a ra c te r e s .
L it e ra l n m e ro .

30/06/2013 14:47

BD02_Contenidos

57 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Anexo II.- Instalacin de Oracle XE.


A partir de ahora vamos a trabajar con este Sistema Gestor de Base de Datos. Para ello debes ir a la
pgina oficial de Oracle:
Descarga de Oracle
En ella podemos elegir entre dos tipos de descargas segn sea nuestro Sistema Operativo:

La pgina de Oracle solicitar nuestro registro para realizar la descarga, pues tenemos que ser usuarios
registrados para poder bajarlo.
Una vez bajado el archivo, tendremos que ejecutarlo haciendo doble clic sobre l.

Al hacerlo, aparecer una ventana donde podrs ver que est preparndose para la instalacin y tras unos
segundos aparecer la pgina de bienvenida donde pulsaremos en siguiente.
A continuacin se nos muestra otra ventana donde tenemos que aceptar los trminos del acuerdo para
poder continuar con la instalacin:

Tras aceptar y pulsar en siguiente aparecer otra ventana donde podemos elegir donde instalar el
programa, en principio es mejor dejar lo que aparece por defecto.

Pulsamos en siguiente. En la ventana que aparece a continuacin nos solicitar que introduzcamos una
contrasea para los usuarios SYS y SYSTEM (ser la misma para los dos).

30/06/2013 14:47

BD02_Contenidos

58 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Pulsamos en siguiente y aparecer otra ventana donde nos informa entre otras cosa, que la instalacin se
realizar para conectar mediante HTTP en el puerto 8080. Ahora el botn que tenemos que pulsar es
Instalar.

El asistente se pondr a instalar.

Transcurrido un tiempo aparecer otra ventana que indicar que el proceso a terminado y que pulsemos
en Terminar.

Tras estos pasos, Oracle se abrir automticamente para que puedas comenzar a trabajar.
Tambin se habr creado un icono de acceso:

30/06/2013 14:47

BD02_Contenidos

59 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Tambin podrs ver que tienes un acceso en el botn de inicio.

Si accedemos a Ir a Pgina Inicial de Base de Datos, debe aparecer la siguiente ventana donde podremos
acceder a la base de datos que trae por defecto.
Aqu usaremos las claves que pusimos antes.

Ya estamos listos para trabajar.

30/06/2013 14:47

BD02_Contenidos

60 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

Anexo.- Licencias de recursos.


Licencias de recursos utilizados en la Unidad de
Trabajo.
Re c u rs o (1 )

Da t o s d e l re c u rs o (1 )

Re c u rs o (2 )

Da t o s d e l re c u rs o (2 )

Au to r a : J e s s Ga rc a A r m b u l a .

A u to r a : wa rs z a wi a n k a .

L i c e n c i a : Do m i n i o P b l i c o .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /c o m m o n s . wi k i m e d i a . o r g /wi k i / F i l e :Gl o b o _ te rr % C3 % A 1 q u e o . j p g ? u s e l a n g = e s

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 3 0 2 8 3 /ta n g o - fa c e -g l a s s e s -b y - wa rs z a wi a n k a

Au to r a : a l d a n a f l o re n c i a .

A u to r a : Art F a v o r.

L i c e n c i a : CC-b y - s a .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. fl i c k r.c o m /p h o to s / re t ro ro c k e r /3 5 4 7 1 3 5 1 4 9 /

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 4 4 9 7 7 /m o n e y -0 9 - b y -a rtf a v o r

Au to r a : a l c a l i n e / a l c a l i n e .

A u to r a : An o n y m o u s .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. o p e n c l i p a r t.o rg /d e t a i l /6 1 7 8 / s p i r a l _ c a l e n d a r-b y -a l c a l i n e

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 1 0 7 9 5 9 /k c o n tro l - b y -a n o n y m o u s

Au to r a : Na th a n E a d y / l i f ta rn .

A u to r a : rg t a y l o r_ c s c .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. o p e n c l i p a r t.o rg /d e t a i l /2 8 6 3 / h a n d s h a k e -b y -l i f ta rn

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 1 7 6 6 8 /n e t- c o m p u te r-b y - rg ta y l o r_ c s c

Au to r a : F r a n c i s c o M o c h i s .

A u to r a : j h n ri 4 .

L i c e n c i a : Do m i n i o P b l i c o .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /c o m m o n s . wi k i m e d i a . o r g /wi k i / F i l e :Us u a ri o _ a n o n i m o .P NG? u s e l a n g = e s

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 1 1 8 0 1 5 / p a p e r- wi t h - p e n - b y -j h n ri 4

Au to r a : Ar tF a v o r.

A u to r a : b u g m e n o t .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. o p e n c l i p a r t.o rg /d e t a i l /9 4 1 /f e m a l e - c o m p u te r -u s e r- b y -a rtf a v o r

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 9 1 5 4 3 /b l u e -wo r k e r- b y -b u g m e n o t

Au to r a : An o n y m o u s .

A u to r a : u s e r 9 .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. o p e n c l i p a r t.o rg /d e t a i l /1 0 5 7 2 7 / s t o p -s i g n - a n g l e d -0 1 - b y -a n o n y m o u s

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 1 3 1 4 9 1 /m o u s e - p o i n te r-b y - u s e r 9 - 1 3 1 4 9 1

Au to r a : An o n y m o u s .

A u to r a : p g b r a n d o l i n .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. o p e n c l i p a r t.o rg /d e t a i l /1 0 9 2 9 7 / k o ffi c e -b y - a n o n y m o u s

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 1 0 1 3 9 5 /m a th -p ro c e s s o r -b y -p g b ra n d o l i n

Au to r a : wa rs z a wi a n k a .

A u to r a : An o n y m o u s .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. o p e n c l i p a r t.o rg /d e t a i l /3 2 4 0 1 /t a n g o -e d i t-d e l e t e - b y -wa r s z a wi a n k a

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 1 0 8 2 6 5 /v i e w- re m o v e -b y -a n o n y m o u s

Au to r a : An o n y m o u s .

A u to r a : rg 1 0 2 4 .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a ti v e Co m m o n s .

Pr o c e d e n c i a : h tt p :/ /www. o p e n c l i p a r t.o rg /d e t a i l /1 0 8 3 7 3 / s p e l l c h e c k -b y - a n o n y m o u s

P ro c e d e n c i a : h t tp :// www.o p e n c l i p a rt. o r g / d e ta i l / 2 9 9 2 3 /fe l t -ti p - b y -rg 1 0 2 4

30/06/2013 14:47

BD02_Contenidos

61 de 61

http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html

A u to r a : L e a n d ro S c i o l a .

Au to ra : wa rs z a wi a n k a .

L i c e n c i a : Op e n Cl i p Art . Cre a ti v e Co m m o n s .

L i c e n c i a : Op e n Cl i p A rt .Cre a t i v e Co m m o n s .

P ro c e d e n c i a : h tt p : //www. o p e n c l i p a r t.o rg /d e t a i l /1 2 7 1 8 3 /p e s s o a s -- p e o p l e -b y -l e a n d ro s c i o l a @ g m a i l .c o m

Pr o c e d e n c i a : h ttp :/ /www.o p e n c l i p a rt .o rg / d e ta i l /3 5 3 4 7 /ta n g o -s y s te m - u s e r s -b y -wa rs z a wi a n k a

A u to r a : A n t o i n e .

Au to ra : Or a c l e Co rp o r a t i o n .

L i c e n c i a : Op e n Cl i p Art . Cre a ti v e Co m m o n s .

L i c e n c i a : Co p y ri g h t (Ci t a ) .

P ro c e d e n c i a : h tt p : //www. o p e n c l i p a r t.o rg /d e t a i l /3 7 1 3 5 /p e rs o n n a g e _ o rd i n a t e u r-b y - a n to i n e - 3 7 1 3 5

Pr o c e d e n c i a : Ca p tu ra d e p a n ta l l a d e Or a c l e , p r o p i e d a d d e Ora c l e Co r p o ra ti o n .

A u to r a : Ora c l e Co r p o ra ti o n .

Au to ra : Or a c l e Co rp o r a t i o n .

L i c e n c i a : Co p y ri g h t (Ci ta ).

L i c e n c i a : Co p y ri g h t (Ci t a ) .

P ro c e d e n c i a : Ca p tu ra d e p a n t a l l a d e Ora c l e , p ro p i e d a d d e Ora c l e Co rp o r a t i o n .

Pr o c e d e n c i a : Ca p tu ra d e p a n ta l l a d e Or a c l e , p r o p i e d a d d e Ora c l e Co r p o ra ti o n .

A u to r a : Ora c l e Co r p o ra ti o n .

Au to ra : Or a c l e Co rp o r a t i o n .

L i c e n c i a : Co p y ri g h t (Ci ta ).

L i c e n c i a : Co p y ri g h t (Ci t a ) .

P ro c e d e n c i a : Ca p tu ra d e p a n t a l l a d e Ora c l e , p ro p i e d a d d e Ora c l e Co rp o r a t i o n .

Pr o c e d e n c i a : Ca p tu ra d e p a n ta l l a d e Or a c l e , p r o p i e d a d d e Ora c l e Co r p o ra ti o n .

A u to r a : Ora c l e Co r p o ra ti o n .

Au to ra : Or a c l e Co rp o r a t i o n .

L i c e n c i a : Co p y ri g h t (Ci ta ).

L i c e n c i a : Co p y ri g h t (Ci t a ) .

P ro c e d e n c i a : Ca p tu ra d e p a n t a l l a d e Ora c l e , p ro p i e d a d d e Ora c l e Co rp o r a t i o n .

Pr o c e d e n c i a : Ca p tu ra d e p a n ta l l a d e Or a c l e , p r o p i e d a d d e Ora c l e Co r p o ra ti o n .

A u to r a : Ora c l e Co r p o ra ti o n .

Au to ra : Or a c l e Co rp o r a t i o n .

L i c e n c i a : Co p y ri g h t (Ci ta ).

L i c e n c i a : Co p y ri g h t (Ci t a ) .

P ro c e d e n c i a : Ca p tu ra d e p a n t a l l a d e Ora c l e , p ro p i e d a d d e Ora c l e Co rp o r a t i o n .

Pr o c e d e n c i a : Ca p tu ra d e p a n ta l l a d e Or a c l e , p r o p i e d a d d e Ora c l e Co r p o ra ti o n .

A u to r a : Ora c l e Co r p o ra ti o n .

Au to ra : Or a c l e Co rp o r a t i o n .

L i c e n c i a : Co p y ri g h t (Ci ta ).

L i c e n c i a : Co p y ri g h t (Ci t a ) .

P ro c e d e n c i a : Ca p tu ra d e p a n t a l l a d e Ora c l e , p ro p i e d a d d e Ora c l e Co rp o r a t i o n .

Pr o c e d e n c i a : Ca p tu ra d e p a n ta l l a d e Or a c l e , p r o p i e d a d d e Ora c l e Co r p o ra ti o n .

30/06/2013 14:47