BD02_Contenidos

61
Base de datos relacionales. 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 expansión para la empresa. Así que Ada supervisará todo el trabajo de Juan para que no haya ningún problema. El director de una importante empresa se dirigió a BK programación para pedirles que desarrollen un sitio web de juegos online, al que se podrán conectar usuarios para jugar partidas. Se tiene que realizar un diseño de la base de datos que soporte la operativa de este sitio web. Una cuestión vital en la aplicación 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 crédito por parte de los jugadores. Todo deberá guardarse en bases de datos, para su tratamiento y recuperación las veces que haga falta. Como en BK programación 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. Caso práctico BD02_Contenidos http://catedu.es/fpmoodle/file.php/103/BD02/BD02_Web/index.html 1 de 61 30/06/2013 14:47

description

BD02_Contenidos

Transcript of BD02_Contenidos

Base de datos relacionales.

Ada ha asignado unproyecto a Juan quecontará con Ana paratrabajar en él. De estemodo Ana iráaprendiendo a la vez queayuda a Juan en tanimportante tarea.

Se trata de un proyectoimportante y puede suponer muchas ventas, por tanto, una gran expansión para la empresa. Asíque Ada supervisará todo el trabajo de Juan para que no haya ningún problema.

El director de una importante empresa se dirigió a BK programación para pedirles quedesarrollen un sitio web de juegos online, al que se podrán conectar usuarios para jugarpartidas. Se tiene que realizar un diseño de la base de datos que soporte la operativa de estesitio web.

Una cuestión vital en la aplicación 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 lascompras de crédito por parte de los jugadores. Todo deberá guardarse en bases de datos, parasu tratamiento y recuperación las veces que haga falta.

Como en BK programación trabajan sobre todo con Oracle, desde el primer momento Juan, conel visto bueno de Ada, tiene claro que van a tener que utilizar bases de datos relacionales yOracle.

Caso práctico

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

1 de 61 30/06/2013 14:47

1.- Modelo de datos.

Juan y Ana se hanpuesto en marcha coneste nuevo proyecto.Ambos saben que loprimero que tienen quehacer es trabajar con lainformación que les handado. Ya saben las ideasque el cliente tiene,ahora es necesario

pasarlo a un formato con el que poder trabajar. Una de las primeras cosas que deben hacer estrazar un borrador donde plasmar lo que ahora mismo está en sus cabezas y en las anotacionesrecogidas mientras hablaban con el cliente.

Según el DRAE, un modelo es, entre otras definiciones, el esquema teórico,generalmente en forma matemática, de un sistema o de una realidad compleja.Podemos decir que es la representación de cualquier aspecto o tema extraído delmundo real. ¿Qué sería entonces un modelo de datos? Aquél que nos permitedescribir los elementos que intervienen en una realidad o en un problema dado y laforma en que se relacionan dichos elementos entre sí.

En informática, un modelo de datos es un lenguaje utilizado para la descripciónde una base de datos. Con este lenguaje vamos a poder describir las estructurasde los datos (tipos de datos y relaciones entre ellos), las restricciones deintegridad (condiciones que deben cumplir los datos, según las necesidades denuestro modelo basado en la realidad) y las operaciones de manipulación de losdatos (insertado, borrado, modificación de datos).

Es importante distinguir entre modelo de datos y esquema.

Según Dittrich (1994): "La descripción específica de un determinado mini-mundo en términos

de un modelo de datos se denomina esquema (o esquema de datos) del mini-mundo. La

colección de datos que representan la información acerca del mini-mundo constituye la base

de datos"

De Miguel, Piattini y Marcos (1999): "Representación de un determinado mundo real (universo

del discurso) en términos de un modelo de datos".

Para clasificar los modelos debemos pensar en el nivel deabstracción, es decir, en lo alejado que esté del mundo real:

L o s m od e l os d e da to s c o nc 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 re 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 ra n te l a e ta p a d e a n á l i s i s d e u n p ro b l e m a d a d o , y e s t á n o ri e n t a d o s a re 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 re 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 od e l os d e da to s lóg ic os 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 od e l os d e da to s fís ic os , s o n e s tru c t u ra 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 tro 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 logeneral, presenta dos sublenguajes:

