Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Apuntes bases de datos tema 2, Apuntes de Programación de Bases de Datos

Apuntes de bbdd para programación web

Tipo: Apuntes

2019/2020

Subido el 02/06/2020

hamzza56
hamzza56 🇪🇸

4 documentos

1 / 35

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
TEMA 2
INDICE
1.- Modelo de datos. .............................................................................................................................. 3
2.- Terminología del modelo relacional .................................................................................................. 4
2.1.- Relación o tabla. Tuplas. Dominios. .........................................................................................................4
2.3.- Sinónimos................................................................................................................................................6
3.- Relaciones. Características de una relación (tabla). .......................................................................... 7
3.1.- Tipos de relaciones (tablas). ....................................................................................................................7
4.- Tipos de datos. .................................................................................................................................. 9
5.- Claves. ............................................................................................................................................. 10
5.1.- Clave candidata. Clave primaria. Clave alternativa. ................................................................................10
5.2.- Clave externa, ajena o secundaria. ........................................................................................................11
6.- Índices. Características. ................................................................................................................... 13
7.- El valor NULL. Operaciones con este valor. ..................................................................................... 14
8.- Vistas. .............................................................................................................................................. 15
9.- Usuarios. Roles. Privilegios .............................................................................................................. 16
10.- SQL. ............................................................................................................................................... 17
10.1.- Elementos del lenguaje. Normas de escritura. .....................................................................................17
Elementos del lenguaje SQL. ................................................................................................................................................ 18
Instalación de Oracle XE. ...................................................................................................................................................... 20
11.- Lenguaje de descripción de datos (DDL). ................................................................................................23
11.1.- Creación de bases de datos. Objetos de la base de datos. ...................................................................23
11.2.- Creación de tablas. ..............................................................................................................................24
11.3.- Restricciones. ......................................................................................................................................25
11.3.1.- Restricción NOT NULL. ............................................................................................................................................ 26
11.3.2.- Restricción UNIQUE. ............................................................................................................................................... 27
11.3.3.- Restricción PRIMARY KEY........................................................................................................................................ 27
11.3.4.- Restricción REFERENCES. FOREIGN KEY. ................................................................................................................ 28
11.3.5.- Restricción DEFAULT Y VALIDACIÓN. ..................................................................................................................... 29
11.4.- Eliminación de tablas. ..........................................................................................................................29
11.5.- Modificación de tablas (I). ...................................................................................................................30
Ejercicio resuelto ................................................................................................................................................................................. 31
11.5.1.- Modificación de tablas (II). ..................................................................................................................................... 31
11.6.- Creación y eliminación de índices ........................................................................................................32
Ejercicio resuelto ................................................................................................................................................................................. 32
12.- Lenguaje de control de datos (DCL). ............................................................................................. 33
12.1.- Permisos (I). ........................................................................................................................................34
12.1.1.- Permisos (II). ............................................................................................................................................................ 35
José Luis Comesaña
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23

Vista previa parcial del texto

¡Descarga Apuntes bases de datos tema 2 y más Apuntes en PDF de Programación de Bases de Datos solo en Docsity!

