Access: Ejercicio 1 – Tablas

El objetivo de este ejercicio es crear una base de datos nueva y aprender a crear y modificar tablas.

1.1. CREACIÓN DE LA BASE DE DATOS PELÍCULAS

a) Inicia Word: Inicio/Todos los programas/Microsoft Office/   

b) En la zona central de la pantalla, haz clic en Nueva base de datos en blanco/Base de datos en blanco.

c) Guarda la base de datos que acabas de crear en tu carpeta de trabajo. Busca tu carpeta haciendo clic en, y en Nombre de archivo escribe Películas, y haz clic en

 

1.2. CREACIÓN DE LA TABLA PELÍCULAS CLÁSICAS

a) En Herramientas de tabla/Hoja de datos/Vistas/Ver selecciona

b) En la ventana Guardar como, En Nombre de la tabla, escribe Películas clásicas y haz clic en

 

c) En la segunda fila, en Nombre de campo escribe Título.
d) En Tipo de datos haz clic y elige Texto.
e) En descripción escribe Título de la película.
f) Repite los pasos anteriores hasta obtener una ventana como la de la figura de al lado. Los campos que debes crear son:

 

Título
Fecha estreno
Nacionalidad
Director
Metraje
Color
Género
Sinopsis

g) Cierra la tabla. En la ventana que se abre ¿Desea guardar los cambios en el diseño de la tabla “Películas clásicas”? haz clic en

1.3. MODIFICACIÓN DE CARACTERÍSTICAS DE LA TABLA PELÍCULAS CLÁSICAS

a) En el marco izquierdo, haz doble clic sobre Películas clásicas: Tabla para abrir la tabla.

b) En Herramientas de tabla/Hoja de datos/Vistas/Ver selecciona

c) Escoge el campo Director y abajo en las Propiedades del campo, en la ficha General, en Requerido, haz clic donde pone No y selecciona .

d) Selecciona el campo Metraje, en la ficha General; en Máscara de entrada, haz clic en, si solicita guarda para continuar haz clic en Sí, selecciona Hora larga y pulsa Siguiente. En el cuadro de texto Máscara de entrada elige 99:00:00 y haz clic en el botón Finalizar.

e) Cierra la ventana de la tabla Películas clásicas y pulsa en la ventana de guardar los cambios.

1.4. INTRODUCCIÓN DE DATOS EN LA TABLA PELÍCULAS CLÁSICAS.

a) En el marco izquierdo haz doble clic sobre Películas clásicas: Tabla
b) Introduce los datos de las películas tal como ves en la imagen. Para ajustar el tamaño de las columnas al contenido haz doble clic en la línea de separación de los diferentes valores de la cabecera.

c) Cierra la tabla Películas clásicas y guarda los cambios.

1.5. CREACIÓN DE UN NUEVO CAMPO EN LA TABLA PELÍCULAS CLÁSICAS

a) En el marco izquierdo, haz doble clic sobre Películas clásicas: Tabla para abrir la tabla.
b) En Herramientas de tabla/Hoja de datos/Vistas/Ver selecciona
c) Añade un nuevo campo a continuación de los anteriores. El Nombre del campo será Cartel.

 

d) En Herramientas de tabla/Hoja de da-tos/Vistas/Ver selecciona

e) En la pantalla que sale Primero debe guardar la tabla/ ¿Desea guardarla ahora? Haz clic en .

f) Para insertar los carteles debes colocarte en la celda correspondiente de la columna Cartel. Haz clic con el botón derecho y elige Insertar objeto…/Crear desde archivo y haz clic en Examinar. Busca y elige la imagen y haz clic en Aceptar 2 veces.

g) Haz lo mismo con los demás carteles. Al final cierra la tabla y guarda los cambios.

1.6. USO DEL ASISTENTE PARA TABLAS. TABLA DIRECTORES

a) Elige Crear/Tablas/Plantillas de tabla y selecciona

b) En Inicio/Vistas/Ver selecciona

c) En la ventana Guardar como, escribe Directores y pulsa

 

d) Elimina los campos: Id, Organización, Apellidos, Dirección de correo electrónico, Cargo, Teléfono del trabajo, Teléfono particular, Teléfono móvil, Número de fax, Dirección, Estado/Provincia, Código Postal, Notas y Datos adjuntos. Para ello puedes seleccionarlos haciendo clic sobre los cuadrados del lateral izquierdo y hacer clic en Herramientas/Eliminar filas

e) Cambia País o región por País de nacimiento. Marca el campo Nombre como Clave principal.

f) En Herramientas de tabla/Hoja de datos/Vistas/Ver selecciona

g) En la pantalla que sale Primero debe guardar la tabla/ ¿Desea guardarla ahora? Haz clic en .

h) Introduce los datos como en la imagen.

i) Ajusta la anchura de las columnas.

j) Cierra la tabla y guarda los cambios

 

1.7. RELACIÓN DE LAS TABLAS PELÍCULAS CLÁSICAS Y DIRECTORES