L e n gu a j e de De fi n i c i ón d e Da to s o DDL (Da ta De f in iti on L a n gu 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 gu a j e de M a n ip ul a c ió n de Da to s o DM L (Da ta M a n ipu la ti on L a n gu a g e ) , q u e s i rv e n p a ra d e s c r i b i r l a s o p e ra 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 .

Caso práctico

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

2 de 61 30/06/2013 14:47

Modelo de datos conceptuales.

Modelo de datos lógico.

Modelo de datos físicos.

¿Cuáles son los modelos que se centran en las operaciones y se implementan en algúnsistema gestor de base de datos?

Efectivamente, un ejemplo sería el modelo relacional.

Autoevaluación

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

3 de 61 30/06/2013 14:47

2.- Terminología del modelo relacional.

Ana se pregunta cuál será el modelo con el que se sueletrabajar. Actualmente, para la mayoría de las aplicaciones degestión que utilizan bases de datos, el modelo másempleado es el modelo relacional, por su gran versatilidad,potencia y su base matemática.

¿Sabes que el modelo relacional te va a permitir representar la información delmundo real de una manera intuitiva? Así es, pudiendo introducir conceptoscotidianos y fáciles de entender por cualquiera, aunque no sea experto eninformática.

El modelo relacional fue propuesto por Edgar Frank Codd en los laboratorios deIBM en California. Como hemos visto, se trata de un modelo lógico que

establece una estructura sobre los datos, independientemente del modo en queluego los almacenemos. Es como si guardamos nuestra colección de libros,dependiendo del número de habitaciones que tenga en casa, del tamaño y formade nuestras estanterías, podremos disponer nuestros libros de un modo u otro parafacilitarnos el acceso y consulta. Los libros serán los mismos pero puedodisponerlos de distinta forma.

El nombre de modelo relacional viene de la estrecha relación entre el elemento básico de este modelo y elconcepto matemático de relación. Si tenemos dos conjuntos A y B, una relación entre estos dos conjuntossería un subconjunto del producto cartesiano AxB.

El producto cartesiano nos dará la relación de todos los elementos de un conjunto con todos los elementosde los otros conjuntos de ese producto. Al estar trabajando con conjuntos, no puede haber elementosrepetidos.

Aquí puedes encontrar un vídeo donde se explica de manera gráfica las relaciones matemáticasentre conjuntos. Seguro que te resulta interesante refrescar estos conceptos:

Relaciones.

Caso práctico

Para saber más

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

4 de 61 30/06/2013 14:47

Resumen textual alternativo

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

5 de 61 30/06/2013 14:47

Las tuplas deben corresponderse con un elemento del mundo real.

Selección incorrecta.

Podríamos tener dos o más tuplas iguales.

Selección correcta.

Un atributo se define en un dominio de valores.

Selección incorrecta.

2.1.- Relación o tabla. Tuplas. Dominios.

Pero... ¿qué es eso de "relación"? Hemos dicho que el modelo relacional se basa en el conceptomatemático de relación, ya que Codd, que era un experto matemático, utilizó una terminologíaperteneciente a las matemáticas, en concreto a la teoría de conjuntos y a la lógica de predicados.

Aquí tienes unos enlaces sobre teoría de conjuntos y lógica de predicados:

Teoría de conjuntos.

Lógica de predicados.

A partir de ahora, nosotros veremos una relación como una tabla confilas y columnas. Podemos asociar atributos a columna y tuplas a filas.

Atri bu 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 re , 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 f i c a d o d e l a i n fo rm a c i ó n q u e re p re s e n t a . E n l a ta b l a Em pl e a do s , e l a tr i b u t o Su e l do a l m a c e n a rá e l v a l o r e n e u ro s d e l s u e l d o q u e re 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 ra 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 ru t o .

Tup la s : S e re 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 re 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 f i 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 re g i s tro 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 sería lógico que en un atributo Población se guarde "250€".Estaríamos cometiendo un error, para evitar este tipo de situacionesobligaremos a que cada atributo sólo pueda tomar los valorespertenecientes a un conjunto de valores previamente establecidos, es decir, un atributo tiene asociado undominio de valores.

A menudo un dominio se define a través de la declaración de un tipo para el atributo (por ejemplo, diciendoque es un número entero entre 1 y 16), pero también se pueden definir dominios más complejos y precisos.Por ejemplo, para el atributo Sexo de mis usuarios, podemos definir un dominio en el que los valoresposibles sean "M" o "F" (masculino o femenino).

Una característica fundamental de los dominios es que sean atómicos, es decir, que los valores contenidosen los atributos no se pueden separar en valores de dominios más simples.

Un dominio debe tener: Nombre, Definición lógica, Tipo de datos y Formato.

Por ejemplo, si consideramos el Sueldo de un empleado, tendremos:

Nom bre : 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

Ti po d e da to s : n ú m e ro e n te ro .

F orm a to : 9 .9 9 9 € .

¿Cuáles de las siguientes afirmaciones son ciertas sobre las tuplas y los atributos?

Para saber más

Autoevaluación

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

6 de 61 30/06/2013 14:47

El nombre de cada dato que se almacena en la relación se denomina Atributo.

Selección incorrecta.Mostrar InformaciónMostrar InformaciónMostrar InformaciónMostrar Información

No puede haber dos tuplas con todos sus valores iguales.

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

7 de 61 30/06/2013 14:47

2.2.- Grado. Cardinalidad.

Ya hemos visto que una relación es una tabla con filas y columnas.Pero ¿hasta cuántas columnas puede contener? ¿Cuántosatributos podemos guardar en una tabla?

Llamaremos grado al tamaño de una tabla en base a su númerode atributos (columnas). Mientras mayor sea el grado, mayor serásu complejidad para trabajar con ella.

¿Y cuántas tuplas (filas o registros) puede tener?

Llamaremos cardinalidad al número de tuplas o filas de una relación o tabla.

Vamos a verlo con un ejemplo. Relación de grado 3, sobre los dominiosA={Carlos, María}, B={Matemáticas,Lengua}, C={Aprobado, Suspenso}.

Las posibles relaciones que obtenemos al realizar el producto cartesiano AxBxC es el siguiente:

Producto Cartesiano AxBxC.

A={Carlos, María} B={Matemáticas, Lengua} C={Aprobado, Suspenso}CARL OS M AT EM Á TICA S AP ROBA DO

CARL OS M AT EM Á TICA 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 ARÍA M AT EM Á TICA S AP ROBA DO

M ARÍA M AT EM Á TICA S SUSP ENSO

M ARÍA L E NGUA AP ROBA DO

M ARÍA L E NGUA SUSP ENSO

M ARÍA INGL ÉS AP ROBA DO

M ARÍA INGL ÉS SUSP ENSO

Si cogemos un subconjunto de ésta con 5 filas, tendríamos una relación de cardinalidad 5:

Subconjunto del Producto Cartesiano AxBxC concardinalidad 5.

A={Carlos, María} B={Matemáticas, Lengua} C={Aprobado, Suspenso}CARL OS M AT EM Á TICA S AP ROBA DO

CARL OS L E NGUA AP ROBA DO

CARL OS INGL ÉS AP ROBA DO

M ARÍA M AT EM Á TICA S AP ROBA DO

M ARÍA INGL ÉS SUSP ENSO

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

8 de 61 30/06/2013 14:47

2.3.- Sinónimos.

Ana está un poco liada con tantos términos nuevos. ¿Si Juanhabla de tuplas se está refiriendo a registros? Los registroseran las filas de las las tablas, ¿no? Será mejor quehagamos un resumen.

Los términos vistos hasta ahora tienen distintos sinónimos según la nomenclaturautilizada. Trabajaremos con tres:

E n e l m o d e lo re l a c io na l : RE L A CIÓN - T UP L A - ATRIB UT O - GRA DO - CARDI NA L I DA D.

E n ta b la s : TAB L A - F IL A - COL UM NAS - NÚM ERO COL UM NA S - NÚM E RO F IL AS .

E n té rm i no s de re g is tro s : F ICHE ROS - RE GI ST ROS - CAM P OS - NÚM ERO CA M P OS - NÚM E RO REGIS TROS .

Relaciona cada término del modelo relacional con la terminología de Tablas.

Sinónimos.

Terminología del modelo relacional. Relación. Terminología en Tablas.

RE L A CI ÓN 5 1 . COL UM NA S

T UPL A 4 2 . NÚM E RO DE COL UM NA S

AT RI BUTO 1 3 . NÚM E RO DE FI L A S

GRADO 2 4 . F I L A

CA RDINAL IDAD 3 5 . TA BL A

ReiniciarReiniciarReiniciarReiniciar Mostrar las respuestasMostrar las respuestasMostrar las respuestasMostrar las respuestas

Tu puntuación es 0/5.

Debes tener en cuenta que a partir de ahora emplearemos frecuentemente estos términos.

Caso práctico

Autoevaluación

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

9 de 61 30/06/2013 14:47

3.- Relaciones. Características de una relación (tabla).

Juan, tras su análisis y varios días de trabajo, ha obtenidolas relaciones con las que trabajará y los atributos que deseaguardar en la base de datos. Junto con Ana va a repasar quese cumplan todas las propiedades y así asegurarse que elmodelo es el adecuado. También necesitará saber quéinformación podrá consultar el usuario para así crear algunastablas de modo temporal.

¿En un modelo relacional se puede utilizar cualquier relación? ¿Es válida cualquier tabla o se deben cumpliralgunas 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 un s olo v a l or 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 no m b re d is ti nto 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 (f i l a s ) c om pl e ta m e n te i gu 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 po 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 ) no im p orta .

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 do m i ni o .

Caso práctico

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

10 de 61 30/06/2013 14:47

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.

¿Cuál de las siguientes afirmaciones no es cierta en una relación?

Correcto, sí es posible en bases de datos distintas.

Autoevaluación

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

11 de 61 30/06/2013 14:47

Instantáneas.

Vistas.

Base.

3.1.- Tipos de relaciones (tablas).

Juan le está contando a Ana que hay que distinguir lasrelaciones en función del uso que se le vaya a dar. Tal ycomo han hablado con el cliente, sabe que unos jugadoresaccederán a un tipo de tablas como usuarios, y las personasque administran la base de datos lo harán a otras. Es obvioque tenemos que distinguir entre unas y otras.

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

P e rs is te nte 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 ra y s u s e j e m p l a re 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 ta 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 ro 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 ta n tá ne a s : s o n v i s t a s (s e c re 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 f i 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 fre s c a c a d a c i e r to t i e m p o . Es c o m o u n a fo to g ra 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 ra n te u n p e ri o d o d e t i e m p o c o n c re to .

Te m po 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 .

Las relaciones que se crean indicando su estructura y sus ejemplares se denominan:

Correcto, sigue así.

Caso práctico

Autoevaluación

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

12 de 61 30/06/2013 14:47

4.- Tipos de datos.

Juan le ha pedido a Ana que repase cada una de lasrelaciones y en función de los datos que contenga cadaatributo, elegir el tipo de datos más adecuado. Más adelantehabrá que restringir esos valores para que al introducir datosno se produzcan errores. Los tipos de datos ocupan espacioen el disco duro del servidor donde se guarde y esosignifica un gasto para la empresa, así que hay queoptimizar.

Además, Ana todavía recuerda aquella vez que tuvo queentregar una práctica en la facultad sobre base de datos. Guardó el teléfono con un formato denúmero y cuando fue a imprimir un informe... ¡no quiere ni acordarse! Le salieron unos númerosde teléfonos que nada tenían que ver con los datos introducidos.

¿Qué es un DNI? ¿Con qué datos lo representamos? DNI es una información que es susceptible de serguardada. Normalmente el DNI está formado por dígitos y una letra al final. Si tuviéramos que clasificarlodiríamos que es un conjunto de caracteres alfanuméricos. ¿Y si pensamos en Sueldo? Aquí lo tenemos unpoco más claro, evidentemente es un número entero o con decimales.

Hasta ahora hemos visto que vamos a guardar información relacionada en forma de filas y columnas. Lascolumnas son los atributos o información 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 devalores. Pues bien, en términos de sistemas de base de datos, se habla más de tipos de datos que dedominios. Al crear la relación (tabla) decidimos qué conjunto de datos deberá ser almacenado en las filas delos atributos que hemos considerado. Tenemos que asignar un tipo de dato a cada atributo.

Con la asignación de tipos de datos, también 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 (re 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 da to .

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

Veamos cuales son los tipos de datos máscomunes con los que nos encontraremosgeneralmente:

Te x to : a l m a c e n a c a d e n a s d e c a ra c te re s (n ú m e ro s c o n l o s q u e no 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 te m á ti c a s , l e tra s o s í m b o l o s ).

Num é ric o : a l m a c e n a n ú m e ro 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 ha /h ora : a l m a c e n a fe c h a s y h o ra 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 ro / fa l s o ).

Auton um é 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 re 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 t i p o te x t o ) .

M on e da : 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 ro 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 re p re s e n t a n c a n ti d a d e s d e d i n e ro .

Obj e to 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 .

Caso práctico

Para saber más

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

13 de 61 30/06/2013 14:47

Si quieres saber un poco más sobre los tipos de datos puedes ver este enlace de Wikipedia:

Tipo de datos.

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

14 de 61 30/06/2013 14:47

5.- Claves.