INDICE

  • TEMA
  • 1.- Modelo de datos.
  • 2.- Terminología del modelo relacional - 2.1.- Relación o tabla. Tuplas. Dominios. ......................................................................................................... - 2.3.- Sinónimos................................................................................................................................................
  • 3.- Relaciones. Características de una relación (tabla). - 3.1.- Tipos de relaciones (tablas). ....................................................................................................................
  • 4.- Tipos de datos.
  • 5.- Claves. - 5.1.- Clave candidata. Clave primaria. Clave alternativa. ................................................................................ - 5.2.- Clave externa, ajena o secundaria. ........................................................................................................
  • 6.- Índices. Características.
  • 7.- El valor NULL. Operaciones con este valor.
  • 8.- Vistas.
  • 9.- Usuarios. Roles. Privilegios
  • 10.- SQL. - 10.1.- Elementos del lenguaje. Normas de escritura. ..................................................................................... - Elementos del lenguaje SQL. - Instalación de Oracle XE. - 11.- Lenguaje de descripción de datos (DDL). ................................................................................................ - 11.1.- Creación de bases de datos. Objetos de la base de datos. ................................................................... - 11.2.- Creación de tablas. .............................................................................................................................. - 11.3.- Restricciones. ...................................................................................................................................... - 11.3.1.- Restricción NOT NULL. - 11.3.2.- Restricción UNIQUE. - 11.3.3.- Restricción PRIMARY KEY........................................................................................................................................ - 11.3.4.- Restricción REFERENCES. FOREIGN KEY. - 11.3.5.- Restricción DEFAULT Y VALIDACIÓN. - 11.4.- Eliminación de tablas. .......................................................................................................................... - 11.5.- Modificación de tablas (I). ................................................................................................................... - Ejercicio resuelto................................................................................................................................................................................. - 11.5.1.- Modificación de tablas (II). - 11.6.- Creación y eliminación de índices ........................................................................................................ - Ejercicio resuelto.................................................................................................................................................................................
  • 12.- Lenguaje de control de datos (DCL). - 12.1.- Permisos (I). ........................................................................................................................................ - 12.1.1.- Permisos (II).............................................................................................................................................................

Bases de Datos Relacionales DAW

BASES DE DATOS RELACIONALES

CASO PRÁCTICO. 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.

Bases de Datos Relacionales DAW

2.- Terminología del modelo relacional

Caso práctico Ana se pregunta cuál será el modelo con el que se suele trabajar. Actualmente, para la mayoría de las aplicaciones de gestión que utilizan bases de datos, el modelo más empleado 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 del mundo real de una manera intuitiva? Así es, pudiendo introducir conceptos cotidianos y fáciles de entender por cualquiera, aunque no sea experto en informática.

El modelo relacional fue propuesto por Edgar Frank Codd en los laboratorios de IBM en California. Como hemos visto, se trata de un modelo lógico que establece una estructura sobre los datos, independientemente del modo en que luego 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 forma de nuestras estanterías, podremos disponer nuestros libros de un modo u otro para facilitarnos el acceso y consulta. Los libros serán los mismos pero puedo disponerlos de distinta forma.

El nombre de modelo relacional viene de la estrecha relación entre el elemento básico de este modelo y el concepto matemático de relación. Si tenemos dos conjuntos A y B, una relación entre estos dos conjuntos serí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 elementos de los otros conjuntos de ese producto. Al estar trabajando con conjuntos, no puede haber elementos repetidos.

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 concepto matemático de relación, ya que Codd, que era un experto matemático, utilizó una terminología perteneciente 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:

http://es.wikipedia.org/wiki/Teor%C3%ADa_de_conjuntos

http://es.wikipedia.org/wiki/L%C3%B3gica_de_primer_orden

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

Atributos: es el nombre de cada dato que se almacena en la relación (tabla). Ejemplos serían: DNI, nombre, apellidos, etc. El nombre del atributo debe describir el significado de la información que representa. En la tabla Empleados , el atributo Sueldo almacenará el valor en euros del sueldo que recibe cada empleado. A veces es necesario añadir una pequeña descripción para aclarar un poco más el contenido. Por ejemplo, si el sueldo es neto o bruto.  Tuplas: Se refiere a cada elemento de la relación. Si una tabla guarda datos de un cliente, como su DNI o Nombre, una tupla o registro sería ese DNI y nombre concreto de un cliente. Cada una de las filas de la tabla se corresponde con la idea de registro y tiene que cumplir que:  Cada tupla se debe corresponder con un elemento del mundo real.  No puede haber dos tuplas iguales (con todos los valores iguales).

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

Desarrollo de Aplicaciones Web Tema 2

situaciones obligaremos a que cada atributo sólo pueda tomar los valores pertenecientes a un conjunto de valores previamente establecidos, es decir, un atributo tiene asociado un dominio de valores.