a) Vamos a Herramientas de Bases de datos/Mostrar u ocultar/Relaciones.
b) Sale una ventana Mostrar tabla. Seleccionamos sucesivamente cada una de las 2 tablas y presionamos Agregar.
c) Hacemos clic en el campo Nombre de la tabla Directores y arrastramos hasta el campo Director de la tabla Películas clásicas.
d) Marcamos la casilla Exigir Integridad referencial. Pulsamos Crear.
e) El resultado sería el que ves a la izquierda.

Introducción a Access

Microsoft Access es un sistema de gestión de bases de datos relacionales, desarrollado por Microsoft y orientado a ser usado en un entorno personal o en pequeñas organizaciones. Es un componente de la suite ofimática Microsoft Office.

Es un software propietario de la empresa Microsoft y se puede descargar una versión de prueba en el siguiente enlace: http://office.microsoft.com/es-es/access/

Aquí podés ver unos ejercicios para aprender el funcionamiento de Access. Se va avanzando en los conocimientos a partir de ejemplos prácticos. También hay otros ejercicios que no tienen la solución detallada y finalmente se trabajan unas bases de datos en las que es necesario aplicar los conocimientos que se han adquirido.

Si quieres descargar los archivos necesarios para hacer los ejercicios junto con los enunciados en formato pdf haz clic en este enlace. (El archivo está comprimido con 7-Zip, pero se puede abrir con Winrar o Winzip)

Visualizando datos: Consultas en SQL, con Access

Crear consultas con Access empleando el lenguaje SQL es fácil, aunque hay que dar un par de pasos más para empezar:

• Entramos a la pestaña de consultas.

• Pulsamos el botón Nuevo y escogemos Vista Diseño, igual que antes.

• Añadimos alguna tabla, también al igual que antes.

• Pulsamos el primer botón de la barra de herramientas (Vista) y escogemos la “Vista SQL”:

• Finalmente, tecleamos la orden que nos interese

 

Visualizando datos: Consultas sencillas con Access

Para realizar consultas con Access, podemos emplear también el lenguaje SQL, pero antes lo haremos de otra manera que resulta más “visual”.

Comenzaremos por entrar a la pestaña “Consultas”:

 

Desde aquí, haremos clic en el botón “Nuevo”, para crear una nueva consulta. Nos preguntará si queremos basarnos crear una consulta desde la “Vista Diseño” o utilizar alguno de los asistentes disponibles. Nosotros emplearemos la vista de diseño.

 

Entonces aparecerá una ventana en la que se nos muestran las tablas que tenemos disponibles en nuestra base de datos, y de fondo la cuadrícula vacía de lo que será nuestra consulta. Deberemos ir señalando cada una de las tablas que queremos que forme parte de nuestra consulta, y pulsando el botón “Agregar”. En nuestro caso, todavía es sencillo, porque sólo tenemos una tabla.

Cuando hayamos incluido todas. Pulsamos el botón “Cerrar” y vemos una pantalla en la que se nos muestra en la parte superior la(s) tabla(s) que hemos escogido y en la parte inferior lo que será la definición de la consulta, todavía vacía.

 

Pues ya sólo queda lo más fácil:

  • Para indicar qué campos queremos que se muestren y en qué orden, vamos haciendo doble clic sobre cada uno de ellos, y aparecerán en cada una de las columnas de nuestra consulta.
  • Para indicar el valor que debe tener un cierto campo, lo escribimos en la fila “Criterios”.
  • Si queremos que algún campo se emplee para ordenar los resultados, elegimos “Ascendente” o “Descendente” en la fila “Orden”.

Estaremos obteniendo algo parecido a

Para ver el resultado de esta consulta, hacemos clic en el botón “Ejecutar” de la barra de tareas.

Visualizando datos: Consultas básicas en SQL, con WinSQL

Ya hemos comentado la forma en la que se realizaría una consulta básica en lenguaje SQL: para mostrar todos los campos de la tabla “alumno”, usaríamos la orden “select”:

y para mostrar sólo los valores de algunos de los campos, detallaríamos cuales son dichos campos antes de la palabra “from”:

Pero normalmente no nos interesará ver todas las fichas (registros) que contiene la tabla, sino sólo aquellas que cumplen una cierta condición. Esta condición se indica después de la palabra “where”, así:

Con “=” nos responderá qué fichas contienen exactamente ese valor. Otras comparaciones posibles son:

Ejemplos de su uso podrían ser

Cuando buscamos un texto, es frecuente que no nos interese localizar un cierto texto exactamente, sino que sólo conozcamos parte de ese texto. Sería el caso de “alumnos cuyo nombre empieza por J”, o “personas que tienen López como primer apellido”, o “domicilios en los que aparece la palabra Barcelona”. Para ello se emplea la palabra “like”, se detalla la parte de condición que sabemos y se usa el símbolo % para la parte de la condición que no sabemos.

Por ejemplo para “alumnos cuyo nombre empieza por J” haríamos:

Para “alumnos cuyo nombre termina en e” sería