Juan está revisando la relación Usuarios. En esta tabla va aguardar los siguientes atributos: Login del jugador que seránuestro usuario, Password o Contraseña, Nombre yApellidos, Dirección, Código Postal, Localidad, Provincia,País, Fecha de nacimiento para comprobar que no es menorde edad, Fecha de ingreso en la web, Correo electrónico,Sexo y por último los Créditos (dinero "ficticio") que tenga.

¿Cómo diferenciamos unos usuarios de otros? ¿Cómo sabemos que noestamos recogiendo la misma información? ¿Cómo vamos a distinguirunas tuplas de otras? Lo haremos mediante los valores de susatributos. Para ello, buscaremos un atributo o un conjunto de atributosque identifiquen de modo único las tuplas (filas) de una relación (tabla).A ese atributo o conjunto de atributos lo llamaremos superclaves.

Hemos visto que una característica de las tablas era que no puedehaber dos tuplas (filas) completamente iguales, con lo que podemosdecir que toda la fila como conjunto sería 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 }

Tendríamos que elegir alguna de las superclaves para diferenciar las tuplas. En el modelo relacionaltrabajamos con tres tipos de claves:

Cl a v e s c a nd id a ta s .

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

Cl a v e s a lte rna tiv a s .

Cl a v e s a je na s .

A continuación veremos cada una de ellas.

En este enlace tienes más información sobre las superclaves:

Superclaves.

Caso práctico

Para saber más

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

15 de 61 30/06/2013 14:47

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

Si puedo elegir entre tantas claves, ¿con cuál me quedo? Tendremos queelegir entre las claves "candidatas" la que mejor se adapte a mis necesidades.¿Y cuáles son éstas? Las claves candidatas serán aquel conjunto de atributosque identifiquen de manera única cada tupla (fila) de la relación (tabla). Esdecir, 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 aunquepuede haber más de una.

Siguiendo con nuestro ejemplo, podríamos considerar los atributos Login oE_mail como claves candidatas, ya que sabemos que el Login debe ser únicopara cada usuario, a E_mail le sucede lo mismo. Pero también cabe laposibilidad de tomar: Nombre, Apellidos y F_nacimiento, las tres juntas como clave candidata.

Las claves candidatas pueden estar formadas por más de un atributo, siempre y cuando éstos identifiquende forma única a la fila. Cuando una clave candidata está formada por más de un atributo, se dice que esuna clave compuesta.

Una clave candidata debe cumplir los siguientes requisitos:

Unic id a d : n o p u e d e h a b e r d o s t u p l a s ( f i l a s ) c o n l o s m i s m o s v a l o re s p a ra e s o s a tri b u to s .

Irre du c i bi 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 quees muy difícil encontrarnos con dos personas que tengan el mismo nombre, apellidos y fecha de nacimientoiguales. Es irreducible puesto que sería posible encontrar dos personas con el mismo nombre y apellidos ocon el mismo nombre y fecha de nacimiento, por lo que son necesarios los tres atributos (campos) paraformar la clave.

Para identificar las claves candidatas de una relación no nos fijaremos en un momento concreto en el quevemos una base de datos. Puede ocurrir que en ese momento no haya duplicados para un atributo oconjunto de atributos, pero esto no garantiza que se puedan producir. El único modo de identificar lasclaves candidatas es conociendo el significado real de los atributos (campos), ya que así podremos saber sies posible que aparezcan duplicados. Es posible desechar claves como candidatas fijándonos en losposibles valores que podemos llegar a tener. Por ejemplo, podríamos pensar que Nombre y Apellidospodrían ser una clave candidata, pero ya sabemos que cabe la posibilidad de que dos personas puedantener el mismo Nombre y Apellidos, así que lo descartamos.

Hasta ahora, seguimos teniendo varias claves con la que identificamos de modo único nuestra relación. Deahí el nombre de candidatas. Hemos de quedarnos con una.

La clave primaria de un relación es aquella clave candidata que se escoge para identificar sus tuplas demodo único. Ya que una relación no tiene tuplas duplicadas, siempre hay una clave candidata y, por lotanto, la relación siempre tiene clave primaria. En el peor caso, la clave primaria estará formada por todoslos atributos de la relación, pero normalmente habrá un pequeño subconjunto de los atributos que haga estafunción. En otros casos, podemos crear un campo único que identifique las tuplas, por ejemplo un código deusuario, que podrían estar constituidos por valores autonuméricos.

Las claves candidatas que no son escogidas como clave primaria son denominadas clavesalternativas.

Si en nuestra tabla Usuarios escogemos Login como clave primaria, el E_mail o {Nombre, Apellidos,F_Nacimiento} serán nuestras claves alternativas.

Rellena los huecos con los conceptos adecuados.

Dentro del conjunto de superclaves, se llaman claves candidatas a aquellas que

identifican unívocamente a cada una de las tuplas . De entre éstas, escogeremos la

Autoevaluación

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

16 de 61 30/06/2013 14:47

clave primaria . Aquellas que no escogemos se denominarán claves

alternativas .

ReiniciarReiniciarReiniciarReiniciar Mostrar las respuestasMostrar las respuestasMostrar las respuestasMostrar las respuestas

Tu puntuación es 0/4.

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

17 de 61 30/06/2013 14:47

Puede "referenciar" a la clave primaria de la misma tabla donde se encuentra.

Selección incorrecta.

Puede "referenciar" a la clave primaria de otra tabla.

Selección incorrecta.

Representa relaciones entre datos.

Selección incorrecta.

Puede contener valores nulos.

Selección incorrecta.

No puede repetirse en la tabla.

Selección correcta.

5.2.- Clave externa, ajena o secundaria.

Hasta ahora no nos hemos planteado cómo se relacionan unas tablascon otras dentro de una base de datos. Si tenemos las tablas Usuariosy Partidas, necesariamente habrá una "relación" entre ellas. Debencompartir algún dato en común que las relacione. Una partida es jugadapor un jugador (Usuarios), por lo que en la tabla Partida deberíamosguardar algún dato del usuario-jugador, pero ¿cuál?

Una clave ajena, también llamada externa o secundaria, es unatributo o conjunto de atributos de una relación cuyos valores coincidencon los valores de la clave primaria de alguna otra relación (o de lamisma). Las claves ajenas representan relaciones entre datos. Dicho

de otra manera, son los datos de atributos de una tabla cuyos valores están relacionados con atributos deotra tabla.

En la tabla Partidas, se recogen datos como Cod_partida, Fecha y Hora de creación, Nombre de lapartida, etc. ¿Qué campo utilizaremos para relacionarla con la tabla Usuarios? Si nos basamos en ladefinición, deberíamos utilizar la clave primaria de la tabla Usuarios. Por tanto, el atributo Login que es laclave principal en su tabla aparecerá en la tabla Partidas como clave ajena, externa o secundaria. El Loginen Partidas hace referencia a cada jugador que juega esa partida. En lugar de guardar todos los datos deese jugador en la misma tabla, lo hacemos en otra y lo "referenciamos" por su clave primaria tomándolacomo ajena.

Es lógico que las claves ajenas no tengan las mismas propiedades y restricciones que tienen como claveprimaria en su tabla, por tanto, sí que pueden repetirse en la tabla. En nuestro ejemplo, un mismo jugadorpuede jugar varias partidas.

Las claves ajenas tienen por objetivo establecer una conexión con la clave primaria que referencian. Por lotanto, los valores de una clave ajena deben estar presentes en la clave primaria correspondiente, o biendeben ser valores nulos. En caso contrario, la clave ajena representaría una referencia o conexiónincorrecta.

No podemos tener una partida de un jugador que previamente no se ha registrado. Pero sí podemos tenerlos datos de una partida y desconocer el jugador de ésta.

¿Cuáles de las siguientes afirmaciones sobre las claves ajenas son correctas?

Mostrar InformaciónMostrar InformaciónMostrar InformaciónMostrar Información

Recuerda que las claves ajenas son aquellos atributos a través de los cuales se relacionanlas tablas.

Autoevaluación

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

18 de 61 30/06/2013 14:47

Interesante artículo sobre las claves ajenas y su importancia:

De las claves ajenas, foráneas, externas...

Si necesitas refrescar o simplemente aprender el concepto de clave primaria, en la wikipediapuedes consultarlo:

Claves primarias.

Para saber más

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

19 de 61 30/06/2013 14:47

6.- Índices. Características.

Juan considera que esbeneficioso crear uníndice para la tablaUsuarios. Podría agilizarlas búsquedas deusuarios registrados. Leha contado a Ana que esconveniente tenerlo,aunque también le haexplicado que tener

muchos índices no es bueno. Tendrán que hacer una buena elección del número de índices quevan a manejar.