A menudo un dominio se define a través de la declaración de un tipo para el atributo (por ejemplo, diciendo que 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 valores posibles sean "M" o "F" (masculino o femenino).

Una característica fundamental de los dominios es que sean atómicos , es decir, que los valores contenidos en 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:  Nombre : Sueldo.  Definición lógica : Sueldo neto del empleado  Tipo de datos : número entero.  Formato : 9.999€.

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

Las tuplas deben corresponderse con un elemento del mundo real. Podríamos tener dos o más tuplas iguales. Un atributo se define en un dominio de valores. El nombre de cada dato que se almacena en la relación se denomina Atributo.

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ántos atributos podemos guardar en una tabla?

Llamaremos grado al tamaño de una tabla en base a su número de 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 dominios A={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} CARLOS MATEMÁTICAS APROBADO CARLOS MATEMÁTICAS SUSPENSO CARLOS LENGUA APROBADO CARLOS LENGUA SUSPENSO CARLOS INGLÉS APROBADO

Desarrollo de Aplicaciones Web Tema 2

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

Caso práctico Juan, tras su análisis y varios días de trabajo, ha obtenido las relaciones con las que trabajará y los atributos que desea guardar en la base de datos. Junto con Ana va a repasar que se cumplan todas las propiedades y así asegurarse que el modelo es el adecuado. También necesitará saber qué información podrá consultar el usuario para así crear algunas tablas de modo temporal.

¿En un modelo relacional se puede utilizar cualquier relación? ¿Es válida cualquier tabla o se deben cumplir algunas propiedades?

Debes saber que:  Cada tabla tiene un nombre distinto.

 Como hemos visto antes, cada atributo (columna) de la tabla toma un solo valor en cada tupla (fila).  Cada atributo (columna) tiene un nombre distinto en cada tabla (pero puede ser el mismo en tablas distintas).  No puede haber dos tuplas (filas) completamente iguales.

 El orden de las tuplas (filas) no importa.

 El orden de los atributos (columnas) no importa.

 Todos los datos de un atributo (columna) deben ser del mismo dominio.

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

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.

3.1.- Tipos de relaciones (tablas). Caso práctico Juan le está contando a Ana que hay que distinguir las relaciones en función del uso que se le vaya a dar. Tal y como han hablado con el cliente, sabe que unos jugadores accederán a un tipo de tablas como usuarios, y las personas que administran la base de datos lo harán a otras. Es obvio que tenemos que distinguir entre unas y otras.

Existen varios tipos de relaciones y las vamos a clasificar en:  Persistentes : Sólo pueden ser borradas por los usuarios.  Base : Independientes, se crean indicando su estructura y sus ejemplares (conjunto de tuplas o filas).  Vistas : son tablas que sólo almacenan una definición de consulta, resultado de la cual se produce una tabla cuyos datos proceden de las bases o de otras vistas e instantáneas. Si los datos de las tablas base cambian, los de la vista que utilizan esos datos también cambiarán.  Instantáneas : son vistas (se crean de la misma forma) que sí almacenan los datos que muestran, además de la consulta que la creó. Solo modifican su resultado cuando el sistema se refresca cada cierto tiempo. Es como una fotografía de la relación, que sólo es válida durante un periodo de tiempo concreto.

Bases de Datos Relacionales DAW

Temporales : Son tablas que son eliminadas automáticamente por el sistema.

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

Instantáneas Vistas Base

Bases de Datos Relacionales DAW

5.- Claves.

Caso práctico Juan está revisando la relación Usuarios. En esta tabla va a guardar los siguientes atributos: Login del jugador que será nuestro usuario, Password o Contraseña, Nombre y Apellidos, Dirección, Código Postal, Localidad, Provincia, País, Fecha de nacimiento para comprobar que no es menor de 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 no estamos recogiendo la misma información? ¿Cómo vamos a distinguir unas tuplas de otras? Lo haremos mediante los valores de sus atributos. Para ello, buscaremos un atributo o un conjunto de atributos que identifiquen de modo único las tuplas (filas) de una 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 puede haber dos tuplas (filas) completamente iguales, con lo que podemos decir que toda la fila como conjunto sería una superclave.

Por ejemplo, en la tabla Usuarios tenemos las siguientes superclaves:  {Nombre, Apellidos, login, e_mail, F_nacimiento}  {Nombre, Apellidos, login, e_mail}  {login, e_mail}  {login}

Tendríamos que elegir alguna de las superclaves para diferenciar las tuplas. En el modelo relacional trabajamos con tres tipos de claves:  Claves candidatas.  Claves primarias.  Claves alternativas.  Claves ajenas.

A continuación veremos cada una de ellas.

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

http://www.victorgarcia.org/pfc/modeloER/claves.php

5.1.- Clave candidata. Clave primaria. Clave alternativa. Si puedo elegir entre tantas claves, ¿con cuál me quedo? Tendremos que elegir 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 atributos que identifiquen de manera única cada tupla (fila) de la relación (tabla). Es decir, las columnas cuyos valores no se repiten en ninguna otra fila de la tabla. Por tanto, cada tabla debe tener al menos una clave candidata aunque puede haber más de una.

Siguiendo con nuestro ejemplo, podríamos considerar los atributos Login o E_mail como claves candidatas, ya que sabemos que el Login debe ser único para cada usuario, a E_mail le sucede lo mismo. Pero también cabe la posibilidad 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 identifiquen de forma única a la fila. Cuando una clave candidata está formada por más de un atributo, se dice que es una clave compuesta.

Desarrollo de Aplicaciones Web Tema 2

Una clave candidata debe cumplir los siguientes requisitos:  Unicidad : no puede haber dos tuplas (filas) con los mismos valores para esos atributos.  Irreducibilidad : si se elimina alguno de los atributos deja de ser única.

Si elegimos como clave candidata Nombre, Apellidos y F_nacimiento , cumple con la unicidad puesto que es muy difícil encontrarnos con dos personas que tengan el mismo nombre, apellidos y fecha de nacimiento iguales. Es irreducible puesto que sería posible encontrar dos personas con el mismo nombre y apellidos o con el mismo nombre y fecha de nacimiento, por lo que son necesarios los tres atributos (campos) para formar la clave.

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

Hasta ahora, seguimos teniendo varias claves con la que identificamos de modo único nuestra relación. De ahí 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 de modo único. Ya que una relación no tiene tuplas duplicadas, siempre hay una clave candidata y, por lo tanto, la relación siempre tiene clave primaria. En el peor caso, la clave primaria estará formada por todos los atributos de la relación, pero normalmente habrá un pequeño subconjunto de los atributos que haga esta función. En otros casos, podemos crear un campo único que identifique las tuplas, por ejemplo un código de usuario, que podrían estar constituidos por valores autonuméricos.

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

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

Rellena los huecos con los conceptos adecuados.

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

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

Aquellas que no escogemos se denominarán claves.

5.2.- Clave externa, ajena o secundaria.

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

alternativas

tuplas primaria

candidatas

Desarrollo de Aplicaciones Web Tema 2

6.- Índices. Características.

Caso práctico Juan considera que es beneficioso crear un índice para la tabla Usuarios. Podría agilizar las búsquedas de usuarios registrados. Le ha contado a Ana que es conveniente tenerlo, aunque también le ha explicado que tener muchos índices no es bueno. Tendrán que hacer una buena elección del número de índices que van 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 (estilo pergamino) o bien distribuirlo por hojas. Está claro que lo mejor sería distribuirlo por páginas. Y si buscamos el término "informática" en nuestro diccionario, podríamos comenzar a buscar en la primera página y continuar una por una hasta llegar a la palabra correspondiente. O bien crear un índice al principio, de manera que podamos consultar a partir de qué 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 de un 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 incorporados automá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 pueden ser 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 índice para cada columna, pero no sería operativo. Normalmente tiene sentido crear índices para ciertas columnas ya que agilizan las operaciones de búsqueda de base de datos grandes. Por ejemplo, si la información de nuestra tabla Usuarios se desea consultar por apellidos, tiene sentido indexar por esa columna.

Al crear índices, las operaciones de modificar o agregar datos se ralentizan, ya que al realizarlas es necesario actualizar tanto la tabla como el índice.

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

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

http://www.programacion.com/articulo/indices_y_optimizacion_de_consultas_

Bases de Datos Relacionales DAW

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

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

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

¿Qué sucede si al guardar los datos de los Usuarios hay algún dato que no tengo o no necesito guardarlo porque no corresponde? Independientemente del dominio al que pertenezca un campo, éste puede tomar un valor especial denominado NULO ( NULL en inglés) que designará la ausencia de dato.

Cuando por cualquier motivo se desconoce el valor de un campo, por ejemplo, desconocemos el teléfono del usuario, o bien ese campo carece de sentido (siguiendo con el mismo ejemplo, puede que el usuario no tenga telé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 con ninguna 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, si introducimos el carácter "espacio en blanco" estaríamos introduciendo un valor que pertenecería al dominio texto 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úa cuando se emplean operaciones lógicas sobre ese valor. En la lógica booleana tenemos los valores VERDADERO y FALSO, pero un valor NULO no es ni verdadero ni falso.

Cuando necesitemos comparar dos campos, si ambos son nulos no podremos obtener ni verdadero ni falso. Necesitaremos definir la lógica con este valor. Veamos los operadores lógicos más comunes y sus resultados utilizando el valor nulo:  VERDADERO Y (AND) NULO daría como resultado NULO.  FALSO Y (AND) NULO daría como resultado FALSO.  VERDADERO O (OR) NULO daría como resultado VERDADERO.  FALSO O NULO daría como resultado NULO.  NO (NOT) NULO daría como resultado NULO. En todas las bases de datos relacionales se utiliza un operador llamado ES NULO (IS NULL) que devuelve VERDADERO si el valor con el que se compara es NULO.

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

http://es.wikipedia.org/wiki/Null_%28SQL%

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

Designa ausencia de dato Es lo mismo que espacio en blanco Es lo mismo que cero

Bases de Datos Relacionales DAW

9.- Usuarios. Roles. Privilegios

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

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

Un usuario es un conjunto de permisos que se aplican a una conexión de base de datos. Tiene además otras funciones como son:  Ser el propietario de ciertos objetos (tablas, vistas, etc.).  Realiza las copias de seguridad.  Define una cuota de almacenamiento.  Define el tablespace por defecto para los objetos de un usuario en Oracle.

Pero no todos los usuarios deberían poder hacer lo mismo cuando acceden a la base de datos. Por ejemplo, un administrador debería tener más privilegios 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 sistema : necesitará el permiso de sistema correspondiente.  Sobre objeto : necesitará el permiso sobre el objeto en cuestió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 una tabla concreta y no tener permiso para actualizarlos. Luego un rol permite asignar un grupo de permisos a un usuario. De este modo, si asignamos un rol con 5 permisos a 200 usuarios y luego queremos añadir un permiso nuevo al rol, no tendremos que ir añadiendo este nuevo permiso a los 200 usuarios, ya que el rol se 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

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

usuario

Desarrollo de Aplicaciones Web Tema 2

10.- SQL.

Caso práctico Hasta ahora Ana y Juan no han tenido que utilizar mucho el ordenador, ya es hora de ponerse manos a la obra. El diseño está casi finalizado y ahora es necesario pasarlo a un lenguaje adecuado. Juan había acordado con Ada que usarían Oracle como SGBD. Para trabajar con esta aplicación es necesario tener conocimientos del lenguaje que utiliza, en concreto SQL para Oracle, que tiene ciertas variaciones 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 los lenguajes más utilizados en informática en todos los tiempos. Es un lenguaje declarativo y por tanto, lo má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 que funcionar en otras.

Aunque SQL está estandarizado, siempre es recomendable revisar la documentación del SGBD con el que estemos trabajando para conocer su sintaxis concreta, ya que algún comando, tipo de dato, 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 lenguaje bastante natural. Es por esto que las instrucciones son muy parecidas a órdenes humanas. Por esta característica se le considera un Lenguaje de Cuarta Generación. Aunque frecuentemente oigas que SQL es un "lenguaje de consulta", ten en cuenta que no es exactamente cierto ya que contiene muchas otras capacidades además de la de consultar la base de datos:  la definición de la propia estructura de los datos,  su manipulación,  y la especificación de conexiones seguras. Por tanto, el lenguaje estructurado de consultas SQL es un lenguaje que permite operar con los datos almacenados en las bases de datos relacionales.

Para saber más

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

sus características más generales:

http://es.wikipedia.org/wiki/Generaciones_de_lenguajes_de_programaci%C3%B3n

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

http://www.htmlpoint.com/sql/sql_04.htm

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 que vamos 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 las instrucciones y se utilizan para crear, actualizar y manipular bases de datos. Estos conceptos son bastante amplios por eso será mejor que vayamos por partes.

Desarrollo de Aplicaciones Web Tema 2

Comandos DCL. Lenguaje de Control de Datos.

Comando: Descripción: GRANT Permite dar permisos a uno o varios usuarios o roles para realizar tareas determinadas.

REVOKE Permite eliminar permisos que previamente se han concedido con GRANT.  CLÁUSULAS: Llamadas también condiciones o criterios, son palabras especiales que permiten modificar el funcionamiento de un comando. Cláusulas

Cláusulas: Descripción: FROM Se utiliza para especificar la tabla de la que se van a seleccionar las filas.

WHERE Se utiliza para especificar las condiciones que deben reunir las filas que se van a seleccionar.

GROUP BY

Se utiliza para separar las filas seleccionadas en grupos específicos.

HAVING Se utiliza para expresar la condición que debe satisfacer cada grupo.

ORDER BY Se utiliza para ordenar las filas seleccionadas de acuerdo a un orden específico.  OPERADORES: Permiten crear expresiones complejas. Pueden ser aritméticos (+, -, *, /, ...) o lógicos (< , >, , < >, And, Or, …).

Operadores lógicos. Operadores: Descripción: AND Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas. OR Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. NOT Devuelve el valor contrario de la expresión.

Operadores de comparación. Operadores: Descripción: < Menor que.

Mayor que. < > Distinto de. < = Menor o igual. = Mayor o igual. = Igual. BETWEEN Se utiliza para especificar un intervalo de valores. LIKE Se utiliza para comparar. IN Se utiliza para especificar filas de una base de datos.

FUNCIONES: Para conseguir valores complejos. Por ejemplo, la función promedio para obtener la media de un salario. Existen muchas funciones, aquí tienes la descripción de algunas.

Funciones de agregado. Función: Descripción: AVG Calcula el promedio de los valores de un campo determinado. COUNT Devuelve el número de filas de la selección. SUM Devuelve la suma de todos los valores de un campo determinado. MAX Devuelve el valor más alto de un campo determinado. MIN Devuelve el valor mínimo de un campo determinado.  LITERALES:

Bases de Datos Relacionales DAW

Les podemos llamar también constantes y serán valores concretos, como por ejemplo un número, una fecha, un conjunto de caracteres, etc. Literales Literales: Descripción: 23/03/97 Literal fecha. María Literal caracteres. 5 Literal número.

Para trabajar con Oracle tendrás que instalar el programa adecuado, aquí tienes el enlace donde puedes bajarte la aplicación gratuita: http://www.oracle.com/technetwork/database/express-edition/downloads/index.html

Ahora te mostramos los pasos que debes seguir para la instalación de la aplicación en tu ordenador:

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 la página oficial de Oracle: http://www.oracle.com/technetwork/database/express-edition/downloads/index.html 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 usuarios registrados 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 unos segundos 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 para poder continuar con la instalación:

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