Y para “nombre de los alumnos en cuyo domicilio aparezca la palabra Barcelona” podría ser

Finalmente (por ahora), conviene indicar que los resultados de esta consulta los podemos obtener ordenados numéricamente (de menor a mayor valor) o alfabéticamente (de la A a la Z) si añadimos al final “order by” seguido del nombre del campo que queremos usar para esa ordenación:

O podemos ordenar de manera descendente (los números de mayor a menor y los textos de la Z a la A) y usamos “order by .. desc”:

 

Creando una Base de Datos con WinSQL

El lenguaje SQL es un lenguaje genérico para manipular bases de datos, que es aceptado por la gran mayoría de sistemas de bases de datos actuales.

Por eso, me parece muy conveniente que veamos cómo crear nuestra base de datos en cualquier gestor de bases de datos que soporte el lenguaje SQL.

También Access permite emplear este lenguaje, pero como ya hemos manejado Access de la forma más sencilla (y también la más habitual), utilizaremos otra base de datos distinta.

Yo he optado por WinSQL (una versión ya antigua, la 3.2.7), que es un gestor de base de datos para sistema operativo Windows, que se utiliza mediante lenguaje SQL, y que se puede descargar gratuitamente desde Internet:

 

Al entrar a WinSQL se nos pregunta qué tipo de bases de datos vamos a utilizar. Tenemos muchas posibilidades distintas, pero podemos emplear ficheros de “dBase”, por ejemplo.

Dbase es un gestor de bases de datos antiguo, mucho más incómodo de manejar que los actuales, pero que sentó un estándar, y que manejaba ficheros en un formato que soportan muchos gestores de bases de datos más modernos.

 

Cuando hemos elegido el formato de ficheros, nos aparecerá una ventana vacía, en la que nosotros deberemos escribir las órdenes en lenguaje SQL.

Por ejemplo, para crear nuestra tabla “alumnos”, en la que tengamos los campos dni (10 letras), nombre (40 letras) y tlf (teléfono, 15 letras), la orden que se usaría es:

Para que nuestro ejemplo quede correcto, todavía falta algo. En la tabla de los “alumnos”, queríamos que el DNI actuase como clave primaria. Esto, en la mayoría de las versiones de SQL se conseguiría añadiendo la siguiente línea al final de la orden anterior (antes del último paréntesis):

Pero resulta que WinSQL usa el “motor” de bases de datos creado por Microsoft (el mismo que emplea Access), que tiene alguna (pequeña) diferencia de sintaxis con el SQL estándar, de manera que tendremos que hacerlo de otra forma.

La manera utilizada por WinSQL es indicando esa clave primaria como una “restricción” (“constraint”), así:

Nuestra ventana de trabajo de WinSQL debería estar quedando como ésta:

En cualquier caso, WinSQL responderá con un mensaje que nos indica que lo ha hecho, pero que no hay datos que mostrar en pantalla. Estos mensajes de respuesta aparecen en la pestaña “Result”, que pasa a ser la pestaña visible cada vez que escribimos una orden y pulsemos el botón “Run Query” (el del triángulo verde, que hace que se procese la orden que hemos tecleado).

A la hora de añadir datos, se usa la orden “insert”. Su forma más sencilla consiste en indicar el nombre de la tabla, y, entre paréntesis, los valores para cada uno de los campos, en el orden en que los habíamos definido al crear la tabla:

Los valores los hemos indicado entre comillas porque son texto (cadenas de caracteres); si alguno de los campos fuera numérico, no habría que poner esas comillas.

 

Como hemos añadido un registro, WinSQL nos responderá diciendo que una fila de la tabla se ha visto afectado por estos cambios:

Siguiendo este mismo esquema podríamos añadir alguna ficha más.

Finalmente, podemos visualizar los datos obtenidos. Para ello se emplea la orden “select”:

Esta orden mostrará todos los datos (es lo que se indica con el asterisco *) de la tabla llamada “alumno”. Obtendríamos un resultado parecido a éste:

También podríamos pedir que se nos muestre sólo alguno de los campos. Por ejemplo, si queremos ver primero el teléfono y luego el nombre (y que no se muestre el DNI) escribiríamos

y la respuesta sería algo como:

La orden “select” permite hacer muchas más cosas, pero las veremos a su debido tiempo, cuando tratemos la forma de realizar consultas a partir de los datos.

Creando una Base de Datos con Access

Emplearemos Access 97, que es una versión “razonablemente antigua” como para cualquier usuario actual de Access utilice al menos esa, o una superior. Y los cambios a realizar para versiones posteriores (o incluso anteriores) deberían ser mínimos. Al igual que hicimos con OpenOffice.org Base, vamos a dar por supuesto que ya hemos diseñado nuestra base de datos en papel. Entonces el primer paso es evidente: entrar a Access. Nos aparecerá una pantalla como ésta:

 

En ella se nos pregunta si queremos abrir una base de datos ya existente (no es nuestro caso) o bien crear una nueva (que sí es lo que nos interesa). Dentro de una “nueva” base de datos, tenemos dos opciones:

• Emplear un “asistente”. Este nos propondría varios casos típicos, con bases de datos habituales, nos mostraría la lista de las tablas que considera adecuadas y los campos que podemos incluir (estos campo sí se pueden modificar, pero no las tablas propuestas), nos permitiría escoger una serie de diseños para formularios e informes, etc. Veremos estos asistentes más adelante, cuando ya sepamos algo más sobre diseño, y cuando hayamos tratado los formularios y los informes, de modo que podremos comparar lo que nosotros habríamos hecho con lo que Access propone.

• La otra opción, la que nosotros emplearemos, es la de crear una “base de datos en blanco”. Esto nos permitirá partir “de cero”, para indicar a Access exactamente qué es lo que deseamos.

En primer lugar nos preguntará el nombre que queremos dar al fichero de base de datos:

 

Tras teclear este nombre, veremos la pantalla principal de Access:

En la zona central de la pantalla, la “zona de trabajo”, vemos una serie de pestañas que recuerdan a las que ya habíamos comentado para Base: Tablas, consultas, formularios, informes, macros y módulos. Estas dos últimas opciones son nuevas para nosotros, y también las veremos más adelante.

De momento, vamos a comenzar por crear las tablas. Para ello, comprobamos que nos encontramos en la pestaña Tabla (debería ser así), y pulsamos el botón “Nuevo” (en estos momentos, debería ser el único disponible). Aparecen más preguntas…

 

Vamos a comentar brevemente las opciones que tenemos:

• “Vista hoja de datos” mostraría una cuadrícula en la que podremos empezar directamente a escribir datos. No es lo que nos interesa, ya que nosotros hemos planificado previamente para que nuestra base de datos se ajuste lo más posible a lo que realmente necesitamos.

• “Vista diseño” es lo que buscamos nosotros. Nos centraremos en ella un poco más adelante…

Asistente para tablas. Nos mostraría las tablas más frecuentes, junto con los campos que Access nos recomienda para cada una de ellas. Al igual que el asistente para bases de datos, lo veremos más adelante, cuando tengamos más conocimientos y podamos comparar la opinión de Access con la nuestra.

Importar tabla: nos permitiría aprovechar los datos existentes en una tabla creada con otro sistema de bases de datos más antiguo. Access crearía una nueva tabla con campos equivalentes a los originales, y con los datos que esa tabla contenía.