Imagina que estás creando un diccionario de términos informáticos.Podrías elegir la opción de escribirlo en una única hoja muy larga (estilopergamino) o bien distribuirlo por hojas. Está claro que lo mejor seríadistribuirlo por páginas. Y si buscamos el término "informática" ennuestro diccionario, podríamos comenzar a buscar en la primera páginay continuar una por una hasta llegar a la palabra correspondiente. Obien crear un índice al principio, de manera que podamos consultar apartir de qué página podemos localizar las palabras que comienzan por"i". Esta última opción parece la más lógica.

Pues bien, en las bases de datos, cada tabla se divide internamente en páginas de datos, y se define elíndice a través 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 través deun campo o campos . Esto permite un acceso mucho más rápido 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 incorporadosautomáticamente a los índices con transparencia total.

Debes saber que los índices son independientes, lógica y físicamente de los datos, es por eso que puedenser creados y eliminados en cualquier momento, sin afectar a las tablas ni a otros índices.

¿Cuándo indexamos? No hay un límite de columnas a indexar, si quisiéramos podríamos crear un índicepara cada columna, pero no sería operativo. Normalmente tiene sentido crear índices para ciertas columnasya que agilizan las operaciones de búsqueda de base de datos grandes. Por ejemplo, si la información denuestra 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 esnecesario actualizar tanto la tabla como el índice.

Si se elimina un índice, el acceso a datos puede ser más lento a partir de ese momento.

Si quieres conocer más sobre los índices y MySQL puedes leer este artículo:

Caso práctico

Para saber más

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

20 de 61 30/06/2013 14:47

Índices

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

21 de 61 30/06/2013 14:47

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

Ana tiene un poco más claro el concepto de relación y lascaracterísticas de los atributos. Sabe que éstos se definenen un dominio. Pero ¿qué ocurre si no conozco algún valorde un dato? ¿Si en la tabla de usuarios estoy pidiendo quese guarde el sexo y el jugador no quiere decirlo? ¿Quépuede ocurrir? Si se permite que ese dato no sea obligatoriolo que me quedaría sería un dato vacío de información.

Vamos a ver que eso es posible y que ese valor tiene unadenominación propia.

¿Qué sucede si al guardar los datos de los Usuarios hay algún dato que notengo o no necesito guardarlo porque no corresponde?

Independientemente del dominio al que pertenezca un campo, éste puedetomar un valor especial denominado NULO (NULL en inglés) quedesignará la ausencia de dato.

Cuando por cualquier motivo se desconoce el valor de un campo, porejemplo, desconocemos el teléfono del usuario, o bien ese campo carecede sentido (siguiendo con el mismo ejemplo, puede que el usuario no tengateléfono), 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 conninguna otra tupla o fila. Este valor NULO es común 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 carácter como otro cualquiera. Por tanto, siintroducimos el carácter "espacio en blanco" estaríamos introduciendo un valor que pertenecería al dominiotexto y sería distinto al concepto "ausencia de valor" que sería no incluir nada (nulo).

Este valor se va a utilizar con frecuencia en las bases de datos y es imprescindible saber cómo actúacuando se emplean operaciones lógicas sobre ese valor. En la lógica booleana tenemos los valoresVERDADERO 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 lógica con este valor. Veamos los operadores lógicos más comunes y susresultados utilizando el valor nulo:

V ERDA DE RO Y (AND) NUL O d a ría c o m o re s u l t a d o NUL O.

FAL S O Y (AND) NUL O d a ría c o m o re s u l t a d o FAL SO.

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

FAL S O O NUL O d a rí a c o m o re s u l ta d o NUL O.

NO (NOT) NUL O d a rí a c o m o re 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 devuelveVERDADERO si el valor con el que se compara es NULO.

Caso práctico

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

22 de 61 30/06/2013 14:47

Designa ausencia de dato.

Selección incorrecta.

Es lo mismo que espacio en blanco.

Selección correcta.

Es lo mismo que cero.

Selección correcta.

El uso del valor nulo es un tema que da mucho que hablar, aquí puedes leer sobre ello:

Valores nulos

¿Cuáles de las siguientes afirmaciones sobre el valor nulo son ciertas?

Mostrar InformaciónMostrar InformaciónMostrar InformaciónMostrar Información

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

Para saber más

Autoevaluación

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

23 de 61 30/06/2013 14:47

Una tabla.

Selección incorrecta.

Varias tablas.

Selección incorrecta.

Otras vistas de la misma base de datos.

Selección incorrecta.

Otras vistas de otras bases de datos.

Selección incorrecta.

8.- Vistas.

Ana lleva un buen rato pensando cómo hacer si necesitaraconsultar datos de dos tablas distintas, por ejemplo, seríainteresante obtener los nombres de los usuarios que esténjugando una determinada partida. O quizás consultar otrosdatos por el estilo. ¿Cómo lo hace si ya están definidas lastablas del modelo? ¿Cómo crear esas tablas? Juan le va aexplicar que esa información la puede obtener a través delas vistas.

Cuando vimos los distintos tipos de relaciones, aprendimos que, entre otros,estaban las vistas. Ahora ya tenemos más conocimientos para comprender mejoreste concepto.

Una vista es una tabla "virtual" cuyas filas y columnas se obtienen a partir de una ode varias tablas que constituyen nuestro modelo. Lo que se almacena no es latabla en sí, sino su definición, por eso decimos que es "virtual". Una vista actúacomo 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 deotras vistas de la base de datos actual u otras bases de datos.

No existe ninguna restricción a la hora de consultar vistas y muy pocasrestricciones a la hora de modificar los datos de éstas.

Podemos dar dos razones por las que queramos crear vistas:

S e g urida d , n o s p u e d e i n t e re 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 rm a c i ó n q u e h a y e n u n a ta b l a , p e ro n o a to d a l a t a b l a .

Com od id a d , c o m o v e re m o s a l p a s a r n u e s tra s ta b l a s /re 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 física de los datos, son consultas a los datos que hay en las tablas, por loque si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos latabla estos cambios serán visibles desde la vista.

Aunque no siempre podremos actualizar los datos de una vista, dependerá de la complejidad de la mismay 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í.

Una vista puede proceder de:

Mostrar InformaciónMostrar InformaciónMostrar InformaciónMostrar Información

Caso práctico

Autoevaluación

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

24 de 61 30/06/2013 14:47

Recuerda además que una vista es una consulta y lo que se guarda es su definición.

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

25 de 61 30/06/2013 14:47

9.- Usuarios. Roles. Privilegios

Juan debe consultar al cliente qué usuarios van a acceder ala base de datos y qué privilegios se les va a otorgar. Estaparte es primordial si queremos salvaguardar el contenido dela base de datos. ¿Qué ocurriría si cualquiera pudiera ver lainformación personal de todos los usuarios registrados?Estaríamos cometiendo un fallo de seguridad además deincumplir la ley de protección de datos.

A la hora de conectarnos a la base de datos es necesario que utilicemos unmodo de acceso, de manera que queden descritos los permisos de quedispondremos durante nuestra conexión. En función del nombre de usuariotendremos unos permisos u otros.

Un usuario es un conjunto de permisos que se aplican a una conexión debase de datos. Tiene además 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 Ora c l e .

Pero no todos los usuarios deberían poder hacer lo mismo cuando acceden ala base de datos. Por ejemplo, un administrador debería tener másprivilegios que un usuario que quiere realizar una simple consulta.

¿Qué es un privilegio? No es más 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 rm i s o d e s i s t e m a c o rre s p o n d i e n t e .

S ob re ob je to : n e c e s i ta rá e l p e rm 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 sería interesante poder agrupar esos permisos para darlos juntos? Para eso tenemos el rol.

Un rol de base de datos no es más que una agrupación de permisos de sistema y de objeto.

Podemos tener a un grupo determinado de usuarios que tengan permiso para consultar los datos de unatabla concreta y no tener permiso para actualizarlos. Luego un rol permite asignar un grupo de permisos aun usuario. De este modo, si asignamos un rol con 5 permisos a 200 usuarios y luego queremos añadir unpermiso nuevo al rol, no tendremos que ir añadiendo este nuevo permiso a los 200 usuarios, ya que el rolse encarga de propagarlo automáticamente.

Rellena los huecos con los conceptos adecuados.

Al conjunto de permisos que se aplican a una conexión de base de datos, se le llama

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

llama privilegios . Si tengo una agrupación de permisos juntos, tenemos un

rol .

ReiniciarReiniciarReiniciarReiniciar Mostrar las respuestasMostrar las respuestasMostrar las respuestasMostrar las respuestas

Caso práctico

Autoevaluación

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

26 de 61 30/06/2013 14:47

Tu puntuación es 0/3.

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

27 de 61 30/06/2013 14:47

10.- SQL.

Hasta ahora Ana y Juanno han tenido que utilizarmucho el ordenador, yaes hora de ponersemanos a la obra. Eldiseño está casifinalizado y ahora esnecesario pasarlo a unlenguaje adecuado. Juanhabía acordado con Ada