Vincular tabla: es similar a “importar”, con la diferencia de que no se crea una nueva tabla en Access, sino sólo un enlace a la “antigua”, de modo que los cambios que hagamos en la antigua se reflejarán en nuestra base de datos de Access (a cambio, resultará algo más lento, y debemos llevar cuidado de no borrar la tabla antigua, ni cambiar su situación, ni hacer ninguna modificación profunda a su estructura.

En nuestro caso, deberemos seleccionar la opción “Vista diseño” y pulsar el botón “Aceptar”.

Entonces aparece una pantalla vacía en la que, al igual que ocurría con Base, iremos introduciendo el nombre de cada campo, el tipo de datos que contiene, y (opcionalmente) una descripción para ese campo (que aparecería en la parte inferior de la pantalla cuando el usuario estuviera introduciendo datos).

 

En la parte inferior de la pantalla es donde indicamos el tamaño que queremos para ese campo. Por ejemplo, como se ve en la figura anterior, nosotros queremos que el campo DNI sea texto con una longitud máxima de 15 caracteres.

Un poco más adelante veremos los tipos de datos que nos permite emplear Access. Como para esta tabla sólo necesitaremos usar campos de texto, vamos antes a dar los pocos pasos que nos faltan para completarla.

Una vez que hayamos escrito los nombres de los tres campos, sus tipos de datos correspondientes y sus tamaños, pasamos a indicar cual será el campo que actúe como clave. Lo conseguiremos señalando el campo correspondiente (en este caso, el DNI) y pulsando el botón que muestra la imagen de una llave.

Al igual que ocurría con Base, Access mostrará el dibujo de la llave junto a ese campo, para indicarnos que ese será el campo que actuará como clave:

(Nota: si en un campo no necesitásemos clave, bastaría con no indicarla ahora, y responder “No” cuando Access nos pregunte si queremos que añada automáticamente una clave).

Para guardar la tabla, basta con pulsar la X de su esquina superior izquierda.

Access se da cuenta de que vamos a cerrar sin guardar y nos pide confirmación:

 

 

Diremos que “Sí” queremos guardar, y entonces nos preguntará el nombre que tendrá la tabla:

Nota 1: Al igual que ocurría con el nombre de la base de datos, el nombre de la tabla podrá contener espacios, eñes y vocales acentuadas, y una longitud superior a las ocho letras.

Nota 2: También podríamos haber guardado sin necesidad de salir, pulsando el botón que muestra el diskette, en vez de hacer clic sobre el de la X. Finalmente, la pantalla de trabajo de Access debería tener una apariencia similar a ésta:

Antes de seguir avanzando con las consultas o con otras bases de datos distintas, vamos a echar un vistazo a los tipos de datos que permite Access.

Es esta tabla sólo hemos empleado campos de tipo “Texto”, pero al pinchar en la casilla “Texto” vemos que aparece una flecha hacia abajo, indicándonos que tenemos más opciones que podemos escoger. Si desplegamos esta lista, aparecen todos los tipos de datos que Access reconoce:

La mayoría de ellos los hemos comentado ya, pero vamos a repasar todos brevemente:

  • Texto: letras, números y otros símbolos, con una longitud máxima definida, que no podrá exceder los 255 caracteres.
  • Memo: similar al texto, pero de longitud indefinida (más versátil pero más lento que el campo Texto).
  • Numérico: valores exclusivamente numéricos, con o sin decimales.
  • Fecha/Hora: fechas y/o horas.
  • Moneda: un valor numérico con pocos decimales pero con muchas cifras significativas. Se usará para números “grandes” y con pocos decimales, como los que puede manejar un banco.
  • Autonumérico: un número que aumenta automáticamente en cada nuevo registro: en el primer registro valdrá 1, en el segundo valdrá 2, y así sucesivamente. Hay gente a la que le gusta usar este tipo de campos como clave primaria (en nuestro caso, podría ser el código de alumno).
  • Si/No: un campo que sólo puede tener un valor entre esos dos. Es más correcto que usar una S o una N (que sería un campo “texto” con una longitud de una letra), por varios motivos: ocupa menos espacio, no existirá problemas de mayúsculas y minúsculas, ni siquiera de “internacionalización” (por ejemplo, en un país de habla inglesa, se convertiría automáticamente en Yes y No).
  • Objeto OLE: cualquier otro tipo de objeto “incrustado”, Nos permitirá guardar imágenes, fragmentos de video, etc. Eso sí, el tamaño del fichero resultante crecerá rápidamente. (OLE es la abreviatura de “Object Linking and Embedding”)
  • Hipervínculo: un enlace al estilo de los que se emplean en Internet.
  • Asistente para búsquedas: nos permitiría que en ese campo lo que apareciese fuese una lista de valores predefinidos.

Nosotros usaremos básicamente los cuatro primeros: texto, numérico, fecha/hora y memo.

 

El tamaño en los campos de texto no tiene dificultad (será el número de letras), pero en los campos numéricos sí,

porque Access no los mide según el número de cifras, sino según cómo se guardarán realmente los datos dentro del ordenador.

Por eso, si escogemos un tipo de datos numérico y miramos en la casilla de “tamaño” veremos que aparece la expresión “Entero largo”. Los posibles valores son:

  • Byte: números enteros (sin decimales) entre 0 y 255 (ambos inclusive). El espacio que ocupará será de un byte, como su nombre indica.
  • Entero: números enteros entre –32.768 y 32.767. Ocupa 2 bytes.
  • Entero largo: números enteros entre –2.147.483.648 y 2.147.483.647. Ocupa 4 bytes.
  • Simple: números reales (con decimales) de “simple precisión”, con valores posibles entre 1,4·10–45 y 3,4·1038, con una precisión de 7 cifras. Ocupa 4 bytes.
  • Doble: números reales de “doble precisión”, con valores posibles entre 1,79·10308 y 4,94·10-324, con una precisión de 15 cifras. Ocupa 8 bytes.

 

 

 

Creando la base de datos con OpenOffice.org Base

Vamos a ver los pasos que deberíamos dar para plasmar nuestra base de datos empleando distintos sistemas de gestión de bases de datos.

El primero que utilizaremos es OpenOffice.org Base, la base de datos que incorpora la suite OpenOffice, por tratarse de un paquete integrado de libre distribución (“gratis”), que se puede encontrar tanto para Windows como para Linux (yo lo usaré desde Windows). Como ya veremos, su manejo recuerda mucho al de Access. Nada más entrar a OpenOffice.org Base nos aparece un asistente que nos pregunta si queremos crear una nueva base de datos, abrir una existente (creada con Base) o “conectar” con otra que ya exista pero se haya creado con otro gestor de bases de datos:

Escogemos la opción de “Crear una nueva base de datos”, y entonces se nos pregunta si queremos “registrarla” para que aparezca en la lista de bases de datos existentes (yo le diré que “No” quiero que lo haga, porque prefiero abrirla haciendo doble clic desde su carpeta contenedora) y si queremos abrir la base de datos para editarla (yo le diré que sí, para empezar a experimentar):

A continuación nos pregunta en qué carpeta queremos guardar nuestra base de datos (yo crearé una específica para ella) y qué nombre le queremos darle yo la llamaré “Base de datos de prueba”):

Entonces apareceremos en la pantalla principal de OpenOffice.org Base, que nos permite crear y manejar varios tipos de elementos. El primero de ellos (y el único que nos interesa por ahora) son las Tablas. En concreto, nos propone varias “tareas” relacionadas con las tablas: crear en vistar de diseño, usar un asistente o crear una vista:

En nuestro caso, como ya hemos preparado el diseño “sobre el papel”, prescindiremos del asistente y usaremos la “vista Diseño”. Accedemos a una nueva ventana, en la que realmente definimos nuestra tabla con Base. La zona de trabajo de esta ventana tiene tres columnas, en las que indicaremos el nombre del campo, el tipo de datos que va a almacenar y (si queremos) una descripción para ese campo:

Cada fila de la zona de trabajo de esta ventana representará uno de estos campos. En la parte inferior de la pantalla podemos indicar el tamaño (longitud) que queremos para cada campo. Al final deberíamos obtener algo parecido a:

Es decir, tanto el DNI como el Nombre como el Tlf son campos de texto, y como longitudes respectivas hemos utilizado: 15, 40, 15. Cuando terminemos, pulsamos el botón de “Guardar” (el que muestra un diskette) y nos preguntará el nombre que queremos dar a la tabla (en nuestro caso, “Alumnos”):

Es muy frecuente que nos aparezca una ventana de aviso como ésta:

Es cierto, habíamos pensado que el DNI debía ser la clave primaria de nuestra tabla, pero no se lo hemos indicado a Base. Pero no queremos que sea Base quien ponga la clave primaria que le plazca, sino nosotros mismos, así que de momento le decimos que “No” queremos clave primaria, y veremos cómo indicarle que ponga como clave el campo que a nosotros nos interesa.

 

Para modificar nuestro diseño (en esta ocasión, para poder añadir esa clave), hacemos clic con el botón derecho sobre la tabla que nos interesa y escoger la opción “Editar”:

La forma correcta de indicar que un campo será la clave primaria es señalando toda la fila (haciendo clic con el ratón en la columna gris de la izquierda) y pulsando el botón derecho del ratón. Entre las opciones disponibles, aparecerá la de “Llave primaria”:

 

Entonces Base mostrará una llavecita amarilla junto al nombre del campo, para indicarnos que ese campo es el que va a actuar como clave primaria:

 

Al salir del diseño de la tabla (por ejemplo, pulsando la X de la esquina superior izquierda de la ventana), Base se da cuenta de que hemos modificado el diseño de la tabla y nos pide confirmación para guardar los cambios (deberemos decirle que “Sí”):

 

Puede ocurrir que, en alguna circunstancia, Base considere que esa modificación no se puede realizar directamente, conservando los datos actuales, sino que habría que eliminar el campo que hemos modificado, para luego volverlo a crear. En ese caso, podríamos llegar a perder los datos existentes en ese campo, si ya hubieramos introducido alguno. Cuanto más avanzado sea el gestor de base de datos, menos habitual es que podamos tener algún problema de este tipo, pero, en cualquier caso, eso nos muestra la importancia de tener afinado el diseño antes de empezar a introducir datos:

 

Ahora ya podemos entrar a la tabla (con doble clic, o escogiendo la opción “Abrir” del menú contextual -pulsando el botón derecho del ratón-) y comenzar a introducir registros:

 

De igual forma crearíamos las otras tablas, tanto la de alumnos y cursos, como la que representa a la relación “Asistir”. Algo más adelante veremos cómo sacar partido a estos datos. La gran utilidad de las bases de datos es la facilidad para recuperar información de entre muchísimos datos posibles. Esto lo conseguiremos básicamente con las consultas, que trataremos después. También veremos entonces cómo detallar las relaciones que habíamos previsto en el diseño.

Base de Datos: Convirtiendo el diseño a tablas

Método general

Posiblemente la mayor ventaja del modelo EER es que la conversión a tablas es casi inmediata:

  • En principio, cada entidad corresponderá a una tabla, y los atributos de la entidad darán lugar a los campos de la tabla.
  • Las relaciones “de uno a muchos·” (1:M) se reflejarán poniendo la clave del “uno” en la tabla de los “muchos”. Es decir, si un profesor imparte muchos cursos (y cada curso es impartido por un único profesor), lo que haremos es poner el código del profesor (su DNI) en la ficha de cada curso que imparte.
  • Las relaciones “de muchos a muchos” (M:M) aparecerán como una nueva tabla, en la que cada registro estará formado por las claves de las tablas que se relacionan. En nuestro caso, la relación “de muchos a muchos” entre alumnos y cursos se convertirá en una nueva tabla, en la que cada registro contiene dos campos: el código del curso al que se asiste y el DNI del alumno que ha asistido.
  • Las relaciones “de uno a uno” muchas veces son debidas a un fallo de diseño, y corresponden a datos que deberían estar en una misma tabla. Por ejemplo, si suponemos que cada persona tendrá una única dirección postal, y cada dirección corresponde a una única persona, entonces el dato de la dirección postal deberá ser uno más de la tabla que almacena todos los datos de esa persona. Esta simplificación que hemos hecho no es del todo cierta: a veces las relaciones 1:1 deberán reflejarse como una nueva tabla, dependiendo de si existe restricción de existencia o no, pero no entraremos en tanto detalle… al menos por ahora…

Convirtiendo a tablas nuestro ejemplo

Así, en nuestro caso, obtendríamos las siguientes tablas (con sus campos, limitándonos a los atributos que hemos incluido en el último diagrama):

Alumnos:

  • DNI (clave)
  • Nombre
  • Tlf

Profesores:

  • DNI (clave)
  • Nombre
  • Direcc

 

Cursos:

  • Código (clave)
  • Nombre del curso
  • Fecha de comienzo
  • DNI del profesor

Asistir:

  • Código del curso
  • DNI del alumno

Ya sólo falta una cosa. Hay que decidir los tipos de datos de los campos y también los tamaños de los campos. Esto es porque al ordenador habrá que darle toda la información muy cuadriculada, para que podamos guardar toda la información que nos interesa pero sin desperdiciar demasiado espacio.

Los tipos de datos existentes pueden variar de un sistema de bases de datos a otro, así que vamos a limitarnos (por ahora) a hacer una primera aproximación, acercándonos al caso de nuestros campos:

  • El nombre de un alumno, de un profesor o de un curso, estará formado básicamente por letras. Todos los sistemas de bases de datos tendrán un tipo de datos adecuado para almacenar series de letras (que podrán incluir alguna cifra numérica o algún otro símbolo). Será un tipo llamado “Texto”, “Alfanumérico”, “Carácter” o algo similar. En cuanto al tamaño, nos puede bastar con unas 40 letras (insisto: no debemos quedarnos cortos, pero si nos excedemos, estaremos desperdiciando espacio).

 

  • La dirección tendrá también letras, números y algún otro símbolo, de modo que también será tipo Texto, y unas 50 letras de tamaño puede estar bien.
  • El DNI del alumno o del profesor contendrá cifras numéricas, pero posiblemente también alguna letra, de modo que nos interesará que también este dato sea de tipo “Texto”, y entre 10 y 15 letras de tamaño (dependiendo de si vamos a escribir puntos en los millares, guión antes de la letra, etc.).
  • El teléfono del alumno sólo contendrá cifras. Tendremos un tipo de dato “Numérico”, que nos puede servir en este caso y que será imprescindible en el caso de que queramos hacer operaciones aritméticas con los datos almacenados en un campo. En el caso del teléfono, no necesitamos hacer operaciones, y también es posible que nos interese escribir paréntesis, guiones o espacio, de modo que quizá sea más interesante dejarlo como tipo “Texto”, de unas 12-15 letras. Además, es frecuente que se “ignoren” (no se muestran ni se guardan) los ceros a la izquierda de una expresión numérica, y esto es algo que no deberemos permitir con un teléfono, que podría tener un prefijo provincial o internacional que comience por 0 (lo mismo ocurre con los códigos postales, que también deberemos almacenar como texto, no como número).
  • Para la fecha de inicio de un curso, casi todos los sistemas de bases de datos nos permitirán utilizar un tipo de datos llamado “Fecha”.
  • El código de un curso queda a nuestra elección: si queremos que esté formado sólo por números, sería tipo de datos “Numérico”; si queremos que pueda contener letras u otros símbolos, debería ser de tipo “Texto”. Algunos sistemas de bases de datos van más allá y permiten un tipo “Autonumérico”, que es un dato numérico que va incrementándose automáticamente (en el primer registro que introduzcamos será un 1, en el segundo un 2, y así sucesivamente), para que no tengamos ni siquiera que pensar qué código queremos para cada registro (hay gente a quien esto le parece muy cómodo y otros que lo consideran demasiado rígido).

 

Tipos de datos existentes

En general, los tipos de datos habituales, que encontraremos en casi cualquier sistema de bases de datos, son los siguientes:

  • Texto (o alfanumérico, o carácter), cuando nuestro campo deba almacenar letras y quizás algún otro tipo de símbolos de puntuación y/o cifras numéricas. Deberemos indicar la cantidad de letras (o en general, de caracteres) para las que queremos dejar espacio (no deberíamos quedarnos cortos, para que nos quepa toda la información que nos interesa, pero tampoco hay que dejar mucho espacio de más, o estaríamos desperdiciando una parte de la capacidad de nuestros sistemas de almacenamiento sin necesidad).
  • Numérico, cuando nuestro campo vaya a guardar cantidades numéricas, especialmente si más adelante necesitaremos realizar operaciones aritméticas con estas cantidades numéricas. Tendremos que indicar también el espacio que queremos reservar, pero esto puede que se haga de forma distinta según el sistema de bases de datos que usemos. Por ejemplo, unos esperarán que les digamos el número de cifras que queremos guardar, mientras que otros emplearán nombres más cercanos a como realmente se va a guardar la información en el ordenador (cosas como “número entero largo” o “número real de doble precisión”).
  • Lógico, cuando sólo hay dos posibilidades (verdadero o falso, sí o no).
  • Fecha, para almacenar fechas (y, en ocasiones, también horas). Se utiliza para que las comparaciones y las ordenaciones sean correctas (por ejemplo, si escribimos las fechas 12/01/2000 y 31/10/1975 como “texto”, el ordenador consideraría que la primera es menor -anterior- a la segunda, lo cual es claramente incorrecto).
  • Memo, es un campo de texto especial, que permite una longitud ilimitada, pero a cambio su acceso es más lento que el campo de texto normal, por lo que sólo se usa en casos muy concretos, en los que la longitud del texto a guardar sea muy variable y no importe que las búsquedas sean lentas. Es el caso de un apartado de “observaciones” sobre un alumno, o el “resumen” de una película.
  • Otros menos habituales nos permitirán guardar imágenes o ficheros en general, números que se incrementen automáticamente, hipervínculos (enlaces a una cierta dirección dentro de nuestro ordenador u otro), etc.