que usarían Oracle como SGBD. Para trabajar con esta aplicación es necesario tenerconocimientos del lenguaje que utiliza, en concreto SQL para Oracle, que tiene ciertasvariaciones con el estándar. Ana está deseando comenzar a introducir los datos necesarios.

SQL (Structured Query Language) es el lenguaje fundamental de los SGBD relacionales. Es uno de loslenguajes más utilizados en informática en todos los tiempos. Es un lenguaje declarativo y por tanto, lomás importante es definir qué se desea hacer, y no cómo 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 combinación con cualquier tipo de base de datos ( Access, SQL Server,

MySQL, Oracle, etc.).

El hecho de que sea estándar no quiere decir que sea idéntico para cada base de datos. Así es,determinadas bases de datos implementan funciones específicas que no tienen necesariamente quefuncionar en otras.

Aunque SQL está estandarizado, siempre es recomendable revisar la documentación del SGBDcon el que estemos trabajando para conocer su sintaxis concreta, ya que algún comando, tipo dedato, etc., puede no seguir el estándar.

SQL posee dos características muy apreciadas, potencia y versatilidad,que contrastan con su facilidad para el aprendizaje, ya que utiliza un lenguajebastante natural. Es por esto que las instrucciones son muy parecidas aórdenes humanas. Por esta característica se le considera un Lenguaje deCuarta Generación.

Aunque frecuentemente oigas que SQL es un "lenguaje de consulta", ten encuenta que no es exactamente cierto ya que contiene muchas otrascapacidades además 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 ra d e l o s d a to s ,

s u m a n i p u l a 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 datosalmacenados en las bases de datos relacionales.

Ya hemos llegado a los lenguajes de quinta generación, en el siguiente enlace puedes ver sus

Caso práctico

Para saber más

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

28 de 61 30/06/2013 14:47

características más generales:

Generaciones de lenguajes de programación

En este enlace encontrarás de una manera breve, pero interesante, la historia del SQL.

Historia de SQL.

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

29 de 61 30/06/2013 14:47

10.1.- Elementos del lenguaje. Normas de escritura.

Imagínate que cada programador utilizara sus propias reglas para escribir.Esto sería un caos. Es muy importante establecer los elementos con los quevamos a trabajar y unas normas que seguir.

El lenguaje SQL está compuesto por comandos, cláusulas, operadores,funciones y literales . Todos estos elementos se combinan en lasinstrucciones y se utilizan para crear, actualizar y manipular bases de datos.Estos conceptos son bastante amplios por eso será mejor que vayamos porpartes.

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 re 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 tre 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 rg 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 t i o n L a n g u a g e ) , q u e p e rm i te n c re 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, f i 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 tro l y s e g u r i d a d d e d a t o s (DCL , Da t a Co n tro 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 re 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 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, 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 ITE 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 re s c o n c re 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 ra 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 ina n c o n un s ig no d e pu nto 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 aplicación. Para aprender mejor le hapedido permiso a Juan para instalar Oracle en su ordenador y así ir probando todo sobre la marcha para nocometer errores. El SQL estándar y el SQL de Oracle son bastante parecidos, pero con algunas diferencias.

En el siguiente documento encontraras aquellos comandos, cláusulas, operadores y funcionesmás generales con las que vamos a trabajar a lo largo del curso:

Elementos del lenguaje.

Para trabajar con Oracle tendrás que instalar el programa adecuado, aquí tienes el enlace dondepuedes bajarte la aplicación gratuita:

Oracle XE.

En el siguiente documento puedes encontrar los pasos que debes seguir para la instalación de laaplicación en tu ordenador:

Pasos para la instalación.

Debes conocer

Para saber más

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

30 de 61 30/06/2013 14:47

Otro Sistema Gestor de Base de Datos muy utilizado en algunos entornos como el de desarrolloweb es MySQL. Sería interesante que lo conocieras y supieras instalarlo:

Manual MySQL.

Otra página recomendable donde puedes aprender MySQL desde cero es la siguiente:

MySQL con Clase.

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

31 de 61 30/06/2013 14:47

11.- Lenguaje de descripción de datos (DDL).

Ana y Juan hanrealizadoconcienzudamente eldiseño de las tablasnecesarias para la basede datos de la aplicaciónen la que estántrabajando.

También se handecantado por el sistema gestor de bases de datos a utilizar. Emplearán un sistema gestor debases de datos relacional. Una vez instalado el sistema gestor, tendrán que programar losaccesos a la base de datos para guardar los datos, recuperarlos, realizar las consultas para losinformes y documentos que sean necesarios, etc.

Ana está creando la primeras tablas de la base de datos. Una de las principales es USUARIO,aunque también 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 información debemos definir lasestructuras donde almacenar la información. Las estructuras básicas con las quetrabaja SQL son las tablas.

Conocer el Lenguaje de Definición de Datos (DDL) es imprescindible para crear,modificar y eliminar objetos de la base de datos (es decir, los metadatos). En elmercado hay suficientes aplicaciones y asistentes que nos facilitan esta labor, a travésde una interfaz visual que nos oculta el lenguaje SQL y en los cuales nos limitamos aponer 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 imprescindiblecomprender y conocer en profundidad el lenguaje, ya que nos veremos en muchassituaciones donde necesitaremos crear un objeto, modificarlo o eliminarlo sin dependerde esas herramientas visuales.

En Oracle, cada usuario de una base de datos tiene un esquema, que tendrá el mismo nombre que elusuario con el que se ha accedido y sirve para almacenar los objetos que posea ese usuario.

¿De qué objetos estamos hablando? Éstos podrán ser tablas, vistas, índices u otros objetos relacionadoscon la definición de la base de datos. ¿Y quién puede crear y manipularlos? En principio el usuariopropietario (el que los creó) y los administradores de la base de datos. Más adelante veremos que podemosmodificar 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 convenienteusarlas con precaución y tener copias de seguridad cuando manipulamos la base de datos.

Si quieres saber un poco más sobre el Lenguaje de Definición de Datos, puedes visitar la

Caso práctico

Para saber más

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

32 de 61 30/06/2013 14:47

Wikipedia, aquí tienes el enlace:

Lenguaje de Definición de Datos

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

33 de 61 30/06/2013 14:47

11.1.- Creación de bases de datos. Objetos de la base de datos.

Básicamente, la creación de la base de datos consiste en crear lastablas que la componen. Aunque antes de ésto tendríamos que definirun espacio de nombres separado para cada conjunto de tablas. Es loque antes hemos llamado esquemas o usuarios.

Crear una base de datos implica indicar los archivos y ubicaciones quese van a utilizar además de otras indicaciones técnicas yadministrativas. Es obvio que todo esto sólo lo puede realizar si se tieneprivilegio de Administrador.

Con el estándar de SQL la instrucción a usar sería Create Database, pero cada SGBD tiene unprocedimiento para crear las bases de datos. Crearíamos una base de datos con el nombre que se indiquea continuación.

CREATE DATABASE NombredemiBasedeDatos;

Por ejemplo, a la base de datos que están creando Juan y Ana se le va a llamar RyMjuegos, entonces nosquedaría:

CREATE DATABASE RyMjuegos;

Hemos estado hablando de objetos de la base de datos, ahora veremos a qué nos referimos.

Según los estándares, una base de datos es un conjunto de objetos que nos servirán para gestionarlos datos. Estos objetos están contenidos en esquemas y éstos a su vez suelen estar asociados a unusuario. De ahí que antes dijéramos que cada base de datos tiene un esquema que está asociado a unusuario.

Si quieres aprender a crear bases de datos con MySQL, aquí puedes aprender:

MySQL: creación de bases de datos.

Para saber más

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

34 de 61 30/06/2013 14:47

11.2.- Creación de tablas.

¿Qué necesitamos para poder guardar los datos? Lo primero serádefinir los objetos donde vamos a agrupar esos datos. Los objetosbásicos con los que trabaja SQL son las tablas, que como yasabemos es un conjunto de filas y columnas cuya intersección sellama celda. Es ahí donde se almacenarán los elementos deinformación, los datos que queremos recoger.

Antes de crear la tabla es conveniente planificar algunos detalles:

Qué n om bre l e v a m o s a d a r a la ta b la .

Qué n om bre 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 po y ta m a ñ o de d a tos 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 tri c c io ne s te n e m o s s o b re l o s d a to s .

A l g u n a o tra in form a c ió n a d ic i on 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 re s .

S o l o s e p e rm i t e n l e tra 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 ra s re s e rv 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 re 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 re s n a c i o n a l e s (p e rm 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 tre 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 (re s p e ta d o p o r Ora 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 re d e l a t a b l a a f i 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 re n c i a rá e n tre "US UA RI OS "y "Us u a ri o s ").

La sintaxis básica 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 t i 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 podrás crear tablas si posees los permisos necesarios para ello.

Durante nuestro aprendizaje vamos a tener que crear muchas tablas, para ello necesitaremosmanejar los tipos de datos que utiliza Oracle. En el siguiente enlace tienes una relación de estostipos y su descripción.

Tipos de datos en Oracle.

Debes conocer

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

35 de 61 30/06/2013 14:47

Puede haber nombres de tablas duplicados en la misma base de datos.

Selección correcta.

Su longitud máxima es de 30 caracteres.

Selección incorrecta.

La tabla JUEGOS es la misma que la tabla Juegos.

Selección incorrecta.

No puede coincidir con las palabras reservadas de SQL.

Selección incorrecta.

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

Tipos de datos en MySQL.

Señala cuales de las siguientes afirmaciones sobre los nombres de las tablas son ciertas:

Mostrar InformaciónMostrar InformaciónMostrar InformaciónMostrar Información

Si incluimos comillas dobles al nombre de la tabla entonces si diferenciamos entremayúsculas y minúsculas.

Para saber más

Autoevaluación

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

36 de 61 30/06/2013 14:47

11.3.- Restricciones.

Hay veces que necesitamos que un dato se incluya en una tabla de maneraobligatoria, otras veces necesitaremos definir uno de los campos como llaveprimaria o ajena. Todo esto podremos hacerlo cuando definamos la tabla,además de otras opciones.

Una restricción es una condición que una o varias columnas deben cumplirobligatoriamente.

Cada restricción que creemos llevará un nombre, si no se lo ponemos nosotroslo hará Oracle o el SGBD que estemos utilizando. Es conveniente que lepongamos un nombre que nos ayude a identificarla y que sea único para cadaesquema (usuario). Es buena idea incluir de algún modo el nombre de la tabla,los campos involucrados y el tipo de restricción en el nombre de la misma. La sintaxis en SQL estándar esla siguiente:

CREATE TABLE NOMBRETABLA (

Columna1 Tipo_Dato

[CONSTRAINT nombredelarestricción]

[NOT NULL]

[UNIQUE]

[PRIMARY KEY]

[FOREIGN KEY]

[DEFAULT valor]

[REFERENCES nombreTabla [(columna [, columna ])]

[ON DELETE CASCADE]]

[CHECK condición],

Columna2 Tipo_Dato

[CONSTRAINT nombredelarestricción]

[NOT NULL]

[UNIQUE]

[PRIMARY KEY]

[FOREIGN KEY]

[DEFAULT valor]

[REFERENCES nombreTabla [(columna [, columna ])]

[ON DELETE CASCADE]]

[CHECK condición],...);

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 opción es definir las columnas de la tabla y después especificar las restricciones, de este modo podrásreferir varias columnas en una única restricción.

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

37 de 61 30/06/2013 14:47

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

Oracle nos aconseja la siguiente regla a la hora de poner nombre a las restricciones:

Tre s l e tra s p a ra e l n o m b re d e l a t a b l a .

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

Tre s l e tra 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 re s tri c c i ó n .

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

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

P K = Pri m a ry K e y .

F K = Fo 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 ).

Recomendación

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

38 de 61 30/06/2013 14:47

NULL.

VARCHAR.

NOT NULL.

11.3.1.- Restricción NOT NULL.

Con esta restricción obligaremos a que esa columna tenga un valor o lo quees lo mismo, prohíbe los valores nulos para una columna en unadeterminada tabla.

Podremos ponerlo cuando creamos o modificamos el campo añadiendo lapalabra NOT NULL después de poner el tipo de dato.

Si en la tabla USUARIOS queremos que el campo "F_Nacimiento" seaobligatorio ponerlo, nos quedaría 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 aNULL.

Si queremos que un campo no admita valores nulos, al crear la tabla pondremos despuésdel nombre del campo y del tipo de datos:

Estupendo, sigue así.

Autoevaluación

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

39 de 61 30/06/2013 14:47

11.3.2.- Restricción UNIQUE.

Habrá ocasiones en la que nos interese que no se puedan repetir valores en lacolumna, en estos casos utilizaremos la restricción UNIQUE. Oracle crea uníndice automáticamente cuando se habilita esta restricción y lo borra aldeshabilitarla.

También para esta restricción tenemos dos posibles formas de ponerla,veámoslo con un ejemplo. Supongamos que el campo Login de nuestra tabla vaa ser único. Lo incluiremos en la tabla que estamos creando. Nos quedaría así:

CREATE TABLE USUARIOS (

Login VARCHAR2 (25)

CONSTRAINT Usu_Log_UK UNIQUE);

Veamos otra forma:

CREATE TABLE USUARIOS (

Login VARCHAR2 (25) UNIQUE);

También podemos poner esta restricción a varios campos a la vez, por ejemplo, si queremos que Login ycorreo electrónico sean únicos podemos ponerlo así:

CREATE TABLE USUARIOS (

Login VARCHAR2 (25),

Correo VARCHAR2 (25),

CONSTRAINT Usuario_UK UNIQUE (Login, Correo));

Si te fijas, detrás del tipo de datos de Correo hay una coma, eso es así porque la restricción esindependiente de ese campo y común a varios. Por eso después de UNIQUE hemos puesto entre paréntesislos nombres de los campos a los que afecta la restricción.

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

40 de 61 30/06/2013 14:47

11.3.3.- Restricción PRIMARY KEY.

En el modelo relacional las tablas deben tener una clave primaria. Es evidenteque cuando creamos la tabla tendremos que indicar a quién corresponde.

Sólo puede haber una clave primaria por tabla pero ésta puede estar formadapor varios campos. Dicha clave podrá ser referenciada como clave ajena enotras tablas.

La clave primaria hace que los campos que forman sean NOT NULL y que losvalores de los campos sean de tipo UNIQUE.

Veamos como quedaría 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 Fe 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));

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

41 de 61 30/06/2013 14:47

11.3.4.- Restricción REFERENCES. FOREIGN KEY.

Ya vimos que las claves ajenas, secundarias o foráneas erancampos de una tabla que se relacionaban con la clave primaria (oincluso con la clave candidata) de otra tabla.

Cuando creemos la tabla tendremos que indicar de alguna formaquién es clave ajena. Lo haremos "haciendo referencia" a la tablay los campos de donde procede.

En nuestra tabla vamos a tener una clave ajena procedente de la tabla PARTIDAS que será suCod_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 delcampo:

CREATE TABLE USUARIOS (

Cod_Partida NUMBER(8)

CONSTRAINT Cod_Part_FK

REFERENCES PARTIDAS);

Si la definición de la clave ajena se pone al final, tendremos que colocar el texto FOREIGN KEY paraespecificar 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 dela 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 llamaremossecundaria) previamente haya sido incluido en su tabla de procedencia donde es clave primaria ocandidata. En nuestro ejemplo, cualquier código de partida que incluyamos en la tabla USUARIO, deberíaestar previamente en la tabla de la que procede, es decir, en la tabla PARTIDAS. A esto se le llamaIntegridad Referencial.

Esto puede crear algunos errores, pues puede ocurrir lo siguiente:

S i h a c e m o s re fe re 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 re f e re n c i a d a y a l n o e n c o n tra 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 .

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

42 de 61 30/06/2013 14:47

S i q u e re m o s b o rra r l a s ta b l a s t e n d re m o s q u e p ro c e d e r a l c o n tra ri o , b o rra re 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 añadir tras la cláusula REFERENCE:

O N DE LE TE C AS C AD E : te p e rm i ti rá b o rra r to d o s l o s re g i s tro 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 re g i s tro b o r ra d o .

O N DE LE TE S ET NU LL : c o l o c a rá e l v a l o r NU 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 .

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

43 de 61 30/06/2013 14:47

11.3.5.- Restricción DEFAULT Y VALIDACIÓN.

A veces es muy tedioso insertar siempre lo mismo en un campo. Imagínateque casi todos los jugadores fuesen de España y tenemos un campo País.¿No sería cómodo asignarle un valor por defecto? Eso es lo que hace larestricción DEFAULT.

En nuestro ejemplo vamos a añadir a la tabla USUARIOS el campo País y ledaremos por defecto el valor "España".

CREATE TABLE USUARIOS (

Pais VARCHAR2(20) DEFAULT ' España ' );

En las especificaciones de DEFAULT vamos a poder añadir distintas expresiones: constantes, funciones SQLy variables.

Si queremos incluir en un campo la fecha actual, independientemente del día en el que estemos, podremosutilizar la función SYSDATE como valor por defecto:

CREATE TABLE USUARIOS (

Fecha_ingreso DATE DEFAULT SYSDATE);

También vamos a necesitar que se compruebe que los valores que se introducen son adecuados para esecampo. Para ello utilizaremos CHECK.

Esta restricción comprueba que se cumpla una condición determinada al rellenar una columna. Dichacondición se puede construir con columnas de esa misma tabla.

Si en la tabla USUARIOS tenemos el campo Crédito y éste sólo puede estar entre 0 y 2000, loespecificaríamos así:

CREATE TABLE USUARIOS (

Credito NUMBER(4) CHECK (Crédito BETWEEN 0 AND 2000));

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

Si queremos obtener una descripción de una tabla, sinonimo, paquete o función, podemosutilizar el comando DESCRIBE.

DESCRIBE.

Debes conocer

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

44 de 61 30/06/2013 14:47

Relaciona estos términos utilizados para las restricciones en la creación de tablas con susignificado o función:

Términos. Relación. Función.

C H EC K 1 1 . Co m p ru e b a q u e l o s v a l o re 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 .

D E FA UL T 6 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 .

P R IM AR Y KE Y 5 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

F O RE IG N KE Y 2 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 .

N O T NU LL 3 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 .

U N IQ UE 4 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 re d e t e rm i n a d a .

ReiniciarReiniciarReiniciarReiniciar Mostrar las respuestasMostrar las respuestasMostrar las respuestasMostrar las respuestas

Tu puntuación es 0/6.

Estupendo, ya tienes todas las herramientas para crear una tabla.

Autoevaluación

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

45 de 61 30/06/2013 14:47

11.4.- Eliminación de tablas.

Cuando una tabla ya no es útil y no la necesitamos es mejor borrarla, de estemodo no ocupará espacio y podremos utilizar su nombre en otra ocasión.

Para eliminar una tabla utilizaremos el comando DROP TABLE.

DROP TABLE NombreTabla [CASCADE CONSTRAINTS];

Esta instrucción borrará la tabla de la base de datos incluido sus datos (filas). También se borrará toda lainformación que existiera de esa tabla en el Diccionario de Datos.

La opción CASCADE CONSTRAINTS se puede incluir para los casos en que alguna de las columnas sea claveajena en otra tabla secundaria, lo que impediría su borrado. Al colocar esta opción las restricciones dondees clave ajena se borrarán antes y a continuación se eliminará la tabla en cuestión.

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 petición deconfirmación antes de ejecutarse.

Al borrar una tabla:

De s a p a re 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 unatabla sin eliminar su estructura.

Y recuerda que solo podrás borrar aquellas tablas sobre las que tengas permiso de borrado.

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

46 de 61 30/06/2013 14:47

11.5.- Modificación de tablas (I).

Es posible que después de crear una tabla nos demos cuenta que se nos haolvidado añadir algún campo o restricción, quizás alguna de las restriccionesque añadimos ya no es necesaria o tal vez queramos cambiar el nombre dealguno de los campos. ¿Es posible esto? Ahora veremos que sí y en casitodos los casos utilizaremos el comando ALTER TABLE.

S i q ue re m os c a m bi a r e l n om b re de u na ta b la :

RENAME NombreViejo TO NombreNuevo;

S i q ue re m os a ña di r c ol um n a s a un a ta bl a : la s c o l u m n a s s e a ñ a d i rá n a l f i 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 ue re m os e lim in a r c ol um na s de u na ta 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 ra . 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 rm a l a ta b l a , p a ra e l l o t e n d re m o s q u e b o r ra r l a ta b l a d i re c ta m e n te .

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

S i q ue re m os m od if ic a r c o lu m n a s d e un a ta bl a : p o d e m o s m o d i f i c a r e l t i p o d e d a t o s y l a s p ro 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 ra 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 ra s i e m p re 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 ue re m os re no m bra r c o lu m na s de u na ta b la :

ALTER TABLE NombreTabla RENAME COLUMN NombreAntiguo TO NombreNuevo;

Tenemos la siguiente tabla creada:

CREATE TABLE USUARIOS (

Credito NUMBER(4) CHECK (Crédito BETWEEN 0 AND 2000));

Nos gustaría incluir una nueva columna llamada User que será tipo texto y clave primaria:

ALTER TABLE USUARIO ADD

(User VARCHAR(10) PRIMARY KEY);

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

47 de 61 30/06/2013 14:47

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

ALTER TABLE USUARIO RENAME COLUMN User TO Login;

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 restricción a sueldo para que tome valores entre 1000 y 1200,¿cómo lo harías?

Solución:ALTER TABLE EMPLEADOS MODIFY (Sueldo NUMBER(2) CHECK (Sueldo BETWEEN 1000 AND

1200));

Ejercicio resuelto

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

48 de 61 30/06/2013 14:47

11.5.1.- Modificación de tablas (II).

Utilizando el comando ALTER TABLE, podemos modificar las restricciones obien eliminarlas:

S i q ue re m os b orra r re s tri c c io ne s :

ALTER TABLA NombreTabla DROP CONSTRAINT NombreRestriccion

S i q ue re m os m od if ic a r e l n om bre de la s re s tri c c io ne s :

ALTER TABLE NombreTabla RENAME CONSTRAINT NombreViejo TO NombreNuevo;

S i q ue re m os a c ti v a r o de s a c t iv a r re s tric c ion 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 ra l m e n te u n a re s t ri c c i ó n p a ra h a c e r p ru 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 re 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 re 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];

Puede ocurrir que no hayamos puesto nombre a las restricciones o bien que lo hiciéramos perono lo recordemos. Sería interesante que se pudiera consultar en algún lado.

Nombre de todas las restricciones.

Debes conocer

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

49 de 61 30/06/2013 14:47

11.6.- Creación y eliminación de índices

Sabemos que crear índices ayuda a la localización más rápida de la informacióncontenida en las tablas. Ahora aprenderemos a crearlos y eliminarlos:

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

No es aconsejable que utilices campos de tablas pequeñas o que se actualicen conmucha frecuencia. Tampoco es conveniente si esos campos no se usan enconsultas de manera frecuente o en expresiones.

El diseño de indices es un tema bastante complejo para los Administradores deBases de Datos, ya que una mala elección ocasiona ineficiencia y tiempos de espera elevados. Un usoexcesivo de ellos puede dejar a la Base de Datos colgada simplemente con insertar alguna fila.

Para eliminar un índice es suficiente con poner la instrucción:

DROP INDEX NombreIndice;

La mayoría de los índices se crean de manera implícita cuando ponemos las restriccionesPRIMARY KEY, FOREIGN KEY o UNIQUE.

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 elimínalo.

CREATE INDEX miIndice ON EMPLEADOS (Apellidos);

DROP INDEX miIndice;

Ejercicio resuelto

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

50 de 61 30/06/2013 14:47

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

Juan cree que será necesario conocer quiénes acceden a labase de datos para poder crearles sus contraseñas y darleslos permisos necesarios, de manera que la administración dela base quede en manos de quien corresponde, y el sistemasea seguro. No quiere ni imaginarse que quedara algún cabosuelto, y cualquier usuario con algo de conocimientospudiera acceder sin consentimiento y con los permisossuficientes, como para manipular los datos a su antojo.

Ya hemos visto que necesitamos una cuenta de usuario para acceder a losdatos de una base de datos. Las claves de acceso se establecen cuando secrea el usuario y pueden ser modificados por el Administrador o por elpropietario de dicha clave. La Base de Datos almacena encriptadas lasclaves en una tabla del diccionario llamada DBA_USERS.

¿Cómo 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 RE AT E US ER : c re 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 f i c a d o p o r e l s i s t e m a .

I DE NT IF IE D BY : 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 EF AU LT T AB LE S PA CE : a s i g n a a u n u s u a r i o e l Ta 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á SY ST EM .

T EM PO RA RY T AB L ES PA CE : e s p e c i f i c a e l n o m b re d e l Ta b l e s p a c e p a ra t ra b a j o s te m p o ra l e s . Po r d e f e c to s e rá SY ST EM .

Q UO TA : 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 Ta 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 RO FI LE : 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 rf i 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 paraver en mi sesión los usuarios que existen pondría: DESC SYS.ALL_USERS;

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

CREATE USER UsuarioLimitado IDENTIFIED BY passworddemiusuariolimitado ;

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

Caso práctico

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

51 de 61 30/06/2013 14:47

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 opción CASCADE borra todos los objetos del usuario antes de borrarlo. Sin esta opción no nos dejaríaeliminar al usuario si éste tuviera tablas creadas.

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

52 de 61 30/06/2013 14:47

12.1.- Permisos (I).

Ningún usuario puede llevar a cabo una operación si antes no se le haconcedido el permiso para ello. En el apartado anterior hemos creado unusuario para iniciar sesión, pero si con él intentáramos crear una tablaveríamos que no tenemos permisos suficientes para ello.

Para poder acceder a los objetos de una base de datos necesitas tenerprivilegios (permisos). Éstos se pueden agrupar formando roles, lo quesimplificará la administración. Los roles pueden activarse, desactivarse oprotegerse con una clave. Mediante los roles podemos gestionar los comandosque pueden utilizar los usuarios. Un permiso se puede asignar a un usuario oa 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 f i 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 LL 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 f i c a d o .

[ WI TH G RA NT O P TI ON ] 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 UB LI 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 ra 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 TO A na ; (p e rm 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 An 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 deun 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 IT H AD MI N OP T IO 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 UB LI 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 ra 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.

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

53 de 61 30/06/2013 14:47

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 borrarusuarios a otros.

Si quieres conocer más sobre permisos y objetos sobre los que se conceden privilegios, visitaeste enlace:

Gestión de privilegios y recursos.

Para saber más

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

54 de 61 30/06/2013 14:47

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 ob 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 te 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;

Asocia cada comando con su uso.

Usuarios y permisos.

Comando Relación Función

CR EA TE U SE R 3 1 . Se u ti l i z a p a ra d a r p e rm i s o s a l o s u s u a ri o s o ro l e s .

DR OP U SE R 2 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 .

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

RE VO KE 4 4 . Se u ti l i z a p a ra q u i ta r p e rm i s o s .

ReiniciarReiniciarReiniciarReiniciar Mostrar las respuestasMostrar las respuestasMostrar las respuestasMostrar las respuestas

Tu puntuación es 0/4.

Estupendo, ya conoces los comandos básicos para la creación de usuarios y sus permisos.

Autoevaluación

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

55 de 61 30/06/2013 14:47

Anexo I.- Elementos del lenguaje SQL.

El lenguaje SQL está compuesto por comandos, cláusulas, operadores, funciones y literales . Todos estoselementos 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 :

Comandos DDL. Lenguaje de Definición de Da tos.

Co m a n do : De s c ri pc ió n:

CREATE 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 .

DROP 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 .

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

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 :

Comandos DM L. Lengua je de M anipulación de Da tos .

Co m a n do : De s c ri pc ió n:

S E LE CT S e u t i l i z a p a ra 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 rm i n a d o .

INS E RT S e u t i l i z a p a ra 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 ra m o d i f i c a r v a l o re s d e c a m p o s y f i l a s e s p e c íf i c o s .

DE LE TE S e u t i l i z a p a ra e l i m i n a r f i 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 tro l d e Da t o s :

Comandos DCL. Lenguaje de Control de Da tos.

Co m a n do : De s c ri pc 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 ra re a l i z a r ta re a s d e t e rm i n a d a s .

REV OKE 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.

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 rm i te n m o d i f i 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áusulas

Cl á u s u la s : De s c rip c i ón :

F ROM Se u ti l i z a p a ra e s p e c i f i 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 .

W HE RE Se u ti l i z a p a ra e s p e c i f i 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 re 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.

GROUP BY Se u ti l i z a p a ra s e p a ra r l a s f i l a s s e l e c c i o n a d a s e n g ru 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 ru p o .

ORDER BY Se u ti l i z a p a ra o rd e n a r l a s f i 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 íf i 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 lógicos.

Op e ra d ore s : De s c rip c i ón :

AND 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 .

OR 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 .

NOT 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 ión.

Ope ra do re s : De s c rip c i ón :

< M e n o r q u e .

> M a y o r q u e .

< > Di s ti n t o d e .

< = M e n o r o i g u a l .

> = M a y o r o i g u a l .

= I g u a l .

BE TW E EN S e u t i l i z a p a ra e s p e c i f i c a r u n i n te rv a l o d e v a l o re s .

LI KE S e u t i l i z a p a ra c o m p a ra r.

I N S e u t i l i z a p a ra e s p e c i f i 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 re 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 ro 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 iones de agregado.

F un c ión : De s c ri pc ió n:

AVG Ca l c u l a e l p ro m e d i o d e l o s v a l o re s d e u n c a m p o d e t e rm i n a d o .

COUNT De v u e l v e e l n ú m e ro 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 rm i n a d o .

M I N 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 ITE 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 ro , 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 les

L ite ra le s : De s c ripc ió n:

2 3 / 0 3 /9 7 L i t e ra l fe c h a .

M a ría L i t e ra l c a ra c te re s .

5 L i t e ra l n ú m e ro .

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

56 de 61 30/06/2013 14:47

Anexo II.- Instalación de Oracle XE.

A partir de ahora vamos a trabajar con este Sistema Gestor de Base de Datos. Para ello debes ir a lapágina oficial de Oracle:

Descarga de Oracle

En ella podemos elegir entre dos tipos de descargas según sea nuestro Sistema Operativo:

La página de Oracle solicitará nuestro registro para realizar la descarga, pues tenemos que ser usuariosregistrados para poder bajarlo.

Una vez bajado el archivo, tendremos que ejecutarlo haciendo doble clic sobre él.

Al hacerlo, aparecerá una ventana donde podrás ver que está preparándose para la instalación y tras unossegundos aparecerá la página de bienvenida donde pulsaremos en siguiente.

A continuación se nos muestra otra ventana donde tenemos que aceptar los términos del acuerdo parapoder continuar con la instalación:

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

Pulsamos en siguiente. En la ventana que aparece a continuación nos solicitará que introduzcamos unacontraseña para los usuarios SYS y SYSTEM (será la misma para los dos).

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

57 de 61 30/06/2013 14:47

Pulsamos en siguiente y aparecerá otra ventana donde nos informa entre otras cosa, que la instalación serealizará para conectar mediante HTTP en el puerto 8080. Ahora el botón que tenemos que pulsar esInstalar.

El asistente se pondrá a instalar.

Transcurrido un tiempo aparecerá otra ventana que indicará que el proceso a terminado y que pulsemosen Terminar.

Tras estos pasos, Oracle se abrirá automáticamente para que puedas comenzar a trabajar.

También se habrá creado un icono de acceso:

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

58 de 61 30/06/2013 14:47

También podrás ver que tienes un acceso en el botón de inicio.

Si accedemos a Ir a Página Inicial de Base de Datos, debe aparecer la siguiente ventana donde podremosacceder a la base de datos que trae por defecto.

Aquí usaremos las claves que pusimos antes.

Ya estamos listos para trabajar.

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

59 de 61 30/06/2013 14:47

Anexo.- Licencias de recursos.

Licencias de recursos utilizados en la Unidad deTrabajo.

Re c urs o (1 ) Da tos d e l re c u rs o (1 ) Re c u rs o (2 ) Da tos d e l re c urs o (2 )

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

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

Pro 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 rg /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

A u to r ía : wa rs z a wi a n k 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 .

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 rg / 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 .

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

Pro 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 /

A u to r ía : Art Fa v o r.

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 .

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 rg / 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 .

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 .

Pro 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 ra l _ c a l e n d a r-b y -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 ti v e Co m m o n 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 rg / 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 .

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 .

Pro 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

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 ti v e Co m m o n 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 rg / 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 : Fra n c i s c o M o c h i s .

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

Pro 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 rg /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

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

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 .

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 rg / 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.

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 .

Pro 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

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 ti v e Co m m o n 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 rg / d e ta i l / 9 1 5 4 3 /b l u e -wo rk e r-b y -b u g m e n o t

Au 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 .

Pro 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

A u to r ía : u s e r9 .

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 .

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 rg / 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 r9 -1 3 1 4 9 1

Au 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 .

Pro 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 ff i c e -b y -a n o n y m o u s

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

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 .

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 rg / 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 .

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 .

Pro 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 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 ti v e Co m m o n 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 rg / 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 .

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 .

Pro 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

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 ti v e Co m m o n 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 rg / d e ta i l / 2 9 9 2 3 /fe l t -t i p -b y -rg 1 0 2 4

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

60 de 61 30/06/2013 14:47

A u to rí a : L e a n d ro S c i o l 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 .

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

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

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 .

Pro 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 rs -b y -wa rs z a wi a n k a

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

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 .

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

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

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

Pro c e d e n c i a : Ca p tu ra d e p a n ta 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 ra ti o n .

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

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

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 ra t i o n .

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

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

Pro c e d e n c i a : Ca p tu ra d e p a n ta 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 ra ti o n .

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

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

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 ra t i o n .

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

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

Pro c e d e n c i a : Ca p tu ra d e p a n ta 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 ra ti o n .

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

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

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 ra t i o n .

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

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

Pro c e d e n c i a : Ca p tu ra d e p a n ta 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 ra ti o n .

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

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

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 ra t i o n .

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

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

Pro c e d e n c i a : Ca p tu ra d e p a n ta 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 ra ti o n .

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

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

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 ra t i o n .

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

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

Pro c e d e n c i a : Ca p tu ra d e p a n ta 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 ra ti o n .

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

61 de 61 30/06/2013 14:47