Bases de Datos: Introducción al modelo Entidad-Relación

Este es un modelo que nos permitirá “dibujar” las entidades y las relaciones que existen entre ellas. Nosotros usaremos el modelo “Entidad-Relación Extendido” (EER, de aquí en adelante). Existen varias notaciones ligeramente distintas. Voy a utilizar la que considero más sencilla.

En esta notación se representan las entidades como un rectángulo y las relaciones binarias como un rombo partido por la mitad. Si la relación es 1:M, una de las mitades (la que corresponde al “muchos”) deberá estar sombreada, y si es M:M, todo el rombo estará sombreado.

Diagrama EER de nuestro ejemplo

Vamos a ver cómo quedaría el diagrama Entidad-Relación de nuestro ejemplo:

Así de sencillo: tenemos 3 entidades (profesores, cursos, alumnos) y dos relaciones (impartir, entre profesores y alumnos, 1:M, y asistir, entre alumnos y cursos, M:M).

Realmente, ya a este nivel se suele indicar los “apartados” que hay en cada entidad (lo que serán los “campos” de nuestras tablas). A estos “apartados” les llamaremos “atributos”, y se representan como pequeñas elipses que salen de las entidades. Vamos a pensar primero qué atributos nos podría interesar para nuestras entidades:

Alumnos:

  • DNI (Documento Nacional de Identidad)
  • Nombre
  • Dirección
  • Ciudad
  • Teléfono
  • Fecha de nacimiento
  • Fecha de alta en el centro
  • Fotografía

Profesores:

  • DNI
  • Nombre
  • Dirección
  • Ciudad
  • Teléfono
  • Conocimientos
  • Sueldo
  • Cuenta bancaria

Cursos:

  • Nombre del curso
  • Fecha de comienzo
  • Duración (horas)
  • Importe (euros)
  • Número máximo de alumnos

Es sólo un ejemplo. Insisto en que de momento no estamos pensando en tablas, sino simplemente en qué información queremos almacenar. Según el sistema de bases de datos que empleemos realmente, puede ocurrir que sea incómodo (o incluso imposible) trabajar con algunos de estos datos que hemos previsto (por ejemplo, la “fotografía” del alumno). Pero eso ya nos lo plantearemos después.

Lo que sí vamos a pensar ya es cual de esos datos nos permitirá distinguir una ficha de otra. Esto se hace porque podemos tener dos alumnos con el mismo nombre, pero claramente son personas distintas, y debemos saber qué cursos ha realizado cada uno de ellos sin posibilidad de confusión, para no dar a uno el diploma que corresponda a otro, ni cobrarle un dinero de otro.

En el caso de los alumnos, no son datos únicos los siguientes: el nombre (puede repetirse, incluso con apellidos), la dirección (dos hermanos o dos amigos pueden vivir en la misma casa), el teléfono (ocurre lo mismo), la fecha de nacimiento (también podemos encontrar dos alumnos que hayan nacido el mismo día), etc. Lo que realmente distinguirá a un alumno de otro es su número de DNI (Documento Nacional de Identidad) o pasaporte, que sí es único.

Pues bien, este dato que puede distinguir una persona de otra (o en general una ficha -registro- de otra) es lo que llamaremos la “clave”.

Puede ocurrir que no exista nada que nos sirva claramente como clave, como es el caso de los cursos: no es único el nombre (podemos impartir más de un curso con el mismo contenido), ni la fecha de comienzo (varios cursos pueden comenzar el mismo día), ni la duración, ni el importe, ni el número máximo de alumnos. En estos casos se suele añadir algo arbitrario, un código, que nos permita distinguir un curso de otro (en general una ficha -registro- de otra). En nuestro caso, incluiríamos un nuevo atributo, llamado “Código de curso”.

Un último comentario antes de ver cómo quedaría nuestro diagrama EER con sus atributos. Puede ocurrir que nuestra entidad tenga varios atributos únicos, todos los cuales puedan servir como clave. Entonces escogemos una de ellas como “clave principal”, y el resto serán “claves alternativas”, que no llegaremos a usar como claves. En el diagrama, el atributo que vaya a utilizarse como clave principal aparecerá subrayado.

Ahora ya sí. Nuestro diagrama quedaría así: